@reltio/remotes 1.4.1669 → 1.4.1670
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/1039.js +1 -1
- package/1088.js +1 -1
- package/1146.js +1 -1
- package/1148.js +1 -1
- package/1334.js +1 -1
- package/1425.js +1 -1
- package/1572.js +1 -1
- package/1664.js +1 -1
- package/1707.js +1 -1
- package/1790.js +1 -1
- package/1840.js +1 -1
- package/2066.js +1 -1
- package/2300.js +1 -1
- package/2300.js.map +1 -1
- package/2400.js +1 -1
- package/2966.js +1 -1
- package/3096.js +1 -1
- package/3348.js +1 -1
- package/3373.js +1 -1
- package/3381.js +1 -1
- package/3383.js +1 -1
- package/3463.js +1 -1
- package/3469.js +1 -1
- package/3538.js +1 -1
- package/3639.js +1 -1
- package/3912.js +1 -1
- package/415.js +1 -1
- package/4197.js +2 -0
- package/4197.js.map +1 -0
- package/4212.js +1 -1
- package/4390.js +1 -1
- package/446.js +1 -1
- package/4481.js +1 -1
- package/4583.js +1 -1
- package/4609.js +1 -1
- package/4609.js.map +1 -1
- package/4610.js +1 -1
- package/4680.js +1 -1
- package/4780.js +1 -1
- package/4806.js +1 -1
- package/4838.js +1 -1
- package/50.js +1 -1
- package/5039.js +1 -1
- package/5053.js +1 -1
- package/5108.js +1 -1
- package/5177.js +1 -1
- package/5292.js +1 -1
- package/5368.js +1 -1
- package/5383.js +1 -1
- package/5617.js +1 -1
- package/5738.js +1 -1
- package/5738.js.map +1 -1
- package/5939.js +1 -1
- package/6287.js +1 -1
- package/636.js +1 -1
- package/658.js +1 -1
- package/6799.js +1 -1
- package/6844.js +1 -1
- package/6860.js +1 -1
- package/6903.js +1 -1
- package/7119.js +1 -1
- package/7128.js +1 -1
- package/7151.js +1 -1
- package/7340.js +1 -1
- package/735.js +1 -1
- package/7363.js +1 -1
- package/7363.js.map +1 -1
- package/7422.js +1 -1
- package/7605.js +1 -1
- package/7626.js +1 -1
- package/7744.js +1 -1
- package/7896.js +1 -1
- package/7917.js +1 -1
- package/820.js +1 -1
- package/8207.js +1 -1
- package/8216.js +1 -1
- package/8418.js +1 -1
- package/8462.js +1 -1
- package/8462.js.map +1 -1
- package/8565.js +1 -1
- package/8741.js +1 -1
- package/9016.js +1 -1
- package/9050.js +1 -1
- package/9283.js +1 -1
- package/9309.js +1 -1
- package/9328.js +1 -1
- package/9387.js +1 -1
- package/9719.js +1 -1
- package/9861.js +1 -1
- package/987.js +1 -1
- package/99.js +1 -1
- package/9960.js +1 -1
- package/main.js +1 -1
- package/package.json +1 -1
- package/remoteEntry.js +1 -1
- package/remoteEntry.js.map +1 -1
- package/5175.js +0 -2
- package/5175.js.map +0 -1
package/2300.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"2300.js","mappings":"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","sources":["webpack://@reltio/remotes/../../node_modules/@mui/icons-material/ArrowDownward.js","webpack://@reltio/remotes/../../node_modules/@mui/icons-material/ArrowForwardIosRounded.js","webpack://@reltio/remotes/../../node_modules/@mui/icons-material/ArrowUpward.js","webpack://@reltio/remotes/../../node_modules/@mui/icons-material/Create.js","webpack://@reltio/remotes/../../node_modules/@mui/icons-material/History.js","webpack://@reltio/remotes/../../node_modules/@mui/icons-material/Inbox.js","webpack://@reltio/remotes/../../node_modules/@mui/icons-material/InfoOutlined.js","webpack://@reltio/remotes/../../node_modules/@mui/icons-material/InfoRounded.js","webpack://@reltio/remotes/../../node_modules/@mui/icons-material/ReportProblem.js","webpack://@reltio/remotes/../../node_modules/@mui/icons-material/ThumbDown.js","webpack://@reltio/remotes/../../node_modules/@mui/icons-material/ThumbUp.js","webpack://@reltio/remotes/../profile/src/components/ProfileAttributesView/ProfileAttributesView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/contexts/SingleAttributeContext.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/FilterButton/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/FilterButton/FilterButton.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeHeader/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeHeader/SingleAttributeHeader.tsx","webpack://@reltio/remotes/../profile/src/components/hooks/helpers/index.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeEditableContent/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeEditableContent/SingleAttributeEditableContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeReadableContent/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeReadableContent/SingleAttributeReadableContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeView/SingleAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/hooks/useSingleAttributeLoader.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/contexts/RelationsViewStateContext.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/FilterButton/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/FilterButton/FilterButton.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/contexts/ImportDTContext.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/hooks/useImportFromDTLoader.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/MultipleImportIcon.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/ImportFromDT.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/RelationsHeader.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationTooltip/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationTooltip/RelationTooltip.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/hooks/useRelationInfo.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/SuggestedButtons/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/SuggestedButtons/SuggestedButtons.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/EditableRelationItem/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/EditableRelationItem/EditableRelationItem.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/helpers/permissions.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/helpers/relation.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationArrowButton/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationArrowButton/RelationArrowButton.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/SecondLevelWrapper/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/SecondLevelWrapper/SecondLevelWrapper.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/hooks/useSecondLevelConnections.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsEditableContent/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsEditableContent/RelationsEditableContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationAttributes/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationAttributes/RelationAttributes.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/ShowDetailsButton/ShowDetailsButton.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationItem/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationItem/RelationItem.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/helpers/ratings.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RatingsPopup/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RatingsPopup/RatingsPopup.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/Ratings/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/Ratings/Ratings.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RatingsButtons/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RatingsButtons/RatingsButtons.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationCompexItem/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationCompexItem/RelationComplexItem.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationsList.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/hooks/useSuggestedRelations.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsContent/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsContent/RelationsContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsView/RelationsView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/helpers/filters.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/hooks/useRelationsState.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/contexts/TableAttributeContext.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/hooks/reducer.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/cell-renderers/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/cell-renderers/HeadCellRenderer.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/cell-renderers/BlobRenderer.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/cell-renderers/DefaultCellValueRenderer.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/helpers/tableAttributeHelpers.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTableHeader/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTableHeader/AttributeTableHeader.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/cell-renderers/RowCellRenderer.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/EditButtons.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/AttributeTable.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/TableAttributeContent/hooks/useEditableAttribute.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeEditing/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeEditing/AttributeEditing.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/TableAttributeEditableContent/hooks/useExpandAttributes.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/TableAttributeEditableContent/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/TableAttributeEditableContent/TableAttributeEditableContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/TableAttributeContent/TableAttributeContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/TableAttributeView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/TableAttributeView/TableAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/hooks/useLoadPaths.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/styles.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/ConfigContext.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/Node.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/helpers.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/theme/styles.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/theme/node-content-renderer.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/theme/index.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/theme/tree-node-data-renderer.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/icons/ShowGraph.svg","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/HierarchyPathsHeader.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/hooks/useDynamicNodesHeights.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/HierarchyPathsView.tsx","webpack://@reltio/remotes/../profile/src/components/Sandbox/styles.ts","webpack://@reltio/remotes/../profile/src/components/Sandbox/CustomView.tsx","webpack://@reltio/remotes/../profile/src/components/views/HOCs/withErrorBoundary.tsx","webpack://@reltio/remotes/../profile/src/components/views/styles.ts","webpack://@reltio/remotes/../profile/src/components/EntityMapView/useMarkers.ts","webpack://@reltio/remotes/../profile/src/components/EntityMapView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/ImageLineCaption/styles.ts","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/ImageLineCaption/ImageLineCaption.tsx","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/ImageAttributeViewEditableContent/ImageAttributeViewEditableContent.tsx","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/ImageAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePotentialMatchesView/ActionButtons.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePotentialMatchesView/MatchCard.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePotentialMatchesView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfilePotentialMatchesView/ProfilePotentialMatchesView.tsx","webpack://@reltio/remotes/../profile/src/components/views/ViewsFactory.tsx","webpack://@reltio/remotes/../profile/src/components/views/StubView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/ProfileSingleAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/hooks/useSingleAttribute.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/ProfileTableAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/hooks/useTableAttribute.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/hooks/helpers.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/ProfileRelationsView.tsx","webpack://@reltio/remotes/../profile/src/components/EntityMapView/EntityMapView.tsx","webpack://@reltio/remotes/../profile/src/components/views/ViewComponent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileLayoutItem/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileLayoutItem/ProfileLayoutItem.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileLayout/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileLayout/ProfileLayout.tsx","webpack://@reltio/remotes/../profile/src/components/Notifications/styles.ts","webpack://@reltio/remotes/../profile/src/components/Notifications/Notification.tsx","webpack://@reltio/remotes/../profile/src/components/Notifications/Notifications.tsx","webpack://@reltio/remotes/../profile/src/components/PerspectiveProfileBand/suggest.svg","webpack://@reltio/remotes/../profile/src/components/PerspectiveProfileBand/copy.svg","webpack://@reltio/remotes/../profile/src/components/PerspectiveProfileBand/styles.ts","webpack://@reltio/remotes/../profile/src/components/PerspectiveProfileBand/PerspectiveProfileBand.tsx","webpack://@reltio/remotes/../profile/src/components/PerspectiveProfileBand/hooks/useCloneAction.ts","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/styles.ts","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/RightSidePanel.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/DBConnectorsList/styles.ts","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/DBConnectorsList/DBConnectorsList.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/WorkflowButton/WorkflowButton.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/icons/CollaborationIcon.svg","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/CollaborationButton/CollaborationButton.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/icons/ConnectorsIcon.svg","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/WorkflowList/styles.ts","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/WorkflowList/WorkflowList.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/WorkflowPanelEmptyState/WorkflowPanelEmptyState.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/CollaborationList/styles.ts","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/CollaborationList/CollaborationList.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/CollaborationPanelEmptyState/CollaborationPanelEmptyState.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePerspectiveView/hooks/useProfileRightSidePanelElements.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePerspectiveResizablePanes/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfilePerspectiveResizablePanes/ProfilePerspectiveResizablePanes.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePerspectiveView/hooks/useProfileLayout.ts","webpack://@reltio/remotes/../profile/src/components/BackgroundProcessIndicator/styles.ts","webpack://@reltio/remotes/../profile/src/components/BackgroundProcessIndicator/BackgroundProcessIndicator.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePerspectiveView/hooks/useBackgroundProcessIndicator.ts","webpack://@reltio/remotes/../profile/src/components/ProfilePerspectiveView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfilePerspectiveView/ProfilePerspectiveView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePerspectiveView/hooks/useWorkflowTasks.ts","webpack://@reltio/remotes/../profile/src/components/ProfilePerspectiveView/hooks/data/backgroundUpdateDalay.ts","webpack://@reltio/remotes/../profile/src/components/hooks/useProfileValidation.ts","webpack://@reltio/remotes/../profile/src/perspectives/helpers.ts","webpack://@reltio/remotes/../profile/src/perspectives/ProfilePerspective.tsx","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/components/TagListHeader/styles.ts","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/components/TagListHeader/TagListHeader.tsx","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/components/TagProfileBand/styles.ts","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/components/TagProfileBand/TagProfileBand.tsx","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/hooks/useTagsProvider.ts","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/styles.ts","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/TagPerspectiveView.tsx","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/hooks/useTag.ts","webpack://@reltio/remotes/../profile/src/perspectives/TagPerspective.tsx","webpack://@reltio/remotes/../profile/src/components/DCRReviewPerspectiveView/components/DCRProfileBand/styles.ts","webpack://@reltio/remotes/../profile/src/components/DCRReviewPerspectiveView/components/DCRProfileBand/DCRProfileBand.tsx","webpack://@reltio/remotes/../profile/src/components/DCRReviewPerspectiveView/hooks/useWorkflowTasks.ts","webpack://@reltio/remotes/../profile/src/components/DCRReviewPerspectiveView/styles.ts","webpack://@reltio/remotes/../profile/src/components/DCRReviewPerspectiveView/DCRReviewPerspectiveView.tsx","webpack://@reltio/remotes/../profile/src/perspectives/DCRReviewPerspective.tsx","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/AddRelationButton/styles.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/AddRelationButton/AddRelationButton.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/cell-renderers/styles.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/cell-renderers/RowCellRenderer.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/cell-renderers/EntityProfileRenderer.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/cell-renderers/HeadCellRenderer.js","webpack://@reltio/remotes/../relations-table/src/core/relations.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/helpers/dataHelpers.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/styles.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/EditButtons.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/RelationsTable.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/helpers/buttonsHelper.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTableHeader/MoreButton/styles.ts","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTableHeader/MoreButton/MoreButton.tsx","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTableHeader/styles.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTableHeader/RelationsTableHeader.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/stateReducer.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/helpers/tableHelpers.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/helpers/relationsHelpers.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/styles.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTableView.tsx","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/index.js","webpack://@reltio/remotes/../relations-table/src/index.tsx"],"sourcesContent":["\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"m20 12-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z\"\n}), 'ArrowDownward');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M7.38 21.01c.49.49 1.28.49 1.77 0l8.31-8.31c.39-.39.39-1.02 0-1.41L9.15 2.98c-.49-.49-1.28-.49-1.77 0s-.49 1.28 0 1.77L14.62 12l-7.25 7.25c-.48.48-.48 1.28.01 1.76z\"\n}), 'ArrowForwardIosRounded');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"m4 12 1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z\"\n}), 'ArrowUpward');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.9959.9959 0 0 0-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z\"\n}), 'Create');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z\"\n}), 'History');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M19 3H4.99c-1.11 0-1.98.89-1.98 2L3 19c0 1.1.88 2 1.99 2H19c1.1 0 2-.9 2-2V5c0-1.11-.9-2-2-2zm0 12h-4c0 1.66-1.35 3-3 3s-3-1.34-3-3H4.99V5H19v10z\"\n}), 'Inbox');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M11 7h2v2h-2zm0 4h2v6h-2zm1-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"\n}), 'InfoOutlined');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 15c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1s1 .45 1 1v4c0 .55-.45 1-1 1zm1-8h-2V7h2v2z\"\n}), 'InfoRounded');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z\"\n}), 'ReportProblem');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M15 3H6c-.83 0-1.54.5-1.84 1.22l-3.02 7.05c-.09.23-.14.47-.14.73v2c0 1.1.9 2 2 2h6.31l-.95 4.57-.03.32c0 .41.17.79.44 1.06L9.83 23l6.59-6.59c.36-.36.58-.86.58-1.41V5c0-1.1-.9-2-2-2zm4 0v12h4V3h-4z\"\n}), 'ThumbDown');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-2z\"\n}), 'ThumbUp');\nexports.default = _default;","import React from 'react';\nimport {AttributesView} from '@reltio/components';\nimport {AttributeViewConfig} from '@reltio/mdm-sdk';\n\ntype ProfileAttributesViewProps = {\n config: AttributeViewConfig;\n className?: string;\n};\n\nexport const ProfileAttributesView = ({className, config}: ProfileAttributesViewProps) => {\n return (\n <AttributesView\n className={className}\n caption={config.caption}\n excludeUris={config.excludeUris}\n includeUris={config.includeUris}\n attributesCount={config.attributesCount}\n pinnedAttributes={config.pinnedAttributes}\n />\n );\n};\n","import React from 'react';\nimport {AttributeValue, AttributeType} from '@reltio/mdm-sdk';\n\nexport const SingleAttributeContext = React.createContext<{\n searchQuery: string;\n setSearchQuery: (query: string) => void;\n values: AttributeValue[];\n page: number;\n setPage: (page: number) => void;\n isLoading: boolean;\n showInactive?: boolean;\n toggleShowInactive?: (checked: boolean) => void;\n hasPaging: boolean;\n totalVisibleValues: number;\n attributeType: AttributeType;\n totalNonVisibleValues: number;\n nonVisibleValues: AttributeValue[];\n }>(null);\n\nSingleAttributeContext.displayName = 'SingleAttributeContext';\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n triggerButton: {\n minWidth: 0,\n color: 'rgba(0,0,0,0.54)',\n width: '36px'\n },\n popupContent: {\n paddingTop: '19px',\n paddingBottom: '23px',\n paddingLeft: '23px',\n paddingRight: '23px',\n maxWidth: '180px',\n width: '40%'\n },\n checkboxControlRoot: {\n marginTop: '6px',\n marginLeft: '-12px'\n },\n checkboxControlLabel: {\n fontSize: '0.85rem'\n },\n checkboxControlCheckbox: {\n marginRight: '5px'\n }\n}));\n","import React, {useContext, useRef, useState} from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport Popover from '@mui/material/Popover';\nimport Button from '@mui/material/Button';\nimport FilterIcon from '@mui/icons-material/FilterList';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Checkbox from '@mui/material/Checkbox';\n\nimport {SingleAttributeContext} from '../../contexts/SingleAttributeContext';\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n};\n\nconst FilterButton = ({className}: Props) => {\n const styles = useStyles();\n const buttonRef = useRef();\n const [isOpen, setIsOpen] = useState(false);\n const {showInactive, toggleShowInactive} = useContext(SingleAttributeContext);\n\n const togglePopup = () => setIsOpen((open) => !open);\n\n return (\n <>\n <Button ref={buttonRef} classes={{root: classnames(styles.triggerButton, className)}} onClick={togglePopup}>\n <FilterIcon />\n </Button>\n <Popover\n open={isOpen}\n classes={{paper: styles.popupContent}}\n anchorEl={buttonRef.current}\n onClose={togglePopup}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <FormControlLabel\n classes={{\n root: styles.checkboxControlRoot,\n label: styles.checkboxControlLabel\n }}\n control={\n <Checkbox\n className={styles.checkboxControlCheckbox}\n checked={showInactive}\n onChange={(e) => toggleShowInactive(e.target.checked)}\n />\n }\n label={i18n.text('Show inactive values')}\n />\n </Popover>\n </>\n );\n};\n\nexport default FilterButton;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n padding: '0 4px 0 16px'\n },\n rightMenuItems: {\n display: 'flex',\n flex: '1 0 auto',\n justifyContent: 'flex-end',\n alignItems: 'center'\n },\n totalCaption: {\n lineHeight: '19px',\n fontSize: '14px',\n letterSpacing: '0.24px',\n color: 'rgba(0,0,0,0.6)',\n flexShrink: 0,\n justifyContent: 'flex-start',\n paddingTop: '16px',\n paddingBottom: '13px'\n },\n ovIcon: {\n marginTop: '2px',\n marginLeft: '5px'\n }\n}));\n","import React, {useContext} from 'react';\nimport i18n from 'ui-i18n';\nimport {\n FacetViewHeader,\n HideOnShrink,\n ExpandableSearchInput,\n VerticalDivider,\n OvIcon,\n DescriptionIcon,\n RequiredMark\n} from '@reltio/components';\nimport Typography from '@mui/material/Typography';\nimport {SingleAttributeContext} from '../../contexts/SingleAttributeContext';\nimport FilterButton from '../FilterButton/FilterButton';\nimport {useStyles} from './styles';\n\ntype Props = {\n caption: string;\n totalVisibleValues: number;\n showInactiveValuesMenu: boolean;\n isEditableMode: boolean;\n};\n\nexport const SingleAttributeHeader = ({caption, totalVisibleValues, showInactiveValuesMenu, isEditableMode}: Props) => {\n const styles = useStyles();\n\n const {searchQuery, setSearchQuery, setPage, totalNonVisibleValues, nonVisibleValues, attributeType} =\n useContext(SingleAttributeContext);\n\n const handleChangeSearchQuery = (query: string) => {\n setSearchQuery(query);\n setPage(0);\n };\n const showRequiredMark = isEditableMode && attributeType?.required;\n return (\n <FacetViewHeader title={caption} className={styles.root}>\n {showRequiredMark && <RequiredMark />}\n <DescriptionIcon description={attributeType?.description} />\n <HideOnShrink widthToHide={400}>\n <VerticalDivider height={24} margin={16} />\n <Typography className={styles.totalCaption} variant=\"caption\">\n {i18n.number(totalVisibleValues)}{' '}\n {totalVisibleValues === 1 ? i18n.text('item') : i18n.text('items')}\n </Typography>\n </HideOnShrink>\n {\n <OvIcon\n nonOvTotal={totalNonVisibleValues}\n className={styles.ovIcon}\n nonOvValues={nonVisibleValues}\n attributeType={attributeType}\n />\n }\n <div className={styles.rightMenuItems}>\n <ExpandableSearchInput query={searchQuery} onChange={handleChangeSearchQuery} />\n {showInactiveValuesMenu && <FilterButton />}\n </div>\n </FacetViewHeader>\n );\n};\n","import {equals, filter, identity, is, lensPath, omit, over, pipe, unless} from 'ramda';\nimport {\n AttributeValue,\n cleanAttributesWith,\n Entity,\n findAttributeValuesByTypeUri,\n getAttributeSource,\n getLastUriPart,\n isOv,\n Metadata,\n utils\n} from '@reltio/mdm-sdk';\n\nexport const getAttributeNameFromAttributeUri = getLastUriPart;\n\nexport const search = (value: AttributeValue['value'], searchQuery: string) => {\n switch (typeof value) {\n case 'object':\n return Object.values(value).some((value: AttributeValue[]) => {\n return value.some(({value}) => {\n return search(value, searchQuery);\n });\n });\n default:\n return utils.strings.search(String(value), searchQuery);\n }\n};\n\ntype Config = {\n metadata: Metadata;\n entity: Entity;\n attributeTypeUri: string;\n defaultMaxValues?: number;\n offset?: number;\n searchQuery?: string;\n};\n\nexport const getPagedLocalEntity = async ({\n metadata,\n entity,\n attributeTypeUri,\n defaultMaxValues = Infinity,\n offset = 0,\n searchQuery = ''\n}: Config) => {\n const values = pipe(\n findAttributeValuesByTypeUri,\n filter(({value}) => search(value, searchQuery))\n )(metadata, entity, attributeTypeUri);\n const ovValues = filter(isOv, values);\n\n return {\n [getAttributeSource(attributeTypeUri)]: {\n [getAttributeNameFromAttributeUri(attributeTypeUri)]: ovValues.slice(offset, offset + defaultMaxValues),\n paging: {\n [attributeTypeUri]: {\n totalOvValues: ovValues.length,\n totalValues: values.length\n }\n }\n }\n };\n};\n\nexport const areValuesEqual = (value1: AttributeValue, value2: AttributeValue): boolean => {\n const cleanser =\n is(Object, value1.value) || is(Object, value2.value)\n ? over(\n lensPath(['value']),\n cleanAttributesWith({\n valueTransformer: unless(isOv, omit(['value'])),\n deleteEmptyComplex: true\n })\n )\n : identity;\n return equals(cleanser(value1), cleanser(value2));\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n moreButton: {\n padding: '9px 16px 9px 12px',\n backgroundColor: 'rgba(98, 2, 238, 0)',\n marginBottom: '4px'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n divider: {\n margin: '0 -16px 8px',\n borderColor: 'rgba(0,0,0,0.12)'\n },\n ovFalse: theme.inactive,\n noData: {\n fontSize: '13px',\n color: theme.palette.text.secondary,\n padding: '8px 16px 8px 0'\n }\n}));\n","import React, {useCallback, useContext, useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport {always, cond, isEmpty, map, pathOr, pipe, prop, propEq, omit} from 'ramda';\nimport {useDispatch, useSelector} from 'react-redux';\nimport Button from '@mui/material/Button';\nimport AddIcon from '@mui/icons-material/Add';\nimport Divider from '@mui/material/Divider';\nimport Typography from '@mui/material/Typography';\nimport classnames from 'classnames';\nimport {\n CardinalityMessage,\n EditableAttribute,\n ErrorMessage,\n isHighlightedErrorType,\n ScrollToElementContext,\n useScrollToAttributeError,\n ViewIdContext,\n withContext\n} from '@reltio/components';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {\n AttributeType,\n AttributeValue,\n checkCanCreateAttribute,\n createNewAttribute,\n Entity,\n getAttributeOwnError,\n getAttributePagerActiveTypeErrorMessage,\n getAttributeSource,\n isComplexAttribute,\n isEmptyValue,\n isOv,\n isTempUri,\n AttributeItem,\n isAttributeTypeError,\n AttributeError\n} from '@reltio/mdm-sdk';\nimport {areValuesEqual} from '../../../hooks/helpers';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n values: AttributeValue[];\n attributeType: AttributeType;\n parentUri: string;\n showInactive: boolean;\n noDataText: string;\n highlightedError?: React.ContextType<typeof ScrollToElementContext>;\n};\n\nconst emptyArray = [];\n\nconst SingleAttributeEditableContent = ({\n values,\n attributeType,\n parentUri,\n showInactive,\n noDataText,\n highlightedError\n}: Props) => {\n const styles = useStyles();\n\n const {uri: attributeTypeUri, required: isRequired, cardinality, name} = attributeType;\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n const entity = useSelector(mdmModule.selectors.getEntity);\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entity.uri) || ({} as Entity)\n );\n const errors = useSelector((state) =>\n mdmModule.selectors.getActiveErrorsForAttributesPager(state, parentUri, attributeType)\n );\n const errorMessage = useSelector((state) =>\n getAttributePagerActiveTypeErrorMessage(parentUri, attributeType, mdmModule.selectors.getProfileErrors(state))\n );\n const mode = useSelector(mdmModule.selectors.getMode);\n const attributeSource = getAttributeSource(attributeType);\n const entityValuesUris: string[] = pipe(pathOr(emptyArray, [attributeSource, name]), map(prop('uri')))(entity);\n const modifiedEntityValues: AttributeValue[] = pathOr(emptyArray, [attributeSource, name], modifiedEntity);\n const modifiedEntityValuesUris: string[] = modifiedEntityValues.map(prop('uri'));\n const showEmptyEditors = isTempUri(entity.uri);\n\n const emptyEditorValue: AttributeValue = useMemo(\n () =>\n createNewAttribute({\n parentUri,\n attributeType: omit(['defaultValue'], attributeType)\n }),\n [parentUri, attributeType]\n );\n\n const {ref, errorClassName} = useScrollToAttributeError({highlightedError, isSimple: true});\n\n const isModifiedEntityValuesEmpty = isEmptyValue(modifiedEntityValues);\n const showEmpty = isRequired && isModifiedEntityValuesEmpty;\n\n const newValues = showEmpty ? [emptyEditorValue] : modifiedEntityValues.filter(pipe(prop('uri'), isTempUri));\n\n const onAddAttributes = useCallback(\n (params: AttributeItem[]) =>\n pipe(profile.actions.addAttributes, dispatch)(params.map((param) => ({...param, viewId}))),\n [viewId, dispatch]\n );\n\n const onChangeAttribute = useCallback(\n (params: AttributeItem) => pipe(profile.actions.modifyAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const onDeleteAttribute = useCallback(\n (params: AttributeItem) => pipe(profile.actions.removeAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const onDeactivateError = useCallback(pipe(profile.errors.actions.errorDeactivated, dispatch), [dispatch]);\n\n const onAdd = useCallback(() => {\n const createAttribute = (attributeType: AttributeType): AttributeItem => ({parentUri, attributeType});\n\n if (showEmpty && !isComplexAttribute(attributeType.type)) {\n const attributes = [createAttribute(omit(['defaultValue'], attributeType)), createAttribute(attributeType)];\n return onAddAttributes(attributes);\n }\n\n return onAddAttributes([createAttribute(attributeType)]);\n }, [onAddAttributes, parentUri, attributeType, showEmpty]);\n\n const canCreate = checkCanCreateAttribute({attributeType, mode});\n\n const commonProps = {\n attributeType: attributeType,\n errors,\n crosswalks: modifiedEntity.crosswalks,\n mode,\n onAddAttributes,\n onChangeAttribute,\n onDeactivateError,\n showNonOv: showInactive\n };\n const isEmptyAttributeList = newValues.length === 0 && values.length === 0;\n return (\n !isEmpty(modifiedEntity) && (\n <div ref={ref} className={errorClassName}>\n <CardinalityMessage cardinality={cardinality} />\n <ErrorMessage message={errorMessage} />\n {canCreate && (\n <Button color=\"primary\" onClick={onAdd} className={styles.moreButton}>\n <AddIcon classes={{root: styles.icon}} />\n <div className={styles.buttonLabel}>{i18n.text('Add')}</div>\n </Button>\n )}\n {newValues.map((value, idx) => (\n <EditableAttribute\n key={value.uri}\n {...commonProps}\n attributeValue={value}\n lazy={showEmpty && !isRequired}\n showEmptyEditors={showEmptyEditors}\n ownError={getAttributeOwnError(value, idx, attributeTypeUri, errors)}\n onDeleteAttribute={onDeleteAttribute}\n isEmptyEditor={showEmpty}\n />\n ))}\n {newValues.length > 0 && values.length > 0 && <Divider className={styles.divider} />}\n {values.map((originalValue) => {\n const modifiedEntityValue = modifiedEntityValues.find(propEq('uri', originalValue.uri));\n const value = modifiedEntityValue || originalValue;\n const deleted =\n entityValuesUris.includes(value.uri) && !modifiedEntityValuesUris.includes(value.uri);\n const edited =\n !deleted && modifiedEntityValue && !areValuesEqual(modifiedEntityValue, originalValue);\n const state = cond([\n [always(deleted), always('deleted')],\n [always(edited), always('edited')]\n ])();\n return (\n <div key={value.uri} className={classnames({[styles.ovFalse]: !isOv(value)})}>\n <EditableAttribute\n {...commonProps}\n attributeValue={value}\n ownError={getAttributeOwnError(value, null, attributeTypeUri, errors)}\n onDeleteAttribute={onDeleteAttribute}\n state={state}\n />\n </div>\n );\n })}\n {isEmptyAttributeList && <Typography className={styles.noData}>{noDataText}</Typography>}\n </div>\n )\n );\n};\n\nexport default withContext(\n ScrollToElementContext,\n (contextValue, {parentUri, attributeType}) => {\n const {element, type} = contextValue || {};\n const isHighlighted =\n isHighlightedErrorType(type) &&\n isAttributeTypeError(element as AttributeError, parentUri, attributeType.uri);\n return {highlightedError: isHighlighted ? contextValue : null};\n },\n SingleAttributeEditableContent\n);\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n simpleAttribute: {\n fontSize: '13px',\n lineHeight: '15px',\n marginBottom: '4px'\n }\n}));\n","import React from 'react';\nimport {ReadOnlyAttribute} from '@reltio/components';\nimport {AttributeType, AttributeValue, isComplexAttribute} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n values: AttributeValue[];\n attributeType: AttributeType;\n showInactive: boolean;\n};\n\nexport const SingleAttributeReadableContent = ({values, attributeType, showInactive}: Props) => {\n const style = useStyles();\n const isSimple = !isComplexAttribute(attributeType);\n return (\n <>\n {values.map((value) => {\n return (\n <ReadOnlyAttribute\n key={value.uri}\n attributeValue={value}\n attributeType={attributeType}\n showNonOv={showInactive}\n className={classnames({[style.simpleAttribute]: isSimple})}\n />\n );\n })}\n </>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n flexDirection: 'column'\n },\n content: {\n position: 'relative',\n padding: '4px 16px 9px',\n overflow: 'hidden',\n flexGrow: 1\n },\n noData: {\n fontSize: '13px',\n color: 'rgba(0,0,0,0.54)'\n },\n pagination: {\n flexGrow: 0,\n flexShrink: 0\n }\n}));\n","import React, {useContext} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {PivotingAttribute, SingleAttributeViewConfig} from '@reltio/mdm-sdk';\nimport {BasicView, BasicTablePagination, LinearLoadIndicator, PivotingAttributeContext} from '@reltio/components';\nimport mdm from '@reltio/mdm-module';\nimport Box from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport {SingleAttributeHeader} from '../SingleAttributeHeader/SingleAttributeHeader';\nimport SingleAttributeEditableContent from '../SingleAttributeEditableContent/SingleAttributeEditableContent';\nimport {SingleAttributeContext} from '../../contexts/SingleAttributeContext';\nimport {SingleAttributeReadableContent} from '../SingleAttributeReadableContent/SingleAttributeReadableContent';\nimport {useStyles} from './styles';\n\nconst DEFAULT_ROWS_PER_PAGE = 15;\n\ntype Props = {\n config: SingleAttributeViewConfig;\n className?: string;\n};\n\nexport const SingleAttributeView = ({config, className}: Props) => {\n const {caption, max = DEFAULT_ROWS_PER_PAGE, showInactiveValuesMenu} = config;\n\n const styles = useStyles();\n\n const {values, totalVisibleValues, page, setPage, isLoading, hasPaging, attributeType, showInactive} =\n useContext(SingleAttributeContext);\n\n const entityUri = useSelector(mdm.selectors.getEntityUri);\n const isViewMode = useSelector(mdm.selectors.getIsViewMode);\n const isEditableMode = useSelector(mdm.selectors.getIsEditableMode);\n const pivotingAttributes: PivotingAttribute[] = useSelector(mdm.selectors.getPivotingAttributes);\n\n const hasValues = values.length !== 0;\n const noDataText = config['text-empty'] || i18n.text('No data found');\n\n const renderContent = () => {\n if (isLoading) {\n return <LinearLoadIndicator />;\n }\n\n if (attributeType) {\n if (isViewMode && hasValues) {\n const props = {\n values,\n attributeType,\n showInactive\n };\n return <SingleAttributeReadableContent {...props} />;\n } else if (isEditableMode) {\n const props = {\n values,\n attributeType,\n parentUri: entityUri,\n showInactive,\n noDataText\n };\n return <SingleAttributeEditableContent {...props} />;\n }\n }\n\n return <Typography className={styles.noData}>{noDataText}</Typography>;\n };\n\n return (\n <PivotingAttributeContext.Provider value={pivotingAttributes}>\n <BasicView className={classnames(styles.root, className)}>\n <SingleAttributeHeader\n totalVisibleValues={totalVisibleValues}\n caption={caption}\n showInactiveValuesMenu={showInactiveValuesMenu}\n isEditableMode={isEditableMode}\n />\n <Box className={styles.content}>{renderContent()}</Box>\n {hasPaging && (\n <BasicTablePagination\n count={totalVisibleValues}\n page={page}\n rowsPerPage={max}\n rowsPerPageOptions={[]}\n onChangePage={setPage}\n classes={{root: styles.pagination}}\n />\n )}\n </BasicView>\n </PivotingAttributeContext.Provider>\n );\n};\n","import {useCallback, useState, useEffect, useMemo, useRef} from 'react';\nimport {ifElse, prop, always, has, pathOr, path, partition, propEq} from 'ramda';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {\n isDataTenantEntity,\n getPagedEntity,\n getAttributeSource,\n AttributeValue,\n SearchFilter,\n findAttributeTypeByUri,\n isReadableAttribute,\n isTempUri,\n isOv,\n findAttributeValues,\n isFirstLevelAttributeUri,\n SingleAttributeViewConfig,\n getRequestErrorMessage,\n Paging,\n Order,\n Entity\n} from '@reltio/mdm-sdk';\nimport mdm, {profile, ui} from '@reltio/mdm-module';\nimport {useSafePromise, useDidUpdateEffect} from '@reltio/components';\nimport {getPagedLocalEntity, getAttributeNameFromAttributeUri} from './helpers';\nimport i18n from 'ui-i18n';\n\ntype Params = {\n filters?: SearchFilter[];\n searchQuery?: string;\n sorting?: {\n field: string;\n order: Order;\n };\n page: number;\n showInactive: boolean;\n};\n\nexport const useSingleAttributeLoader = <GenericAttributeValue extends AttributeValue>(\n config: SingleAttributeViewConfig,\n params: Params\n) => {\n const {attributeUri, max = 15} = config;\n const metadata = useSelector(mdm.selectors.getMetadata);\n const [values, setValues] = useState<GenericAttributeValue[]>([]);\n const [paging, setPaging] = useState<Paging>(null);\n const [isLoading, setIsLoading] = useState(false);\n const safePromise = useSafePromise();\n const attributeValuesRef = useRef<AttributeValue[]>(null);\n\n const dispatch = useDispatch();\n const apiPath = useSelector(mdm.selectors.getApiPath);\n const tenant = useSelector(mdm.selectors.getTenant);\n const entity = useSelector(mdm.selectors.getEntityWithDiff);\n\n const isViewMode = useSelector(mdm.selectors.getIsViewMode);\n const isHistoryModeEnabled = useSelector(mdm.selectors.getIsHistoryModeEnabled);\n const diff = useSelector(mdm.selectors.getHistoryDiff);\n\n const parentUri = entity.uri;\n const attributeTypeName = getAttributeNameFromAttributeUri(attributeUri);\n const attributeTypeSource = getAttributeSource(attributeUri);\n attributeValuesRef.current = findAttributeValues(entity, parentUri, attributeTypeName);\n const attributeType = useMemo(() => findAttributeTypeByUri(metadata, attributeUri), [metadata, attributeUri]);\n const {globalFilter} = useSelector(mdm.selectors.getGlobalSearchRequestOptions);\n const {showInactive} = params;\n const loadAttributes = useCallback(() => {\n if (\n attributeType &&\n isReadableAttribute(attributeType) &&\n !isTempUri(parentUri) &&\n isFirstLevelAttributeUri(attributeUri)\n ) {\n setIsLoading(true);\n const {page, showInactive, searchQuery, ...rest} = params;\n\n const getRequest = (): Promise<Pick<Entity, 'attributes' | 'analyticsAttributes'>> => {\n const commonProps = {\n defaultMaxValues: max,\n attributeTypeUri: attributeUri,\n offset: max * page,\n searchQuery\n };\n\n if (isDataTenantEntity(entity) || isHistoryModeEnabled) {\n return getPagedLocalEntity({...commonProps, metadata, entity});\n }\n\n return getPagedEntity({\n ...commonProps,\n ...rest,\n tenant,\n apiPath,\n parentUri,\n options: showInactive ? '' : undefined,\n globalFilter\n });\n };\n\n safePromise(getRequest())\n .then((response) => {\n const attributes = path([attributeTypeSource], response);\n const values: GenericAttributeValue[] = pathOr([], [attributeTypeName], attributes);\n if (!isHistoryModeEnabled) {\n dispatch(\n profile.actions.processNextPageOfAttributeValues({\n parentUri,\n attributeTypeUri: attributeUri,\n attributeTypeName,\n values\n })\n );\n }\n setValues(\n values.map((loadedValue) => {\n const valueFromEntity = attributeValuesRef.current?.find(propEq('uri', loadedValue.uri));\n return (valueFromEntity as GenericAttributeValue) || loadedValue;\n })\n );\n setPaging(path(['paging', attributeUri], attributes));\n })\n .catch((error) => {\n console.error(error);\n setValues([]);\n dispatch(ui.actions.errorSet(getRequestErrorMessage(error, i18n.text('Something went wrong'))));\n })\n .finally(() => {\n setIsLoading(false);\n });\n } else {\n setValues([]);\n setPaging(null);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n apiPath,\n parentUri,\n tenant,\n attributeUri,\n max,\n metadata,\n params,\n globalFilter,\n attributeType,\n isHistoryModeEnabled,\n diff\n ]);\n\n useEffect(() => {\n loadAttributes();\n }, [loadAttributes]);\n\n useDidUpdateEffect(() => {\n if (isViewMode) {\n loadAttributes();\n }\n }, [isViewMode]);\n const partitionByOv = partition(isOv);\n const [, nonOvValues] = partitionByOv(attributeValuesRef.current || []);\n const nonVisibleValues: GenericAttributeValue[] = showInactive ? [] : nonOvValues;\n const totalProp = showInactive ? 'totalValues' : 'totalOvValues';\n const totalVisibleValues: number = ifElse(has(totalProp), prop(totalProp), always(values.length))(paging);\n const hasPaging = max < totalVisibleValues;\n const totalNonVisibleValues = paging?.totalValues\n ? paging.totalValues - totalVisibleValues\n : nonVisibleValues.length;\n return {\n values,\n isLoading,\n hasPaging,\n totalVisibleValues,\n attributeType,\n totalNonVisibleValues,\n nonVisibleValues\n };\n};\n","import React from 'react';\nimport {RelationsViewState} from '../hooks/useRelationsState';\n\nexport const RelationsViewStateContext = React.createContext<RelationsViewState>(null);\n\nRelationsViewStateContext.displayName = 'RelationsViewStateContext';\n","import {makeStyles} from '@mui/styles';\n\nconst popupHorizontalPadding = '23px';\n\nexport const useStyles = makeStyles((theme) => ({\n button: {\n color: theme.palette.text.secondary,\n width: '36px',\n minWidth: '36px'\n },\n popupContent: {\n padding: `19px ${popupHorizontalPadding}`\n },\n checkboxControlLabel: {\n fontSize: '0.85rem'\n },\n checkboxControlCheckbox: {\n marginRight: '5px'\n },\n divider: {\n borderColor: 'rgba(0,0,0,0.1)',\n margin: `19px -${popupHorizontalPadding}`\n },\n title: {\n marginBottom: '30px'\n },\n sortControls: {\n display: 'flex',\n alignItems: 'center'\n },\n sortSelectorRoot: {\n flex: 1,\n padding: '13px 16px',\n fontSize: '0.85rem'\n },\n sortSelectorMenuItem: {\n fontSize: '0.85rem'\n },\n sortOrderButton: {\n flexShrink: 0,\n margin: '0 8px 0 7px'\n }\n}));\n","import React, {useContext, useRef, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {isEmptyValue} from '@reltio/mdm-sdk';\nimport {DropDownEditor, SmallIconButtonWithTooltip} from '@reltio/components';\nimport Popover from '@mui/material/Popover';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Checkbox from '@mui/material/Checkbox';\nimport FilterIcon from '@mui/icons-material/FilterList';\nimport Button from '@mui/material/Button';\nimport Divider from '@mui/material/Divider';\nimport Typography from '@mui/material/Typography';\nimport ArrowUpwardIcon from '@mui/icons-material/ArrowUpward';\nimport ArrowDownwardIcon from '@mui/icons-material/ArrowDownward';\nimport {RelationsViewStateContext} from '../../../contexts/RelationsViewStateContext';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n};\n\nconst FilterButton = ({className}: Props) => {\n const styles = useStyles();\n const buttonRef = useRef();\n const {showInactive, toggleShowInactive, sortOrder, toggleSortOrder, sortOption, changeSortOption, sortOptions} =\n useContext(RelationsViewStateContext);\n const [isOpen, setIsOpen] = useState(false);\n\n const togglePopup = () => setIsOpen((open) => !open);\n\n const hasSortOptions = !isEmptyValue(sortOptions);\n\n const isAsc = sortOrder === 'asc';\n\n return (\n <>\n <Button\n ref={buttonRef}\n classes={{\n root: classnames(styles.button, className)\n }}\n onClick={togglePopup}\n >\n <FilterIcon />\n </Button>\n <Popover\n open={isOpen}\n classes={{paper: styles.popupContent}}\n anchorEl={buttonRef.current}\n onClose={togglePopup}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <FormControlLabel\n classes={{\n label: styles.checkboxControlLabel\n }}\n control={\n <Checkbox\n className={styles.checkboxControlCheckbox}\n checked={showInactive || false}\n onChange={toggleShowInactive}\n />\n }\n label={i18n.text('Show inactive Relationships')}\n />\n {hasSortOptions && (\n <>\n <Divider className={styles.divider} />\n <Typography className={styles.title} variant=\"h6\">\n {i18n.text('Sort by')}\n </Typography>\n <div className={styles.sortControls}>\n <DropDownEditor\n entries={sortOptions}\n TextFieldProps={{variant: 'filled'}}\n classes={{\n root: styles.sortSelectorRoot,\n menuItem: styles.sortSelectorMenuItem\n }}\n fullWidth\n disableUnderline\n value={sortOption}\n onChange={changeSortOption}\n MenuProps={{\n anchorOrigin: {vertical: 'bottom', horizontal: 'left'}\n }}\n />\n <SmallIconButtonWithTooltip\n tooltipTitle={isAsc ? i18n.text('Ascending') : i18n.text('Descending')}\n icon={isAsc ? ArrowUpwardIcon : ArrowDownwardIcon}\n onClick={toggleSortOrder}\n className={styles.sortOrderButton}\n size=\"L\"\n />\n </div>\n </>\n )}\n </Popover>\n </>\n );\n};\n\nFilterButton.displayName = 'FilterButton';\n\nexport default FilterButton;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n header: {\n padding: '0 6px 0 16px'\n },\n rightMenuItems: {\n display: 'flex',\n flex: '1 0 auto',\n justifyContent: 'flex-end',\n alignItems: 'center'\n },\n totalCaption: {\n lineHeight: '19px',\n fontSize: '14px',\n letterSpacing: '0.24px',\n color: 'rgba(0,0,0,0.6)',\n flexShrink: 0,\n marginRight: '5px',\n justifyContent: 'flex-start',\n paddingTop: '16px',\n paddingBottom: '13px'\n }\n});\n","import React from 'react';\nimport {RelationsViewConfig} from '@reltio/mdm-sdk';\n\nexport const ImportDTContext = React.createContext<{\n reloadRelations: () => void;\n config: Pick<RelationsViewConfig, 'content' | 'importFromDT' | 'maxDtssImport'>;\n }>(null);\n","import {useSelector, useDispatch} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {useCallback, useContext, useEffect, useState} from 'react';\nimport {getRequestErrorMessage, hasNonImportedRelations, importDTConnections, isTempUri} from '@reltio/mdm-sdk';\nimport {ui} from '@reltio/mdm-module';\nimport {ImportDTContext} from '../../../../contexts/ImportDTContext';\nimport i18n from 'ui-i18n';\n\nconst MAX = Math.pow(2, 31) - 1;\ntype Tenant = {id: string; label: string};\n\nexport const useImportFromDTLoader = () => {\n const dataTenants: Array<Tenant> = useSelector(mdmModule.selectors.getDataTenants);\n const dispatch = useDispatch();\n const {config, reloadRelations} = useContext(ImportDTContext);\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const [tenants, setTenants] = useState<Array<Tenant>>([]);\n const [selectedTenant, setSelectedTenant] = useState<Tenant>(null);\n const dtssPath = useSelector(mdmModule.selectors.getDtssPath);\n const customerTenant = useSelector(mdmModule.selectors.getTenant);\n const content = [{...config.content, offset: 0, max: config.maxDtssImport ?? MAX}];\n\n const checkHasNonImportedConnections = useCallback(() => {\n setTenants([]);\n if (config.importFromDT && !isTempUri(entityUri)) {\n Promise.all(\n (dataTenants || []).map((tenant) =>\n hasNonImportedRelations({\n entityUri,\n content,\n dtssPath,\n customerTenant,\n dataTenant: tenant.id\n }).then(({hasNonImportedConnections}) => ({\n ...tenant,\n hasNonImportedConnections\n }))\n )\n )\n .then((modifiedTenants) => modifiedTenants.filter((tenant) => tenant.hasNonImportedConnections))\n .then(setTenants);\n }\n }, [entityUri, dtssPath, customerTenant, config, dataTenants]);\n\n const onConfirmImport = useCallback(() => {\n importDTConnections({\n entityUri,\n content,\n dtssPath,\n customerTenant,\n dataTenant: selectedTenant.id\n })\n .then(() => {\n reloadRelations();\n checkHasNonImportedConnections();\n })\n .catch((error) =>\n dispatch(ui.actions.errorSet(getRequestErrorMessage(error, i18n.text('Something went wrong'))))\n );\n setSelectedTenant(null);\n }, [\n entityUri,\n dtssPath,\n customerTenant,\n config,\n checkHasNonImportedConnections,\n reloadRelations,\n selectedTenant,\n setSelectedTenant\n ]);\n\n useEffect(() => {\n checkHasNonImportedConnections();\n }, [checkHasNonImportedConnections]);\n const onCancelConfirmation = useCallback(() => setSelectedTenant(null), []);\n const onImportClick = useCallback((tenant: Tenant) => setSelectedTenant(tenant), []);\n return {\n tenants,\n selectedTenant,\n onConfirmImport,\n onCancelConfirmation,\n onImportClick\n };\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n tenant: {\n backgroundColor: '#0000EE',\n cursor: 'pointer',\n position: 'absolute',\n top: '8px',\n left: '22px',\n width: '10px',\n height: '10px',\n color: 'white',\n fontSize: '10px',\n fontWeight: 'bold',\n userSelect: 'text',\n zIndex: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n },\n button: {\n position: 'relative'\n },\n badge: {\n fontSize: '10px',\n height: '14px',\n minWidth: '14px',\n width: '14px',\n fontWeight: 'bold',\n backgroundColor: '#FF4081',\n color: '#FFF'\n },\n badgePosition: {\n right: '5px',\n top: '4px'\n }\n}));\n","import React from 'react';\nimport CloudDownloadIcon from '@mui/icons-material/CloudDownload';\nimport Badge from '@mui/material/Badge';\nimport {useStyles} from './styles';\n\ninterface Props {\n label: number | string;\n}\n\nexport const MultipleImportIcon = ({label}: Props) => {\n const styles = useStyles();\n return (\n <Badge\n classes={{\n anchorOriginTopRightRectangular: styles.badgePosition,\n badge: styles.badge\n }}\n badgeContent={label}\n >\n <CloudDownloadIcon />\n </Badge>\n );\n};\n","import React from 'react';\nimport CloudDownloadIcon from '@mui/icons-material/CloudDownload';\nimport {DropDownMenuButton, SmallIconButtonWithTooltip} from '@reltio/components';\nimport {useImportFromDTLoader} from './hooks/useImportFromDTLoader';\nimport {useStyles} from './styles';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {ConfirmationDialog} from '@reltio/components';\nimport {MultipleImportIcon} from './MultipleImportIcon';\n\nexport const ImportFromDT = () => {\n const {tenants, selectedTenant, onConfirmImport, onCancelConfirmation, onImportClick} = useImportFromDTLoader();\n const styles = useStyles();\n const oneTenant = tenants.length === 1;\n const labelOnButton = oneTenant\n ? tenants[0].label.indexOf('DT:') === 0\n ? tenants[0].label[3]\n : tenants[0].label[0]\n : tenants.length;\n return (\n <>\n {!!tenants.length && (\n <>\n {oneTenant ? (\n <div className={styles.button}>\n <SmallIconButtonWithTooltip\n size={'L'}\n icon={CloudDownloadIcon}\n tooltipTitle={i18n.text('Import connections from ${label}', {label: tenants[0].label})}\n onClick={() => onImportClick(tenants[0])}\n />\n <div className={classnames(styles.tenant)}>{labelOnButton}</div>\n </div>\n ) : (\n <DropDownMenuButton\n menuId={'importDT-table-actions'}\n buttonComponent={SmallIconButtonWithTooltip}\n buttonProps={{\n tooltipTitle: i18n.text('Import connections'),\n size: 'L',\n // eslint-disable-next-line react/display-name\n icon: () => <MultipleImportIcon label={labelOnButton} />\n }}\n menuItems={tenants.map((tenant) => ({\n onClick: () => {\n onImportClick(tenant);\n },\n text: tenant.label\n }))}\n />\n )}\n <ConfirmationDialog\n open={!!selectedTenant}\n title={i18n.text('Confirmation')}\n content={i18n.text('Import connections from ${label}?', {label: selectedTenant?.label})}\n discardCaption={i18n.text('Cancel')}\n saveCaption={i18n.text('Import')}\n onDiscard={onCancelConfirmation}\n onSave={onConfirmImport}\n />\n </>\n )}\n </>\n );\n};\n","import React, {useContext} from 'react';\nimport i18n from 'ui-i18n';\nimport {ExpandableSearchInput, FacetViewHeader, HideOnShrink, VerticalDivider} from '@reltio/components';\nimport Typography from '@mui/material/Typography';\nimport FilterButton from './FilterButton/FilterButton';\nimport {RelationsViewStateContext} from '../../contexts/RelationsViewStateContext';\nimport {useStyles} from './styles';\nimport {ImportFromDT} from './ImportFromDT/ImportFromDT';\n\ntype Props = {\n title?: string;\n total?: number;\n};\n\nconst RelationsHeader = ({title, total}: Props) => {\n const styles = useStyles();\n\n const {searchQuery, changeSearchQuery} = useContext(RelationsViewStateContext);\n\n return (\n <FacetViewHeader title={title || ''} className={styles.header}>\n {total > 0 && (\n <HideOnShrink widthToHide={400}>\n <VerticalDivider height={24} margin={16} />\n <Typography className={styles.totalCaption} variant=\"caption\">\n {total > 1\n ? i18n.text('${count} items', {count: total})\n : i18n.text('${count} item', {count: total})}\n </Typography>\n </HideOnShrink>\n )}\n <div className={styles.rightMenuItems}>\n <ExpandableSearchInput query={searchQuery} onChange={changeSearchQuery} />\n <ImportFromDT />\n <FilterButton />\n </div>\n </FacetViewHeader>\n );\n};\n\nexport default RelationsHeader;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n tooltip: theme.tooltip,\n tooltipContent: {\n minWidth: '165px',\n padding: '4px 2px 2px'\n },\n label: {\n fontSize: '11px',\n lineHeight: '13px',\n fontWeight: 500,\n margin: 0,\n color: 'white'\n },\n secondaryLabel: {\n color: 'rgba(255, 255, 255, 0.7)',\n fontSize: '10px',\n marginTop: '4px',\n fontWeight: 500,\n lineHeight: '11px'\n },\n progress: {\n marginTop: '4px',\n color: '#FFFFFF'\n }\n}));\n","import React, {useCallback, useEffect, useState} from 'react';\nimport {isNil, ifElse} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {\n ConnectionEntity,\n getDataTenantEntitySecondaryLabel,\n getEntitySecondaryLabel,\n isDataTenantEntity,\n isTempUri\n} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {useSafePromise} from '@reltio/components';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Tooltip from '@mui/material/Tooltip';\nimport {useStyles} from './styles';\n\nconst PROGRESS_ICON_SIZE = 16;\n\ntype Props = {\n label: string;\n entity?: ConnectionEntity;\n children: React.ReactElement;\n};\n\nconst RelationTooltip = ({label, entity, children, ...tooltipProps}: Props) => {\n const styles = useStyles();\n const safePromise = useSafePromise();\n const tenant = useSelector(mdm.selectors.getTenant);\n const dtssPath = useSelector(mdm.selectors.getDtssPath) as string;\n const [isLoading, setIsLoading] = useState(false);\n const [secondaryLabel, setSecondaryLabel] = useState<string>(null);\n\n useEffect(() => {\n setSecondaryLabel(null);\n }, [entity]);\n\n const onOpen = useCallback(() => {\n if (entity?.entityUri && !isTempUri(entity?.entityUri) && isNil(secondaryLabel)) {\n const request = ifElse(\n isDataTenantEntity,\n (entity: ConnectionEntity) =>\n getDataTenantEntitySecondaryLabel({\n entityUri: entity.entityUri,\n dataTenant: entity.dataTenant,\n customerTenant: tenant,\n dtssPath\n }),\n (entity: ConnectionEntity) => getEntitySecondaryLabel(entity.entityUri)\n );\n\n setIsLoading(true);\n safePromise(request(entity))\n .then(({secondaryLabel}) => {\n setSecondaryLabel(secondaryLabel);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }\n }, [dtssPath, entity, tenant, safePromise, secondaryLabel]);\n\n const tooltipContent = (\n <div className={styles.tooltipContent}>\n <div className={styles.label}>{label}</div>\n {isLoading && <CircularProgress size={PROGRESS_ICON_SIZE} classes={{colorPrimary: styles.progress}} />}\n {secondaryLabel && <div className={styles.secondaryLabel}>{secondaryLabel}</div>}\n </div>\n );\n\n return (\n <Tooltip\n onOpen={onOpen}\n title={tooltipContent}\n disableFocusListener\n classes={{tooltip: styles.tooltip}}\n {...tooltipProps}\n >\n {children}\n </Tooltip>\n );\n};\n\nexport default RelationTooltip;\n","import {\n Connection,\n Metadata,\n getEntityType,\n getLabel,\n getEntityUriForLink,\n getRelationTypeLabelFromMetadata,\n TEntityType\n} from '@reltio/mdm-sdk';\n\nexport const useRelationInfo = (connection: Connection, metadata: Metadata) => {\n const {entity, relation} = connection;\n const entityType = getEntityType(metadata, entity?.entityType) as TEntityType;\n const entityLabel = getLabel(entity?.entityLabel) as string;\n const preparedUri = getEntityUriForLink({uri: entity?.entityUri, dataTenant: entity?.dataTenant}) as string;\n const relationLabel =\n relation?.relationLabel || (getRelationTypeLabelFromMetadata(metadata, relation?.relationType) as string);\n\n return {\n entityType,\n entityLabel,\n preparedUri,\n relationLabel\n };\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n container: {\n display: 'flex'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport Button, {ButtonProps} from '@mui/material/Button';\nimport {useStyles} from './styles';\n\ntype Props = {\n acceptRelation: () => void;\n ignoreRelation: () => void;\n};\n\nexport const SuggestedButtons = ({acceptRelation, ignoreRelation, ...props}: Props & ButtonProps) => {\n const styles = useStyles();\n return (\n <div className={styles.container}>\n <Button onClick={acceptRelation} variant=\"text\" color=\"primary\" {...props} style={{alignSelf: 'center'}}>\n {i18n.text('Accept')}\n </Button>\n <Button onClick={ignoreRelation} variant=\"text\" color=\"primary\" {...props} style={{alignSelf: 'center'}}>\n {i18n.text('Ignore')}\n </Button>\n </div>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n container: {\n display: 'flex',\n flexDirection: 'column',\n\n marginBottom: '2px'\n },\n row: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'row',\n minHeight: '24px',\n padding: '0 16px'\n },\n rowInactive: {\n background: theme.inactiveBackground\n },\n entityAvatar: {\n height: '12px',\n width: '12px',\n fontSize: '11px',\n marginRight: '8px'\n },\n entityLabelContainer: {\n textDecoration: 'none',\n cursor: 'pointer',\n paddingRight: '8px'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n relationLabel: {\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n editButtonsContent: {\n marginLeft: 'auto',\n flex: '0 0 40px'\n },\n editButtons: {\n padding: 0\n },\n removed: {\n color: theme.palette.text.secondary,\n textDecoration: 'line-through'\n },\n editedLabel: {\n fontStyle: 'italic',\n color: theme.palette.text.secondary,\n margin: '0 5px'\n }\n}));\n","import React, {memo, useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport mdm from '@reltio/mdm-module';\nimport Typography from '@mui/material/Typography';\nimport EditIcon from '@mui/icons-material/Edit';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport {Connection, Metadata, isActiveObject, checkRemoved, checkEdited, checkIgnored} from '@reltio/mdm-sdk';\nimport {EntityTypeIcon, EntityUriLink, SmallIconButtonWithTooltip} from '@reltio/components';\nimport RelationTooltip from '../RelationTooltip/RelationTooltip';\nimport {useRelationInfo} from '../../hooks/useRelationInfo';\nimport {checkRelationPermission} from '../../helpers/permissions';\nimport {SuggestedButtons} from '../SuggestedButtons/SuggestedButtons';\nimport {useStyles} from './styles';\n\ntype Props = {\n connection: Connection;\n onRemoveRelation: (relationUri: string) => void;\n onEditRelation: (connection: Connection) => void;\n onAcceptRelation?: (connection: Connection) => void;\n onIgnoreRelation?: (connection: Connection) => void;\n metadata: Metadata;\n showControls: boolean;\n renderRelationArrowButton?: () => React.ReactNode;\n};\n\nconst EditableRelationItem = memo(\n ({\n connection,\n metadata,\n showControls,\n onRemoveRelation,\n onEditRelation,\n onAcceptRelation,\n onIgnoreRelation,\n renderRelationArrowButton\n }: Props) => {\n const styles = useStyles();\n\n const {entity, relation} = connection;\n const removed = checkRemoved(connection);\n const edited = checkEdited(connection);\n const ignored = checkIgnored(connection);\n const {entityType, entityLabel, preparedUri, relationLabel} = useRelationInfo(connection, metadata);\n const isActive = isActiveObject(relation) && isActiveObject(entity);\n const mode = useSelector(mdm.selectors.getMode);\n const {canRemove, canUpdate} = checkRelationPermission({\n mode,\n onRemoveRelation,\n onEditRelation,\n metadata,\n connection\n });\n\n const handleRemoveRelation = useCallback(\n () => onRemoveRelation(connection.relation.relationUri),\n [onRemoveRelation, connection]\n );\n\n const handleEditRelation = useCallback(() => onEditRelation(connection), [onEditRelation, connection]);\n\n const handleAcceptRelation = useCallback(() => {\n onAcceptRelation(connection);\n }, [onAcceptRelation, connection]);\n\n const handleIgnoreRelation = useCallback(() => onIgnoreRelation(connection), [onIgnoreRelation, connection]);\n\n const editButtonsContent =\n (canRemove || canUpdate) && showControls && !connection.suggested ? (\n <>\n {canUpdate && (\n <SmallIconButtonWithTooltip\n icon={EditIcon}\n size=\"XS\"\n onClick={handleEditRelation}\n tooltipTitle={i18n.text('Edit')}\n />\n )}\n {canRemove && (\n <SmallIconButtonWithTooltip\n icon={DeleteIcon}\n size=\"XS\"\n onClick={handleRemoveRelation}\n tooltipTitle={i18n.text('Remove')}\n />\n )}\n </>\n ) : undefined;\n\n const suggustedButtonsContent = connection.suggested ? (\n <SuggestedButtons\n acceptRelation={handleAcceptRelation}\n ignoreRelation={handleIgnoreRelation}\n size=\"small\"\n disabled={ignored}\n />\n ) : undefined;\n const captionText = ignored ? i18n.text('ignored') : i18n.text('edited');\n return (\n <div\n className={classnames(\n styles.container,\n {[styles.rowInactive]: !isActive},\n {[styles.removed]: removed || ignored}\n )}\n >\n <div className={styles.row}>\n {renderRelationArrowButton && renderRelationArrowButton()}\n <EntityTypeIcon className={styles.entityAvatar} entityType={entityType} />\n <EntityUriLink value={preparedUri} className={styles.entityLabelContainer}>\n <RelationTooltip label={entityLabel} entity={entity}>\n <span className={styles.entityLabel}>{entityLabel}</span>\n </RelationTooltip>\n {(edited || ignored) && (\n <Typography variant=\"caption\" className={styles.editedLabel}>\n ({captionText})\n </Typography>\n )}\n {relationLabel && <span className={styles.relationLabel}>{`, ${relationLabel}`}</span>}\n </EntityUriLink>\n\n <div className={styles.editButtonsContent}>{editButtonsContent}</div>\n {suggustedButtonsContent}\n </div>\n </div>\n );\n }\n);\n\nEditableRelationItem.displayName = 'EditableRelationItem';\n\nexport default EditableRelationItem;\n","import {checkMetadataForDelete, checkMetadataForUpdate, checkRemoved, getRelationType, Mode} from '@reltio/mdm-sdk';\n\nexport const checkRelationPermission = ({metadata, mode, connection, onRemoveRelation, onEditRelation}) => {\n const isEditableMode = mode === Mode.Editing || mode === Mode.Suggesting;\n if (isEditableMode && connection) {\n const {\n relation: {relationType}\n } = connection;\n const isRemoved = checkRemoved(connection);\n const relationTypeMetadata = getRelationType(metadata, relationType);\n const canRemove = onRemoveRelation && !isRemoved && checkMetadataForDelete(mode, relationTypeMetadata);\n const canUpdate = onEditRelation && !isRemoved && checkMetadataForUpdate(mode, relationTypeMetadata);\n return {canRemove, canUpdate};\n } else {\n return {canRemove: false, canUpdate: false};\n }\n};\n","import {prop, when} from 'ramda';\nimport {Directions, wrapInArrayIfNeeded, InOutRelation, isObject, ComplexInOutRelationItem} from '@reltio/mdm-sdk';\n\nconst getUri: (relation: string | ComplexInOutRelationItem) => string = when(isObject, prop('uri'));\n\nexport const getFirstRelationTypeObject = (inRelations: InOutRelation, outRelations: InOutRelation) => {\n const prepareRelation = (direction: string, relations: InOutRelation) => {\n const relationsArr = relations ? wrapInArrayIfNeeded(relations) : [];\n return relationsArr.map((relation) => ({\n type: getUri(relation),\n direction: direction === Directions.IN ? Directions.IN : Directions.OUT\n }));\n };\n return prepareRelation(Directions.IN, inRelations).concat(prepareRelation(Directions.OUT, outRelations))[0];\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n arrowIcon: {\n fontSize: '16px',\n marginRight: '6px'\n }\n});\n","import React from 'react';\nimport ArrowRightIcon from '@mui/icons-material/ArrowRight';\nimport ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';\nimport {checkNew, Connection, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\ntype Props = {\n onClick: () => void;\n connection: Connection;\n config: RelationsViewConfig;\n showSecondLevel: boolean;\n};\n\nexport const RelationArrowButton = ({onClick, connection, config, showSecondLevel}: Props) => {\n const styles = useStyles();\n const {parentEntityUri} = connection;\n const {contentSecondLevel} = config;\n\n const props = {\n onClick,\n className: styles.arrowIcon\n };\n\n if (parentEntityUri || !contentSecondLevel || checkNew(connection)) {\n return null;\n }\n\n return showSecondLevel ? <ArrowDropDownIcon {...props} /> : <ArrowRightIcon {...props} />;\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n row: {\n display: 'flex',\n alignItems: 'center',\n width: '100%'\n },\n secondLevelContent: {\n paddingLeft: '24px'\n }\n});\n","import React, {useContext, useMemo} from 'react';\nimport {Connection, ActivityFilter, getEntitiesMapForConnections, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {useSecondLevelConnections} from '../../hooks/useSecondLevelConnections';\nimport {RelationArrowButton} from '../RelationArrowButton/RelationArrowButton';\nimport {RelationsContent} from '../RelationsContent/RelationsContent';\nimport {useStyles} from './styles';\nimport {RelationsViewStateContext} from '../../contexts/RelationsViewStateContext';\nimport {EntitiesMapContext} from '@reltio/components';\n\ntype Props = {\n config: RelationsViewConfig;\n connection: Connection;\n children: (render: () => React.ReactNode) => React.ReactNode;\n};\n\nexport const SecondLevelWrapper = ({config, connection, children}: Props) => {\n const styles = useStyles();\n\n const {showInactive} = useContext(RelationsViewStateContext);\n\n const {\n connections,\n showSecondLevel,\n toggleShowSecondLevel,\n loadRelations,\n loading,\n total\n } = useSecondLevelConnections({\n config,\n connection,\n relationActivityFilter: showInactive ? ActivityFilter.ALL : ActivityFilter.ACTIVE_ONLY\n });\n\n const entitiesMap = useMemo(() => getEntitiesMapForConnections(connections), [connections]);\n\n const renderRelationArrowButton = () => {\n return (\n <RelationArrowButton\n onClick={toggleShowSecondLevel}\n connection={connection}\n config={config}\n showSecondLevel={showSecondLevel}\n />\n );\n };\n\n return (\n <>\n {children(renderRelationArrowButton)}\n {showSecondLevel && (\n <EntitiesMapContext.Provider value={entitiesMap}>\n <div className={styles.secondLevelContent}>\n <RelationsContent\n isLoading={loading}\n config={config}\n loadRelations={loadRelations}\n connections={connections}\n total={total}\n parentEntityUri={connection.entity.entityUri}\n />\n </div>\n </EntitiesMapContext.Provider>\n )}\n </>\n );\n};\n","import {useState, useCallback} from 'react';\nimport {useSelector, useDispatch} from 'react-redux';\nimport {\n Connection,\n getRelationsForEntity,\n ActivityFilter,\n GlobalSearchRequestOptions,\n RelationsViewConfig\n} from '@reltio/mdm-sdk';\nimport mdmModule, {profile} from '@reltio/mdm-module';\n\ntype Params = {\n config: RelationsViewConfig;\n connection: Connection;\n relationActivityFilter: ActivityFilter;\n};\n\nexport const useSecondLevelConnections = ({config, connection, relationActivityFilter}: Params) => {\n const dispatch = useDispatch();\n\n const [showSecondLevel, setShowSecondLevel] = useState(false);\n const [loading, setLoading] = useState(false);\n\n const {contentSecondLevel} = config;\n const {entity} = connection;\n\n const connections =\n (useSelector((state) =>\n mdmModule.selectors.getConnectionsWithDraftsByViewId(state, config.id, entity.entityUri)\n ) as Connection[]) || [];\n\n const total = useSelector((state) => mdmModule.selectors.getTotalByViewId(state, config.id, entity.entityUri));\n const {activityFilter}: GlobalSearchRequestOptions =\n useSelector(mdmModule.selectors.getGlobalSearchRequestOptions) || {};\n\n const loadRelations = useCallback(() => {\n const requestConfig = {\n ...contentSecondLevel,\n returnObjects: true,\n returnDates: true,\n activeness: {\n relation: relationActivityFilter || ActivityFilter.ALL,\n entity: activityFilter\n }\n };\n\n setLoading(true);\n\n getRelationsForEntity(entity.entityUri, [requestConfig]).then((response) => {\n const {connections, total} = response[0];\n\n if (connections) {\n dispatch(\n profile.relations.actions.secondLevelRelationsLoaded({\n connections,\n parentEntityUri: entity.entityUri,\n id: config.id,\n total\n })\n );\n }\n\n setLoading(false);\n });\n }, [config.id, contentSecondLevel, dispatch, entity.entityUri, activityFilter, relationActivityFilter]);\n\n const toggleShowSecondLevel = useCallback(() => {\n if (!showSecondLevel && !connection.connections) {\n loadRelations();\n }\n\n setShowSecondLevel((show) => !show);\n }, [loadRelations, connection.connections, showSecondLevel]);\n\n return {connections, showSecondLevel, toggleShowSecondLevel, loadRelations, loading, total};\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n moreButton: {\n padding: '9px 16px 9px 12px',\n backgroundColor: 'rgba(98, 2, 238, 0)',\n marginBottom: '4px',\n marginLeft: '16px'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n divider: {\n margin: '0 0 8px',\n borderColor: 'rgba(0,0,0,0.12)'\n },\n noData: {\n fontSize: '13px',\n color: theme.palette.text.secondary,\n padding: '8px 16px'\n }\n}));\n","import React, {useCallback} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {pipe, partition, evolve, always, omit} from 'ramda';\nimport i18n from 'ui-i18n';\nimport Button from '@mui/material/Button';\nimport AddIcon from '@mui/icons-material/Add';\nimport Divider from '@mui/material/Divider';\nimport Typography from '@mui/material/Typography';\nimport {\n Connection,\n isTempUri,\n Mode,\n createNewConnectionWithDefaultRelationType,\n checkNew,\n RelationsViewConfig,\n getRelationUriFromConnection,\n getEntityUriFromConnection\n} from '@reltio/mdm-sdk';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {RelationEditor} from '@reltio/components';\nimport EditableRelationItem from '../EditableRelationItem/EditableRelationItem';\nimport {getFirstRelationTypeObject} from '../../helpers/relation';\nimport {SecondLevelWrapper} from '../SecondLevelWrapper/SecondLevelWrapper';\nimport {useStyles} from './styles';\n\nexport type Props = {\n className?: string;\n noDataText: string;\n connections: Array<Connection>;\n config: RelationsViewConfig;\n mode: Mode;\n parentEntityUri?: string;\n};\n\nconst RelationsEditableContent = ({className, connections = [], config, mode, noDataText, parentEntityUri}: Props) => {\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const relationToAdd = useSelector((state) => mdmModule.selectors.getRelationToAddByViewId(state, config.id));\n const relationsToEdit = useSelector((state) => mdmModule.selectors.getRelationsToEditByViewId(state, config.id));\n const entity = useSelector(mdmModule.selectors.getEntity);\n const checkIfCanAddRelations = useSelector((state) =>\n mdmModule.selectors.getCheckIfCanAddRelations(state, config.content)\n );\n\n const dispatch = useDispatch();\n const styles = useStyles();\n\n const onAddRelation = useCallback(() => {\n const newConnection = createNewConnectionWithDefaultRelationType({config, mode, metadata, parentEntityUri});\n pipe(profile.relations.actions.openRelationEditor(config.id), dispatch)(newConnection);\n }, [config, mode, metadata, dispatch, parentEntityUri]);\n\n const onRemoveRelation = useCallback(\n (relationUri) => {\n dispatch(profile.relations.actions.closeRelationEditor(config.id, relationUri));\n dispatch(profile.relations.actions.removeRelation(config.id, relationUri));\n const connectionToRemove = connections.find(\n (connection) => getRelationUriFromConnection(connection) === relationUri\n );\n const entityUri = getEntityUriFromConnection(connectionToRemove);\n if (isTempUri(entityUri)) {\n dispatch(profile.modifiedEntities.actions.entityDeleted(entityUri));\n }\n },\n [config, connections, dispatch]\n );\n const content = config.content;\n const defaultRelationTypeObject = getFirstRelationTypeObject(content.inRelations, content.outRelations);\n const onAcceptRelation = useCallback(\n (connection) => {\n const connectionWithDefaultRelationType = pipe(\n omit(['suggested']),\n evolve({\n relation: {\n relationType: always(defaultRelationTypeObject.type),\n object: evolve({type: always(defaultRelationTypeObject.type), attributes: always(null)})\n }\n })\n )(connection);\n dispatch(profile.relations.actions.addRelation(config.id, connectionWithDefaultRelationType));\n },\n [dispatch, config, defaultRelationTypeObject]\n );\n\n const onIgnoreRelation = useCallback(\n (connection) => {\n dispatch(\n profile.relations.actions.ignoreRelation(config.id, {\n relationType: defaultRelationTypeObject.type,\n relationDirection: defaultRelationTypeObject.direction,\n entityUri: connection.entity.entityUri,\n relationUri: connection.relation.relationUri\n })\n );\n },\n [dispatch, config, defaultRelationTypeObject]\n );\n\n const [newConnections, currentConnections] = partition(checkNew, connections);\n const canAddRelations = entity && checkIfCanAddRelations;\n\n const isEmptyRelationList = newConnections.length === 0 && currentConnections.length === 0;\n\n const getRelationEditableContent = (connection: Connection) => {\n const openedRelation = relationsToEdit.find(\n (openedRelation) => openedRelation?.relation?.relationUri === connection?.relation?.relationUri\n );\n const showControls = !config.allowOnlyCreateNew || checkNew(connection);\n const itemKey = `${connection?.relation?.relationUri}-${connection?.relation?.direction}`;\n return (\n <SecondLevelWrapper config={config} connection={connection} key={itemKey}>\n {(renderRelationArrowButton) => {\n return openedRelation ? (\n <RelationEditor connection={openedRelation} config={config} mode={mode} metadata={metadata} />\n ) : (\n <EditableRelationItem\n renderRelationArrowButton={renderRelationArrowButton}\n connection={connection}\n metadata={metadata}\n showControls={showControls}\n onRemoveRelation={onRemoveRelation}\n onEditRelation={pipe(profile.relations.actions.openRelationEditor(config.id), dispatch)}\n onAcceptRelation={onAcceptRelation}\n onIgnoreRelation={onIgnoreRelation}\n />\n );\n }}\n </SecondLevelWrapper>\n );\n };\n\n const shouldShowAddRelationButton =\n canAddRelations && (!relationToAdd || (relationToAdd && relationToAdd.parentEntityUri === parentEntityUri));\n\n const shouldShowRelationEditorToAdd = relationToAdd && relationToAdd.parentEntityUri === parentEntityUri;\n\n return (\n <div className={className}>\n {shouldShowAddRelationButton && (\n <Button color=\"primary\" onClick={onAddRelation} className={styles.moreButton}>\n <AddIcon classes={{root: styles.icon}} />\n <div className={styles.buttonLabel}>{i18n.text('Add')}</div>\n </Button>\n )}\n {shouldShowRelationEditorToAdd && (\n <RelationEditor connection={relationToAdd} config={config} mode={mode} metadata={metadata} />\n )}\n {newConnections.map(getRelationEditableContent)}\n {newConnections.length > 0 && currentConnections.length > 0 && <Divider className={styles.divider} />}\n {currentConnections.map(getRelationEditableContent)}\n {isEmptyRelationList && <Typography className={styles.noData}>{noDataText}</Typography>}\n </div>\n );\n};\n\nexport default RelationsEditableContent;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n attributesList: {\n paddingLeft: '46px',\n paddingRight: '16px',\n marginBottom: '10px',\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0\n }\n}));\n","import React, {useContext, useEffect, useMemo} from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {\n AttributeType,\n CollaborationObjectTypes,\n Connection,\n createRelatedObjectUris,\n Entity,\n getActivenessAttributes,\n getAttributesListForReadMode,\n getAttributeValuesUris,\n getRelationAttributesList,\n isEmptyValue,\n Metadata,\n getRelationAttributesFromConnection\n} from '@reltio/mdm-sdk';\nimport {CollaborationContext, ReadOnlyAttributesList, RelatedObjectUrisContext} from '@reltio/components';\nimport {useStyles} from './styles';\nimport {isEmpty} from 'ramda';\n\ntype Props = {\n connection: Connection;\n className?: string;\n};\n\nexport const RelationAttributes = ({connection, className}: Props) => {\n const styles = useStyles();\n\n const {relation} = connection;\n const currentEntityUri = useSelector(mdmModule.selectors.getEntityUriWithDataTenant);\n\n const metadata = useSelector(mdmModule.selectors.getMetadata) as Metadata;\n\n const firstLevelRelationAttrTypes = useMemo(\n () => getRelationAttributesList(metadata, relation?.relationType) as AttributeType[],\n [relation?.relationType, metadata]\n );\n\n const attributeListEntity = useMemo(\n () => ({\n attributes: {\n ...getRelationAttributesFromConnection(connection)\n },\n ...getActivenessAttributes(connection?.relation || {})\n }),\n [connection]\n );\n\n const attributesList = useMemo(\n () => getAttributesListForReadMode(firstLevelRelationAttrTypes, attributeListEntity as Entity),\n [firstLevelRelationAttrTypes, attributeListEntity]\n );\n\n const showAttributesList = attributesList.filter(({values}) => !isEmptyValue(values)).length > 0;\n\n const objectIds = useMemo(() => getAttributeValuesUris(attributeListEntity.attributes), [attributeListEntity]);\n\n const {getCommentsCount} = useContext(CollaborationContext);\n useEffect(() => {\n !isEmpty(objectIds) && getCommentsCount(objectIds);\n }, [getCommentsCount, objectIds]);\n\n const additionalRelatedObjectUris = useMemo(\n () => createRelatedObjectUris(CollaborationObjectTypes.RELATION, {entityUri: currentEntityUri, connection}),\n [connection, currentEntityUri]\n );\n\n return showAttributesList ? (\n <RelatedObjectUrisContext.Provider value={additionalRelatedObjectUris}>\n <ReadOnlyAttributesList\n className={classnames(styles.attributesList, className)}\n entity={attributeListEntity}\n attrTypes={firstLevelRelationAttrTypes}\n />\n </RelatedObjectUrisContext.Provider>\n ) : (\n <div className={classnames(styles.attributesList, className)}>{i18n.text('No attributes')}</div>\n );\n};\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\nimport InfoIconSelected from '@mui/icons-material/InfoRounded';\nimport InfoIcon from '@mui/icons-material/InfoOutlined';\n\ntype Props = {\n show: boolean;\n onToggle: () => void;\n className?: string;\n};\n\nexport const ShowDetailsButton = ({show, onToggle, className}: Props) => {\n return (\n <SmallIconButtonWithTooltip\n className={className}\n tooltipTitle={\n show\n ? i18n.text('Hide attributes of the relationship')\n : i18n.text('Show attributes of the relationship')\n }\n tooltipPlacement=\"bottom-end\"\n size=\"XXS\"\n icon={show ? InfoIconSelected : InfoIcon}\n onClick={onToggle}\n />\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n container: {\n display: 'flex',\n flexDirection: 'column',\n paddingBottom: '2px'\n },\n row: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'row',\n minHeight: '16px',\n padding: '3px 11px 3px 16px'\n },\n rowInactive: {\n background: theme.inactiveBackground\n },\n entityAvatar: {\n height: '12px',\n width: '12px',\n fontSize: '11px',\n marginRight: '8px'\n },\n entityLabelContainer: {\n textDecoration: 'none',\n cursor: 'pointer',\n wordBreak: 'break-all',\n paddingRight: '8px'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n relationLabel: {\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n showDetails: {\n marginLeft: 'auto',\n paddingRight: '5px'\n },\n attributesList: {\n paddingLeft: '46px',\n marginBottom: '10px',\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0\n },\n suggestedWrapper: {\n backgroundColor: theme.suggested\n },\n commentsContainer: {\n marginLeft: 'auto',\n alignItems: 'center',\n '& + $showDetails': {\n marginLeft: '4px'\n }\n },\n additionalButtonsWrapper: {\n marginLeft: 'auto',\n display: 'flex'\n },\n labelWrapper: {\n display: 'flex',\n alignItems: 'center'\n }\n}));\n","import React, {memo, useState} from 'react';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport {\n Connection,\n Metadata,\n isActiveObject,\n createRelatedObjectUris,\n CollaborationObjectTypes,\n getConnectionRelationUriForLink\n} from '@reltio/mdm-sdk';\nimport {isEmpty} from 'ramda';\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA, CommentsContainer, EntityTypeIcon, EntityUriLink} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport RelationTooltip from '../../RelationTooltip/RelationTooltip';\nimport {RelationAttributes} from '../RelationAttributes/RelationAttributes';\nimport {ShowDetailsButton} from '../ShowDetailsButton/ShowDetailsButton';\nimport {useRelationInfo} from '../../../hooks/useRelationInfo';\nimport {useStyles} from './styles';\nimport {SuggestedButtons} from '../../SuggestedButtons/SuggestedButtons';\n\ntype Props = {\n connection: Connection;\n acceptRelation?: (connection: Connection) => () => void;\n ignoreRelation?: (connection: Connection) => () => void;\n renderRelationArrowButton: () => React.ReactNode;\n};\n\nconst RelationItem = memo(({connection, renderRelationArrowButton, acceptRelation, ignoreRelation}: Props) => {\n const styles = useStyles();\n const isSuggested = connection.suggested;\n const {entity, relation} = connection;\n const [showDetails, setShowDetails] = useState(false);\n\n const metadata = useSelector(mdmModule.selectors.getMetadata) as Metadata;\n const {entityType, entityLabel, preparedUri, relationLabel} = useRelationInfo(connection, metadata);\n const isActive = isActiveObject(relation) && isActiveObject(entity);\n\n const toggleShowDetails = () => {\n setShowDetails((show) => !show);\n };\n const currentEntityUri = useSelector(mdmModule.selectors.getEntityUriWithDataTenant);\n const relatedObjectUris =\n (entity &&\n relation &&\n createRelatedObjectUris(CollaborationObjectTypes.RELATION, {\n entityUri: currentEntityUri,\n connection\n })) ||\n [];\n return (\n <div\n className={classnames(\n styles.container,\n {[styles.rowInactive]: !isActive},\n {[styles.suggestedWrapper]: isSuggested}\n )}\n >\n <div className={classnames(styles.row, COMMENTS_CONTAINER_VISIBILITY_AREA)}>\n {renderRelationArrowButton && renderRelationArrowButton()}\n <div className={styles.labelWrapper}>\n <EntityTypeIcon className={styles.entityAvatar} entityType={entityType} />\n <EntityUriLink value={preparedUri} className={styles.entityLabelContainer}>\n <RelationTooltip label={entityLabel} entity={entity}>\n <span className={styles.entityLabel}>{entityLabel}</span>\n </RelationTooltip>\n {relationLabel && <span className={styles.relationLabel}>{`, ${relationLabel}`}</span>}\n </EntityUriLink>\n </div>\n <div className={styles.additionalButtonsWrapper}>\n {!isEmpty(relatedObjectUris) && (\n <CommentsContainer\n className={styles.commentsContainer}\n uri={getConnectionRelationUriForLink(relation)}\n relatedObjectUris={relatedObjectUris}\n objectType={CollaborationObjectTypes.RELATION}\n allowOnlyOneComment\n />\n )}\n {isSuggested && (\n <SuggestedButtons\n size=\"small\"\n acceptRelation={acceptRelation(connection)}\n ignoreRelation={ignoreRelation(connection)}\n />\n )}\n {!isSuggested && (\n <ShowDetailsButton\n show={showDetails}\n onToggle={toggleShowDetails}\n className={styles.showDetails}\n />\n )}\n </div>\n </div>\n {showDetails && <RelationAttributes connection={connection} />}\n </div>\n );\n});\n\nRelationItem.displayName = 'RelationItem';\n\nexport default RelationItem;\n","import {pluck, mean, pipe, defaultTo} from 'ramda';\nimport {Rating} from '@reltio/mdm-sdk';\n\nexport const sortRatingsByTime = (ratings: Rating[]) => {\n return [...ratings].sort((a, b) => {\n const timestampA = new Date(a.timestamp).getTime();\n const timestampB = new Date(b.timestamp).getTime();\n return timestampB - timestampA;\n });\n};\n\nexport const calcAverageRating = (ratings: Rating[]) => {\n const averageRating: number = pipe(pluck('value'), mean, defaultTo(0))(ratings);\n return averageRating.toFixed(1);\n};\n\nexport const getCountOfLikes = (ratings: Rating[]) => {\n return ratings.filter((rating) => rating.value === 5).length;\n};\n\nexport const getCountOfDislikes = (ratings: Rating[]) => {\n return ratings.filter((rating) => rating.value === 1).length;\n};\n\nexport const calcRatingsScale = (ratings: Rating[]) => {\n if (ratings.length === 0) {\n return {percentOfLikes: 0, percentOfDislikes: 0};\n }\n\n const percentOfLikes = (getCountOfLikes(ratings) / ratings.length) * 100;\n const formattedPercentOfLikes = parseFloat(Number(percentOfLikes).toFixed(1));\n const formattedPercentOfDislikes = parseFloat(Number(100 - formattedPercentOfLikes).toFixed(1));\n\n return {percentOfLikes: formattedPercentOfLikes, percentOfDislikes: formattedPercentOfDislikes};\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n wrapper: {\n display: 'flex',\n flexDirection: 'column',\n padding: 12,\n width: 355,\n gap: 12\n },\n info: {\n background: 'rgba(0, 0, 0, 0.05)',\n display: 'flex',\n padding: '6px 12px',\n fontSize: 13,\n gap: 16\n },\n axis: {\n position: 'relative',\n display: 'flex',\n justifyContent: 'space-between',\n fontSize: 12,\n color: theme.palette.text.secondary,\n paddingTop: 4,\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n left: 0,\n background: theme.palette.divider,\n width: '1px',\n height: '4px'\n },\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n right: 0,\n background: theme.palette.divider,\n width: '1px',\n height: '4px'\n }\n },\n scaleHistory: {\n display: 'flex',\n justifyContent: 'space-between'\n },\n title: {\n fontSize: 13,\n display: 'flex',\n alignItems: 'center',\n color: theme.palette.text.secondary,\n gap: 8,\n '& .value': {\n color: theme.palette.text.primary\n },\n '& .boldValue': {\n color: theme.palette.text.primary,\n fontWeight: 700\n }\n },\n greenBadge: {\n width: 12,\n height: 12,\n background: 'rgb(151, 192, 97)'\n },\n redBadge: {\n width: 12,\n height: 12,\n background: 'rgb(255, 112, 112)'\n },\n scale: {\n width: '100%',\n height: 16,\n background: 'rgba(255, 112, 112)',\n '&.empty': {\n background: '#F9F9F9'\n }\n },\n scaleBar: {\n background: 'rgba(151,192,97)'\n },\n icon: {\n width: '14px',\n height: '14px',\n color: 'rgba(0,0,0,0.54)'\n },\n ratingsList: {\n borderTop: '1px solid #ccc',\n borderBottom: '1px solid #ccc',\n padding: '12px 0',\n maxHeight: 140,\n boxSizing: 'border-box',\n overflow: 'auto'\n },\n rating: {\n display: 'flex',\n padding: '4px 0px',\n alignItems: 'center'\n },\n avatar: {\n width: 24,\n height: 24,\n marginRight: 12,\n '& .icon': {\n fontSize: 18\n }\n },\n userInfo: {\n overflow: 'hidden'\n },\n user: {\n fontSize: 13,\n color: theme.palette.text.primary,\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n ratingDateWrapper: {\n display: 'flex',\n alignSelf: 'start',\n marginLeft: 'auto'\n },\n ratingDate: {\n fontSize: 10,\n color: theme.palette.text.secondary,\n marginRight: 4\n },\n sourcesWrapper: {\n display: 'flex',\n alignItems: 'center',\n gap: 4\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {Crosswalk, Rating} from '@reltio/mdm-sdk';\nimport {ColoredSourceIcon, PopupWithArrow} from '@reltio/components';\nimport PersonIcon from '@mui/icons-material/Person';\nimport ThumbUpIcon from '@mui/icons-material/ThumbUp';\nimport ThumbDownIcon from '@mui/icons-material/ThumbDown';\nimport Avatar from '@mui/material/Avatar';\nimport LinearProgress from '@mui/material/LinearProgress';\nimport {\n calcAverageRating,\n calcRatingsScale,\n getCountOfDislikes,\n getCountOfLikes,\n sortRatingsByTime\n} from '../../../helpers/ratings';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n open: boolean;\n ratings: Rating[];\n crosswalks: Crosswalk[];\n className?: string;\n anchorEl: HTMLElement | null;\n onClose: () => void;\n};\n\nexport const RatingsPopup = ({ratings, crosswalks, open, anchorEl, onClose}: Props) => {\n const styles = useStyles();\n\n const sortedRatings = sortRatingsByTime(ratings);\n const {percentOfLikes, percentOfDislikes} = calcRatingsScale(ratings);\n const agreeCount = `${getCountOfLikes(ratings)} (${percentOfLikes}%)`;\n const disagreeCount = `${getCountOfDislikes(ratings)} (${percentOfDislikes}%)`;\n\n return (\n <PopupWithArrow open={open} anchorEl={anchorEl} onClose={onClose} placement=\"top-start\" transition>\n <div className={styles.wrapper}>\n <div className={styles.info}>\n <span className={styles.title}>\n {i18n.text('Score:')}\n <span className=\"boldValue\">{calcAverageRating(ratings)}</span>\n </span>\n <span className={styles.title}>\n {i18n.text('No. of responses:')}\n <span className=\"value\">{ratings.length}</span>\n </span>\n </div>\n <div>\n <LinearProgress\n variant=\"determinate\"\n value={percentOfLikes}\n classes={{bar: styles.scaleBar}}\n className={classnames(styles.scale, {empty: !ratings.length})}\n />\n <div className={styles.axis}>\n <span>0</span>\n <span>100%</span>\n </div>\n </div>\n <div className={styles.scaleHistory}>\n <span className={styles.title}>\n <div className={styles.greenBadge} />\n <ThumbUpIcon className={styles.icon} />\n {i18n.text('Agree:')}\n <span className=\"value\">{agreeCount}</span>\n </span>\n <span className={styles.title}>\n <div className={styles.redBadge} />\n <ThumbDownIcon className={styles.icon} />\n {i18n.text('Disagree:')}\n <span className=\"value\">{disagreeCount}</span>\n </span>\n </div>\n {!!sortedRatings.length && (\n <div className={styles.ratingsList} data-reltio-id=\"reltio-ratings-list\">\n {sortedRatings.map(({user, comment, timestamp, value}, i) => (\n <div key={i} className={styles.rating} data-reltio-id=\"reltio-rating-item\">\n <Avatar className={styles.avatar}>\n <PersonIcon className=\"icon\" />\n </Avatar>\n <div className={styles.userInfo}>\n <div className={styles.user}>{user}</div>\n <div className={styles.title}>{comment || i18n.text('No comment')}</div>\n </div>\n <div className={styles.ratingDateWrapper}>\n <span className={styles.ratingDate}>{i18n.date(timestamp, 'L LT')}</span>\n {value === 1 ? (\n <ThumbDownIcon className={styles.icon} data-reltio-id=\"reltio-dislike-icon\" />\n ) : (\n <ThumbUpIcon className={styles.icon} data-reltio-id=\"reltio-like-icon\" />\n )}\n </div>\n </div>\n ))}\n </div>\n )}\n <div className={styles.sourcesWrapper}>\n <span className={styles.title}>{i18n.text('Sources:')}</span>\n {crosswalks.map((crosswalk, i) => (\n <ColoredSourceIcon key={i} crosswalk={crosswalk} />\n ))}\n </div>\n </div>\n </PopupWithArrow>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n wrapper: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-end',\n width: 128,\n cursor: 'pointer'\n },\n averageRating: {\n marginBottom: 4,\n fontSize: '16px',\n letterSpacing: '0.15px',\n lineHeight: '24px',\n color: theme.palette.text.primary\n },\n counts: {\n display: 'flex',\n marginTop: 4,\n gap: 32\n },\n count: {\n display: 'flex',\n alignItems: 'center',\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n icon: {\n marginRight: '4px',\n width: '14px',\n height: '14px',\n color: theme.palette.text.secondary\n },\n scale: {\n height: 3,\n width: '100%',\n background: 'rgba(255, 112, 112)',\n '&.empty': {\n background: '#F9F9F9'\n }\n },\n scaleBar: {\n background: 'rgba(151,192,97)'\n }\n}));\n","import React, {useRef, useState} from 'react';\nimport classnames from 'classnames';\nimport {Crosswalk, Rating} from '@reltio/mdm-sdk';\nimport Typography from '@mui/material/Typography';\nimport ThumbUpIcon from '@mui/icons-material/ThumbUp';\nimport ThumbDownIcon from '@mui/icons-material/ThumbDown';\nimport LinearProgress from '@mui/material/LinearProgress';\nimport {RatingsPopup} from '../RatingsPopup/RatingsPopup';\nimport {calcAverageRating, calcRatingsScale, getCountOfDislikes, getCountOfLikes} from '../../../helpers/ratings';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n ratings: Rating[];\n crosswalks: Crosswalk[];\n className?: string;\n};\n\nexport const Ratings = ({ratings, crosswalks, className}: Props) => {\n const styles = useStyles();\n const ratingsRef = useRef();\n const [open, setOpen] = useState(false);\n const {percentOfLikes} = calcRatingsScale(ratings);\n\n return (\n <>\n <div\n data-reltio-id=\"reltio-ratings\"\n className={classnames(styles.wrapper, className)}\n ref={ratingsRef}\n onClick={() => setOpen(true)}\n >\n <Typography className={styles.averageRating}>{calcAverageRating(ratings)}</Typography>\n <LinearProgress\n variant=\"determinate\"\n value={percentOfLikes}\n classes={{bar: styles.scaleBar}}\n className={classnames(styles.scale, {empty: !ratings.length})}\n />\n <div className={styles.counts}>\n <div className={styles.count}>\n <ThumbUpIcon className={styles.icon} />\n {getCountOfLikes(ratings)}\n </div>\n <div className={styles.count}>\n <ThumbDownIcon className={styles.icon} />\n {getCountOfDislikes(ratings)}\n </div>\n </div>\n </div>\n <RatingsPopup\n ratings={ratings}\n open={open}\n crosswalks={crosswalks}\n anchorEl={ratingsRef.current}\n onClose={() => setOpen(false)}\n />\n </>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n wrapper: {\n display: 'flex',\n marginLeft: -8,\n gap: 8\n },\n button: {\n minWidth: 0,\n padding: 8,\n fontSize: '14px',\n lineHeight: '16px',\n textTransform: 'none',\n color: theme.palette.text.secondary\n },\n isActive: {\n color: theme.palette.text.primary\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {Rating} from '@reltio/mdm-sdk';\nimport {DropDownMenuButton} from '@reltio/components';\nimport Button from '@mui/material/Button';\nimport ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';\nimport {useStyles} from './styles';\n\ntype Props = {\n ratings: Rating[];\n onAgree: () => void;\n onDisagree: (comment: string) => void;\n};\n\nexport const RatingsButtons = ({ratings, onAgree, onDisagree}: Props) => {\n const styles = useStyles();\n\n const username = useSelector(mdmModule.selectors.getUserName) as string;\n const ratingOfCurrentUser = ratings.find(({user}) => user === username);\n\n const menuItems = [\n {\n text: i18n.text('Has left the practice'),\n onClick: () => onDisagree(i18n.text('Has left the practice'))\n },\n {\n text: i18n.text('Has moved away'),\n onClick: () => onDisagree(i18n.text('Has moved away'))\n },\n {\n text: i18n.text('Has passed away'),\n onClick: () => onDisagree(i18n.text('Has passed away'))\n },\n {\n text: i18n.text('Has retired'),\n onClick: () => onDisagree(i18n.text('Has retired'))\n },\n {\n text: i18n.text('Other'),\n onClick: () => onDisagree(i18n.text('Other'))\n }\n ];\n\n return (\n <div className={styles.wrapper}>\n <Button\n onClick={onAgree}\n variant=\"text\"\n size=\"small\"\n className={classnames(styles.button, {\n [styles.isActive]: ratingOfCurrentUser?.value === 5\n })}\n >\n Agree\n </Button>\n <DropDownMenuButton\n buttonProps={{\n endIcon: <ArrowDropDownIcon />,\n variant: 'text',\n size: 'small',\n className: classnames(styles.button, {\n [styles.isActive]: ratingOfCurrentUser?.value === 1\n })\n }}\n buttonContent={ratingOfCurrentUser?.value === 1 ? ratingOfCurrentUser.comment : 'Disagree'}\n menuItems={menuItems}\n menuId=\"disagree-dropdown-menu-button\"\n />\n </div>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n wrapper: {\n padding: '3px 16px'\n },\n entityTypeIcon: {\n marginRight: '16px'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n fontSize: '14px',\n lineHeight: '16px'\n },\n entityLabelContainer: {\n display: 'flex',\n wordBreak: 'break-all',\n textDecoration: 'none'\n },\n relationLabel: {\n color: theme.palette.text.secondary,\n fontSize: '14px',\n lineHeight: '16px'\n },\n ratings: {\n marginLeft: 'auto'\n },\n showDetailsButton: {\n marginLeft: '16px',\n marginTop: '8px'\n },\n relationAttributes: {\n paddingLeft: '60px'\n },\n suggestedWrapper: {\n padding: '6px 8px 6px 16px',\n backgroundColor: theme.suggested,\n minWidth: 'fit-content'\n },\n commentsContainer: {\n alignSelf: 'center',\n marginTop: '11px',\n '& + $ratings': {\n marginLeft: '16px'\n }\n },\n additionalButtonsWrapper: {\n marginLeft: 'auto',\n display: 'flex',\n alignItems: 'center'\n }\n}));\n","import React, {useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport {isEmpty} from 'ramda';\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA, CommentsContainer, EntityTypeIcon, EntityUriLink} from '@reltio/components';\nimport {\n Metadata,\n Connection,\n rateRelation,\n createRelatedObjectUris,\n CollaborationObjectTypes,\n getConnectionRelationUriForLink\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport Box from '@mui/material/Box';\nimport RelationTooltip from '../../RelationTooltip/RelationTooltip';\nimport {RelationAttributes} from '../RelationAttributes/RelationAttributes';\nimport {ShowDetailsButton} from '../ShowDetailsButton/ShowDetailsButton';\nimport {Ratings} from '../Ratings/Ratings';\nimport {useRelationInfo} from '../../../hooks/useRelationInfo';\nimport {RatingsButtons} from '../RatingsButtons/RatingsButtons';\nimport {SuggestedButtons} from '../../SuggestedButtons/SuggestedButtons';\nimport {useStyles} from './styles';\n\ntype Props = {\n connection: Connection;\n loadRelations: () => void;\n acceptRelation?: (connection: Connection) => () => void;\n ignoreRelation?: (connection: Connection) => () => void;\n renderRelationArrowButton: () => React.ReactNode;\n showRating?: boolean;\n};\n\nexport const RelationComplexItem = ({\n connection,\n loadRelations,\n renderRelationArrowButton,\n acceptRelation,\n ignoreRelation,\n showRating\n}: Props) => {\n const styles = useStyles();\n const isSuggested = connection.suggested;\n\n const [showDetails, setShowDetails] = useState(false);\n\n const {entity, relation} = connection;\n const metadata = useSelector(mdmModule.selectors.getMetadata) as Metadata;\n const {entityLabel, entityType, preparedUri, relationLabel} = useRelationInfo(connection, metadata);\n const ratings = relation?.ratings || [];\n const crosswalks = relation?.object?.crosswalks || [];\n\n const toggleShowDetails = () => {\n setShowDetails((show) => !show);\n };\n\n const handleAgree = () => {\n rateRelation(relation?.relationUri, {\n comment: '',\n value: 5\n }).then(loadRelations);\n };\n\n const handleDisagree = (comment: string) => {\n rateRelation(relation?.relationUri, {\n comment,\n value: 1\n }).then(loadRelations);\n };\n const currentEntityUri = useSelector(mdmModule.selectors.getEntityUriWithDataTenant);\n const relatedObjectUris =\n (entity &&\n relation &&\n createRelatedObjectUris(CollaborationObjectTypes.RELATION, {\n entityUri: currentEntityUri,\n connection\n })) ||\n [];\n\n return (\n <div className={classnames(styles.wrapper, {[styles.suggestedWrapper]: isSuggested})}>\n <Box display=\"flex\" minHeight=\"44px\" className={COMMENTS_CONTAINER_VISIBILITY_AREA}>\n <Box display=\"flex\" alignItems=\"center\">\n <Box display=\"flex\" alignItems=\"center\">\n {renderRelationArrowButton && renderRelationArrowButton()}\n <EntityTypeIcon entityType={entityType} className={styles.entityTypeIcon} />\n </Box>\n <Box display=\"flex\" flexDirection=\"column\">\n <EntityUriLink value={preparedUri} className={styles.entityLabelContainer}>\n <RelationTooltip label={entityLabel} entity={entity}>\n <span className={styles.entityLabel}>{entityLabel}</span>\n </RelationTooltip>\n </EntityUriLink>\n {relationLabel && <span className={styles.relationLabel}>{relationLabel}</span>}\n {!isSuggested && showRating && (\n <RatingsButtons ratings={ratings} onAgree={handleAgree} onDisagree={handleDisagree} />\n )}\n </Box>\n </Box>\n <div className={styles.additionalButtonsWrapper}>\n {!isEmpty(relatedObjectUris) && (\n <CommentsContainer\n className={styles.commentsContainer}\n uri={getConnectionRelationUriForLink(relation)}\n relatedObjectUris={relatedObjectUris}\n objectType={CollaborationObjectTypes.RELATION}\n allowOnlyOneComment\n />\n )}\n {isSuggested && (\n <SuggestedButtons\n acceptRelation={acceptRelation(connection)}\n ignoreRelation={ignoreRelation(connection)}\n />\n )}\n {!isSuggested && (\n <>\n {showRating && (\n <Ratings ratings={ratings} crosswalks={crosswalks} className={styles.ratings} />\n )}\n <ShowDetailsButton\n show={showDetails}\n onToggle={toggleShowDetails}\n className={styles.showDetailsButton}\n />\n </>\n )}\n </div>\n </Box>\n {showDetails && <RelationAttributes connection={connection} className={styles.relationAttributes} />}\n </div>\n );\n};\n","import React, {useMemo, useContext, useEffect} from 'react';\nimport {Connection, getRelationshipsObjectIdsForCollaboration, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {CollaborationContext} from '@reltio/components';\nimport RelationItem from './RelationItem/RelationItem';\nimport {RelationComplexItem} from './RelationCompexItem/RelationComplexItem';\nimport {useSuggestedRelations} from '../../hooks/useSuggestedRelations';\nimport {SecondLevelWrapper} from '../SecondLevelWrapper/SecondLevelWrapper';\n\ntype Props = {\n className?: string;\n connections: Array<Connection>;\n loadRelations: () => void;\n config?: RelationsViewConfig;\n mainEnityUri?: string;\n};\n\nconst RelationsList = ({className, connections = [], loadRelations, config, mainEnityUri}: Props) => {\n const {isComplex, content, type} = config;\n const {ignoreRelation, acceptRelation} = useSuggestedRelations(content, loadRelations, mainEnityUri);\n\n const objectIds = useMemo(() => {\n return getRelationshipsObjectIdsForCollaboration(connections);\n }, [connections]);\n\n const {getCommentsCount} = useContext(CollaborationContext);\n\n useEffect(() => {\n getCommentsCount(objectIds);\n }, [getCommentsCount, objectIds]);\n\n return (\n <div className={className}>\n {connections.map((connection) => {\n const itemKey = `${connection?.relation?.relationUri}-${connection?.relation?.direction}`;\n\n return (\n <SecondLevelWrapper config={config} connection={connection} key={itemKey}>\n {(renderRelationArrowButton) => {\n if (isComplex) {\n return (\n <RelationComplexItem\n loadRelations={loadRelations}\n connection={connection}\n acceptRelation={acceptRelation}\n ignoreRelation={ignoreRelation}\n renderRelationArrowButton={renderRelationArrowButton}\n showRating={type === 'rating'}\n />\n );\n }\n\n return (\n <RelationItem\n acceptRelation={acceptRelation}\n ignoreRelation={ignoreRelation}\n connection={connection}\n renderRelationArrowButton={renderRelationArrowButton}\n />\n );\n }}\n </SecondLevelWrapper>\n );\n })}\n </div>\n );\n};\n\nRelationsList.displayName = 'RelationsList';\n\nexport default RelationsList;\n","import {useDispatch} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {\n Connection,\n ignoreSuggestedRelation,\n createRelation,\n getRequestErrorMessage,\n Directions,\n RelationsContent\n} from '@reltio/mdm-sdk';\nimport {ui} from '@reltio/mdm-module';\nimport {getFirstRelationTypeObject} from '../helpers/relation';\n\nexport const useSuggestedRelations = (content: RelationsContent, loadRelations: () => void, mainEnityUri: string) => {\n const relationTypeObject = getFirstRelationTypeObject(content.inRelations, content.outRelations);\n const dispatch = useDispatch();\n const ignoreRelation = (connection: Connection) => () => {\n const {entity} = connection;\n ignoreSuggestedRelation(mainEnityUri, {\n relatedEntityUri: entity.entityUri,\n relationType: relationTypeObject.type,\n relationDirection: relationTypeObject.direction\n })\n .then(loadRelations)\n .catch((error) => {\n dispatch(ui.actions.errorSet(getRequestErrorMessage(error, i18n.text('Something went wrong'))));\n });\n };\n\n const acceptRelation = (connection: Connection) => () => {\n const {entity, relation} = connection;\n const {startDate, endDate} = relation;\n const isInDirection = relationTypeObject.direction === Directions.IN;\n const startEntityUri = isInDirection ? entity.entityUri : mainEnityUri;\n const endEntityUri = isInDirection ? mainEnityUri : entity.entityUri;\n createRelation({\n startEntityUri,\n endEntityUri,\n relationType: relationTypeObject.type,\n attributes: null,\n startDate,\n endDate\n })\n .then(loadRelations)\n .catch((error) => {\n dispatch(ui.actions.errorSet(getRequestErrorMessage(error, i18n.text('Something went wrong'))));\n });\n };\n\n return {\n ignoreRelation,\n acceptRelation\n };\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n list: {\n paddingTop: '8px',\n paddingBottom: '10px',\n overflow: 'auto',\n flexGrow: 1\n },\n noData: {\n fontSize: '13px',\n color: theme.palette.text.secondary,\n padding: '8px 16px'\n },\n linearIndicator: {\n top: '52px'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {isEditableMode, Connection, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {LinearLoadIndicator} from '@reltio/components';\nimport Typography from '@mui/material/Typography';\nimport RelationsEditableContent from '../RelationsEditableContent/RelationsEditableContent';\nimport RelationsList from '../RelationsList/RelationsList';\nimport {useStyles} from './styles';\n\ntype Props = {\n isLoading: boolean;\n config: RelationsViewConfig;\n loadRelations: () => void;\n connections: Connection[];\n total: number;\n parentEntityUri?: string;\n};\n\nexport const RelationsContent = ({isLoading, config, loadRelations, connections, total, parentEntityUri}: Props) => {\n const styles = useStyles();\n\n const {selectors} = mdmModule;\n const entity = useSelector(selectors.getEntity);\n const mode = useSelector(selectors.getMode);\n\n const noDataText = config['text-empty'] || i18n.text('No data found');\n\n if (isLoading) {\n return <LinearLoadIndicator className={styles.linearIndicator} />;\n }\n\n if (config.content && isEditableMode(mode)) {\n return (\n <RelationsEditableContent\n connections={connections}\n className={styles.list}\n key={entity?.uri}\n config={config}\n mode={mode}\n noDataText={noDataText}\n parentEntityUri={parentEntityUri}\n />\n );\n }\n\n if (config.content && total > 0) {\n return (\n <RelationsList\n config={config}\n loadRelations={loadRelations}\n connections={connections}\n className={styles.list}\n key={entity?.uri}\n mainEnityUri={entity.uri}\n />\n );\n }\n\n return <Typography className={styles.noData}>{noDataText}</Typography>;\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n container: {\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'column',\n minHeight: 0\n },\n content: {\n display: 'flex',\n flexGrow: 1,\n flexDirection: 'column',\n minHeight: 0\n },\n pagination: {\n height: '52px',\n flexGrow: 0,\n flexShrink: 0\n }\n});\n","import React, {useContext, useEffect, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {ActivityFilter, Connection, getEntitiesMapForConnections, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {\n BasicTablePagination,\n BasicView,\n EntitiesMapContext,\n useRelationsLoader,\n EntityContext,\n useExpandInvalidRelations\n} from '@reltio/components';\nimport RelationsHeader from '../RelationsHeader/RelationsHeader';\nimport {RelationsViewStateContext} from '../../contexts/RelationsViewStateContext';\nimport {ImportDTContext} from '../../contexts/ImportDTContext';\nimport {buildRelationsFilter} from '../../helpers/filters';\nimport {RelationsContent} from '../RelationsContent/RelationsContent';\nimport {pick} from 'ramda';\nimport {useStyles} from './styles';\n\ntype Props = {\n config: RelationsViewConfig;\n className?: string;\n};\n\nconst RelationsView = ({config, className}: Props) => {\n const styles = useStyles();\n\n const {page, setPage, rowsPerPage, sortOrder, sortOption, showInactive, searchQuery, changeSearchQuery} =\n useContext(RelationsViewStateContext);\n const {selectors} = mdmModule;\n const connections = useSelector((state) =>\n selectors.getConnectionsWithDraftsByViewId(state, config.id)\n ) as Connection[];\n const entity = useSelector(selectors.getEntity);\n const total = useSelector((state) => selectors.getTotalByViewId(state, config.id));\n const mode = useSelector(selectors.getMode);\n const sorting = useMemo(\n () => ({\n order: sortOrder,\n field: sortOption\n }),\n [sortOrder, sortOption]\n );\n\n useEffect(() => {\n changeSearchQuery('');\n }, [entity?.uri]); //eslint-disable-line react-hooks/exhaustive-deps\n\n const filter = useMemo(() => buildRelationsFilter(searchQuery), [searchQuery]);\n\n const {isLoading, reload: loadRelations} = useRelationsLoader({\n sorting,\n filter,\n page,\n rowsPerPage,\n config,\n entity,\n relationActivityFilter: showInactive ? ActivityFilter.ALL : ActivityFilter.ACTIVE_ONLY,\n mode\n });\n\n const entitiesMap = useMemo(() => getEntitiesMapForConnections(connections), [connections]);\n\n const importDTContextValue = useMemo(\n () => ({\n reloadRelations: loadRelations,\n config: pick(['content', 'importFromDT', 'maxDtssImport'], config)\n }),\n [loadRelations, config]\n );\n useExpandInvalidRelations(config.id);\n return (\n <EntityContext.Provider value={entity}>\n <EntitiesMapContext.Provider value={entitiesMap}>\n <BasicView className={className}>\n <div className={styles.container}>\n <ImportDTContext.Provider value={importDTContextValue}>\n <RelationsHeader title={config.caption} total={total} />\n </ImportDTContext.Provider>\n <div className={styles.content}>\n <RelationsContent\n isLoading={isLoading}\n config={config}\n loadRelations={loadRelations}\n connections={connections}\n total={total}\n />\n {total > rowsPerPage && (\n <BasicTablePagination\n classes={{root: styles.pagination}}\n count={total}\n rowsPerPageOptions={[]}\n rowsPerPage={rowsPerPage}\n page={page}\n onChangePage={setPage}\n />\n )}\n </div>\n </div>\n </BasicView>\n </EntitiesMapContext.Provider>\n </EntityContext.Provider>\n );\n};\n\nRelationsView.displayName = 'RelationsView';\n\nexport {RelationsView};\n","import {FilterBuilder, Maybe, filterValueToQueryStringWithQuotes} from '@reltio/mdm-sdk';\n\nconst buildRelationsFilter = (searchQuery) => {\n const queryClause = Maybe.fromFalsy<string>(searchQuery)\n .map(filterValueToQueryStringWithQuotes)\n .map(\n (queryString) =>\n `containsWordStartingWith(entity.label,${queryString})` +\n ' or ' +\n `containsWordStartingWith(relation.label,${queryString})`\n )\n .orSome('');\n\n return new FilterBuilder().addClause(queryClause).build();\n};\n\nexport {buildRelationsFilter};\n","import {useCallback, useMemo, useState} from 'react';\nimport {pipe, map, unless, append, propEq} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {RelationsViewConfig, SortOrder, isEmptyValue} from '@reltio/mdm-sdk';\n\nconst DEFAULT_ROWS_PER_PAGE = 15;\nconst DEFAULT_SORT_ORDER = 'asc';\nconst DEFAULT_SHOW_INACTIVE = false;\n\ntype Option = {\n value: string;\n label: string;\n};\n\nexport type RelationsViewState = {\n searchQuery: string;\n changeSearchQuery: (value: string) => void;\n sortOrder: SortOrder;\n toggleSortOrder: () => void;\n sortOption?: string;\n changeSortOption: (option: string) => void;\n sortOptions: Option[];\n page: number;\n setPage: (page: number) => void;\n rowsPerPage: number;\n showInactive: boolean;\n toggleShowInactive: () => void;\n};\n\nconst useRelationsState = (config: RelationsViewConfig): RelationsViewState => {\n const sortOptions = useMemo(\n () =>\n pipe(\n Object.entries,\n map(([key, value]) => ({\n value: key,\n label: value\n })),\n unless(\n (options) => isEmptyValue(options) || options.some(propEq('value', 'name')),\n append({label: i18n.text('Name'), value: 'name'})\n )\n )(config.sortOptions || {}),\n [config.sortOptions]\n );\n\n const rowsPerPage = Number(config.max) || DEFAULT_ROWS_PER_PAGE;\n const [page, setPage] = useState(0);\n const [sortOrder, setSortOrder] = useState(config.sortOrder || DEFAULT_SORT_ORDER);\n const [sortOption, setSortOption] = useState(sortOptions[0]?.value);\n const [searchQuery, setSearchQuery] = useState('');\n const [showInactive, setShowInactive] = useState(DEFAULT_SHOW_INACTIVE);\n\n const toggleShowInactive = useCallback(() => {\n setPage(0);\n setShowInactive((showInactive) => !showInactive);\n }, []);\n\n const toggleSortOrder = useCallback(() => {\n setPage(0);\n setSortOrder((order) => {\n return order === 'asc' ? 'desc' : 'asc';\n });\n }, []);\n\n const changeSortOption = useCallback((option: string) => {\n setPage(0);\n setSortOption(option);\n }, []);\n\n const changeSearchQuery = useCallback((value: string) => {\n setPage(0);\n setSearchQuery(value);\n }, []);\n\n return {\n searchQuery,\n changeSearchQuery,\n sortOrder,\n toggleSortOrder,\n sortOption,\n changeSortOption,\n sortOptions,\n page,\n setPage,\n rowsPerPage,\n showInactive,\n toggleShowInactive\n };\n};\n\nexport default useRelationsState;\n","import React from 'react';\nimport {AttributeType, ComplexAttributeValue} from '@reltio/mdm-sdk';\nimport {ColumnsDataType} from '../components/types';\n\nexport const TableAttributeContext = React.createContext<{\n searchQuery: string;\n setSearchQuery: (query: string) => void;\n values: ComplexAttributeValue[];\n page: number;\n setPage: (page: number) => void;\n isLoading: boolean;\n visibleColumns: string[];\n onChangeColumns: (cols: string[]) => void;\n onToggleFilters: () => void;\n onSort: (payload) => void;\n onFilter: (payload) => void;\n hasPaging: boolean;\n totalVisibleValues: number;\n showTable: boolean;\n filters: {\n [key: string]: {\n filter: string;\n values: [string];\n };\n };\n sorting: {\n order: 'desc' | 'asc';\n field: string;\n };\n attributeType: AttributeType;\n allColumnsData: ColumnsDataType;\n }>(null);\n\nTableAttributeContext.displayName = 'TableAttributeContext';\n","import {basicTableViewState, createStandardAction} from '@reltio/components';\n\nconst CHANGE_SEARCH_QUERY = 'CHANGE_SEARCH_QUERY';\n\nconst actions = {\n ...basicTableViewState.actions,\n changeSearchQuery: createStandardAction(CHANGE_SEARCH_QUERY)\n};\n\nconst reducer = (state, action) => {\n switch (action.type) {\n case CHANGE_SEARCH_QUERY:\n return {...state, searchQuery: action.payload, page: 0};\n default:\n return basicTableViewState.reducer(state, action);\n }\n};\n\nexport {reducer as default, actions};\n","import {makeStyles} from '@mui/styles';\nimport {HistoryOperations, historyPalettes} from '@reltio/mdm-sdk';\n\nconst BLOB_HEIGHT = 100;\n\nconst removedStyle = {\n textDecoration: 'line-through',\n color: 'rgba(0,0,0,.54)'\n};\n\nexport const useStyles = makeStyles(() => ({\n headCell: {\n display: 'flex',\n alignItems: 'center',\n height: '100%',\n fontSize: '12px'\n },\n rowCell: {\n fontSize: '13px',\n overflow: 'hidden'\n },\n blobWrapper: {\n position: 'relative',\n overflowY: 'auto',\n overflowX: 'hidden',\n whiteSpace: 'pre',\n maxHeight: `${BLOB_HEIGHT}px`,\n boxSizing: 'border-box',\n padding: '15px 25px 0 25px'\n },\n defaultWrapper: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n padding: '15px 25px 0 25px'\n },\n updateAttribute: {\n padding: '0 4px',\n marginLeft: '-4px',\n ...historyPalettes[HistoryOperations.updateAttribute]\n },\n insertAttribute: {\n ...historyPalettes[HistoryOperations.insertAttribute]\n },\n deleteAttribute: {\n padding: '0 4px',\n marginLeft: '-4px',\n textDecoration: 'line-through',\n ...historyPalettes[HistoryOperations.deleteAttribute]\n },\n description: {\n marginLeft: '-22px'\n },\n 'row-cell--sorted': {\n color: 'rgba(0,0,0,0.87)'\n },\n 'row-cell--removed': {\n pointerEvents: 'none',\n '& > div': removedStyle\n }\n}));\n","import React from 'react';\n\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport {withFilterAtBottom, DescriptionIcon} from '@reltio/components';\nimport {useStyles} from './styles';\n\nconst HeadCellRenderer = (props) => {\n const styles = useStyles();\n const {description} = props?.headCellData || {};\n\n return (\n <div className={styles.headCell}>\n <DefaultHeadCellRenderer {...props} />\n <DescriptionIcon description={description} className={styles.description} />\n </div>\n );\n};\n\nexport default withFilterAtBottom(HeadCellRenderer);\n","import React from 'react';\nimport {stopPropagation} from '@reltio/components';\nimport {PrimitiveValue} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: PrimitiveValue;\n historyClassName?: string;\n};\n\nconst BlobRenderer = ({value, historyClassName}: Props) => {\n const styles = useStyles();\n return (\n <div className={styles.blobWrapper} onScroll={stopPropagation}>\n <span className={styles[historyClassName]}>{value}</span>\n </div>\n );\n};\n\nexport default BlobRenderer;\n","import React, {useContext} from 'react';\nimport {pipe} from 'ramda';\nimport {DataTypes, getHistoryAppearanceByUri, getHistoryAttributeClassName, PrimitiveValue} from '@reltio/mdm-sdk';\nimport {DataTypeValue, ExpandedValueTooltip, HistoryDiffContext} from '@reltio/components';\nimport BlobRenderer from './BlobRenderer';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: {\n value: PrimitiveValue;\n uri: string;\n };\n columnData: {\n dataTypeDefinition: {\n type: DataTypes;\n };\n };\n};\n\nconst DefaultCellValueRenderer = ({value, columnData: {dataTypeDefinition}}: Props) => {\n const styles = useStyles();\n\n const {value: simpleValue, uri} = value;\n const {appearance} = useContext(HistoryDiffContext);\n const historyClassName = pipe(getHistoryAppearanceByUri, getHistoryAttributeClassName)(uri, appearance);\n\n switch (dataTypeDefinition.type) {\n case DataTypes.TYPE_BLOB:\n return <BlobRenderer value={simpleValue} historyClassName={historyClassName} />;\n default: {\n const dataTypeValue = <DataTypeValue value={simpleValue} dataTypeDefinition={dataTypeDefinition} />;\n return (\n <ExpandedValueTooltip value={dataTypeValue}>\n <div className={styles.defaultWrapper}>\n <span className={styles[historyClassName]}>{dataTypeValue}</span>\n </div>\n </ExpandedValueTooltip>\n );\n }\n }\n};\n\nexport default DefaultCellValueRenderer;\n","import {assoc, chain, isNil, map, path, pipe, prop, reduce, reject, slice, split, uniqBy} from 'ramda';\nimport {\n AttributeNode,\n AttributeType,\n attributeUriToSearchUri,\n flatAttributeTreeNode,\n getAttrDataTypeDefinition,\n getAttributeTypesTree,\n getOvAttributeValuesByPathWithUri,\n isAttributeSearchUri,\n Metadata,\n SearchParent\n} from '@reltio/mdm-sdk';\nimport HeadCellRenderer from '../components/AttributeTable/cell-renderers/HeadCellRenderer';\nimport DefaultCellValueRenderer from '../components/AttributeTable/cell-renderers/DefaultCellValueRenderer';\n\nexport const getColumnsDataFromAttributeNode = (attrNode: AttributeNode, parents: SearchParent[]) => {\n const {uri, label, children, name, description} = attrNode;\n return reject(isNil, {\n id: attributeUriToSearchUri(uri, parents),\n label,\n description,\n dataTypeDefinition: getAttrDataTypeDefinition(attrNode),\n children: children?.map((childNode) => getColumnsDataFromAttributeNode(childNode, parents.concat({name})))\n });\n};\n\nexport const getColumnsData = (metadata: Metadata, attributeType: AttributeType) =>\n pipe(\n (metadata: Metadata, attributeType: AttributeType) => getAttributeTypesTree(metadata, attributeType),\n map((attrNode: AttributeNode) => getColumnsDataFromAttributeNode(attrNode, [attributeType])),\n chain(flatAttributeTreeNode),\n uniqBy(prop('id'))\n )(metadata, attributeType);\n\nconst getAttrPathFromColumnId = pipe(split('.'), slice(2, Infinity));\n\nconst getAttributeValues = (attrPath, value) =>\n pipe(path(['value']), getOvAttributeValuesByPathWithUri(attrPath))(value);\n\nconst getRowValueByColumnId = (columnId, value) => {\n const attrPath = getAttrPathFromColumnId(columnId);\n return getAttributeValues(attrPath, value);\n};\n\nexport const getBasicTableRowsData = (values, columnsData) =>\n values.map((value) =>\n pipe(\n reduce((acc, {id}) => assoc(id, getRowValueByColumnId(id, value), acc), {}),\n assoc('value', value)\n )(columnsData)\n );\n\nconst getNestedPathByColumnId = (columnId) => {\n if (isAttributeSearchUri(columnId)) {\n const attrPath = getAttrPathFromColumnId(columnId);\n return attrPath.length > 1 ? attrPath.slice(0, -1) : null;\n } else {\n return null;\n }\n};\n\nconst getColumnDataByColumnId = (columnData) => ({\n ...columnData,\n sortable: true,\n resizable: true,\n nestedPath: getNestedPathByColumnId(columnData.id),\n headCellRenderer: HeadCellRenderer,\n rowCellValueRenderer: DefaultCellValueRenderer\n});\n\nexport const getBasicTableColumnsData = map(getColumnDataByColumnId);\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n header: {\n padding: '0 12px 0 16px'\n },\n rightMenuItems: {\n display: 'flex',\n flex: '1 0 auto',\n justifyContent: 'flex-end',\n alignItems: 'center'\n }\n}));\n","import React, {useContext} from 'react';\nimport {useSelector} from 'react-redux';\nimport {\n FacetViewHeader,\n ColumnsSettings,\n FilterButton,\n VerticalDivider,\n ExpandableSearchInput,\n DescriptionIcon,\n RequiredMark\n} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {TableAttributeContext} from '../../contexts/TableAttributeContext';\nimport {useStyles} from './styles';\n\ntype Props = {\n title: string;\n};\n\nconst AttributeTableHeader = ({title}: Props) => {\n const styles = useStyles();\n const isEditableMode = useSelector(mdmModule.selectors.getIsEditableMode);\n\n const {\n attributeType,\n searchQuery,\n setSearchQuery,\n filters,\n onToggleFilters,\n allColumnsData,\n visibleColumns,\n onChangeColumns\n } = useContext(TableAttributeContext);\n\n const showRequiredMark = isEditableMode && attributeType?.required;\n\n return (\n <FacetViewHeader title={title} className={styles.header}>\n {showRequiredMark && <RequiredMark />}\n <DescriptionIcon description={attributeType?.description} />\n <div className={styles.rightMenuItems}>\n <ExpandableSearchInput query={searchQuery} onChange={setSearchQuery} />\n <FilterButton enabled={!!filters} onClick={onToggleFilters} />\n <VerticalDivider height={24} margin={4} />\n <ColumnsSettings\n columnsData={allColumnsData}\n selectedColumns={visibleColumns}\n onChangeColumns={onChangeColumns}\n />\n </div>\n </FacetViewHeader>\n );\n};\n\nexport default AttributeTableHeader;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\nimport {withTableContext} from '@reltio/components';\n\ntype Props = {\n cell: {values: string[]};\n isSorted: boolean;\n CellValueRenderer: React.ElementType;\n isRemoved: boolean;\n};\nconst RowCellRenderer = ({cell, CellValueRenderer, isRemoved, isSorted, ...otherProps}: Props) => {\n const styles = useStyles();\n return (\n <div\n className={classnames(\n {\n [styles['row-cell--sorted']]: isSorted,\n [styles['row-cell--removed']]: isRemoved\n },\n styles.rowCell\n )}\n >\n {cell.values.map((value, index) => (\n <CellValueRenderer key={index} value={value} {...otherProps} />\n ))}\n </div>\n );\n};\n\nexport default withTableContext(({deletedUris}, {rowValue: {value}}) => ({\n isRemoved: Boolean(deletedUris.find((uri) => value.uri === uri))\n}))(RowCellRenderer);\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n tableContainer: {\n display: 'flex',\n fontFamily: 'Roboto',\n color: 'rgba(0,0,0,0.54)',\n marginBottom: '15px'\n },\n 'row-cell__buttons-container': {\n position: 'absolute'\n },\n 'row-cell__buttons-wrapper': {\n display: 'flex',\n paddingLeft: '10px',\n '& > button': {\n marginLeft: '-10px',\n transform: 'scale(0.9)'\n }\n }\n}));\n","import React from 'react';\nimport EditIcon from '@mui/icons-material/Edit';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport i18n from 'ui-i18n';\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\n\ntype Props = {\n onEdit?: () => void;\n onRemove?: () => void;\n};\n\nexport const EditButtons = ({onEdit, onRemove}: Props) => (\n <>\n {onEdit && (\n <SmallIconButtonWithTooltip tooltipTitle={i18n.text('Edit')} icon={EditIcon} size=\"L\" onClick={onEdit} />\n )}\n {onRemove && (\n <SmallIconButtonWithTooltip\n tooltipTitle={i18n.text('Remove')}\n icon={DeleteIcon}\n size=\"L\"\n onClick={onRemove}\n />\n )}\n </>\n);\n\nexport default EditButtons;\n","import React, {useCallback, useContext, useMemo, useState} from 'react';\nimport RowCellRenderer from './cell-renderers/RowCellRenderer';\nimport {BasicTable, useConfigPermissions} from '@reltio/components';\nimport {getBasicTableColumnsData, getBasicTableRowsData} from '../../helpers/tableAttributeHelpers';\nimport {useStyles} from './styles';\nimport {\n checkCanEditAttribute,\n checkCanDeleteAttribute,\n SearchFilter,\n isReltioCrosswalk,\n Entity,\n isEditableMode as checkIsEditableMode,\n AttributeItem,\n TableAttributeViewConfig,\n ComplexAttributeValue\n} from '@reltio/mdm-sdk';\nimport {ColumnsDataType} from '../types';\nimport EditButtons from './EditButtons';\nimport {useSelector} from 'react-redux';\nimport {path, prop, pipe} from 'ramda';\nimport {TableAttributeContext} from '../../contexts/TableAttributeContext';\nimport mdmModule from '@reltio/mdm-module';\n\nconst MAX_HEIGHT = 477;\n\ntype Props = {\n columnsData: ColumnsDataType;\n values: ComplexAttributeValue[];\n filters?: {\n [key: string]: SearchFilter;\n };\n onFilter?: (payload) => void;\n sorting?:\n | {\n field: string;\n order: string;\n }\n | undefined;\n onSort?: (payload) => void;\n config: TableAttributeViewConfig;\n onEdit: React.Dispatch<ComplexAttributeValue>;\n onDeleteAttribute: (attribute: AttributeItem) => void;\n deletedUris: string[];\n};\n\nconst AttributeTable = ({\n columnsData,\n values,\n sorting,\n onSort,\n filters,\n onFilter,\n config,\n onEdit,\n onDeleteAttribute,\n deletedUris\n}: Props) => {\n const tableRowsData = useMemo(() => getBasicTableRowsData(values, columnsData), [values, columnsData]);\n const tableColumnsData = useMemo(() => getBasicTableColumnsData(columnsData), [columnsData]);\n\n const styles = useStyles();\n const mode = useSelector(mdmModule.selectors.getMode);\n const isEditableMode = checkIsEditableMode(mode);\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entityUri) || ({} as Entity)\n );\n const {attributeType} = useContext(TableAttributeContext);\n\n const renderRowCell = useCallback(\n (props) => (\n <RowCellRenderer\n {...props}\n isSorted={!!sorting && sorting.field === props.columnData.id} /* eslint-disable-line react/prop-types */\n />\n ),\n [sorting]\n );\n\n const [hoverRowIndex, setHoverRowIndex] = useState(null);\n\n const {canUpdate, canDelete} = useConfigPermissions();\n\n const checkCanEdit = (attributeValue: ComplexAttributeValue) =>\n canUpdate(config) &&\n checkCanEditAttribute({\n attributeType,\n mode,\n attributeValue,\n isReltioCrosswalk: isReltioCrosswalk(modifiedEntity.crosswalks, attributeValue)\n });\n const checkCanRemove = (attributeValue: ComplexAttributeValue) =>\n canDelete(config) &&\n checkCanDeleteAttribute({\n attributeType,\n mode,\n attributeValue,\n metadata,\n isReltioCrosswalk: isReltioCrosswalk(modifiedEntity.crosswalks, attributeValue)\n });\n\n const hideRightContent = useMemo(\n () =>\n typeof hoverRowIndex === 'number' && isEditableMode\n ? deletedUris.includes(pipe(path([hoverRowIndex]), prop('uri'))(values))\n : true,\n [hoverRowIndex, deletedUris, values, isEditableMode]\n );\n const canRemove = typeof hoverRowIndex === 'number' && checkCanRemove(path([hoverRowIndex], values));\n const canEdit = typeof hoverRowIndex === 'number' && checkCanEdit(path([hoverRowIndex], values));\n\n const handleEditAttribute = useCallback(() => {\n const attributeValue = path([hoverRowIndex], values);\n if (!canEdit) return;\n onEdit(attributeValue);\n }, [onEdit, hoverRowIndex, values, canEdit]);\n\n const handleRemoveAttribute = useCallback(() => {\n const attributeValue = path([hoverRowIndex], values);\n if (!canRemove) return;\n const attribute: AttributeItem = {\n parentUri: entityUri,\n attributeType,\n uri: attributeValue.uri,\n value: attributeValue\n };\n onDeleteAttribute(attribute);\n setHoverRowIndex(null);\n }, [hoverRowIndex, values, onDeleteAttribute, canRemove, attributeType, entityUri]);\n\n const hoveredRowRightContent =\n !hideRightContent && (canRemove || canEdit) ? (\n <EditButtons\n onEdit={canEdit ? handleEditAttribute : undefined}\n onRemove={canRemove ? handleRemoveAttribute : undefined}\n />\n ) : undefined;\n const context = useMemo(() => ({deletedUris}), [deletedUris]);\n return (\n <div className={styles.tableContainer}>\n <BasicTable\n autosizing\n maxHeight={MAX_HEIGHT}\n columnsData={tableColumnsData}\n rowsData={tableRowsData}\n sorting={sorting}\n onSort={onSort}\n filters={filters}\n onFilter={onFilter}\n hoverStateEnabled={true}\n defaultColumnWidth={250}\n defaultColumnMinWidth={200}\n headRowHeight={56}\n resizeDebounceDelay={150}\n renderRowCell={renderRowCell}\n onRowHover={setHoverRowIndex}\n hoverRowIndex={hoverRowIndex}\n hoveredRowRightContent={hoveredRowRightContent}\n context={context}\n classes={{\n hoveredRowRightContentWrapper: styles['row-cell__buttons-wrapper'],\n hoveredRowRightContentContainer: styles['row-cell__buttons-container']\n }}\n />\n </div>\n );\n};\n\nexport default AttributeTable;\n","import {useCallback, useContext, useState, useMemo} from 'react';\nimport {\n createNewAttribute,\n Entity,\n getAttributeSource,\n isEditableMode as checkIsEditableMode,\n NestedAttributeValue,\n AttributeItem,\n isEmptyValue,\n validateComplexAttribute,\n ComplexAttributeValue,\n EntitiesMap,\n evaluateErrorPath,\n getSingleAttributeEntity,\n getEditableAttributeTypeSubAttributes\n} from '@reltio/mdm-sdk';\nimport {ViewIdContext} from '@reltio/components';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {propEq, pathOr, pipe, map, prop, equals, both, not, without, filter} from 'ramda';\nimport {TableAttributeContext} from '../../../contexts/TableAttributeContext';\nimport {isTempUri, createDefaultValues} from '@reltio/mdm-sdk';\n\nconst emptyArray = [];\n\nexport const useEditableAttribute = () => {\n const [newAttributeUri, setNewAttributeUri] = useState<string>();\n const [originalValues, setOriginalValues] = useState<ComplexAttributeValue[]>([]);\n\n const dispatch = useDispatch();\n const mode = useSelector(mdmModule.selectors.getMode);\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entityUri) || ({} as Entity)\n );\n\n const viewId = useContext(ViewIdContext);\n const {attributeType, values} = useContext(TableAttributeContext);\n\n const isEditableMode = checkIsEditableMode(mode);\n const attributeSource = getAttributeSource(attributeType);\n const modifiedEntityValues: NestedAttributeValue[] = pathOr(\n emptyArray,\n [attributeSource, attributeType?.name],\n modifiedEntity\n );\n\n const emptyEditorValue: ComplexAttributeValue = useMemo(\n () =>\n createNewAttribute({\n parentUri: entityUri,\n attributeType\n }),\n [entityUri, attributeType]\n );\n\n const isModifiedEntityValuesEmpty = isEmptyValue(modifiedEntityValues);\n const showEmpty = attributeType.required && isModifiedEntityValuesEmpty;\n const actualValues = useMemo(\n () => (showEmpty ? [emptyEditorValue] : modifiedEntityValues),\n [emptyEditorValue, modifiedEntityValues, showEmpty]\n );\n\n const modifiedValues = useMemo(() => {\n const newValues = actualValues.filter(pipe(prop('uri'), both(isTempUri, pipe(equals(newAttributeUri), not))));\n\n const oldValues = map((originalValue) => actualValues.find(propEq('uri', originalValue.uri)) || originalValue)(\n values\n );\n\n return [...newValues, ...oldValues].map((value) => originalValues.find(propEq('uri', value.uri)) ?? value);\n }, [actualValues, originalValues, newAttributeUri, values]);\n\n const deletedUris = useMemo(\n () =>\n pipe(\n map(prop('uri')),\n filter((uri) => !actualValues.find(propEq('uri', uri)))\n )(isEditableMode ? values : []),\n [actualValues, values, isEditableMode]\n );\n\n const editingValues = actualValues.filter(\n ({uri}) => uri === newAttributeUri || originalValues.find(propEq('uri', uri))\n );\n\n const onChangeAttribute = useCallback(\n (params: AttributeItem) => pipe(profile.actions.modifyAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const onDeleteAttribute = useCallback(\n (params: AttributeItem) => pipe(profile.actions.removeAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const onAdd = useCallback(() => {\n const newAttribute = createNewAttribute({\n parentUri: entityUri,\n attributeType\n });\n setNewAttributeUri(newAttribute.uri);\n onChangeAttribute({\n value: {\n ...newAttribute,\n value: createDefaultValues({\n attributeTypes: getEditableAttributeTypeSubAttributes(metadata, attributeType),\n parentUri: newAttribute.uri,\n mode,\n metadata\n })\n },\n uri: newAttribute.uri,\n attributeType\n });\n }, [entityUri, attributeType, metadata, mode, onChangeAttribute]);\n\n const onStartEditing = useCallback(\n (attributeValue: ComplexAttributeValue) => {\n setOriginalValues((prev) => {\n if (!prev.find(propEq('uri', attributeValue.uri))) {\n return [...prev, attributeValue];\n }\n return prev;\n });\n },\n [setOriginalValues]\n );\n\n const onCancel = useCallback(\n (attributeValue: ComplexAttributeValue) => {\n const editingValueOriginal = originalValues.find(propEq('uri', attributeValue.uri));\n if (editingValueOriginal) {\n const attributeItem = {attributeType, value: editingValueOriginal, uri: attributeValue.uri};\n setOriginalValues((prev) => without([editingValueOriginal], prev));\n if (!isModifiedEntityValuesEmpty) onChangeAttribute(attributeItem);\n } else {\n const attributeItem = {value: attributeValue, attributeType, uri: attributeValue.uri};\n setNewAttributeUri(null);\n onDeleteAttribute(attributeItem);\n }\n dispatch(profile.errors.actions.errorsSet([]));\n },\n [\n onDeleteAttribute,\n onChangeAttribute,\n setOriginalValues,\n isModifiedEntityValuesEmpty,\n originalValues,\n attributeType,\n dispatch\n ]\n );\n\n const validate = useCallback(\n (attributeValue: ComplexAttributeValue, tempEntitiesMap: EntitiesMap) => {\n const errors = validateComplexAttribute(metadata, attributeType, attributeValue, tempEntitiesMap).map(\n (error) => ({\n ...error,\n path: evaluateErrorPath(\n {\n entityUri,\n metadata,\n entitiesMap: tempEntitiesMap || {\n [entityUri]: getSingleAttributeEntity(attributeType, attributeValue)\n }\n },\n error.uri || error.parentUri\n )\n })\n );\n dispatch(profile.errors.actions.errorsSet(errors));\n return errors.length === 0;\n },\n [dispatch, entityUri, attributeType, metadata]\n );\n\n const onApply = useCallback(\n (attributeValue: ComplexAttributeValue, tempEntitiesMap?: EntitiesMap) => {\n if (validate(attributeValue, tempEntitiesMap)) {\n setNewAttributeUri(null);\n setOriginalValues((prev) => {\n const original = prev.find(propEq('uri', attributeValue.uri));\n return original ? without([original], prev) : prev;\n });\n }\n },\n [setOriginalValues, setNewAttributeUri, validate]\n );\n\n const onReset = useCallback(() => {\n setOriginalValues([]);\n setNewAttributeUri(null);\n }, []);\n\n const checkHasChanges = (value: ComplexAttributeValue) => originalValues.find(propEq('uri', value.uri)) !== value;\n\n return {\n checkHasChanges,\n onChangeAttribute,\n onDeleteAttribute,\n onAdd,\n onCancel,\n onApply,\n onStartEditing,\n onReset,\n modifiedValues,\n editingValues,\n deletedUris\n };\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n actionButtons: {\n display: 'flex',\n justifyContent: 'flex-end',\n margin: '0 8px 10px',\n\n '& > button': {\n fontSize: '14px',\n lineHeight: '16px',\n marginLeft: '8px',\n padding: '10px 8px',\n backgroundColor: 'rgba(98, 2, 238, 0)'\n }\n }\n}));\n","import React, {useCallback, useContext} from 'react';\nimport i18n from 'ui-i18n';\nimport {pipe} from 'ramda';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {EditableAttribute, ViewIdContext} from '@reltio/components';\nimport {\n Entity,\n isReference,\n isTempUri,\n getAttributeOwnError,\n getReferencedEntityUriFromAttrValue,\n AttributeItem,\n ComplexAttributeValue,\n EntitiesMap\n} from '@reltio/mdm-sdk';\nimport Button from '@mui/material/Button';\nimport {TableAttributeContext} from '../../contexts/TableAttributeContext';\nimport {useStyles} from './styles';\n\ntype Props = {\n hasChanges: boolean;\n onChangeAttribute: (attribute: AttributeItem) => void;\n onDeleteAttribute: (attribute: AttributeItem) => void;\n onCancel: (attributeValue: ComplexAttributeValue) => void;\n onApply: (attributeValue: ComplexAttributeValue, tempEntitiesMap?: EntitiesMap) => void;\n attributeValue: ComplexAttributeValue;\n};\n\nexport const AttributeEditing = ({\n onChangeAttribute,\n onCancel,\n onApply,\n onDeleteAttribute,\n hasChanges,\n attributeValue\n}: Props) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n\n const viewId = useContext(ViewIdContext);\n const {attributeType} = useContext(TableAttributeContext);\n\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const mode = useSelector(mdmModule.selectors.getMode);\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entityUri) || ({} as Entity)\n );\n const shouldConnectAllModifiedEntities =\n isReference(attributeType) && isTempUri(getReferencedEntityUriFromAttrValue(attributeValue));\n const allModifiedEntities = useSelector((state) =>\n shouldConnectAllModifiedEntities ? mdmModule.selectors.getModifiedEntities(state) : undefined\n );\n const errors = useSelector((state) =>\n mdmModule.selectors.getActiveErrorsForAttributesPager(state, entityUri, attributeType)\n );\n\n const showEmptyEditors = isTempUri(entityUri);\n\n const onAddAttributes = useCallback(\n (params: AttributeItem[]) =>\n pipe(profile.actions.addAttributes, dispatch)(params.map((param) => ({...param, viewId}))),\n [viewId, dispatch]\n );\n\n const onDeactivateError = useCallback(pipe(profile.errors.actions.errorDeactivated, dispatch), [dispatch]);\n\n return (\n <>\n <EditableAttribute\n expanded\n attributeValue={attributeValue}\n showEmptyEditors={showEmptyEditors}\n onDeleteAttribute={onDeleteAttribute}\n onDeactivateError={onDeactivateError}\n onChangeAttribute={onChangeAttribute}\n onAddAttributes={onAddAttributes}\n mode={mode}\n crosswalks={modifiedEntity.crosswalks}\n errors={errors}\n attributeType={attributeType}\n ownError={getAttributeOwnError(attributeValue, null, attributeType.uri, errors)}\n />\n <div className={styles.actionButtons}>\n <Button onClick={() => onCancel(attributeValue)}>{i18n.text('Cancel')}</Button>\n <Button\n color=\"primary\"\n disabled={!hasChanges}\n onClick={() => onApply(attributeValue, allModifiedEntities)}\n data-reltio-id=\"table-attribute-view-apply-button\"\n >\n {i18n.text('Apply')}\n </Button>\n </div>\n </>\n );\n};\n","import {useEffect, useContext, useMemo, useRef} from 'react';\nimport {pipe, prop, curry, both, map, reject, isNil, forEach, either, equals} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {\n areOneHierarchyUris,\n AttributeError,\n ComplexAttributeValue,\n ErrorType,\n isAttributeTypeError,\n isTempUri\n} from '@reltio/mdm-sdk';\nimport {useActionsHook} from '@reltio/components';\nimport {TableAttributeContext} from '../../../contexts/TableAttributeContext';\n\ntype Props = {\n onStartEditing: (value: ComplexAttributeValue) => void;\n modifiedValues: ComplexAttributeValue[];\n highlightedError: AttributeError;\n highlightedAttributeError: AttributeError;\n};\n\nconst isMissedTypeError = (error: AttributeError) => error?.type === ErrorType.missed;\n\nconst findAttributeValueByError = curry((values: ComplexAttributeValue[], error: AttributeError) =>\n values.find(pipe(prop('uri'), either(areOneHierarchyUris(error.parentUri), equals(error.uri))))\n);\n\nexport const useExpandAttributes = ({\n onStartEditing,\n modifiedValues,\n highlightedError,\n highlightedAttributeError\n}: Props) => {\n const {attributeType} = useContext(TableAttributeContext);\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const errors = useSelector((state) =>\n mdmModule.selectors.getActiveErrorsForAttributesPager(state, entityUri, attributeType)\n );\n\n const shouldOpenInvalidEditors = useRef(true);\n const listenToActions = useActionsHook();\n\n const missedAttributeError = useMemo(\n () =>\n errors.find(both(isMissedTypeError, (error) => isAttributeTypeError(error, entityUri, attributeType.uri))),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [errors, entityUri, attributeType.uri]\n );\n\n useEffect(() => {\n if (attributeType?.required && modifiedValues.length === 1 && isTempUri(modifiedValues[0].uri)) {\n return onStartEditing(modifiedValues[0]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [attributeType]);\n\n useEffect(() => {\n if (missedAttributeError && modifiedValues.length === 1) {\n onStartEditing(modifiedValues[0]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [missedAttributeError]);\n\n useEffect(() => {\n if (shouldOpenInvalidEditors.current && errors.length) {\n pipe(map(findAttributeValueByError(modifiedValues)), reject(isNil), forEach(onStartEditing))(errors);\n shouldOpenInvalidEditors.current = false;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [errors]);\n\n useEffect(() => {\n if (isMissedTypeError(highlightedError) && modifiedValues.length === 1) {\n onStartEditing(modifiedValues[0]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [highlightedError]);\n\n useEffect(() => {\n if (highlightedAttributeError) {\n const attributeValue = findAttributeValueByError(modifiedValues, highlightedAttributeError);\n if (attributeValue) onStartEditing(attributeValue);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [highlightedAttributeError]);\n\n useEffect(() => {\n const stopListeningActions = listenToActions((action) => {\n if (action.type === profile.constants.ProfileActions.SAVE_PROFILE) {\n shouldOpenInvalidEditors.current = true;\n }\n });\n return () => stopListeningActions();\n }, [listenToActions]);\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n addButton: {\n padding: '9px 16px 9px 12px',\n backgroundColor: 'rgba(98, 2, 238, 0)',\n marginBottom: '4px'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n editor: {\n padding: '4px 16px'\n }\n}));\n","import React, {useContext, useEffect} from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {\n AttributeError,\n AttributeItem,\n checkCanCreateAttribute,\n ComplexAttributeValue,\n EntitiesMap,\n TableAttributeViewConfig\n} from '@reltio/mdm-sdk';\nimport {useConfigPermissions} from '@reltio/components';\nimport Button from '@mui/material/Button';\nimport AddIcon from '@mui/icons-material/Add';\nimport {TableAttributeContext} from '../../contexts/TableAttributeContext';\nimport {AttributeEditing} from '../AttributeEditing/AttributeEditing';\nimport {useExpandAttributes} from './hooks/useExpandAttributes';\nimport {useStyles} from './styles';\n\ntype Props = {\n config: TableAttributeViewConfig;\n editingValues: ComplexAttributeValue[];\n modifiedValues: ComplexAttributeValue[];\n onChangeAttribute: (item: AttributeItem) => void;\n onDeleteAttribute: (item: AttributeItem) => void;\n onAdd: () => void;\n onCancel: (value: ComplexAttributeValue) => void;\n onApply: (value: ComplexAttributeValue, tempEntitiesMap?: EntitiesMap) => void;\n onReset: () => void;\n onStartEditing: (value: ComplexAttributeValue) => void;\n checkHasChanges: (value: ComplexAttributeValue) => boolean;\n highlightedError: AttributeError;\n highlightedAttributeError: AttributeError;\n};\n\nexport const TableAttributeEditableContent = ({\n config,\n editingValues,\n modifiedValues,\n onChangeAttribute,\n onDeleteAttribute,\n onAdd,\n onCancel,\n onApply,\n onStartEditing,\n onReset,\n checkHasChanges,\n highlightedError,\n highlightedAttributeError\n}: Props) => {\n const styles = useStyles();\n\n const {attributeType} = useContext(TableAttributeContext);\n const mode = useSelector(mdmModule.selectors.getMode);\n\n const {canCreate: hasConfigToCreate} = useConfigPermissions();\n useExpandAttributes({onStartEditing, modifiedValues, highlightedError, highlightedAttributeError});\n\n const canCreate =\n hasConfigToCreate(config) &&\n attributeType &&\n checkCanCreateAttribute({attributeType, mode}) &&\n !editingValues.length;\n\n useEffect(() => {\n return () => onReset();\n }, [onReset]);\n\n return (\n <div className={styles.editor}>\n {canCreate && (\n <Button\n color=\"primary\"\n onClick={onAdd}\n className={styles.addButton}\n data-reltio-id=\"table-attribute-view-add-button\"\n >\n <AddIcon classes={{root: styles.icon}} />\n <div className={styles.buttonLabel}>{i18n.text('Add')}</div>\n </Button>\n )}\n {editingValues.map((value) => (\n <AttributeEditing\n key={value.uri}\n attributeValue={value}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n onCancel={onCancel}\n onApply={onApply}\n hasChanges={checkHasChanges(value)}\n />\n ))}\n </div>\n );\n};\n","import React, {useContext, useMemo} from 'react';\nimport {isEmpty, propEq} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {\n AttributeError,\n AttributeType,\n isAttributeTypeError as checkIsAttributeTypeError,\n Entity,\n isPartOfErrorAttributeTypeUri,\n isPartOfErrorParentUri,\n TableAttributeViewConfig\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {\n isHighlightedErrorType,\n ScrollToElementContext,\n useScrollToAttributeError,\n withContext\n} from '@reltio/components';\nimport AttributeTable from '../AttributeTable/AttributeTable';\nimport {useEditableAttribute} from './hooks/useEditableAttribute';\nimport {TableAttributeContext} from '../../contexts/TableAttributeContext';\nimport {TableAttributeEditableContent} from '../TableAttributeEditableContent/TableAttributeEditableContent';\n\ntype HighlightedElement = React.ContextType<typeof ScrollToElementContext>;\n\ntype Props = {\n config: TableAttributeViewConfig;\n entityUri: string;\n attributeType: AttributeType;\n highlightedError?: HighlightedElement;\n highlightedAttributeError?: HighlightedElement;\n};\n\nexport const TableAttributeContent = ({config, entityUri, highlightedError, highlightedAttributeError}: Props) => {\n const isEditableMode = useSelector(mdmModule.selectors.getIsEditableMode);\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entityUri) || ({} as Entity)\n );\n\n const {values, visibleColumns, onFilter, onSort, filters, sorting, allColumnsData} =\n useContext(TableAttributeContext);\n\n const {\n onDeleteAttribute,\n onStartEditing,\n onChangeAttribute,\n onAdd,\n onCancel,\n onApply,\n onReset,\n checkHasChanges,\n modifiedValues,\n editingValues,\n deletedUris\n } = useEditableAttribute();\n const {ref, errorClassName} = useScrollToAttributeError({highlightedError, isSimple: true});\n\n const preparedValues = isEditableMode ? modifiedValues : values;\n\n const visibleColumnsData = useMemo(\n () => visibleColumns.map((id) => allColumnsData.find(propEq('id', id))),\n [visibleColumns, allColumnsData]\n );\n\n return (\n <div ref={ref} className={errorClassName}>\n {isEditableMode && !isEmpty(modifiedEntity) && (\n <TableAttributeEditableContent\n config={config}\n editingValues={editingValues}\n modifiedValues={modifiedValues}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n onAdd={onAdd}\n onReset={onReset}\n onCancel={onCancel}\n onApply={onApply}\n onStartEditing={onStartEditing}\n checkHasChanges={checkHasChanges}\n highlightedError={highlightedError?.element as AttributeError}\n highlightedAttributeError={highlightedAttributeError?.element as AttributeError}\n />\n )}\n {visibleColumnsData.length > 0 && (\n <AttributeTable\n columnsData={visibleColumnsData}\n config={config}\n values={preparedValues}\n filters={filters}\n onFilter={onFilter}\n sorting={sorting}\n onSort={onSort}\n onEdit={onStartEditing}\n onDeleteAttribute={onDeleteAttribute}\n deletedUris={deletedUris}\n />\n )}\n </div>\n );\n};\n\nexport default withContext(\n ScrollToElementContext,\n (contextValue, {entityUri, attributeType}) => {\n const {element, type} = contextValue || {};\n const isError = isHighlightedErrorType(type);\n\n const isAttributeTypeError =\n isError && checkIsAttributeTypeError(element as AttributeError, entityUri, attributeType.uri);\n const isAttributeError =\n element &&\n isError &&\n !isAttributeTypeError &&\n isPartOfErrorAttributeTypeUri(attributeType, element) &&\n isPartOfErrorParentUri(entityUri, element);\n\n const highlightedError = isAttributeTypeError ? contextValue : null;\n const highlightedAttributeError = isAttributeError ? contextValue : null;\n return {highlightedError, highlightedAttributeError};\n },\n TableAttributeContent\n);\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n flexDirection: 'column'\n },\n content: {\n position: 'relative',\n overflow: 'hidden'\n },\n noData: {\n fontSize: '13px',\n paddingLeft: '20px',\n color: 'rgba(0,0,0,0.54)'\n },\n header: {\n padding: '0 4px 0 16px'\n }\n}));\n","import React, {useContext} from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport {\n BasicView,\n FacetViewHeader,\n DescriptionIcon,\n LinearLoadIndicator,\n BasicTablePagination\n} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {TableAttributeViewConfig} from '@reltio/mdm-sdk';\nimport Typography from '@mui/material/Typography';\nimport {TableAttributeContext} from '../../contexts/TableAttributeContext';\nimport AttributeTableHeader from '../AttributeTableHeader/AttributeTableHeader';\nimport TableAttributeContent from '../TableAttributeContent/TableAttributeContent';\nimport {useStyles} from './styles';\n\nconst DEFAULT_ROWS_PER_PAGE = 15;\n\ntype Props = {\n config: TableAttributeViewConfig;\n className?: string;\n};\n\nexport const TableAttributeView = ({config, className}: Props) => {\n const {caption, max = DEFAULT_ROWS_PER_PAGE} = config;\n\n const styles = useStyles();\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const {totalVisibleValues, attributeType, showTable, hasPaging, isLoading, page, setPage} =\n useContext(TableAttributeContext);\n\n return (\n <BasicView className={classnames(styles.root, className)}>\n {showTable ? (\n <>\n <AttributeTableHeader title={caption} />\n <div className={styles.content}>\n <TableAttributeContent config={config} attributeType={attributeType} entityUri={entityUri} />\n {hasPaging && (\n <BasicTablePagination\n count={totalVisibleValues}\n rowsPerPageOptions={[]}\n rowsPerPage={max}\n page={page}\n onChangePage={setPage}\n />\n )}\n {isLoading && <LinearLoadIndicator />}\n </div>\n </>\n ) : (\n <>\n <FacetViewHeader title={caption} className={styles.header}>\n <DescriptionIcon description={attributeType?.description} />\n </FacetViewHeader>\n <Typography className={styles.noData}>{i18n.text('No data')}</Typography>\n </>\n )}\n </BasicView>\n );\n};\n","import {useEffect, useState, useCallback} from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {pick, prop} from 'ramda';\nimport {Entity, getPathsTree, getRequestErrorMessage, isTempUri, updateTreesWithNewEntity} from '@reltio/mdm-sdk';\nimport {useDidUpdateEffect, useSafePromise} from '@reltio/components';\nimport {Response, Node} from '../types';\n\nlet nodeCounter = 0;\nexport const generateId = () => nodeCounter++;\n\nconst processResponse = (response: Response) => {\n const fakeRoot = {\n children: [] as Node[],\n nodeId: generateId()\n };\n if (response.parentPaths) {\n for (let i = 0; i < response.parentPaths.length; i++) {\n const path = response.parentPaths[i];\n let nextRoot = fakeRoot;\n for (let j = path.length - 1; j >= 0; j--) {\n const nextParent = path[j];\n const entity = response.entities[nextParent.entityUri];\n const isRoot = j === path.length - 1;\n const node: Node = {\n entity,\n children: [],\n nodeId: generateId(),\n expanded: true,\n rootIndex: isRoot ? i + 1 : undefined\n };\n if (isRoot) {\n node.root = isRoot;\n }\n nextRoot.children.push(node);\n nextRoot = node;\n }\n }\n }\n return fakeRoot.children;\n};\nexport const useLoadPaths = (entityUri: string, graphUri: string) => {\n const safePromise = useSafePromise();\n const [isLoading, setIsLoading] = useState(false);\n const [treeData, setTreeData] = useState<Node[]>([]);\n const [errorMessage, setErrorMessage] = useState<string>(null);\n const [rowsPerPage, setRowsPerPage] = useState(25);\n const [pagedData, setPagedData] = useState<Node[]>([]);\n const [page, setPage] = useState(0);\n useEffect(() => {\n setPagedData(treeData.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage));\n }, [page, rowsPerPage, treeData]);\n\n useEffect(() => {\n setPage(0);\n setRowsPerPage(25);\n }, [treeData]);\n const onChangeRowsPerPage = useCallback(\n (rowsPerPage) => {\n setRowsPerPage(rowsPerPage);\n setPage(0);\n },\n [setRowsPerPage]\n );\n\n const entity: Entity = useSelector(mdmModule.selectors.getEntity);\n useDidUpdateEffect(() => {\n const forest = treeData\n .map((tree, index) => ({tree, index}))\n .reduce((acc, tree) => ({...acc, [tree.index]: {root: tree.tree}}), {});\n const newTrees = updateTreesWithNewEntity(pick(['uri', 'label', 'secondaryLabel', 'type'], entity), forest);\n setTreeData(newTrees.map(prop('root')));\n }, [entity?.updatedTime]);\n useEffect(() => {\n if (!isTempUri(entityUri)) {\n setErrorMessage(null);\n setIsLoading(true);\n safePromise(getPathsTree({uri: entityUri, graphUri}))\n .then(processResponse)\n .then(setTreeData)\n .catch((e) => {\n console.warn(e);\n setErrorMessage(getRequestErrorMessage(e, i18n.text('Something went wrong')));\n })\n .finally(() => {\n setIsLoading(false);\n });\n }\n return () => {\n setTreeData([]);\n };\n }, [entityUri, graphUri, safePromise]);\n\n return {\n isLoading,\n treeData: pagedData,\n setTreeData,\n errorMessage,\n rowsPerPage,\n count: treeData.length,\n onChangePage: setPage,\n onChangeRowsPerPage,\n page\n };\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n container: {\n fontSize: '13px',\n display: 'flex',\n paddingTop: '6px',\n position: 'relative'\n },\n title: {\n flexGrow: 1,\n minHeight: '15px',\n color: theme.palette.primary.main,\n lineHeight: '15px'\n },\n wrapper: {\n width: '100%'\n },\n hidePageSelectorWhenSmall: {\n '@media (min-width: 450px)': {\n '& .MuiInputBase-root': {\n display: 'none'\n },\n '& .MuiTablePagination-selectLabel': {\n display: 'none'\n }\n }\n },\n avatar: {\n height: '16px',\n width: '16px',\n marginRight: '8px',\n marginLeft: '8px'\n },\n header: {\n padding: '0 4px 0 16px'\n },\n treeContainer: {\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n minHeight: '372px',\n maxHeight: '507px',\n overflow: 'auto'\n },\n tree: {\n flexGrow: 1,\n height: 0\n },\n buttonsContainer: {\n flexShrink: 0,\n marginLeft: 'auto',\n '& > * + *': {\n marginLeft: '-4px'\n }\n },\n button: {\n padding: '8px'\n },\n errorMessage: {\n fontSize: '13px',\n margin: '0 16px 0',\n lineHeight: '1.4',\n color: theme.palette.text.secondary\n },\n linearIndicator: {\n top: '42px'\n }\n}));\n","import React from 'react';\nimport {HierarchyPathsViewConfig} from '@reltio/mdm-sdk';\n\nexport const ConfigContext = React.createContext<HierarchyPathsViewConfig>(null);\n","import React, {memo, useContext, useState} from 'react';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport {HierarchyNodeTitle} from '@reltio/components';\nimport {getAbsoluteImageUrl, getEntityType, getPropWithInheritance, getLabel} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport Avatar from '@mui/material/Avatar';\nimport {useStyles} from './styles';\nimport DEFAULT_ICON from './defaultTypeIcon.png';\nimport {ConfigContext} from './ConfigContext';\nimport {Node as NodeType} from './types';\n\nconst onImageLoadFail = (e) => {\n e.target.src = DEFAULT_ICON;\n};\n\ntype Props = {\n node?: NodeType;\n};\n\nexport const Node = ({node}: Props) => {\n const {\n entity: {uri},\n nodeId\n } = node;\n const title = getLabel(node.entity.label);\n\n const styles = useStyles();\n const absoluteImagePath = useSelector(mdm.selectors.getAbsoluteImagePath);\n const metadata = useSelector(mdm.selectors.getMetadata);\n const {uri: currentEntityUri} = useSelector(mdm.selectors.getEntity);\n\n const [popperAnchor, setPopperAnchor] = useState<HTMLElement>();\n const config = useContext(ConfigContext);\n\n const isSelected = uri === currentEntityUri;\n const entityType = getEntityType(metadata, node.entity.type);\n const entityTypeGraphIcon = entityType ? getPropWithInheritance(metadata, entityType, 'typeGraphIcon') : null;\n const icon = entityTypeGraphIcon && getAbsoluteImageUrl(absoluteImagePath, entityTypeGraphIcon);\n\n return (\n <div className={styles.wrapper} data-node-id={nodeId}>\n <div ref={setPopperAnchor} className={styles.container}>\n <Avatar\n alt=\"Node icon\"\n className={classnames(styles.avatar)}\n src={icon || DEFAULT_ICON}\n onError={onImageLoadFail}\n />\n <HierarchyNodeTitle\n isSelected={isSelected}\n title={title}\n entityUri={uri}\n viewId={config.id}\n anchorEl={popperAnchor}\n />\n </div>\n </div>\n );\n};\n\nexport default memo(Node);\n","import {Node} from './types';\n\nexport const getNodeKey = ({node}: {node: Node}) => node.nodeId;\n","import {makeStyles} from '@mui/styles';\nimport {theme as treeTheme} from '../theme';\n\nexport const useStyles = makeStyles(() => ({\n lineBlock: {\n height: '100%',\n position: 'relative',\n display: 'inline-block'\n },\n lineChildren: {\n height: '100%',\n position: 'absolute',\n display: 'inline-block',\n '&:after': {\n content: \"''\",\n position: 'absolute',\n backgroundColor: 'rgba(0,122,193,0.3)',\n width: '1px',\n left: '50%',\n bottom: '0',\n height: `calc(100% - ${treeTheme.rowHeight}px)`\n }\n },\n rootIndex: {\n display: 'flex',\n alignItems: 'center',\n color: 'rgba(0,0,0,0.54)',\n height: '100%'\n },\n verticalLine: {\n width: '1px',\n left: 'calc(50% - 1px)',\n top: 0,\n height: `${treeTheme.rowHeight / 2}px`,\n position: 'absolute',\n backgroundColor: 'rgba(0,122,193,0.3)'\n },\n horizontalLineRight: {\n height: '1px',\n top: `${treeTheme.rowHeight / 2}px`,\n left: 'calc(50% - 1px)',\n width: '24%',\n position: 'absolute',\n backgroundColor: 'rgba(0,122,193,0.3)'\n },\n node: {\n minWidth: '100%',\n position: 'relative',\n textAlign: 'left',\n padding: '0 24px 0 18px',\n boxSizing: 'border-box',\n whiteSpace: 'normal',\n '&:hover': {\n backgroundColor: 'rgba(0,0,0,0.06)'\n }\n },\n rootNode: {\n padding: '0 24px 0 13px'\n },\n\n longRootNode: {\n padding: '0 24px 0 5px'\n },\n\n nodeContent: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n paddingLeft: '18px',\n boxSizing: 'border-box'\n },\n nodeRootLongContent: {\n paddingLeft: '20px'\n },\n row: {\n display: 'flex'\n },\n rowContents: {\n position: 'relative',\n borderLeft: 'none',\n paddingLeft: '4px',\n flex: '1 1 auto',\n width: 0,\n display: 'flex',\n verticalAlign: 'middle',\n boxSizing: 'border-box'\n },\n buttonWrapper: {\n display: 'flex',\n paddingTop: '13px',\n width: '12px',\n cursor: 'pointer'\n },\n collapsedButton: {\n transform: 'rotate(-90deg)'\n },\n expandedButton: {\n transform: 'rotate(0deg)'\n },\n button: {\n transition: 'transform .15s ease',\n width: 0,\n height: 0,\n borderLeft: '4px solid transparent',\n borderRight: '4px solid transparent',\n borderTop: '4px solid rgba(0, 0, 0, 0.54)'\n },\n rowTitle: {\n flex: '1 1 auto',\n width: 0,\n paddingRight: '11px'\n }\n}));\n","import React from 'react';\nimport {useStyles} from './styles';\nimport classnames from 'classnames';\nimport {omit} from 'ramda';\nimport {Node} from '../types';\n\ntype Props = {\n treeIndex: number;\n scaffoldBlockPxWidth: number;\n node: Node;\n path: Array<string | number>;\n style?: Record<string, unknown>;\n title: React.ReactElement;\n toggleChildrenVisibility: (props) => void;\n};\n\nconst NodeRendererDefault = (props: Props) => {\n const {scaffoldBlockPxWidth, toggleChildrenVisibility, node, title, path, treeIndex, style, ...otherProps} = omit(\n [\n 'connectDragPreview',\n 'connectDragSource',\n 'isDragging',\n 'canDrop',\n 'canDrag',\n 'draggedNode',\n 'isSearchMatch',\n 'isSearchFocus',\n 'buttons',\n 'didDrop',\n 'children',\n 'treeId',\n 'isOver',\n 'parentNode',\n 'rowDirection'\n ],\n props\n );\n const nodeTitle = title;\n\n const showToggleChildrenButton =\n toggleChildrenVisibility && !node.root && node.children && node.children.length > 0;\n\n const onToggle = () => {\n toggleChildrenVisibility({\n node,\n path,\n treeIndex\n });\n };\n const styles = useStyles();\n return (\n <div style={{height: '100%'}} {...otherProps} key={node.nodeId}>\n {showToggleChildrenButton && node.expanded && (\n <div style={{width: scaffoldBlockPxWidth - 2}} className={styles.lineChildren} />\n )}\n <div className={styles.row} style={style}>\n <div className={styles.rowContents}>\n {showToggleChildrenButton && (\n <div className={styles.buttonWrapper} onClick={onToggle}>\n <div\n aria-label={node.expanded ? 'Collapse' : 'Expand'}\n className={classnames(\n styles.button,\n node.expanded ? styles.expandedButton : styles.collapsedButton\n )}\n />\n </div>\n )}\n <div className={styles.rowTitle}>\n {typeof nodeTitle === 'function'\n ? nodeTitle({\n node,\n path,\n treeIndex\n })\n : nodeTitle}\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default NodeRendererDefault;\n","import treeNodeRenderer from './tree-node-data-renderer';\nimport nodeContentRenderer from './node-content-renderer';\n\nconst scaffoldBlockPxWidth = 16;\nconst rowHeight = 28;\nconst slideRegionSize = 50;\n\nexport const theme = {nodeContentRenderer, treeNodeRenderer, scaffoldBlockPxWidth, rowHeight, slideRegionSize};\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\nimport {omit} from 'ramda';\nimport {Node} from '../types';\n\nconst MIN_NODE_CONTENT_WIDTH = 250;\n\ntype Props = {\n scaffoldBlockPxWidth: number;\n lowerSiblingCounts: number[];\n\n node: Node;\n children: React.ReactElement;\n style?: Record<string, unknown>;\n};\n\nconst TreeNode = (props: Props) => {\n const {children, scaffoldBlockPxWidth, lowerSiblingCounts, node, ...otherProps} = omit(\n [\n 'listIndex',\n 'swapFrom',\n 'swapLength',\n 'swapDepth',\n 'draggedNode',\n 'getPrevRow',\n 'connectDropTarget',\n 'isOver',\n 'canDrop',\n 'treeIndex',\n 'treeId',\n 'path',\n 'rowDirection'\n ],\n props\n );\n const styles = useStyles();\n // Construct the scaffold representing the structure of the tree\n const scaffoldBlockCount = lowerSiblingCounts.length;\n const scaffold = [];\n lowerSiblingCounts.forEach((lowerSiblingCount, i) => {\n scaffold.push(\n <div key={`pre_${1 + i}`} style={{width: scaffoldBlockPxWidth}} className={styles.lineBlock}>\n {node.root && <div className={styles.rootIndex}>{node.rootIndex}.</div>}\n {i === scaffoldBlockCount - 1 && i !== 0 && (\n <>\n <div className={styles.verticalLine} />\n <div className={styles.horizontalLineRight} />\n </>\n )}\n </div>\n );\n });\n\n const shift = node.root ? scaffoldBlockPxWidth - 4 : 0; //4px - shifting for rootIndex\n const scaffoldWidth = scaffoldBlockPxWidth * scaffoldBlockCount - shift;\n const style = {left: scaffoldWidth, width: `calc(100% - ${scaffoldWidth}px`};\n const width = `${scaffoldWidth + MIN_NODE_CONTENT_WIDTH}px`;\n const nodeStyle = {...otherProps.style, width};\n const longRootNode = node?.rootIndex > 99 && node.root;\n return (\n <div\n {...otherProps}\n className={classnames(styles.node, {\n [styles.longRootNode]: longRootNode,\n [styles.rootNode]: node.root && !longRootNode\n })}\n style={nodeStyle}\n >\n {scaffold}\n\n <div className={classnames(styles.nodeContent, {[styles.nodeRootLongContent]: longRootNode})} style={style}>\n {children}\n </div>\n </div>\n );\n};\n\nexport default TreeNode;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"20\",\n height: \"20\",\n viewBox: \"0 0 20 20\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\",\n fillOpacity: \".54\"\n}, React.createElement(\"path\", {\n d: \"M14.5 5a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm4 5a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm-17 1a1.5 1.5 0 110-3 1.5 1.5 0 010 3zM4 4a2 2 0 110-4 2 2 0 010 4zm1 16a2 2 0 110-4 2 2 0 010 4zm4.5-6a4.5 4.5 0 110-9 4.5 4.5 0 010 9zm0-2a2.5 2.5 0 100-5 2.5 2.5 0 000 5zm6 5a1.5 1.5 0 110-3 1.5 1.5 0 010 3z\",\n fill: \"#000\"\n}))));","import React, {useContext} from 'react';\nimport i18n from 'ui-i18n';\nimport {FacetViewHeader, FeaturesContext, SmallIconButtonWithTooltip} from '@reltio/components';\nimport ShowGraphIcon from './icons/ShowGraph.svg';\nimport {useStyles} from './styles';\n\ntype Props = {\n title?: string;\n onGraphOpen: () => void;\n};\n\nconst HierarchyPathsHeader = ({title, onGraphOpen}: Props) => {\n const styles = useStyles();\n const {showNavigateToGraph} = useContext(FeaturesContext);\n return (\n <FacetViewHeader title={title} className={styles.header}>\n {showNavigateToGraph && (\n <div className={styles.buttonsContainer}>\n <SmallIconButtonWithTooltip\n className={styles.button}\n tooltipTitle={i18n.text('Show Graph')}\n icon={ShowGraphIcon}\n onClick={onGraphOpen}\n size=\"L\"\n />\n </div>\n )}\n </FacetViewHeader>\n );\n};\n\nexport default HierarchyPathsHeader;\n","import {useCallback, useState} from 'react';\nimport {assoc} from 'ramda';\n\nimport {theme} from '../theme';\nimport {Node} from '../types';\nimport {getNodeKey} from '../helpers';\n\ntype HeightsCache = {[nodeId: Node['nodeId']]: number};\n\nconst getCacheKey = (node: Node) => getNodeKey({node});\n\nexport const useDynamicNodesHeights = () => {\n const [heightsCache, setHeightsCache] = useState<HeightsCache>({});\n const clearHeightsCache = useCallback(() => {\n setHeightsCache({});\n }, []);\n const onResize = useCallback(\n (node: Node) => (_, height) => {\n setHeightsCache((prevCache) =>\n prevCache[getCacheKey(node)] !== height ? assoc(getCacheKey(node), height, prevCache) : prevCache\n );\n },\n []\n );\n const getRowHeight = useCallback(\n ({node}: {node: Node}): number =>\n heightsCache[getCacheKey(node)]\n ? Math.max(heightsCache[getCacheKey(node)], theme.rowHeight)\n : theme.rowHeight,\n [heightsCache]\n );\n return {onResize, getRowHeight, clearHeightsCache};\n};\n","import React, {useCallback, useContext, useEffect, useMemo} from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {\n BasicTablePagination,\n BasicView,\n FeaturesContext,\n LinearLoadIndicator,\n ReactSortableTree\n} from '@reltio/components';\nimport mdmModule, {ui} from '@reltio/mdm-module';\nimport Typography from '@mui/material/Typography';\nimport {useLoadPaths} from './hooks/useLoadPaths';\nimport {Node} from './Node';\nimport {useStyles} from './styles';\nimport {ConfigContext} from './ConfigContext';\nimport {HierarchyPathsViewConfig} from '@reltio/mdm-sdk';\nimport {getNodeKey} from './helpers';\nimport {theme} from './theme';\nimport HierarchyPathsHeader from './HierarchyPathsHeader';\nimport {useDynamicNodesHeights} from './hooks/useDynamicNodesHeights';\nimport i18n from 'ui-i18n';\n\ntype Props = {\n className?: string;\n config: HierarchyPathsViewConfig;\n};\nconst ROOTS_PER_PAGE_OPTIONS = [10, 25];\n\nexport const HierarchyPathsView = ({config, className}: Props) => {\n const {id, caption, graph, _showNavigateToGraph} = config;\n const graphType = graph?.type;\n\n const styles = useStyles();\n const dispatch = useDispatch();\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n\n const {\n treeData,\n setTreeData,\n errorMessage,\n isLoading,\n rowsPerPage,\n count,\n onChangePage,\n onChangeRowsPerPage,\n page\n } = useLoadPaths(entityUri, graphType);\n const {onResize, getRowHeight, clearHeightsCache} = useDynamicNodesHeights();\n\n const featuresContext = useContext(FeaturesContext);\n const showNavigateToGraph =\n _showNavigateToGraph !== undefined ? _showNavigateToGraph : featuresContext.showNavigateToGraph;\n const features = useMemo(() => ({...featuresContext, showNavigateToGraph}), [showNavigateToGraph, featuresContext]);\n\n const openGraph = useCallback(() => {\n dispatch(ui.actions.openGraph({viewId: id, graphType, entityUri}));\n }, [dispatch, id, graphType, entityUri]);\n\n const generateNodeProps = useCallback(\n (rowInfo) => ({\n title: (\n <ReactResizeDetector\n handleHeight\n refreshMode=\"debounce\"\n refreshRate={100}\n onResize={onResize(rowInfo.node)}\n >\n <Node node={rowInfo.node} />\n </ReactResizeDetector>\n )\n }),\n [onResize]\n );\n\n useEffect(() => {\n clearHeightsCache();\n }, [clearHeightsCache, entityUri]);\n\n return (\n <FeaturesContext.Provider value={features}>\n <BasicView className={className}>\n <HierarchyPathsHeader onGraphOpen={openGraph} title={caption} />\n {isLoading && <LinearLoadIndicator className={styles.linearIndicator} />}\n <ConfigContext.Provider value={config}>\n <div className={styles.treeContainer}>\n <div className={styles.tree}>\n {!errorMessage ? (\n <>\n <ReactSortableTree\n isVirtualized={false}\n treeData={treeData}\n canDrag={false}\n theme={theme}\n generateNodeProps={generateNodeProps}\n onChange={setTreeData}\n getNodeKey={getNodeKey}\n rowHeight={getRowHeight}\n />\n </>\n ) : (\n <Typography className={styles.errorMessage}>{errorMessage}</Typography>\n )}\n </div>\n </div>\n {count > ROOTS_PER_PAGE_OPTIONS[1] ? (\n <BasicTablePagination\n classes={{root: styles.hidePageSelectorWhenSmall}}\n count={count}\n onChangePage={onChangePage}\n page={page}\n rowsPerPage={rowsPerPage}\n onChangeRowsPerPage={onChangeRowsPerPage}\n rowsPerPageOptions={ROOTS_PER_PAGE_OPTIONS}\n labelRowsPerPage={i18n.text('Roots per page:')}\n />\n ) : null}\n </ConfigContext.Provider>\n </BasicView>\n </FeaturesContext.Provider>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n position: 'relative'\n },\n bodyWrapper: {\n paddingTop: '21px'\n }\n}));\n","import React, {useRef, useEffect, useState} from 'react';\nimport {useAPI} from '@reltio/components';\nimport {CustomActionViewConfig} from '@reltio/mdm-sdk';\nimport Tooltip from '@mui/material/Tooltip';\nimport Dialog from '@mui/material/Dialog';\nimport {isNil, reject} from 'ramda';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n config: CustomActionViewConfig;\n className?: string;\n};\n\nexport const CustomView = ({config, className}: Props) => {\n const basicViewRef = useRef<HTMLDivElement>();\n const dialogRef = useRef<HTMLDivElement>();\n const [showModal, setShowModal] = useState<boolean>(false);\n const {height, width, tooltip: defaultTooltip} = config;\n const {html, visible, tooltip: updatedTooltip, customStyles, popup} = useAPI(config);\n const styles = useStyles();\n const tooltip = updatedTooltip || defaultTooltip;\n useEffect(() => {\n if (basicViewRef.current && html) {\n basicViewRef.current.innerHTML = '';\n Array.from(html.childNodes).forEach((child) => {\n basicViewRef.current.appendChild(child);\n });\n }\n }, [html]);\n useEffect(() => {\n setShowModal(!!popup);\n }, [popup]);\n\n useEffect(() => {\n if (showModal && dialogRef.current) {\n dialogRef.current.innerHTML = '';\n if (popup) {\n Array.from(popup.childNodes).forEach((child) => {\n dialogRef.current.appendChild(child);\n });\n }\n }\n }, [showModal, popup]);\n\n const style: {width?: number; height?: number} = reject(isNil, {width, height});\n return visible ? (\n <div className={styles.bodyWrapper}>\n <Dialog ref={dialogRef} open={!!popup} />\n <Tooltip title={tooltip || ''}>\n <div\n ref={basicViewRef}\n style={{...style, ...customStyles}}\n className={classnames(styles.root, className)}\n />\n </Tooltip>\n </div>\n ) : null;\n};\n","import React, {ComponentType} from 'react';\nimport i18n from 'ui-i18n';\nimport {EMPTY_STATE_ICONS, EMPTY_STATE_VARIANTS, EmptyState, ErrorBoundary} from '@reltio/components';\n\nconst withErrorBoundary = <P extends Record<string, unknown>>(Component: ComponentType<P>) => {\n const WithErrorBoundary = (props: P) => {\n return (\n <ErrorBoundary\n error={\n <EmptyState\n LogoRenderer={EMPTY_STATE_ICONS.ERROR}\n text=\"\"\n secondaryText={i18n.text('Something went wrong')}\n variant={EMPTY_STATE_VARIANTS.small}\n />\n }\n >\n <Component {...props} />\n </ErrorBoundary>\n );\n };\n\n WithErrorBoundary.displayName = 'WithErrorBoundary';\n return WithErrorBoundary;\n};\n\nexport default withErrorBoundary;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n stubView: {\n padding: '20px'\n },\n fullHeight: {\n height: '100%'\n },\n component: {\n boxSizing: 'border-box',\n overflow: 'auto',\n boxShadow: 'none',\n borderRadius: 'unset'\n }\n});\n","import {useEffect, useState} from 'react';\nimport {both, gt, lt, path, pipe} from 'ramda';\nimport {Entity, GeoPoint, Metadata, resolve} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '@reltio/components';\n\nconst filterWrongLat = pipe(path(['point', 'lat']), both(gt(90), lt(-90)));\n\nexport const useMarkers = (entity: Entity, metadata: Metadata, mapKey: string) => {\n const [markers, setMarkers] = useState<GeoPoint[]>([]);\n const [loading, setLoading] = useState(true);\n const safePromise = useSafePromise();\n useEffect(() => {\n setLoading(true);\n safePromise(resolve(metadata, [entity], mapKey))\n .then((markers) => {\n setMarkers(markers.filter(filterWrongLat));\n })\n .catch(() => {\n setMarkers([]);\n })\n .finally(() => {\n setLoading(false);\n });\n }, [entity, metadata, mapKey, safePromise]);\n\n return {markers, loading};\n};\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles(() => ({\n root: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column'\n },\n fullHeight: {\n height: '100%'\n },\n fullscreenBtn: {\n position: 'absolute',\n right: '5px',\n top: '5px',\n zIndex: 100\n }\n}));\n\nexport default useStyles;\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles((theme) => ({\n caption: {\n color: theme.palette.text.secondary,\n fontSize: '13px'\n }\n}));\n\nexport default useStyles;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport Typography from '@mui/material/Typography';\nimport useStyles from './styles';\n\ntype ImageLineCaptionProps = {\n totalImages: number;\n};\n\nexport const ImageLineCaption = ({totalImages}: ImageLineCaptionProps) => {\n const styles = useStyles();\n const photoWord = totalImages > 1 ? i18n.text('photos') : i18n.text('photo');\n return (\n <Typography variant=\"caption\" className={styles.caption}>\n {`${totalImages} ${photoWord}`}\n </Typography>\n );\n};\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {pipe, pathOr} from 'ramda';\nimport {EditableImageAttributesLine} from '@reltio/components';\nimport {\n AttributeType,\n Entity,\n Paging,\n AttributeItem,\n ImageAttributeViewConfig,\n RequestNextPageOfAttributeValuesPayload\n} from '@reltio/mdm-sdk';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {IMAGE_SIZE} from '../ImageAttributeView';\nimport {ImageLineCaption} from '../ImageLineCaption/ImageLineCaption';\n\ntype ImageAttributeViewEditableContentProps = {\n config: ImageAttributeViewConfig;\n attributeType: AttributeType;\n paging?: Paging;\n requestNextPageOfAttributeValues?: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n};\n\nexport const ImageAttributeViewEditableContent = ({\n config,\n attributeType,\n paging,\n requestNextPageOfAttributeValues\n}: ImageAttributeViewEditableContentProps) => {\n const dispatch = useDispatch();\n const entity = useSelector(mdmModule.selectors.getEntity);\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entity.uri) || ({} as Entity)\n );\n const modifiedEntityValues = pathOr([], ['attributes', attributeType.name], modifiedEntity);\n const viewId = config.id;\n\n const onChangeAttribute = (params: AttributeItem) =>\n pipe(profile.actions.modifyAttribute, dispatch)({...params, viewId});\n\n const onDeleteAttribute = (params: AttributeItem) =>\n pipe(profile.actions.removeAttribute, dispatch)({...params, viewId});\n\n return (\n <>\n <EditableImageAttributesLine\n attributeValues={modifiedEntityValues}\n attributeType={attributeType}\n onDeleteAttribute={onDeleteAttribute}\n parentUri={modifiedEntity.uri}\n onChangeAttribute={onChangeAttribute}\n imageSize={IMAGE_SIZE}\n paging={paging}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n />\n <ImageLineCaption totalImages={modifiedEntityValues.length} />\n </>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: '8px 16px'\n },\n noData: {\n fontSize: '13px',\n color: theme.palette.text.secondary\n }\n}));\n\nexport default useStyles;\n","import React, {useCallback} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {pathOr, path} from 'ramda';\nimport i18n from 'ui-i18n';\nimport Typography from '@mui/material/Typography';\nimport {BasicView, DescriptionIcon, FacetViewHeader, ImageAttributesLine} from '@reltio/components';\nimport {\n findAttributeTypeByUri,\n isEditableMode,\n ImageAttributeViewConfig,\n RequestNextPageOfAttributeValuesPayload\n} from '@reltio/mdm-sdk';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {ImageAttributeViewEditableContent} from './ImageAttributeViewEditableContent/ImageAttributeViewEditableContent';\nimport {ImageLineCaption} from './ImageLineCaption/ImageLineCaption';\nimport useStyles from './styles';\n\ntype ImageAttributeViewProps = {\n config: ImageAttributeViewConfig;\n className?: string;\n};\n\nexport const IMAGE_SIZE = {\n imageMargin: 4,\n imageWidth: 162,\n imageHeight: 162\n};\n\nexport const ImageAttributeView = ({config, className}: ImageAttributeViewProps) => {\n const {attributeUri} = config;\n const styles = useStyles();\n const dispatch = useDispatch();\n\n const mode = useSelector(mdmModule.selectors.getMode);\n const entity = useSelector(mdmModule.selectors.getEntityWithDiff);\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n\n const attributeType = attributeUri ? findAttributeTypeByUri(metadata, attributeUri) : null;\n const noDataText = config['text-empty'] || i18n.text('No data found');\n\n const requestNextPageOfAttributeValues = useCallback(\n (payload: RequestNextPageOfAttributeValuesPayload) =>\n dispatch(profile.actions.requestNextPageOfAttributeValues(payload)),\n [dispatch]\n );\n\n const renderContent = () => {\n if (attributeType) {\n const entityValues = pathOr([], ['attributes', attributeType.name], entity);\n const paging = path(['attributes', 'paging', attributeUri], entity);\n const totalValues = entityValues.length;\n\n if (isEditableMode(mode)) {\n const props = {\n attributeType,\n config,\n paging,\n requestNextPageOfAttributeValues\n };\n return <ImageAttributeViewEditableContent {...props} />;\n }\n\n if (totalValues > 0) {\n const props = {\n attributeValues: entityValues,\n attributeType,\n imageSize: IMAGE_SIZE,\n paging,\n parentUri: entity.uri,\n requestNextPageOfAttributeValues\n };\n return (\n <>\n <ImageAttributesLine {...props} />\n <ImageLineCaption totalImages={totalValues} />\n </>\n );\n }\n }\n\n return <Typography className={styles.noData}>{noDataText}</Typography>;\n };\n\n return (\n <BasicView className={className}>\n <FacetViewHeader title={config.caption}>\n <DescriptionIcon description={attributeType?.description} />\n </FacetViewHeader>\n <div className={styles.container}>{renderContent()}</div>\n </BasicView>\n );\n};\n","import {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {getActionPermissionForMatch, Match, ProfilePotentialMatchesViewConfig} from '@reltio/mdm-sdk';\nimport React, {useCallback, useContext, useMemo} from 'react';\nimport {ActionButtonMode, MergeButton, NotMatchButton, ViewIdContext} from '@reltio/components';\n\ntype Props = {\n config: ProfilePotentialMatchesViewConfig;\n match: Match;\n onStartRequest: () => void;\n onFinishRequest: () => void;\n};\nexport const ActionButtons = ({config, match, onStartRequest, onFinishRequest}: Props) => {\n const dispatch = useDispatch();\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const entity = useSelector(mdmModule.selectors.getEntity);\n const {canMerge, canMark} = getActionPermissionForMatch(metadata, config, match.object, entity, match.matchRules);\n const entities = useMemo(() => {\n return [match.object];\n }, [match.object]);\n\n const actionButtonProps = {\n entity,\n entities,\n mode: ActionButtonMode.iconButton,\n onStartRequest\n };\n const viewId = useContext(ViewIdContext);\n const onMergeFinish = useCallback(() => {\n onFinishRequest();\n dispatch(profile.entity.actions.loadEntity({viewId, uri: entity.uri}));\n }, [dispatch, entity.uri, onFinishRequest, viewId]);\n return (\n <>\n {canMerge && <MergeButton {...actionButtonProps} onFinishRequest={onMergeFinish} />}\n {canMark && <NotMatchButton {...actionButtonProps} onFinishRequest={onFinishRequest} />}\n </>\n );\n};\n","import {\n COMMENTS_CONTAINER_VISIBILITY_AREA,\n CommentsContainer,\n ProfileMatchCard,\n useMatchesLoader\n} from '@reltio/components';\nimport {\n CollaborationObjectTypes,\n createObjectIdForPM,\n createRelatedObjectUris,\n Match,\n ProfilePotentialMatchesViewConfig\n} from '@reltio/mdm-sdk';\nimport {ActionButtons} from './ActionButtons';\nimport React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\n\ntype Props = Pick<ReturnType<typeof useMatchesLoader>, 'entitiesMap'> & {\n config: ProfilePotentialMatchesViewConfig;\n match: Match;\n onFinishRequest: () => void;\n onStartRequest: () => void;\n};\n\nexport const MatchCard = ({config, entitiesMap, match, onFinishRequest, onStartRequest}: Props) => {\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const entity = useSelector(mdmModule.selectors.getEntity);\n return (\n <ProfileMatchCard\n match={match}\n entity={entity}\n entitiesMap={entitiesMap}\n metadata={metadata}\n className={COMMENTS_CONTAINER_VISIBILITY_AREA}\n >\n <CommentsContainer\n uri={createObjectIdForPM(entity.uri, match.object.uri)}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.POTENTIAL_MATCH, {\n entityUri: entity.uri,\n matchEntityUri: match.object.uri\n })}\n objectType={CollaborationObjectTypes.POTENTIAL_MATCH}\n />\n <ActionButtons\n match={match}\n config={config}\n onStartRequest={onStartRequest}\n onFinishRequest={onFinishRequest}\n />\n </ProfileMatchCard>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n flexDirection: 'column',\n minHeight: '52px'\n },\n matchesContainer: {\n position: 'relative'\n },\n footer: {\n display: 'flex',\n alignItems: 'end',\n flexGrow: 1,\n justifyContent: 'flex-start',\n borderTop: '1px solid rgba(0,0,0, 0.12)',\n padding: '8px 16px',\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: '0',\n lineHeight: '15px'\n },\n noData: {\n paddingLeft: '16px',\n paddingBottom: '16px',\n fontSize: '13px',\n color: 'rgba(0,0,0,0.54)'\n }\n}));\n","import React, {useCallback, useContext, useEffect, useMemo, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {isEmpty, map} from 'ramda';\nimport Link from '@mui/material/Link';\nimport Typography from '@mui/material/Typography';\nimport {\n BasicView,\n CollaborationContext,\n EntitiesMapContext,\n FacetViewHeader,\n LinearLoadIndicator,\n useMatchesLoader,\n ViewIdContext\n} from '@reltio/components';\nimport mdmModule, {ui as mdmModuleUi} from '@reltio/mdm-module';\nimport {\n getEntityUriForLink,\n getEntityUriFromMatchObject,\n getPotentialMatchesObjectIdsForCollaboration,\n Order,\n ProfilePotentialMatchesViewConfig\n} from '@reltio/mdm-sdk';\nimport {MatchCard} from './MatchCard';\nimport {useStyles} from './styles';\n\ntype Props = {\n config: ProfilePotentialMatchesViewConfig;\n className?: string;\n};\n\nexport const DEFAULT_MATCHES_LIMIT = 3;\nexport const DEFAULT_OPTIONS = {\n showTransitiveMatches: true,\n showInactiveEntities: false\n};\nexport const DEFAULT_SORTING = {order: Order.asc, field: 'score'};\nenum ComponentStates {\n Loading,\n NoData,\n Loaded\n}\nexport const ProfilePotentialMatchesView = ({config, className}: Props) => {\n const styles = useStyles();\n const entity = useSelector(mdmModule.selectors.getEntity);\n const entityUri = getEntityUriForLink(entity);\n\n const [isLoading, setIsLoading] = useState(false);\n const turnOnDisableSpinner = useCallback(() => {\n setIsLoading(true);\n }, []);\n const turnOffDisableSpinner = useCallback(() => {\n setIsLoading(false);\n }, []);\n\n const {matches, entitiesMap, loadMatches} = useMatchesLoader({\n enabled: !!entityUri,\n entity,\n options: DEFAULT_OPTIONS,\n filter: '',\n page: 0,\n sorting: DEFAULT_SORTING,\n rowsPerPage: DEFAULT_MATCHES_LIMIT,\n onStartLoading: turnOnDisableSpinner,\n onFinishLoading: turnOffDisableSpinner\n });\n const onFinishMatchAction = useCallback(() => {\n loadMatches();\n }, [loadMatches]);\n\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n const openPotentialMatchPerspective = useCallback(() => {\n dispatch(mdmModuleUi.actions.openPerspective({perspectiveId: 'potentialMatches', viewId}));\n }, [dispatch, viewId]);\n\n const objectIds = useMemo(\n () => getPotentialMatchesObjectIdsForCollaboration(entityUri, map(getEntityUriFromMatchObject, matches)),\n [entityUri, matches]\n );\n\n const {getCommentsCount} = useContext(CollaborationContext);\n useEffect(() => {\n getCommentsCount(objectIds);\n }, [getCommentsCount, objectIds]);\n\n const showSeeAll = !isEmpty(matches);\n const getComponentState = () => {\n if (isLoading) {\n return ComponentStates.Loading;\n }\n if (isEmpty(matches)) {\n return ComponentStates.NoData;\n }\n return ComponentStates.Loaded;\n };\n const state = getComponentState();\n return (\n <EntitiesMapContext.Provider value={entitiesMap}>\n <BasicView className={classnames(styles.root, className)}>\n <FacetViewHeader title={config.caption} />\n <div className={styles.matchesContainer}>\n {state === ComponentStates.Loading && <LinearLoadIndicator />}\n {state === ComponentStates.NoData && (\n <Typography className={styles.noData}>{i18n.text('No matches found')}</Typography>\n )}\n {state === ComponentStates.Loaded &&\n matches.map((match) => (\n <MatchCard\n config={config}\n entitiesMap={entitiesMap}\n match={match}\n onFinishRequest={onFinishMatchAction}\n onStartRequest={turnOnDisableSpinner}\n key={match.object.uri}\n />\n ))}\n </div>\n {showSeeAll && (\n <>\n <div className={styles.footer}>\n <Link\n component=\"button\"\n variant=\"caption\"\n onClick={openPotentialMatchPerspective}\n underline=\"none\"\n >\n {i18n.text('See all')}\n </Link>\n </div>\n </>\n )}\n </BasicView>\n </EntitiesMapContext.Provider>\n );\n};\n","import React, {lazy} from 'react';\nimport {\n ProfileViewConfig,\n ProfileViewTypes,\n AttributeViewConfig,\n EntityMapViewConfig,\n ProfilePotentialMatchesViewConfig,\n RelationsViewConfig,\n ImageAttributeViewConfig,\n SingleAttributeViewConfig,\n HierarchyPathsViewConfig,\n HierarchyTreeViewConfig,\n CustomActionViewConfig\n} from '@reltio/mdm-sdk';\nimport {pipe} from 'ramda';\nimport {withDragHandle} from '@reltio/components';\nimport {ProfileAttributesView} from '../ProfileAttributesView/ProfileAttributesView';\nimport {ProfileSingleAttributeView} from '../ProfileSingleAttributeView/ProfileSingleAttributeView';\nimport {ProfileRelationsView} from '../ProfileRelationsView/ProfileRelationsView';\nimport {ProfileTableAttributeView} from '../ProfileTableAttributeView/ProfileTableAttributeView';\nimport {HierarchyPathsView} from '../HierarchyPathsView';\nimport {CustomView} from '../Sandbox/CustomView';\nimport withErrorBoundary from './HOCs/withErrorBoundary';\nimport {StubView} from './StubView';\nimport EntityMapView from '../EntityMapView/EntityMapView';\nimport {ImageAttributeView} from '../ImageAttributeView/ImageAttributeView';\nimport {ProfilePotentialMatchesView} from '../ProfilePotentialMatchesView/ProfilePotentialMatchesView';\n\nconst wrapView = <P extends unknown>(component: P): P => pipe(withErrorBoundary, withDragHandle)(component);\n\nconst WrappedStubView = wrapView(StubView);\nexport const WrappedProfileAttributesView = wrapView(ProfileAttributesView);\nexport const WrappedProfileSingleAttributeView = wrapView(ProfileSingleAttributeView);\nexport const WrappedProfileTableAttributeView = wrapView(ProfileTableAttributeView);\nexport const WrappedProfileRelationsView = wrapView(ProfileRelationsView);\nexport const WrappedCustomView = wrapView(CustomView);\nexport const WrappedHierarchyPathView = wrapView(HierarchyPathsView);\nexport const WrappedProfilePotentialMatchesView = wrapView(ProfilePotentialMatchesView);\n\nexport const WrappedHierarchyTreeView = lazy(() =>\n import(/* webpackMode: \"eager\" */ '@reltio/hierarchy-tree').then((importedModule) => ({\n default: wrapView(importedModule.HierarchyTreeView)\n }))\n);\n\nexport const WrappedRelationshipsTableView = lazy(() =>\n import(/* webpackMode: \"eager\" */ '@reltio/relations-table').then((importedModule) => ({\n default: wrapView(importedModule.RelationshipsTableView)\n }))\n);\nexport const WrappedEntityMapView = wrapView(EntityMapView);\nexport const WrappedImageAttributeView = wrapView(ImageAttributeView);\n\nexport type ViewComponentProps = {\n config:\n | ProfileViewConfig\n | AttributeViewConfig\n | SingleAttributeViewConfig\n | RelationsViewConfig\n | EntityMapViewConfig\n | ImageAttributeViewConfig;\n className?: string;\n isFullscreen: boolean;\n isAutosize?: boolean;\n onToggleFullscreen: (id: string) => void;\n};\n\nclass ViewsFactory {\n static ViewTypes = ProfileViewTypes;\n static getComponentBy = (\n propName: string,\n {config, className, isFullscreen, onToggleFullscreen}: ViewComponentProps\n ) => {\n switch (config[propName]) {\n case ViewsFactory.ViewTypes.HierarchyTree:\n return <WrappedHierarchyTreeView config={config as HierarchyTreeViewConfig} className={className} />;\n case ViewsFactory.ViewTypes.HierarchyPaths:\n return <WrappedHierarchyPathView config={config as HierarchyPathsViewConfig} className={className} />;\n case ViewsFactory.ViewTypes.RelationsTable:\n return <WrappedRelationshipsTableView config={config as RelationsViewConfig} className={className} />;\n case ViewsFactory.ViewTypes.Relations:\n return <WrappedProfileRelationsView config={config as RelationsViewConfig} className={className} />;\n case ViewsFactory.ViewTypes.Attributes:\n return <WrappedProfileAttributesView className={className} config={config as AttributeViewConfig} />;\n case ViewsFactory.ViewTypes.SingleAttribute:\n return (\n <WrappedProfileSingleAttributeView\n config={config as SingleAttributeViewConfig}\n className={className}\n />\n );\n case ViewsFactory.ViewTypes.AttributeTable:\n return (\n <WrappedProfileTableAttributeView\n config={config as SingleAttributeViewConfig}\n className={className}\n />\n );\n case ViewsFactory.ViewTypes.Map:\n return (\n <WrappedEntityMapView\n config={config as EntityMapViewConfig}\n isFullscreen={isFullscreen}\n onToggleFullscreen={onToggleFullscreen}\n className={className}\n />\n );\n case ViewsFactory.ViewTypes.Custom:\n return <WrappedCustomView config={config as CustomActionViewConfig} className={className} />;\n case ViewsFactory.ViewTypes.ImageAttribute:\n return <WrappedImageAttributeView config={config as ImageAttributeViewConfig} className={className} />;\n case ViewsFactory.ViewTypes.PotentialMatches:\n return (\n <WrappedProfilePotentialMatchesView\n config={config as ProfilePotentialMatchesViewConfig}\n className={className}\n />\n );\n }\n };\n static getComponent = (props: ViewComponentProps) => {\n return (\n ViewsFactory.getComponentBy('class', props) ||\n ViewsFactory.getComponentBy('react-class', props) || <WrappedStubView className={props.className} />\n );\n };\n}\n\nexport default ViewsFactory;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {BasicView} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n};\n\nconst StubView = ({className}: Props) => {\n const styles = useStyles();\n return (\n <BasicView className={classnames(styles.stubView, 'viewDraggableHandle', className)}>NOT IMPLEMENTED</BasicView>\n );\n};\n\nexport {StubView};\n","import React from 'react';\nimport {SingleAttributeViewConfig} from '@reltio/mdm-sdk';\nimport {SingleAttributeContext} from './contexts/SingleAttributeContext';\nimport {SingleAttributeView} from './components/SingleAttributeView/SingleAttributeView';\nimport {useSingleAttribute} from './hooks/useSingleAttribute';\n\ntype Props = {\n config: SingleAttributeViewConfig;\n className?: string;\n};\n\nexport const ProfileSingleAttributeView = ({className, config}: Props) => {\n const singleAttribute = useSingleAttribute(config);\n\n return (\n <SingleAttributeContext.Provider value={singleAttribute}>\n <SingleAttributeView config={config} className={className} />\n </SingleAttributeContext.Provider>\n );\n};\n","import {useState, useMemo, useCallback} from 'react';\nimport {SingleAttributeViewConfig} from '@reltio/mdm-sdk';\nimport {useSingleAttributeLoader} from '../../hooks/useSingleAttributeLoader';\n\nexport const useSingleAttribute = (config: SingleAttributeViewConfig) => {\n const [searchQuery, setSearchQuery] = useState('');\n const [page, setPage] = useState(0);\n const [showInactive, setShowInactive] = useState(false);\n const params = useMemo(() => ({page, searchQuery, showInactive}), [page, searchQuery, showInactive]);\n const attribute = useSingleAttributeLoader(config, params);\n const toggleShowInactive = useCallback(() => {\n setPage(0);\n setShowInactive((showInactive) => !showInactive);\n }, []);\n\n return {\n setSearchQuery,\n searchQuery,\n setPage,\n page,\n toggleShowInactive,\n showInactive,\n ...attribute\n };\n};\n","import React from 'react';\nimport {TableAttributeViewConfig} from '@reltio/mdm-sdk';\nimport {TableAttributeContext} from './contexts/TableAttributeContext';\nimport {useTableAttribute} from './hooks/useTableAttribute';\nimport {TableAttributeView} from './components/TableAttributeView/TableAttributeView';\n\ntype Props = {\n config: TableAttributeViewConfig;\n className?: string;\n};\n\nexport const ProfileTableAttributeView = ({config, className}: Props) => {\n const tableAttribute = useTableAttribute(config);\n\n return (\n <TableAttributeContext.Provider value={tableAttribute}>\n {config && <TableAttributeView config={config} className={className} />}\n </TableAttributeContext.Provider>\n );\n};\n","import {useMemo, useReducer} from 'react';\nimport {reject, isNil, pipe, not, prop} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {\n ComplexAttributeValue,\n findAttributeTypeByUri,\n isComplexAttribute,\n SingleAttributeViewConfig\n} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {useActions} from '@reltio/components';\nimport reducer, {actions} from './reducer';\nimport {getColumnsData} from '../helpers/tableAttributeHelpers';\nimport {useSingleAttributeLoader} from '../../hooks/useSingleAttributeLoader';\nimport {buildMDMFilters} from './helpers';\n\nconst DEFAULT_COUNT_COLUMN = 5;\n\nexport const useTableAttribute = (config: SingleAttributeViewConfig) => {\n const {attributeUri} = config;\n const metadata = useSelector(mdm.selectors.getMetadata);\n const attributeType = useMemo(() => findAttributeTypeByUri(metadata, attributeUri), [metadata, attributeUri]);\n const allColumnsData = useMemo(\n () => (attributeType ? getColumnsData(metadata, attributeType) : []),\n [metadata, attributeType]\n );\n const initialState = useMemo(\n () => ({\n searchQuery: '',\n filters: null,\n sorting: undefined,\n visibleColumns: allColumnsData\n .filter(pipe(prop('dataTypeDefinition'), isComplexAttribute, not))\n .map(({id}) => id)\n .slice(0, DEFAULT_COUNT_COLUMN),\n page: 0\n }),\n [allColumnsData]\n );\n\n const [state, dispatch] = useReducer(reducer, initialState);\n\n const {searchQuery, filters, sorting, page} = state;\n const isEditableMode = useSelector(mdm.selectors.getIsEditableMode);\n\n const requestFilters = useMemo(() => {\n const mdmFilters = buildMDMFilters(allColumnsData, filters);\n return mdmFilters.length ? mdmFilters : null;\n }, [filters, allColumnsData]);\n\n const params = useMemo(\n () => reject(isNil, {filters: requestFilters, page, sorting, searchQuery}),\n [requestFilters, page, sorting, searchQuery]\n );\n const {changeSearchQuery, changePage, toggleSort, changeFilter, toggleFilters, changeColumns} = useActions({\n actions,\n dispatch\n });\n const attribute = useSingleAttributeLoader<ComplexAttributeValue>(config, params);\n const showTable = Boolean(\n (attribute?.values?.length || requestFilters || searchQuery || isEditableMode) &&\n attributeType &&\n !attributeType.hidden\n );\n return {\n ...state,\n setSearchQuery: changeSearchQuery,\n setPage: changePage,\n onSort: toggleSort,\n onFilter: changeFilter,\n onToggleFilters: toggleFilters,\n onChangeColumns: changeColumns,\n showTable,\n allColumnsData,\n ...attribute\n };\n};\n","import {propEq} from 'ramda';\nimport {Maybe} from '@reltio/mdm-sdk';\nimport {ColumnData, ColumnFilter, columnFilterToMdmFilter} from '@reltio/components';\n\nexport const buildMDMFilters = (columnsData: ColumnData[], filters: Record<string, ColumnFilter>) =>\n Maybe.fromNull<Record<string, ColumnFilter>>(filters)\n .map<ReturnType<typeof columnFilterToMdmFilter>[]>((filters) =>\n Object.entries(filters).map(([columnId, columnFilter]) => {\n const columnData = columnsData.find(propEq('id', columnId));\n return columnFilterToMdmFilter(columnData, columnFilter);\n })\n )\n .orSome([]);\n","import React, {useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {RelationsViewConfig, parseRelationsConfig, Metadata} from '@reltio/mdm-sdk';\nimport RelationsView from './components/RelationsView';\nimport {RelationsViewStateContext} from './contexts/RelationsViewStateContext';\nimport useRelationsState from './hooks/useRelationsState';\n\ntype Props = {\n config: RelationsViewConfig;\n onResize?: (width: number, height: number) => void;\n className?: string;\n};\n\nexport const ProfileRelationsView = ({config, className}: Props) => {\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const parsedConfig = useMemo(() => parseRelationsConfig(metadata, config), [metadata, config]);\n const relationsState = useRelationsState(parsedConfig);\n return (\n <RelationsViewStateContext.Provider value={relationsState}>\n <RelationsView config={parsedConfig} className={className} />\n </RelationsViewStateContext.Provider>\n );\n};\n","import React, {useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport mdm from '@reltio/mdm-module';\nimport FullscreenIcon from '@mui/icons-material/Fullscreen';\nimport FullscreenExitIcon from '@mui/icons-material/FullscreenExit';\nimport {BasicView, LinearLoadIndicator, ReltioMap} from '@reltio/components';\nimport {SmallIconButton} from '@reltio/components';\n\nimport {AttributeViewConfig} from '@reltio/mdm-sdk';\nimport {useMarkers} from './useMarkers';\nimport useStyles from './styles';\n\ntype EntityMapViewProps = {\n config: AttributeViewConfig;\n className?: string;\n isFullscreen: boolean;\n onToggleFullscreen: (id: string) => void;\n};\n\nexport const EntityMapView = ({config, isFullscreen, onToggleFullscreen, className}: EntityMapViewProps) => {\n const styles = useStyles();\n const metadata = useSelector(mdm.selectors.getMetadata);\n const entity = useSelector(mdm.selectors.getEntity);\n const mapKey = useSelector(mdm.selectors.getGoogleMapKey);\n const {markers, loading} = useMarkers(entity, metadata, mapKey);\n const loadingElement = useMemo(\n () => (\n <div className={styles.fullHeight}>\n <LinearLoadIndicator />\n </div>\n ),\n [styles]\n );\n\n const defaultCenter = useMemo(() => ({lat: 0, lng: 0}), []);\n const mapOptions = useMemo(() => ({mapTypeControl: true}), []);\n\n return (\n mapKey && (\n <BasicView className={classnames(styles.root, className)}>\n {loading && <LinearLoadIndicator />}\n <SmallIconButton\n size=\"S\"\n icon={isFullscreen ? FullscreenExitIcon : FullscreenIcon}\n onClick={() => onToggleFullscreen(config.id)}\n className={styles.fullscreenBtn}\n />\n\n <ReltioMap\n loadingElement={loadingElement}\n defaultZoom={1}\n defaultCenter={defaultCenter}\n markers={markers}\n mapContainerClassName={styles.fullHeight}\n mapKey={mapKey}\n mapOptions={mapOptions}\n />\n </BasicView>\n )\n );\n};\n\nexport default EntityMapView;\n","import React, {memo, Suspense} from 'react';\nimport classnames from 'classnames';\nimport ViewsFactory, {ViewComponentProps} from './ViewsFactory';\nimport {useStyles} from './styles';\n\nconst Fallback = () => null;\n\nconst ViewComponent = memo(({config, isFullscreen, isAutosize, onToggleFullscreen}: ViewComponentProps) => {\n const styles = useStyles();\n return (\n <Suspense fallback={<Fallback />}>\n {ViewsFactory.getComponent({\n config,\n className: classnames(styles.component, {[styles.fullHeight]: !isAutosize}),\n isFullscreen,\n onToggleFullscreen\n })}\n </Suspense>\n );\n});\n\nViewComponent.displayName = 'ViewComponent';\n\nexport {ViewComponent};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n item: theme.basicView,\n fixedSizeContainer: {\n height: '100%'\n },\n overflowContainer: {\n width: '100%',\n height: '100%',\n overflow: 'hidden'\n }\n}));\n","import React, {ReactChildren, ReactNode} from 'react';\nimport {omit} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {ReactGridLayoutItem} from '@reltio/components';\nimport {CustomScript, CustomScriptPlatform, ProfileViewConfig, ProfileViewTypes} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {ViewComponent} from '../views/ViewComponent';\nimport ViewsFactory from '../views/ViewsFactory';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n layoutItemConfig: ReactGridLayoutItem;\n views: ProfileViewConfig[];\n className?: string;\n children?: ReactChildren;\n style?: Record<string, unknown>;\n isFullscreen: boolean;\n onToggleFullscreen: (id: string) => void;\n AutosizeComponent?: ReactNode;\n};\n\nconst omittingProps = ['onConfigChanged', 'onRemove'];\n\nconst getViewTypeByClass = (className: string) =>\n Object.entries(ProfileViewTypes).find(([_, value]) => className === value)?.[0];\n\nconst ProfileLayoutItem = ({\n layoutItemConfig,\n views,\n className,\n children: ResizeComponent,\n style,\n isFullscreen,\n onToggleFullscreen,\n AutosizeComponent,\n ...props\n}: Props) => {\n const config = views.find(({id}) => layoutItemConfig.i === id);\n const styles = useStyles();\n const mapKey = useSelector(mdm.selectors.getGoogleMapKey);\n\n if (!config) {\n return null;\n }\n const isCustomView = config.class === ViewsFactory.ViewTypes.Custom;\n if (isCustomView && (config?.action as CustomScript)?.platform === CustomScriptPlatform.CLASSIC) {\n return null;\n }\n\n const isMapView = config.class === ViewsFactory.ViewTypes.Map;\n if (isMapView && !mapKey) {\n return null;\n }\n\n const reltioClass = getViewTypeByClass(config.class);\n return (\n <div\n {...omit(omittingProps, props)}\n data-reltio-id={config.id}\n data-reltio-class={reltioClass || ''}\n style={style}\n className={classnames(className, {\n [styles.item]: !isCustomView,\n customView: isCustomView\n })}\n >\n <div className={styles.overflowContainer}>\n <div\n data-reltio-id=\"profile-view-container\"\n className={classnames({[styles.fixedSizeContainer]: !AutosizeComponent})}\n >\n {AutosizeComponent}\n <ViewComponent\n config={config}\n isFullscreen={isFullscreen}\n onToggleFullscreen={onToggleFullscreen}\n isAutosize={Boolean(AutosizeComponent)}\n />\n </div>\n {ResizeComponent}\n </div>\n </div>\n );\n};\n\nexport {ProfileLayoutItem};\n","import {makeStyles} from '@mui/styles';\n\nconst DEFAULT_MIN_WIDTH = 1024;\n\ntype Props = {\n maxWidth?: number;\n minWidth?: number;\n scrollbarWidth?: number;\n};\n\nexport const useStyles = makeStyles({\n scrollWrapper: {\n flexGrow: 1,\n overflow: 'auto'\n },\n scrollableContent: ({maxWidth, minWidth = DEFAULT_MIN_WIDTH, scrollbarWidth}: Props) => ({\n minWidth: maxWidth && maxWidth < minWidth ? maxWidth - scrollbarWidth : minWidth,\n height: '100%'\n })\n});\n","import React, {useEffect, useMemo, useRef} from 'react';\nimport {PopupBoundariesContext, ReltioGridLayout} from '@reltio/components';\nimport {ProfileViewConfig} from '@reltio/mdm-sdk';\nimport {ProfileLayoutItem} from '../ProfileLayoutItem';\nimport {Layout} from '../../types';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n views: ProfileViewConfig[];\n layout?: Layout;\n frozen?: boolean;\n entityUri?: string;\n maxWidth?: number;\n minWidth?: number;\n onLayoutChanged: (layout: Layout) => void;\n};\n\nconst calcScrollbarWidth = (element: HTMLDivElement) => (element ? element.offsetWidth - element.clientWidth : 0);\n\nconst ProfileLayout = ({views, layout, frozen, entityUri, maxWidth, minWidth, onLayoutChanged}: Props) => {\n const scrollWrapperRef = useRef<HTMLDivElement>();\n const scrollbarWidth = calcScrollbarWidth(scrollWrapperRef.current);\n const boundariesElement = scrollWrapperRef.current;\n\n const styles = useStyles({maxWidth, minWidth, scrollbarWidth});\n\n const popupBoundariesValue = useMemo(\n () => ({element: boundariesElement, priority: ['left', 'right', 'top', 'bottom']}),\n [boundariesElement]\n );\n\n useEffect(() => {\n if (scrollWrapperRef.current) {\n scrollWrapperRef.current.scrollTop = 0;\n }\n }, [entityUri]);\n\n return (\n <div ref={scrollWrapperRef} className={styles.scrollWrapper}>\n <div className={styles.scrollableContent} data-reltio-id=\"reltio-profile-grid\">\n <PopupBoundariesContext.Provider value={popupBoundariesValue}>\n <ReltioGridLayout\n LayoutItem={ProfileLayoutItem}\n views={views}\n layout={layout}\n onLayoutChanged={onLayoutChanged}\n draggableHandle=\".viewDraggableHandle\"\n isStatic={frozen}\n />\n </PopupBoundariesContext.Provider>\n </div>\n </div>\n );\n};\n\nexport {ProfileLayout};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n closeIcon: {\n paddingRight: '12px',\n boxSizing: 'content-box',\n '& path': {\n fill: '#fff'\n }\n },\n snackbar: {\n '& > div': {\n flexWrap: 'nowrap',\n alignItems: 'baseline'\n }\n }\n}));\n","import Snackbar from '@mui/material/Snackbar';\nimport Portal from '@mui/material/Portal';\nimport React, {useCallback, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport Button from '@mui/material/Button';\nimport CloseIcon from '@mui/icons-material/Close';\nimport {ConfirmationDialog, SmallIconButton} from '@reltio/components';\nimport {NotificationItem, Action} from './types';\nimport {useStyles} from './styles';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {ui as mdmModuleUi} from '@reltio/mdm-module';\n\ntype Props = {\n notification: NotificationItem;\n};\n\nconst AUTO_HIDE_DURATION = 5000;\n\nexport const Notification = ({notification}: Props) => {\n const styles = useStyles({});\n const dispatch = useDispatch();\n const autoCloseInterval: number = useSelector(mdmModule.selectors.getAutoCloseInterval);\n const autoHideDuration =\n notification.autoHideDuration || (autoCloseInterval && autoCloseInterval * 1000) || AUTO_HIDE_DURATION;\n const [action, setAction] = useState<Action>();\n const [show, setShow] = useState(true);\n const closeSnackbar = useCallback(\n (_e?: unknown, reason?: string) => {\n if (reason !== 'clickaway') {\n dispatch(mdmModuleUi.actions.closeNotification(notification.id));\n setShow(false);\n }\n },\n [notification]\n );\n const onDiscard = useCallback(() => {\n action.cancelAction && dispatch(action.cancelAction);\n setAction(undefined);\n }, [action]);\n const onConfirm = useCallback(() => {\n dispatch(action.applyAction);\n setAction(undefined);\n dispatch(mdmModuleUi.actions.closeNotification(notification.id));\n }, [action, notification]);\n\n const actions = (\n <>\n {notification.actions.map((action) => (\n <Button\n key={action.label}\n color=\"primary\"\n size=\"small\"\n onClick={() => {\n if (action.needConfirmation) {\n setAction(action);\n } else {\n dispatch(action.applyAction);\n }\n setShow(false);\n }}\n >\n {action.label}\n </Button>\n ))}\n </>\n );\n const message = (\n <>\n <SmallIconButton className={styles.closeIcon} size=\"S\" icon={CloseIcon} onClick={closeSnackbar} />\n {notification.text}\n </>\n );\n\n return (\n <>\n <Portal container={document.body}>\n <Snackbar\n autoHideDuration={autoHideDuration}\n open={show}\n classes={{root: styles.snackbar}}\n action={actions}\n onClose={closeSnackbar}\n anchorOrigin={{vertical: 'bottom', horizontal: 'center'}}\n message={message}\n />\n </Portal>\n <ConfirmationDialog\n open={!!action}\n title={action?.confirmationText}\n content={action?.confirmationDescription}\n onSave={onConfirm}\n onDiscard={onDiscard}\n saveCaption={i18n.text('Proceed')}\n discardCaption={i18n.text('Cancel')}\n />\n </>\n );\n};\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {NotificationItem} from './types';\nimport {Notification} from './Notification';\n\nexport const Notifications = () => {\n const notifications: NotificationItem[] = useSelector(mdm.selectors.getNotifications);\n if (!notifications) return null;\n return (\n <>\n {notifications.slice(-1).map((n) => (\n <Notification key={n.id} notification={n} />\n ))}\n </>\n );\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"19\",\n height: \"17\",\n viewBox: \"0 0 19 17\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n}, props), React.createElement(\"defs\", null, React.createElement(\"path\", {\n d: \"M14 17v2H4v-2h10zm6-4v2H4v-2l12.884.001H17l.116-.002L20 13zm-8.457-2H4V9h5.82a8.465 8.465 0 001.723 2zM9.139 6.178l-.289.733.035.088L4 7V5l5.713-.002c-.22.375-.412.768-.574 1.18zM17 2.82a6.451 6.451 0 00-6 4.09 6.451 6.451 0 006 4.092 6.451 6.451 0 006-4.091 6.451 6.451 0 00-6-4.091zm0 6.815a2.728 2.728 0 010-5.455 2.728 2.728 0 010 5.455zm0-4.365c-.905 0-1.636.73-1.636 1.636 0 .906.73 1.637 1.636 1.637.905 0 1.636-.731 1.636-1.637 0-.905-.73-1.636-1.636-1.636z\",\n id: \"svg1467685497a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"g\", {\n transform: \"translate(-4 -2.5)\"\n}, React.createElement(\"mask\", {\n id: \"svg1467685497b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg1467685497a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg1467685497b)\",\n d: \"M0 0h24v24H0z\"\n})))));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n}, props), React.createElement(\"defs\", null, React.createElement(\"path\", {\n d: \"M20.222 6C21.21 6 22 6.8 22 7.778v12.444C22 21.2 21.209 22 20.222 22H7.778C6.79 22 6 21.2 6 20.222V7.778C6 6.8 6.791 6 7.778 6h12.444zM20 8H8v12h12V8zM4 18H2V4c0-1.1.9-2 2-2h14v2H4v14z\",\n id: \"svg2383396984a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"mask\", {\n id: \"svg2383396984b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg2383396984a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg2383396984b)\",\n d: \"M0 0h24v24H0z\"\n}))));","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n editingButtons: {\n display: 'flex',\n '& button + button': {\n minWidth: '88px',\n marginLeft: '8px'\n }\n },\n searchResults: {\n width: '150px',\n height: '25px',\n backgroundColor: '#ccc'\n },\n comments: {\n display: 'flex',\n justifyContent: 'flex-end',\n marginTop: '10px'\n },\n menuButton: {\n marginLeft: 8\n },\n cancelButton: {\n border: '1px solid rgba(0, 0, 0, 0.23)'\n }\n});\n","import React, {useCallback, useMemo, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {useSelector, useDispatch} from 'react-redux';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport SvgIcon from '@mui/material/SvgIcon';\nimport VisibilityIcon from '@mui/icons-material/Visibility';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport CreateIcon from '@mui/icons-material/Create';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\n\nimport {\n getEntityType,\n Entity,\n checkMetadataPermission,\n isDataTenantEntity,\n isTempUri,\n MetadataPermissions,\n Mode,\n isSuggestMode,\n isEditableMode,\n CollaborationObjectTypes,\n createRelatedObjectUris,\n Operation,\n ProfileBandConfig\n} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {\n ProfileBand,\n ModeSwitcherSelect,\n CommentsContainer,\n COMMENTS_CONTAINER_VISIBILITY_AREA,\n ProfileBandNavigation,\n ProfileBandHistory,\n ConfirmationDialog,\n DropDownMenuButton,\n MultilineMenuItem,\n SmallIconButton\n} from '@reltio/components';\nimport {useCloneAction} from './hooks/useCloneAction';\n\nimport SuggestSvg from './suggest.svg';\nimport CopySvg from './copy.svg';\n\nimport {useStyles} from './styles';\n\ntype MultilineMenuItemProps = React.ComponentProps<typeof MultilineMenuItem>;\ntype Props = {\n className?: string;\n showMenu?: boolean;\n profileBandConfig?: ProfileBandConfig;\n menuItems: MultilineMenuItemProps['item'][];\n};\n\nconst SuggestIcon = (props) => (\n <SvgIcon {...props}>\n <SuggestSvg />\n </SvgIcon>\n);\n\nconst CopyIcon = (props) => (\n <SvgIcon {...props}>\n <CopySvg />\n </SvgIcon>\n);\n\ntype Group = {\n label: string;\n value: string;\n description: string;\n icon: React.ElementType;\n permission: string;\n onClick?: (value: string) => void;\n};\n\nconst filterGroupByPermissions = <T extends Group>(\n group: T[],\n entityType,\n isTempEntity: boolean,\n isWorkflowEnabled?: boolean,\n canStartProcessInstanceSearchQuery?: boolean\n): T[] =>\n group.filter(({value, permission}) => {\n if (isTempEntity && !isEditableMode(value)) return false;\n if ((!isWorkflowEnabled || !canStartProcessInstanceSearchQuery) && isSuggestMode(value)) return false;\n return checkMetadataPermission(permission, entityType);\n });\n\nconst hasOnlyReadPermission = (entityType) => {\n return (\n checkMetadataPermission(MetadataPermissions.READ, entityType) &&\n !checkMetadataPermission(MetadataPermissions.UPDATE, entityType) &&\n !checkMetadataPermission(MetadataPermissions.DELETE, entityType) &&\n !checkMetadataPermission(MetadataPermissions.INITIATE_CHANGE_REQUEST, entityType)\n );\n};\n\nexport const PerspectiveProfileBand = ({className, profileBandConfig, menuItems, showMenu = true}: Props) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n const canStartProcessInstanceSearchQuery = useSelector(mdm.selectors.getCanUserStartProcessFromQuery);\n const entity = useSelector(mdm.selectors.getEntityWithoutDiff) as Entity;\n const modifiedEntity = useSelector((state) => mdm.selectors.getModifiedEntity(state, entity.uri));\n const metadata = useSelector(mdm.selectors.getMetadata);\n const isWorkflowEnabled = useSelector(mdm.selectors.isWorkflowEnabled) as boolean;\n const mode = useSelector(mdm.selectors.getMode) as Mode;\n const isEditableMode = useSelector(mdm.selectors.getIsEditableMode) as boolean;\n const isViewMode = useSelector(mdm.selectors.getIsViewMode) as boolean;\n const isHistoryModeEnabled = useSelector(mdm.selectors.getIsHistoryModeEnabled);\n const profileOperation = useSelector(mdm.selectors.getProfileOperation);\n const entityTypeUri = entity?.type;\n const entityType = useMemo(() => getEntityType(metadata, entityTypeUri), [entityTypeUri, metadata]);\n const isOperationSaving = profileOperation === Operation.Saving;\n const isOperationCloning = profileOperation === Operation.Cloning;\n const isDisabledButtons = isOperationCloning || isOperationSaving;\n const [openCloneConfirmationDialog, setOpenCloneConfirmationDialog] = useState(false);\n const onCloneDiscard = useCallback(() => {\n setOpenCloneConfirmationDialog(false);\n }, []);\n const onClone = useCloneAction({cloneAction: profileBandConfig?.cloneAction, onCloneDiscard});\n const OPTIONS_GROUP = useMemo(\n () => [\n {\n label: i18n.text('Editing'),\n value: Mode.Editing,\n description: i18n.text('Edit profile directly'),\n icon: CreateIcon,\n permission: 'UPDATE'\n },\n {\n label: i18n.text('Suggesting'),\n value: Mode.Suggesting,\n description: i18n.text('Suggest changes and initiate a workflow review'),\n icon: SuggestIcon,\n permission: 'INITIATE_CHANGE_REQUEST'\n },\n {\n label: i18n.text('Viewing'),\n value: Mode.Viewing,\n description: i18n.text('Read or print profile'),\n icon: VisibilityIcon,\n permission: 'READ'\n }\n ],\n []\n );\n\n const BUTTONS_GROUP = useMemo(\n () => [\n ...(onClone\n ? [\n {\n label: i18n.text('Clone'),\n value: 'Clone',\n description: i18n.text('Create a copy of the profile'),\n icon: CopyIcon,\n onClick: () => setOpenCloneConfirmationDialog(true),\n permission: 'CREATE'\n }\n ]\n : []),\n {\n label: i18n.text('Delete'),\n value: 'Delete',\n description: i18n.text('Permanently delete profile'),\n icon: DeleteIcon,\n onClick: () => {\n const conf = window.confirm(i18n.text('Are you sure you want to delete this?'));\n if (conf) {\n dispatch(profile.entity.actions.entityRemoveRequested({entityUri: entity.uri}));\n }\n },\n permission: 'DELETE'\n }\n ],\n [dispatch, entity.uri, onClone]\n );\n\n const shouldShowSelect = !isHistoryModeEnabled && !isDataTenantEntity(entity) && !hasOnlyReadPermission(entityType);\n\n const isTempEntity = isTempUri(entity?.uri);\n\n const accessibleOptionsGroup = useMemo(() => {\n return filterGroupByPermissions(\n OPTIONS_GROUP,\n entityType,\n isTempEntity,\n isWorkflowEnabled,\n canStartProcessInstanceSearchQuery\n );\n }, [OPTIONS_GROUP, entityType, isWorkflowEnabled, canStartProcessInstanceSearchQuery, isTempEntity]);\n const accessibleButtonsGroup = useMemo(() => {\n return filterGroupByPermissions(\n BUTTONS_GROUP,\n entityType,\n isTempEntity,\n isWorkflowEnabled,\n canStartProcessInstanceSearchQuery\n );\n }, [BUTTONS_GROUP, entityType, isWorkflowEnabled, canStartProcessInstanceSearchQuery, isTempEntity]);\n\n const handleChange = useCallback(\n (value: Mode) => {\n dispatch(profile.mode.actions.modeUpdated(value));\n },\n [dispatch]\n );\n\n const onCancel = useCallback(() => {\n dispatch(profile.mode.actions.modeCancelEditing());\n }, [dispatch]);\n\n const handleSave = useCallback(() => {\n dispatch(profile.actions.saveProfile());\n }, [dispatch]);\n\n return (\n <>\n <ProfileBand\n className={classnames(className, COMMENTS_CONTAINER_VISIBILITY_AREA)}\n entity={isEditableMode && modifiedEntity ? modifiedEntity : entity}\n >\n <Box display=\"flex\" alignItems=\"center\">\n <Box mr={3}>\n {isEditableMode && (\n <Box className={styles.editingButtons}>\n <Button\n variant=\"outlined\"\n className={styles.cancelButton}\n onClick={onCancel}\n data-reltio-id=\"reltio-profile-cancel-editing\"\n disabled={isDisabledButtons}\n >\n {i18n.text('Cancel')}\n </Button>\n <Button\n variant=\"contained\"\n color=\"primary\"\n data-reltio-id=\"reltio-profile-save-profile\"\n onClick={handleSave}\n disabled={isDisabledButtons}\n >\n {isSuggestMode(mode) ? i18n.text('Suggest') : i18n.text('Save')}\n </Button>\n </Box>\n )}\n {isHistoryModeEnabled && isViewMode ? (\n <ProfileBandHistory />\n ) : (\n isViewMode && <ProfileBandNavigation />\n )}\n </Box>\n {shouldShowSelect && (\n <ModeSwitcherSelect\n optionsGroup={accessibleOptionsGroup}\n buttonsGroup={accessibleButtonsGroup}\n value={mode}\n onChange={handleChange}\n disabled={isDisabledButtons}\n />\n )}\n {showMenu && (\n <DropDownMenuButton\n menuId=\"profile-header-menu\"\n buttonComponent={SmallIconButton}\n buttonProps={{\n icon: MoreVertIcon,\n size: 'L',\n 'data-reltio-id': 'reltio-profile-header-menu',\n className: styles.menuButton\n }}\n menuItems={menuItems}\n MenuItemRenderer={MultilineMenuItem}\n />\n )}\n </Box>\n <Box className={styles.comments}>\n <CommentsContainer\n uri={entity.uri}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.ENTITY, {\n entityUri: entity.uri\n })}\n objectType={CollaborationObjectTypes.ENTITY}\n />\n </Box>\n </ProfileBand>\n {!!onClone && (\n <ConfirmationDialog\n open={openCloneConfirmationDialog}\n title={i18n.text('Do you want to create a clone of the profile?')}\n content={i18n.text(\n 'Cloning will create a copy of the current profile. You can modify the cloned profile in the next step. Are you sure you want to proceed?'\n )}\n onSave={onClone}\n onDiscard={onCloneDiscard}\n saveCaption={i18n.text('Proceed')}\n discardCaption={i18n.text('Cancel')}\n />\n )}\n </>\n );\n};\n","import {useCallback, useMemo} from 'react';\nimport {\n includes,\n pipe,\n isNil,\n propOr,\n filter,\n map,\n prop,\n cond,\n identity,\n omit,\n find,\n complement,\n when,\n either,\n pick,\n always,\n T\n} from 'ramda';\nimport {\n BaseCloneAction,\n CloneAction,\n Entity,\n getEntityType,\n isReference,\n isRelationWithEntityType,\n getRelationTypeUriFromAttrType\n} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {useDispatch, useSelector} from 'react-redux';\n\ntype Props = {\n cloneAction?: CloneAction[];\n onCloneDiscard: () => void;\n};\n\nexport const useCloneAction = ({cloneAction: cloneActionProp, onCloneDiscard}: Props) => {\n const entity: Entity = useSelector(mdm.selectors.getEntityWithoutDiff);\n const metadata = useSelector(mdm.selectors.getMetadata);\n const dispatch = useDispatch();\n const entityTypeUri = entity?.type;\n const relationTypes = metadata.relationTypes;\n const isRelationSuitableForEntityType = useCallback(isRelationWithEntityType(metadata, entityTypeUri), [\n metadata,\n entityTypeUri\n ]);\n const entityType = getEntityType(metadata, entityTypeUri);\n const cloneAction = useMemo<BaseCloneAction>(\n () =>\n when(\n complement(isNil),\n pipe(\n find(pipe(propOr([], 'entityTypeUris'), either(includes(entityTypeUri), includes('*')))),\n when(complement(isNil), omit(['entityTypeUris']))\n )\n )(cloneActionProp),\n [cloneActionProp, entityTypeUri]\n );\n const onClone = useCallback(() => {\n if (cloneAction) {\n const modifiedRelationTypes: string[] = pipe(\n prop('relationshipTypesToCopy'),\n cond([\n [\n isNil,\n pipe(\n always(entityType),\n propOr([], 'attributes'),\n filter(isReference),\n map(getRelationTypeUriFromAttrType)\n )\n ],\n [\n includes('*'),\n pipe(always(relationTypes || []), map(prop('uri')), filter(isRelationSuitableForEntityType))\n ],\n [T, identity]\n ])\n )(cloneAction);\n dispatch(\n profile.entity.actions.entityCloneRequested({\n data: {\n ...pick(['attributeReplacementMapping'], cloneAction),\n relationshipTypesToCopy: modifiedRelationTypes\n },\n entityUri: entity.uri\n })\n );\n }\n onCloneDiscard();\n }, [cloneAction, onCloneDiscard, entityType, relationTypes, entity.uri, isRelationSuitableForEntityType]);\n return cloneAction ? onClone : undefined;\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n display: 'flex',\n overflow: 'hidden',\n flexShrink: 0,\n marginLeft: '3px',\n height: '100%'\n },\n badge: {\n fontSize: '12px',\n height: '18px',\n minWidth: '18px',\n backgroundColor: '#FF4081',\n color: '#FFF'\n },\n badgePosition: {\n right: '5px'\n }\n});\n","import React, {useEffect} from 'react';\nimport {SidePanelContentHeader, SidePanel, RightPanelTab} from '@reltio/components';\nimport {isNil} from 'ramda';\n\nimport {useStyles} from './styles';\n\nexport enum ActivePanel {\n Workflow,\n Collaboration,\n History,\n DBConnector\n}\n\ntype Props = {\n active?: ActivePanel;\n tabs: Array<RightPanelTab>;\n onClose?: () => void;\n};\n\nexport const RightSidePanel = ({active, tabs, onClose}: Props) => {\n const styles = useStyles();\n const isOpen = !isNil(active);\n const {content, headerProps, hidden} = tabs[active] || {};\n\n useEffect(() => {\n if (hidden) {\n onClose();\n }\n }, [active, hidden, onClose]);\n\n return (\n <div className={styles.wrapper}>\n <SidePanel open={isOpen}>\n {!hidden && (\n <>\n <SidePanelContentHeader {...headerProps} onClose={onClose} />\n {content}\n </>\n )}\n </SidePanel>\n </div>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n display: 'flex',\n flexDirection: 'column'\n },\n itemWrapper: {\n paddingLeft: '19px',\n paddingRight: '19px'\n }\n});\n","import React from 'react';\nimport {CustomActionViewConfig} from '@reltio/mdm-sdk';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {CustomView} from '../../../Sandbox/CustomView';\nimport {useStyles} from './styles';\n\nexport const DBConnectorsList = () => {\n const styles = useStyles();\n const dBConnectorSideViews = useSelector(mdm.selectors.getDBConnectorSideViews) as CustomActionViewConfig[];\n\n return (\n <div className={styles.wrapper}>\n {dBConnectorSideViews.map((sideView) => (\n <CustomView key={sideView.id} config={sideView} className={styles.itemWrapper} />\n ))}\n </div>\n );\n};\n","import React, {useContext, VFC} from 'react';\nimport Badge from '@mui/material/Badge';\nimport {WorkflowTasksContext} from '@reltio/components';\nimport InboxIcon from '@mui/icons-material/Inbox';\nimport {useStyles} from '../../styles';\n\nexport const WorkflowButton: VFC = () => {\n const {total} = useContext(WorkflowTasksContext);\n const styles = useStyles();\n return (\n <Badge\n badgeContent={total}\n classes={{\n anchorOriginTopRightRectangular: styles.badgePosition,\n badge: styles.badge\n }}\n >\n <InboxIcon />\n </Badge>\n );\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"20\",\n height: \"20\",\n viewBox: \"0 0 20 20\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n}, props), React.createElement(\"defs\", null, React.createElement(\"path\", {\n d: \"M4 17.17L5.17 16H20V4H4v13.17zM20 2c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H6l-4 4V4c0-1.1.9-2 2-2h16zm-3 9H7v2h10v-2zm0-4H7v2h10V7z\",\n id: \"svg2697213709a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"g\", null, React.createElement(\"g\", {\n transform: \"translate(-2 -2)\"\n}, React.createElement(\"mask\", {\n id: \"svg2697213709b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg2697213709a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg2697213709b)\",\n d: \"M0 0h24v24H0z\"\n}))))));","import React, {useContext, VFC} from 'react';\nimport Badge from '@mui/material/Badge';\nimport CollaborationIcon from '../../icons/CollaborationIcon.svg';\nimport {CollaborationContext} from '@reltio/components';\nimport {calcTotalCommentItems} from '@reltio/mdm-sdk';\nimport {useStyles} from '../../styles';\n\nexport const CollaborationButton: VFC = () => {\n const {commentsMap} = useContext(CollaborationContext);\n const styles = useStyles();\n return (\n <Badge\n badgeContent={calcTotalCommentItems(commentsMap)}\n classes={{\n anchorOriginTopRightRectangular: styles.badgePosition,\n badge: styles.badge\n }}\n >\n <CollaborationIcon />\n </Badge>\n );\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"path\", {\n d: \"M14.101 16A5.003 5.003 0 0016 18.987V20H2v-4h12.101zM22 18.987V20v-1.013zM4 17v2h2v-2H4zM16 4v1.013A5.004 5.004 0 0014.101 8H2V4h14zm6 0v1.013V4zM6 7V5H4v2h2zm8 3v4H2v-4h12zM4 11v2h2v-2H4zm12 4v-2h6v2c0 1.3-.84 2.4-2 2.82V22h-2v-4.18c-1.16-.42-2-1.52-2-2.82zm0-6c0-1.3.84-2.4 2-2.82V2h2v4.18c1.16.42 2 1.52 2 2.82v2h-6V9z\",\n fill: \"#000\",\n fillOpacity: \".54\"\n})));","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n overflow: 'auto',\n position: 'relative',\n height: '100%'\n }\n});\n","import React, {useContext} from 'react';\nimport {LinearLoadIndicator, WorkflowTaskCard, WorkflowTasksContext} from '@reltio/components';\nimport {useStyles} from './styles';\n\nexport const WorkflowList = () => {\n const styles = useStyles();\n const {tasks, loading} = useContext(WorkflowTasksContext);\n\n return (\n <div className={styles.wrapper}>\n {loading && <LinearLoadIndicator />}\n {tasks &&\n tasks.map((task) => {\n return <WorkflowTaskCard key={task.taskId} task={task} />;\n })}\n </div>\n );\n};\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {SidePanelEmptyState} from '@reltio/components';\n\nconst WorkflowPanelEmptyState = () => (\n <SidePanelEmptyState\n text={i18n.text('Ready to go with the flow?')}\n secondaryText={i18n.text(\n 'Suggest a change or submit a match review, and we’ll kick off a workflow task to get things going.'\n )}\n />\n);\n\nexport default WorkflowPanelEmptyState;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n overflow: 'auto',\n paddingRight: '12px'\n },\n showMoreLink: {\n display: 'flex',\n margin: '16px'\n },\n showMoreIcon: {\n fontSize: '1rem'\n }\n});\n","import React, {useContext, useEffect} from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {CollaborationContext, CollaborationItem, EntitiesMapContext, useCommentsEntitiesMap} from '@reltio/components';\nimport Box from '@mui/material/Box';\nimport Link from '@mui/material/Link';\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\nimport {useStyles} from './styles';\n\nexport const CollaborationList = () => {\n const styles = useStyles();\n const {getComments, comments, pageToken} = useContext(CollaborationContext);\n const entityUri = useSelector(mdm.selectors.getEntityUriWithDataTenant);\n\n useEffect(() => {\n getComments(entityUri);\n }, [getComments, entityUri]);\n\n const handleShowMoreComments = () => {\n getComments(entityUri, pageToken);\n };\n\n const entitiesMap = useCommentsEntitiesMap(comments);\n\n return (\n <EntitiesMapContext.Provider value={entitiesMap}>\n <Box className={styles.wrapper}>\n {comments.map((comment) => {\n const {objectId, relatedObjectUris, objectType, commentId} = comment;\n return (\n <CollaborationItem\n key={commentId}\n uri={objectId}\n relatedObjectUris={relatedObjectUris}\n objectType={objectType}\n comment={comment}\n />\n );\n })}\n {pageToken && (\n <Link\n component=\"button\"\n variant=\"caption\"\n className={styles.showMoreLink}\n onClick={handleShowMoreComments}\n underline=\"none\"\n >\n <KeyboardArrowDownIcon className={styles.showMoreIcon} />\n {i18n.text('Show more')}\n </Link>\n )}\n </Box>\n </EntitiesMapContext.Provider>\n );\n};\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {SidePanelEmptyState} from '@reltio/components';\n\nconst CollaborationPanelEmptyState = () => (\n <SidePanelEmptyState\n text={i18n.text('Care to join the conversation?')}\n secondaryText={i18n.text(\n 'Leave comments for team members anywhere in the Profile page, and we’ll record it here.'\n )}\n />\n);\n\nexport default CollaborationPanelEmptyState;\n","import React, {useContext, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {isTempUri, getEntityType, Metadata, Entity, calcTotalCommentItems, HistoryEvent} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {CollaborationContext, RightPanelTab, WorkflowTasksContext} from '@reltio/components';\nimport {\n AddWorkflowButton,\n HistoryHeader,\n HistoryPanelEmptyState,\n HistoryView,\n useHistory,\n useHistoryEnabled\n} from '@reltio/components';\nimport i18n from 'ui-i18n';\nimport HistoryIcon from '@mui/icons-material/History';\nimport {ActivePanel} from '../../RightSidePanel/RightSidePanel';\nimport {DBConnectorsList} from '../../RightSidePanel/components/DBConnectorsList/DBConnectorsList';\nimport {WorkflowButton} from '../../RightSidePanel/components/WorkflowButton/WorkflowButton';\nimport {CollaborationButton} from '../../RightSidePanel/components/CollaborationButton/CollaborationButton';\nimport ConnectorsIcon from '../../RightSidePanel/icons/ConnectorsIcon.svg';\n\nimport {WorkflowList} from '../../RightSidePanel/components/WorkflowList/WorkflowList';\nimport WorkflowPanelEmptyState from '../../RightSidePanel/components/WorkflowPanelEmptyState/WorkflowPanelEmptyState';\nimport {CollaborationList} from '../../RightSidePanel/components/CollaborationList/CollaborationList';\nimport CollaborationPanelEmptyState from '../../RightSidePanel/components/CollaborationPanelEmptyState/CollaborationPanelEmptyState';\n\nconst getSecondTitle = (total: number): string => {\n if (total) {\n return total === 1 ? i18n.text('${total} item', {total}) : i18n.text('${total} items', {total});\n }\n};\n\ntype Props = {\n perspectiveId: string;\n commentId?: string;\n hideHistory?: boolean;\n};\n\nexport const useProfileRightSidePanelElements = ({\n commentId,\n hideHistory,\n perspectiveId\n}: Props): {tabs: Array<RightPanelTab>; defaultTab?: number} => {\n const isWorkflowSideViewEnabled = useSelector(mdm.selectors.isWorkflowSideViewEnabled) as boolean;\n const isWorkflowEnabled = useSelector(mdm.selectors.isWorkflowEnabled) as boolean;\n const isCollaborationSideViewEnabled = useSelector(mdm.selectors.isCollaborationSideViewEnabled) as boolean;\n const isDBConnectorSideViewEnabled = useSelector(mdm.selectors.isDBConnectorSideViewEnabled) as boolean;\n const isCollaborationEnabled = useSelector(mdm.selectors.isCollaborationEnabled) as boolean;\n\n const defaultTab = commentId ? ActivePanel.Collaboration : undefined;\n\n const historyEvent: HistoryEvent = useSelector(mdm.selectors.getHistoryEvent);\n const metadata: Metadata = useSelector(mdm.selectors.getMetadata);\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n\n const workflowTasksContext = useContext(WorkflowTasksContext);\n const collaborationContext = useContext(CollaborationContext);\n\n const {isHistoryEnabled, isProfilePersisted} = useHistoryEnabled({\n perspectiveId,\n entity,\n historyButtonId: ActivePanel.History\n });\n\n const {historyFilter, onApplyFilter, isLoading, historicUris, historyWithTotal, canLoadMore, onLoadMore} =\n useHistory({entity, enabled: isHistoryEnabled});\n\n const enabledWorkflowButton = isWorkflowSideViewEnabled && isWorkflowEnabled && !isTempUri(entity?.uri);\n const enabledCollaborationButton = isCollaborationSideViewEnabled && isCollaborationEnabled;\n const collaborationTotal = calcTotalCommentItems(collaborationContext?.commentsMap);\n\n const tabs = useMemo(\n () => [\n {\n buttonProps: {\n id: ActivePanel.Workflow,\n icon: WorkflowButton,\n tooltipTitle: i18n.text('Workflow')\n },\n content: workflowTasksContext?.total ? <WorkflowList /> : <WorkflowPanelEmptyState />,\n headerProps: {\n mainTitle: i18n.text('Workflow'),\n secondTitle: getSecondTitle(workflowTasksContext?.total),\n rightContent: <AddWorkflowButton />\n },\n hidden: !enabledWorkflowButton\n },\n {\n buttonProps: {\n id: ActivePanel.Collaboration,\n icon: CollaborationButton,\n tooltipTitle: i18n.text('Collaboration')\n },\n content: collaborationTotal ? <CollaborationList /> : <CollaborationPanelEmptyState />,\n headerProps: {\n mainTitle: i18n.text('Collaboration'),\n secondTitle: getSecondTitle(collaborationTotal)\n },\n hidden: !enabledCollaborationButton\n },\n {\n buttonProps: {\n id: ActivePanel.History,\n icon: HistoryIcon,\n tooltipTitle: i18n.text('History')\n },\n content: isProfilePersisted ? (\n <HistoryView\n isLoading={isLoading}\n historyWithTotal={historyWithTotal}\n contributorsUris={historicUris}\n entityUri={entity?.uri}\n historyEvent={historyEvent}\n onLoadMore={onLoadMore}\n canLoadMore={canLoadMore}\n />\n ) : (\n <HistoryPanelEmptyState />\n ),\n headerProps: {\n content: (\n <HistoryHeader\n total={isProfilePersisted ? (historicUris?.length || 0) + 1 : undefined}\n entityType={getEntityType(metadata, entity?.type)}\n filter={historyFilter}\n onApplyFilter={onApplyFilter}\n />\n )\n },\n hidden: hideHistory\n },\n {\n buttonProps: {\n id: ActivePanel.DBConnector,\n icon: ConnectorsIcon,\n tooltipTitle: i18n.text('D&B Connector')\n },\n content: <DBConnectorsList />,\n headerProps: {\n mainTitle: i18n.text('D&B Connector')\n },\n hidden: !isDBConnectorSideViewEnabled\n }\n ],\n [\n workflowTasksContext?.total,\n enabledWorkflowButton,\n collaborationTotal,\n enabledCollaborationButton,\n isProfilePersisted,\n isLoading,\n historyWithTotal,\n historicUris,\n entity?.uri,\n entity?.type,\n historyEvent,\n onLoadMore,\n canLoadMore,\n metadata,\n historyFilter,\n onApplyFilter,\n isDBConnectorSideViewEnabled\n ]\n );\n\n return {tabs, defaultTab};\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n profileContainer: {\n display: 'flex',\n overflow: 'hidden',\n flexGrow: 1\n }\n}));\n","import React, {memo} from 'react';\nimport {pipe, pluck, propEq, reject} from 'ramda';\nimport {ProfileResizablePanes} from '@reltio/components';\nimport {RightSidePanel} from '../RightSidePanel/RightSidePanel';\nimport {useProfileRightSidePanelElements} from '../ProfilePerspectiveView/hooks/useProfileRightSidePanelElements';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n perspectiveId: string;\n commentId?: string;\n hideHistory?: boolean;\n children: React.ReactElement;\n};\n\nexport const ProfilePerspectiveResizablePanes = memo(({perspectiveId, commentId, hideHistory, children}: Props) => {\n const styles = useStyles();\n const {defaultTab, tabs} = useProfileRightSidePanelElements({commentId, hideHistory, perspectiveId});\n\n return (\n <div className={styles.profileContainer}>\n <ProfileResizablePanes\n defaultTab={defaultTab}\n perspectiveId={perspectiveId}\n buttonsProps={pipe(reject(propEq('hidden', true)), pluck('buttonProps'))(tabs)}\n >\n {children}\n <RightSidePanel tabs={tabs} />\n </ProfileResizablePanes>\n </div>\n );\n});\n\nProfilePerspectiveResizablePanes.displayName = 'ProfilePerspectiveView';\n","import {useCallback, useEffect, useMemo, useRef, useState} from 'react';\nimport hash from 'object-hash';\nimport {useSavedStateForEntityType, useConfigPermissions} from '@reltio/components';\nimport {\n debounce,\n fixNonUniqViewsIds,\n ProfilePerspectiveConfig,\n ProfileViewConfig,\n ReltioGridLayoutItem,\n removeUnsupportedLayoutItems\n} from '@reltio/mdm-sdk';\nimport {ProfileSavedState, Layout} from '../../../types';\n\ntype Props = {\n config: ProfilePerspectiveConfig;\n entityTypeUri?: string;\n saveState: (state: Record<string, ProfileSavedState>) => void;\n getSavedState: () => Promise<Record<string, ProfileSavedState>>;\n};\n\nconst SAVE_STATE_DEBOUNCE_DELAY = 1000;\nconst emptyState = {} as ProfileSavedState;\nexport const useProfileLayout = ({config: profileConfig, entityTypeUri, saveState, getSavedState}: Props) => {\n const [layout, setLayout] = useState<Layout>([]);\n const [views, setViews] = useState<ProfilePerspectiveConfig['views']>([]);\n\n const {canRead} = useConfigPermissions();\n const config: ProfilePerspectiveConfig = useMemo(() => {\n const validatedViews = profileConfig.views.filter(canRead);\n const validatedLayout = removeUnsupportedLayoutItems(profileConfig.layout, validatedViews);\n return {...profileConfig, views: validatedViews, layout: validatedLayout};\n }, [profileConfig, canRead]);\n\n const configHash = useMemo(() => hash(config), [config]);\n const nestedRoute = config?.nestedRoute ? `/${config.nestedRoute}` : '';\n const savedStateKey = entityTypeUri && config ? entityTypeUri + nestedRoute : null;\n\n const getSavedStateAndFix = useCallback(() => {\n return getSavedState().then((state) => (state.layout ? {} : state));\n }, [getSavedState]);\n const debouncedSaveState = useCallback(debounce(saveState, SAVE_STATE_DEBOUNCE_DELAY), [saveState]) as (\n state: Record<string, ProfileSavedState>\n ) => void;\n const {\n isLoaded,\n savedState = emptyState,\n updateSavedState\n } = useSavedStateForEntityType<ProfileSavedState>({\n getSavedState: getSavedStateAndFix,\n saveState: debouncedSaveState,\n entityTypeUri: savedStateKey\n });\n\n const handleLayoutChange = useCallback(\n (layout: Layout) => {\n updateSavedState({layout, views, configHash});\n setLayout(layout);\n },\n [updateSavedState, configHash, views]\n );\n\n const tempConfig = useRef<{views: ProfilePerspectiveConfig['views']; layout: Layout}>();\n const handleResetUndo = useCallback(() => {\n setViews(tempConfig.current.views);\n handleLayoutChange(tempConfig.current.layout);\n }, [handleLayoutChange]);\n\n const handleLayoutReset = useCallback(() => {\n tempConfig.current = {views, layout};\n const {views: fixedViews, layout: fixedLayout} = fixNonUniqViewsIds<ProfileViewConfig, ReltioGridLayoutItem>({\n views: config.views,\n layout: config.layout\n });\n setViews(fixedViews);\n handleLayoutChange(fixedLayout);\n }, [config, layout, views, handleLayoutChange]);\n\n useEffect(() => {\n if (isLoaded) {\n const isConfigChanged = configHash !== savedState.configHash;\n const {views: fixedViews, layout: fixedLayout} = fixNonUniqViewsIds<\n ProfileViewConfig,\n ReltioGridLayoutItem\n >({\n views: isConfigChanged || !savedState.views ? config.views : savedState.views,\n layout: isConfigChanged ? config.layout : savedState.layout\n });\n setViews(fixedViews);\n setLayout(fixedLayout);\n }\n }, [isLoaded, savedState, savedStateKey]); // eslint-disable-line\n\n return {\n views,\n layout,\n isLoaded,\n onLayoutReset: handleLayoutReset,\n onResetUndo: handleResetUndo,\n handleLayoutChange\n };\n};\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles((theme) => ({\n wrapper: {\n alignItems: 'center',\n display: 'flex',\n padding: '12px 16px',\n fontSize: '13px',\n lineHeight: '15px',\n fontWeight: theme.typography.fontWeightRegular,\n color: theme.palette.text.secondary\n },\n loadingWrapper: {\n display: 'flex',\n backgroundColor: 'rgba(238, 238, 238, 1)',\n color: theme.palette.text.secondary,\n boxShadow: 'inset 0px -1px 0px rgba(0, 0, 0, 0.12)'\n },\n errorWrapper: {\n display: 'flex',\n backgroundColor: 'rgba(255, 235, 238, 1)',\n color: theme.palette.error.main\n },\n successWrapper: {\n display: 'flex',\n backgroundColor: 'rgba(239, 253, 227, 1)',\n color: theme.palette.success.main,\n '& span, & b': {\n paddingRight: '4px'\n }\n },\n closeIcon: {\n color: theme.palette.text.secondary,\n cursor: 'pointer',\n '&:hover': {\n background: 'none'\n }\n },\n indicatorIcon: {\n padding: '0 14px'\n },\n link: {\n color: theme.palette.primary.main,\n fontSize: theme.typography.pxToRem(13),\n fontWeight: theme.typography.fontWeightRegular,\n cursor: 'pointer'\n }\n}));\n\nexport default useStyles;\n","import React from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\n\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\nimport {getLabel} from '@reltio/mdm-sdk';\n\nimport Typography from '@mui/material/Typography';\nimport CloseIcon from '@mui/icons-material/Close';\nimport InfoIcon from '@mui/icons-material/InfoRounded';\nimport SuccessIcon from '@mui/icons-material/CheckCircle';\nimport ErrorIcon from '@mui/icons-material/ReportProblem';\n\nimport useStyles from './styles';\n\nexport enum BackgroundUpdateStatus {\n loading = 'loading',\n success = 'success',\n error = 'error'\n}\n\ntype Props = {\n label?: string;\n onClose: () => void;\n onRefresh?: () => void;\n status?: BackgroundUpdateStatus;\n};\n\nconst CloseIconButton = ({onClose}: {onClose: () => void}) => {\n const styles = useStyles();\n return (\n <SmallIconButtonWithTooltip\n tooltipTitle={i18n.text('Close')}\n onClick={onClose}\n size={'S'}\n className={styles.closeIcon}\n icon={CloseIcon}\n />\n );\n};\n\nconst ProcessLoading = ({onClose}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={classnames(styles.wrapper, styles.loadingWrapper)}>\n <CloseIconButton onClose={onClose} />\n <InfoIcon className={classnames(styles.indicatorIcon)} />\n <Typography>{i18n.text('Loading background process...')}</Typography>\n </div>\n );\n};\n\nconst ProcessSuccess = ({label, onClose, onRefresh}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={classnames(styles.wrapper, styles.successWrapper)}>\n <CloseIconButton onClose={onClose} />\n <SuccessIcon className={classnames(styles.indicatorIcon)} />\n <div data-reltio-id=\"background-update-success\">\n <span>{i18n.text('This Profile')}</span>\n <b>{getLabel(label)}</b>\n <span>{i18n.text('has been updated.')}</span>\n <span onClick={onRefresh} className={styles.link}>\n {i18n.text('Click Here to Refresh the page')}\n </span>\n <span>{i18n.text(' to retrieve the latest profile data.')}</span>\n </div>\n </div>\n );\n};\n\nconst ProcessError = ({onClose}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={classnames(styles.wrapper, styles.errorWrapper)}>\n <CloseIconButton onClose={onClose} />\n <ErrorIcon className={classnames(styles.indicatorIcon)} />\n <Typography>\n {i18n.text(\n 'UI attempted to check for updates but no update received in the last 30 seconds. Try refreshing the page manually.'\n )}\n </Typography>\n </div>\n );\n};\n\nexport const BackgroundProcessIndicator = ({label, onClose, onRefresh, status}: Props) => {\n switch (status) {\n case BackgroundUpdateStatus.loading:\n return <ProcessLoading onClose={onClose} />;\n case BackgroundUpdateStatus.success:\n return <ProcessSuccess label={label} onClose={onClose} onRefresh={onRefresh} />;\n case BackgroundUpdateStatus.error:\n return <ProcessError onClose={onClose} />;\n default:\n return null;\n }\n};\n","import {useCallback, useContext, useEffect, useRef, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {isNil} from 'ramda';\nimport {useActionsHook, useSafePromise, ViewIdContext} from '@reltio/components';\nimport {getEntityUpdatedTime, ProfileCheckUpdate} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {BackgroundUpdateStatus} from '../../BackgroundProcessIndicator/BackgroundProcessIndicator';\nimport {getBackgroundUpdateDelay} from './data/backgroundUpdateDalay';\n\nconst NUMBER_OF_RETRY = 5;\n\nconst isEntityTypeInBackgroundProcess = (entityTypeList?: string[], entityType?: string) => {\n if (entityTypeList?.[0] === '*') {\n return true;\n }\n if (isNil(entityTypeList)) {\n return false;\n }\n return entityTypeList.includes(entityType);\n};\n\nconst checkEntityTypeInList = (entityTypeList: string[], entityType: string) =>\n isEntityTypeInBackgroundProcess(entityTypeList, entityType);\n\ntype Props = {\n entityUri: string;\n entityTypeUri: string;\n entityUpdatedTime: number;\n};\n\nexport const useBackgroundProcessIndicator = ({entityUri, entityTypeUri, entityUpdatedTime}: Props) => {\n const dispatch = useDispatch();\n const {autoUpdateInReadMode, entityTypes: entityTypesForUpdate}: ProfileCheckUpdate =\n useSelector(mdm.selectors.getProfileCheckUpdate) || {};\n\n const needBackgroundProcess = checkEntityTypeInList(entityTypesForUpdate, entityTypeUri);\n const isAutoUpdated = checkEntityTypeInList(autoUpdateInReadMode, entityTypeUri);\n\n const timerId = useRef(null);\n const safePromise = useSafePromise();\n const listenToActions = useActionsHook();\n const viewId = useContext(ViewIdContext);\n\n const [isOpenBackgroundProcessIndicator, setIsOpenBackgroundProcessIndicator] = useState(false);\n const [backgroundUpdateStatus, setBackgroundUpdateStatus] = useState(BackgroundUpdateStatus.loading);\n const backgroundUpdateDelay = getBackgroundUpdateDelay();\n\n const onRefreshProfile = useCallback(() => {\n // entity refreshing\n dispatch(profile.entity.actions.loadEntity({viewId, uri: entityUri}));\n setIsOpenBackgroundProcessIndicator(false);\n }, [dispatch, entityUri, viewId]);\n\n const onCloseBackgroundProcessIndicator = useCallback(() => {\n setIsOpenBackgroundProcessIndicator(false);\n }, []);\n\n const cancelUpdateProcess = useCallback(() => {\n clearTimeout(timerId.current);\n setIsOpenBackgroundProcessIndicator(false);\n safePromise(Promise.resolve());\n }, [safePromise]);\n\n const getUpdatedTime = useCallback(\n (numberOfRetry) => {\n safePromise(getEntityUpdatedTime(entityUri))\n .then((result) => {\n if (result.updatedTime > entityUpdatedTime) {\n setBackgroundUpdateStatus(BackgroundUpdateStatus.success);\n if (isAutoUpdated) {\n onRefreshProfile();\n } else {\n setIsOpenBackgroundProcessIndicator(true);\n }\n numberOfRetry = -1;\n }\n })\n .catch(() => {})\n .finally(() => {\n if (numberOfRetry < 0) {\n return;\n }\n if (!numberOfRetry) {\n setBackgroundUpdateStatus(BackgroundUpdateStatus.error);\n setIsOpenBackgroundProcessIndicator(true);\n } else {\n numberOfRetry = numberOfRetry - 1;\n timerId.current = setTimeout(getUpdatedTime, backgroundUpdateDelay, numberOfRetry);\n }\n });\n },\n [entityUpdatedTime, entityUri, isAutoUpdated, onRefreshProfile, safePromise, backgroundUpdateDelay]\n );\n\n const runBackgroundUpdate = useCallback(() => {\n if (needBackgroundProcess) {\n setBackgroundUpdateStatus(BackgroundUpdateStatus.loading);\n setIsOpenBackgroundProcessIndicator(true);\n timerId.current = setTimeout(getUpdatedTime, backgroundUpdateDelay, NUMBER_OF_RETRY - 1);\n }\n }, [getUpdatedTime, needBackgroundProcess]);\n\n useEffect(() => {\n const stopListeningActions = listenToActions((action) => {\n if (action.type === profile.constants.ProfileActions.PROFILE_SAVED) {\n runBackgroundUpdate();\n }\n });\n return () => {\n stopListeningActions();\n };\n }, [listenToActions, safePromise, runBackgroundUpdate]);\n\n return {\n onRefreshProfile,\n onCloseBackgroundProcessIndicator,\n cancelUpdateProcess,\n isOpenBackgroundProcessIndicator,\n backgroundUpdateStatus\n };\n};\n","import {makeStyles} from '@mui/styles';\n\ntype Props = {\n maxWidth?: number;\n};\n\nexport const useStyles = makeStyles((theme) => ({\n perspectiveView: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\n overflowX: 'hidden',\n overflowY: 'auto',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: theme.palette.background.default\n },\n emptyState: {\n backgroundColor: '#FAFAFA',\n height: '100%'\n },\n profileWrapper: ({maxWidth}: Props) => ({\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n flexGrow: 1,\n maxWidth: maxWidth ? `${maxWidth}px` : '100%'\n }),\n '@global div[role=tooltip]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n },\n '@global div[role=presentation]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n }\n}));\n","import React, {memo, useContext, useMemo, useEffect} from 'react';\nimport i18n from 'ui-i18n';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {\n Entity,\n getProfileObjectIdsForCollaboration,\n Mode,\n ProfilePerspectiveConfig,\n isTempUri,\n HistoryEvent,\n AttributeError\n} from '@reltio/mdm-sdk';\nimport {\n CollaborationContext,\n WorkflowTasksContext,\n EMPTY_STATE_ICONS,\n EMPTY_STATE_VARIANTS,\n AttributesErrorsPanel,\n EmptyState,\n LinearLoadIndicator,\n ProfilePerspectiveViewContext,\n SearchValueContext,\n useCollaboration,\n HistoryDiffContext,\n useHistoryDiff,\n useHistorySlice,\n useEntityLoadingIndication,\n ScrollToElementProvider,\n CollaborationContextProvider,\n useLayoutResetter,\n FeaturesContext\n} from '@reltio/components';\nimport {ProfileSavedState} from '../../types';\n\nimport {ProfileLayout} from '../ProfileLayout';\nimport {Notifications} from '../Notifications';\nimport {PerspectiveProfileBand} from '../PerspectiveProfileBand';\nimport {ProfilePerspectiveResizablePanes} from '../ProfilePerspectiveResizablePanes/ProfilePerspectiveResizablePanes';\nimport {useProfileValidation} from '../hooks/useProfileValidation';\nimport {useProfileLayout} from './hooks/useProfileLayout';\nimport {useWorkflowTasks} from './hooks/useWorkflowTasks';\nimport {BackgroundProcessIndicator} from '../BackgroundProcessIndicator/BackgroundProcessIndicator';\nimport {useBackgroundProcessIndicator} from './hooks/useBackgroundProcessIndicator';\n\nimport {useStyles} from './styles';\nimport mdmModule from '@reltio/mdm-module';\n\ntype Props = {\n config: ProfilePerspectiveConfig;\n saveState: (state: Record<string, ProfileSavedState>) => void;\n getSavedState: () => Promise<Record<string, ProfileSavedState>>;\n commentId?: string;\n};\n\nconst perspectiveId = 'profile';\n\nconst ProfilePerspectiveView = memo(({config, saveState, getSavedState, commentId}: Props) => {\n const {maxWidth, profileBand, workflow, frozen} = config || {};\n const styles = useStyles({maxWidth});\n\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n const historyEvent: HistoryEvent = useSelector(mdm.selectors.getHistoryEvent);\n const isHistoryActive = useSelector(mdm.selectors.getIsHistoryModeEnabled);\n const keywordValue = useSelector(mdm.selectors.getSearchKeyword)?.value || '';\n const mode = useSelector(mdm.selectors.getMode);\n const allErrors: AttributeError[] = useSelector(mdm.selectors.getProfileErrors);\n\n const dispatch = useDispatch();\n const historyDiff = useHistoryDiff();\n const workflowTasks = useWorkflowTasks(workflow);\n const {isLoading: isEntityLoading} = useEntityLoadingIndication();\n\n const {type: entityTypeUri, uri: entityUri, updatedTime: entityUpdatedTime} = entity || {};\n const {\n onRefreshProfile,\n onCloseBackgroundProcessIndicator,\n cancelUpdateProcess,\n isOpenBackgroundProcessIndicator,\n backgroundUpdateStatus\n } = useBackgroundProcessIndicator({entityUri, entityTypeUri, entityUpdatedTime});\n const objectIds = useMemo(() => getProfileObjectIdsForCollaboration(entity), [entity]);\n const emptyCollaboration = useContext(CollaborationContext);\n const collaboration = useCollaboration({objectIds});\n\n const featuresContext = useContext(FeaturesContext);\n const showDescription = useSelector(mdmModule.selectors.getShowAttributeDescription);\n const features = useMemo(() => ({...featuresContext, showDescription}), [featuresContext, showDescription]);\n\n const {\n views,\n layout,\n isLoaded: isLayoutLoaded,\n onLayoutReset,\n onResetUndo,\n handleLayoutChange\n } = useProfileLayout({\n config,\n entityTypeUri,\n saveState,\n getSavedState\n });\n useHistorySlice({entity, historyEvent});\n useProfileValidation();\n\n useEffect(() => {\n dispatch(profile.views.actions.profileViewsSet(views));\n }, [dispatch, views]);\n\n useEffect(() => {\n if (config.sidePanelViews) {\n dispatch(profile.sidePanelViews.actions.sidePanelViewsLoaded(config.sidePanelViews));\n }\n }, [config]); // eslint-disable-line\n\n useEffect(() => {\n return () => cancelUpdateProcess();\n }, [entityUri, mode]);\n\n // possible for a short time during createProfile saga execution\n const hideLayout = mode === Mode.Viewing && isTempUri(entityUri);\n\n const renderEmptyState = (text: string) => (\n <div className={styles.emptyState}>\n <EmptyState LogoRenderer={EMPTY_STATE_ICONS.NO_DATA} text={text} variant={EMPTY_STATE_VARIANTS.embedded} />\n </div>\n );\n\n const {SnackbarRenderer, resetLayout} = useLayoutResetter({onLayoutReset, onResetUndo});\n const menuItems = useMemo(\n () => [\n {\n primary: i18n.text('Reset layout'),\n secondary: i18n.text('Restore the default layout without saving any changes'),\n onClick: resetLayout\n }\n ],\n [resetLayout]\n );\n\n return (\n <FeaturesContext.Provider value={features}>\n <ProfilePerspectiveViewContext.Provider value={true}>\n <CollaborationContextProvider collaboration={isHistoryActive ? emptyCollaboration : collaboration}>\n <WorkflowTasksContext.Provider value={workflowTasks}>\n <HistoryDiffContext.Provider value={historyDiff}>\n <SearchValueContext.Provider value={keywordValue}>\n <ScrollToElementProvider>\n <div className={styles.perspectiveView}>\n {isLayoutLoaded && entityUri ? (\n <ProfilePerspectiveResizablePanes\n commentId={commentId}\n perspectiveId={perspectiveId}\n >\n <div className={styles.profileWrapper}>\n <PerspectiveProfileBand\n profileBandConfig={profileBand}\n showMenu={!frozen}\n menuItems={menuItems}\n />\n {isEntityLoading ? (\n renderEmptyState(i18n.text('Loading'))\n ) : (\n <>\n {isOpenBackgroundProcessIndicator && (\n <BackgroundProcessIndicator\n label={entity.label}\n onClose={onCloseBackgroundProcessIndicator}\n onRefresh={onRefreshProfile}\n status={backgroundUpdateStatus}\n />\n )}\n {!isHistoryActive && (\n <AttributesErrorsPanel\n attributesWithErrors={allErrors}\n />\n )}\n {!hideLayout && (\n <ProfileLayout\n maxWidth={maxWidth}\n views={views}\n layout={layout}\n frozen={frozen}\n entityUri={entityUri}\n onLayoutChanged={handleLayoutChange}\n />\n )}\n </>\n )}\n </div>\n </ProfilePerspectiveResizablePanes>\n ) : (\n <>\n <LinearLoadIndicator />\n {renderEmptyState(i18n.text('No data to display.'))}\n </>\n )}\n <Notifications />\n <SnackbarRenderer />\n </div>\n </ScrollToElementProvider>\n </SearchValueContext.Provider>\n </HistoryDiffContext.Provider>\n </WorkflowTasksContext.Provider>\n </CollaborationContextProvider>\n </ProfilePerspectiveViewContext.Provider>\n </FeaturesContext.Provider>\n );\n});\n\nProfilePerspectiveView.displayName = 'ProfilePerspectiveView';\n\nexport {ProfilePerspectiveView};\n","import {useWorkflowDefaultActionSuccessHandler, useWorkflowTasks as useCommonWorkflowTasks} from '@reltio/components';\nimport {useMemo} from 'react';\n\nexport const useWorkflowTasks = (workflowConfig: Parameters<typeof useCommonWorkflowTasks>[0]) => {\n const commonWorkflowTasks = useCommonWorkflowTasks(workflowConfig);\n const defaultActionSuccessHandler = useWorkflowDefaultActionSuccessHandler();\n\n return useMemo(\n () => ({\n ...commonWorkflowTasks,\n onActionSuccess: defaultActionSuccessHandler\n }),\n [commonWorkflowTasks, defaultActionSuccessHandler]\n );\n};\n","const BACKGROUND_UPDATE_DELAY = 6000;\nexport const getBackgroundUpdateDelay = (delay?: number) => delay || BACKGROUND_UPDATE_DELAY;\n","import {useCallback, useEffect} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {debounce, Entity, isDataTenantEntity, isTempUri, Mode} from '@reltio/mdm-sdk';\n\nexport const useProfileValidation = () => {\n const dispatch = useDispatch();\n const isValidateReadMode: boolean = useSelector(mdmModule.selectors.getValidateReadMode);\n const entity: Entity = useSelector(mdmModule.selectors.getEntity) || ({} as Entity);\n const {uri, updatedTime} = entity;\n const isDTEntity = isDataTenantEntity(entity);\n const mode: Mode = useSelector(mdmModule.selectors.getMode);\n const profileViews = useSelector(mdmModule.selectors.getProfileViews);\n const hasProfileViews = profileViews && profileViews.length > 0;\n\n const validate = useCallback(\n debounce((needDispatch: boolean) => {\n if (needDispatch) {\n dispatch(profile.actions.validateProfile());\n }\n }, 500),\n [dispatch]\n );\n\n useEffect(() => {\n const needDispatch =\n isValidateReadMode && !isDTEntity && uri && !isTempUri(uri) && mode === Mode.Viewing && hasProfileViews;\n validate(needDispatch);\n }, [validate, isDTEntity, isValidateReadMode, updatedTime, uri, mode, hasProfileViews]);\n};\n","import {evolve, ifElse, map, omit, pipe, propEq, sort} from 'ramda';\nimport {looseEquals} from '@reltio/mdm-sdk';\nimport {Layout, ProfileSavedState} from '../types';\n\nexport const equalsState = (\n newState: Record<string, ProfileSavedState>,\n savedState: Record<string, ProfileSavedState> | null\n) => {\n const sortLayoutItems = (layout: Layout) =>\n sort((a, b) => (a.x > b.x || (a.x === b.x && a.y > b.y) ? 1 : -1), layout);\n const prepareState = map((item: ProfileSavedState) =>\n evolve(\n {\n layout: pipe(\n sortLayoutItems,\n map(\n ifElse(\n propEq('autosizing', true),\n omit(['y', 'height', 'minHeight', 'maxHeight']),\n omit(['y', 'minHeight', 'maxHeight'])\n )\n )\n )\n },\n item\n )\n );\n return looseEquals(prepareState(newState), prepareState(savedState));\n};\n","import React, {useCallback, useMemo} from 'react';\nimport {AdapterMoment} from '@mui/x-date-pickers/AdapterMoment';\nimport {identity} from 'ramda';\nimport createGenerateClassName from '@mui/styles/createGenerateClassName';\nimport StylesProvider from '@mui/styles/StylesProvider';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {LocalizationProvider} from '@mui/x-date-pickers/LocalizationProvider';\nimport {ErrorPopup, SandboxAPIContext, SnackbarContext, useSnackbar, ViewIdContext} from '@reltio/components';\nimport {\n convertOldProfileConfig,\n ProfilePerspectiveConfig,\n promisifyCallback,\n QxSandboxApi,\n userPreferencesComparator\n} from '@reltio/mdm-sdk';\nimport {ProfileSavedState} from '../types';\nimport ProfilePerspectiveView from '../components/ProfilePerspectiveView';\nimport {equalsState} from './helpers';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'profilePerspective',\n disableGlobal: true,\n seed: 'prfl'\n});\n\nuserPreferencesComparator.register('profile', equalsState);\n\ntype Props = {\n config: ProfilePerspectiveConfig;\n onResize?: (width: number, height: number) => void;\n saveState: (state: Record<string, ProfileSavedState>) => void;\n getSavedState: (clb: (state: Record<string, ProfileSavedState>) => void) => void;\n qxSandboxApi?: QxSandboxApi;\n commentId?: string;\n};\n\nconst ProfilePerspective = ({\n config,\n onResize = identity,\n saveState,\n getSavedState,\n qxSandboxApi,\n commentId\n}: Props) => {\n const getSavedStatePromisified: () => Promise<Record<string, ProfileSavedState>> = useCallback(\n promisifyCallback(getSavedState),\n [getSavedState]\n );\n const {SnackbarRenderer, showSnackbarMessage} = useSnackbar();\n const processedConfig = useMemo(() => config && convertOldProfileConfig(config), [config]);\n\n return (\n <ViewIdContext.Provider value={processedConfig?.id}>\n <SnackbarContext.Provider value={showSnackbarMessage}>\n <SandboxAPIContext.Provider value={qxSandboxApi}>\n <StylesProvider generateClassName={generateClassName}>\n <LocalizationProvider dateAdapter={AdapterMoment}>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize(Math.floor(width), Math.floor(height))}\n />\n {processedConfig && (\n <ProfilePerspectiveView\n config={processedConfig}\n saveState={saveState}\n getSavedState={getSavedStatePromisified}\n commentId={commentId}\n />\n )}\n <ErrorPopup showErrorFromStore={true} />\n <SnackbarRenderer />\n </LocalizationProvider>\n </StylesProvider>\n </SandboxAPIContext.Provider>\n </SnackbarContext.Provider>\n </ViewIdContext.Provider>\n );\n};\n\nexport default ProfilePerspective;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n titleContainer: {\n overflow: 'hidden',\n fontSize: '16px',\n fontWeight: 'normal',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n alignItems: 'center',\n display: 'flex',\n minHeight: '48px',\n color: theme.palette.text.secondary\n },\n link: {\n fontSize: '16px',\n fontWeight: 'normal'\n },\n icon: {\n height: '18px',\n color: theme.palette.text.secondary\n },\n totalCaption: {\n lineHeight: 'inherit',\n fontSize: '14px',\n color: 'rgba(0,0,0,0.6)',\n flexShrink: 0,\n marginRight: '5px'\n },\n totalNumber: {\n fontSize: '16px',\n color: 'rgba(0,0,0,0.87)',\n marginRight: '5px',\n fontWeight: 500\n }\n}));\n","import React, {useCallback, useContext} from 'react';\nimport {useDispatch} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {ui as mdmModuleUi} from '@reltio/mdm-module';\nimport {FacetViewHeader, Spacer, ViewIdContext} from '@reltio/components';\nimport Link from '@mui/material/Link';\nimport ArrowForwardIosRoundedIcon from '@mui/icons-material/ArrowForwardIosRounded';\nimport Typography from '@mui/material/Typography';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n total?: number;\n};\n\nexport const TagListHeader = ({total = 0}: Props) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n\n const viewId = useContext(ViewIdContext);\n\n const switchToProfile = useCallback(() => {\n dispatch(mdmModuleUi.actions.openPerspective({perspectiveId: 'profile', viewId}));\n }, [dispatch, viewId]);\n\n return (\n <FacetViewHeader title=\"\">\n <div className={styles.titleContainer}>\n <Link\n component=\"button\"\n variant=\"caption\"\n className={styles.link}\n onClick={switchToProfile}\n underline=\"none\"\n >\n {i18n.text('Profile')}\n </Link>\n <ArrowForwardIosRoundedIcon className={styles.icon} />\n {i18n.text('Tags')}\n </div>\n <Spacer />\n <Typography className={styles.totalCaption} variant=\"caption\">\n <span className={styles.totalNumber}>{i18n.number(total, '0,0')}</span>\n {i18n.text('total profiles')}\n </Typography>\n </FacetViewHeader>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n toolbar: {\n display: 'flex',\n flexShrink: 0,\n background: 'white',\n borderBottom: '1px solid rgba(0,0,0,0.1)',\n boxSizing: 'border-box',\n paddingLeft: '16px'\n },\n avatar: {\n color: 'rgba(0, 0, 0, 0.38)',\n marginRight: '12px'\n },\n label: {\n fontSize: '20px',\n letterSpacing: '0.25px',\n lineHeight: '1.2',\n fontWeight: 500,\n color: theme.palette.text.primary,\n wordBreak: 'break-word'\n }\n}));\n","import React from 'react';\nimport TagIcon from '@mui/icons-material/LocalOffer';\nimport Toolbar from '@mui/material/Toolbar';\nimport Typography from '@mui/material/Typography';\nimport {useStyles} from './styles';\n\ntype Props = {\n label: string;\n};\n\nexport const TagProfileBand = ({label}: Props) => {\n const styles = useStyles();\n return (\n <Toolbar className={styles.toolbar}>\n <TagIcon className={styles.avatar} />\n <Typography variant=\"h6\" className={styles.label}>\n {label}\n </Typography>\n </Toolbar>\n );\n};\n","import {useCallback, useMemo} from 'react';\nimport {map} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {\n Entity,\n getFilteredEntities,\n getFilteredEntitiesFromDataTenant,\n getTotals,\n getTotalFromDataTenant,\n TotalResponse,\n SearchFilter,\n GlobalSearchRequestOptions,\n getDataTenantFromEntityUri,\n enrichEntityWithDataTenant\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\n\ntype Props = {\n entityUri: string;\n tag: string;\n};\n\nexport const useTagsProvider = ({entityUri, tag}: Props) => {\n const globalSearchRequestOptions: GlobalSearchRequestOptions = useSelector(\n mdmModule.selectors.getGlobalSearchRequestOptions\n );\n const tenant: string = useSelector(mdmModule.selectors.getTenant);\n const dtssPath: string = useSelector(mdmModule.selectors.getDtssPath);\n const dataTenant = useMemo(() => getDataTenantFromEntityUri(entityUri), [entityUri]);\n const filters: SearchFilter[] = useMemo(() => {\n return [\n {\n filter: 'equals',\n fieldName: 'tags',\n values: [tag]\n }\n ];\n }, [tag]);\n\n const isDT = !!dataTenant;\n\n const getEntities = useCallback(\n (filters: SearchFilter[] = [], options = {}): Promise<Entity[]> => {\n const requestOptions = {\n select: 'uri,label,type,secondaryLabel,defaultProfilePicValue,startDate,endDate',\n ...options\n };\n return isDT\n ? getFilteredEntitiesFromDataTenant({\n filters,\n options: requestOptions,\n customerTenant: tenant,\n dataTenant,\n dtssPath\n }).then(map(enrichEntityWithDataTenant(dataTenant)))\n : getFilteredEntities(filters, requestOptions);\n },\n [isDT, dataTenant, tenant, dtssPath]\n );\n\n const requestEntities = useCallback(\n (max, offset): Promise<Entity[]> => {\n return getEntities(filters, {offset, max, ...globalSearchRequestOptions});\n },\n [filters, globalSearchRequestOptions, getEntities]\n );\n\n const requestTotal = useCallback((): Promise<number> => {\n const options = globalSearchRequestOptions;\n return (isDT\n ? getTotalFromDataTenant({\n filters,\n options,\n customerTenant: tenant,\n dataTenant,\n dtssPath\n })\n : getTotals(filters, options)\n ).then((json) => (json as TotalResponse).total);\n }, [filters, globalSearchRequestOptions, isDT, dataTenant, tenant, dtssPath]);\n\n return {requestEntities, requestTotal};\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n perspectiveView: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: theme.palette.background.default\n },\n tagsContainer: {\n display: 'flex'\n },\n fullHeight: {\n flexGrow: 1,\n height: 0\n },\n tagsView: {\n margin: '16px',\n width: '100%',\n paddingTop: '4px'\n },\n listContainer: {\n flex: 1,\n display: 'flex',\n overflow: 'hidden',\n position: 'relative',\n flexDirection: 'column',\n minHeight: '4px'\n },\n entitiesList: {\n overflowY: 'auto',\n flexGrow: 1\n },\n pagination: {\n flexGrow: 0\n }\n}));\n","import React, {memo, useEffect, useRef, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport mdmModule from '@reltio/mdm-module';\nimport {GlobalSearchRequestOptions} from '@reltio/mdm-sdk';\nimport {BasicTablePagination, BasicView, LinearLoadIndicator, ProfilesList} from '@reltio/components';\nimport {TagListHeader} from './components/TagListHeader';\nimport {TagProfileBand} from './components/TagProfileBand';\nimport {useTag} from './hooks/useTag';\n\nimport {useStyles} from './styles';\n\nconst ROWS_PER_PAGE_OPTIONS = [25, 50, 100];\n\ntype Props = {\n tag?: string;\n entityUri?: string;\n};\n\nconst TagPerspectiveView = memo(({tag, entityUri}: Props) => {\n const styles = useStyles();\n\n const [rowsPerPage, setRowsPerPage] = useState(ROWS_PER_PAGE_OPTIONS[0]);\n const [page, setPage] = useState(0);\n\n const globalSearchRequestOptions: GlobalSearchRequestOptions = useSelector(\n mdmModule.selectors.getGlobalSearchRequestOptions\n );\n\n useEffect(() => {\n setPage(0);\n }, [tag, entityUri, globalSearchRequestOptions]);\n\n const {isLoading, total, entities} = useTag({tag, entityUri, page, rowsPerPage});\n const refScrollBlock = useRef(null);\n\n useEffect(() => {\n if (refScrollBlock.current) {\n refScrollBlock.current.scrollTop = 0;\n }\n }, [entities]);\n\n const hasPagination = total > ROWS_PER_PAGE_OPTIONS[0];\n\n return (\n <div className={styles.perspectiveView}>\n <TagProfileBand label={tag} />\n <div className={classnames(styles.tagsContainer, {[styles.fullHeight]: hasPagination})}>\n <BasicView className={styles.tagsView}>\n <TagListHeader total={total} />\n <div className={styles.listContainer}>\n {isLoading && <LinearLoadIndicator />}\n {total > 0 && (\n <div className={styles.entitiesList} ref={refScrollBlock}>\n <ProfilesList entities={entities} />\n </div>\n )}\n {hasPagination && (\n <div className={styles.pagination}>\n <BasicTablePagination\n count={total}\n rowsPerPageOptions={ROWS_PER_PAGE_OPTIONS}\n rowsPerPage={rowsPerPage}\n page={page}\n onChangePage={setPage}\n onChangeRowsPerPage={setRowsPerPage}\n />\n </div>\n )}\n </div>\n </BasicView>\n </div>\n </div>\n );\n});\n\nTagPerspectiveView.displayName = 'TagPerspectiveView';\n\nexport {TagPerspectiveView};\n","import {useCallback, useEffect, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {useDispatch} from 'react-redux';\nimport {useSafePromise} from '@reltio/components';\nimport {ui} from '@reltio/mdm-module';\nimport {Entity, getRequestErrorMessage} from '@reltio/mdm-sdk';\nimport {useTagsProvider} from './useTagsProvider';\n\ntype Props = {\n tag: string;\n entityUri: string;\n page: number;\n rowsPerPage: number;\n};\n\nexport const useTag = ({tag, entityUri, page = 0, rowsPerPage = 50}: Props) => {\n const dispatch = useDispatch();\n\n const safeRequestTotalPromise = useSafePromise();\n const safeRequestEntitiesPromise = useSafePromise();\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [total, setTotal] = useState<number>(0);\n const [entities, setEntities] = useState<Entity[]>([]);\n\n const {requestEntities, requestTotal} = useTagsProvider({entityUri, tag});\n\n const onError = useCallback(\n (e) => {\n dispatch(ui.actions.errorSet(getRequestErrorMessage(e, i18n.text('Something went wrong'))));\n setTotal(0);\n },\n [dispatch]\n );\n\n useEffect(() => {\n safeRequestTotalPromise(requestTotal()).then(setTotal).catch(onError);\n }, [requestTotal, safeRequestTotalPromise, onError]);\n\n useEffect(() => {\n setIsLoading(true);\n safeRequestEntitiesPromise(requestEntities(rowsPerPage, page * rowsPerPage))\n .then(setEntities)\n .catch(onError)\n .finally(() => setIsLoading(false));\n }, [page, rowsPerPage, requestEntities, safeRequestEntitiesPromise, onError]);\n\n return {isLoading, total, entities};\n};\n","import React from 'react';\nimport {identity} from 'ramda';\nimport createGenerateClassName from '@mui/styles/createGenerateClassName';\nimport StylesProvider from '@mui/styles/StylesProvider';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {ErrorPopup, ViewIdContext} from '@reltio/components';\nimport {TagPerspectiveConfig} from '@reltio/mdm-sdk';\nimport TagPerspectiveView from '../components/TagPerspectiveView';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'tagPerspective',\n disableGlobal: true\n});\n\ntype Props = {\n config: TagPerspectiveConfig;\n tag?: string;\n entityUri?: string;\n onResize?: (width: number, height: number) => void;\n};\n\nconst TagPerspective = ({config, tag, entityUri, onResize = identity}: Props) => {\n return (\n <ViewIdContext.Provider value={config.id}>\n <StylesProvider generateClassName={generateClassName}>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize(Math.floor(width), Math.floor(height))}\n />\n {config && <TagPerspectiveView tag={tag} entityUri={entityUri} />}\n <ErrorPopup showErrorFromStore={true} />\n </StylesProvider>\n </ViewIdContext.Provider>\n );\n};\n\nexport default TagPerspective;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n actionsWrapper: {\n display: 'flex',\n '& button + button': {\n width: '88px',\n marginLeft: '8px'\n }\n }\n}));\n","import React, {useContext, useMemo} from 'react';\nimport {ProfileBand, TaskActionButtons, WorkflowTasksContext} from '@reltio/components';\nimport {useSelector} from 'react-redux';\nimport {Entity, getEntityUriFromDCRUri} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {useStyles} from './styles';\n\nexport const DCRProfileBand = () => {\n const styles = useStyles();\n\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n const {tasks} = useContext(WorkflowTasksContext);\n const entityTask = useMemo(() => {\n return tasks?.find((task) => task.objectURIs.includes(getEntityUriFromDCRUri(entity.uri)));\n }, [entity.uri, tasks]);\n\n return (\n <ProfileBand entity={entity}>\n <div className={styles.actionsWrapper}>{entityTask && <TaskActionButtons task={entityTask} />}</div>\n </ProfileBand>\n );\n};\n","import {useWorkflowTasks as useCommonWorkflowTasks} from '@reltio/components';\nimport mdmModule, {ui} from '@reltio/mdm-module';\nimport {getEntityUriFromDCRUri} from '@reltio/mdm-sdk';\nimport {useCallback, useMemo} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nexport const useWorkflowTasks = (workflowConfig: Parameters<typeof useCommonWorkflowTasks>[0]) => {\n const dispatch = useDispatch();\n const entityUri: string = useSelector(mdmModule.selectors.getEntityUri);\n const commonWorkflowTasks = useCommonWorkflowTasks(workflowConfig);\n\n const actionSuccessHandler = useCallback(\n (action: string) => {\n if (action === 'Reject') {\n dispatch(ui.actions.openPerspective({perspectiveId: null, viewId: null}));\n }\n if (action === 'Approve') {\n dispatch(ui.actions.openEntity({uri: getEntityUriFromDCRUri(entityUri), viewId: null}));\n }\n },\n [dispatch, entityUri]\n );\n\n return useMemo(\n () => ({\n ...commonWorkflowTasks,\n onActionSuccess: actionSuccessHandler\n }),\n [commonWorkflowTasks, actionSuccessHandler]\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n perspectiveView: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: theme.palette.background.default\n },\n perspectiveContainer: {\n display: 'flex',\n flexGrow: 1,\n overflow: 'hidden'\n },\n attributesWrapper: {\n margin: '15px',\n flexGrow: 1,\n overflowY: 'auto',\n backgroundColor: '#FAFAFA'\n },\n contentWrapper: {\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n flexGrow: 1\n }\n}));\n","import React, {memo, useContext, useEffect, useMemo} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {Entity} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {\n AttributesView,\n EMPTY_STATE_ICONS,\n EMPTY_STATE_VARIANTS,\n EmptyState,\n FeaturesContext,\n LinearLoadIndicator,\n WorkflowTasksContext\n} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {DCRProfileBand} from './components/DCRProfileBand/DCRProfileBand';\nimport {useWorkflowTasks} from './hooks/useWorkflowTasks';\nimport {ProfilePerspectiveResizablePanes} from '../ProfilePerspectiveResizablePanes/ProfilePerspectiveResizablePanes';\n\nimport {useStyles} from './styles';\n\nconst workflowConfig = {processTypes: ['dataChangeRequestReview']};\nconst perspectiveId = 'dcrCard';\n\nexport const DCRReviewPerspectiveView = memo(() => {\n const styles = useStyles();\n const dispatch = useDispatch();\n\n const workflowTasks = useWorkflowTasks(workflowConfig);\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n\n const featuresContext = useContext(FeaturesContext);\n const showDescription = useSelector(mdmModule.selectors.getShowAttributeDescription);\n const features = useMemo(() => ({...featuresContext, showDescription}), [featuresContext, showDescription]);\n\n useEffect(() => {\n dispatch(\n profile.sidePanelViews.actions.sidePanelViewsLoaded([\n {\n id: 'common',\n views: [\n {\n point: 'com.reltio.plugins.ui.view',\n id: 'com.reltio.plugins.entity.side.WorkflowsView',\n class: 'com.reltio.plugins.entity.side.WorkflowsView'\n }\n ]\n }\n ])\n );\n }, [dispatch]);\n\n const isLoaded = !workflowTasks.loading && !!entity.uri;\n\n return (\n <FeaturesContext.Provider value={features}>\n <WorkflowTasksContext.Provider value={workflowTasks}>\n <div className={styles.perspectiveView}>\n {!isLoaded && <LinearLoadIndicator />}\n <div className={styles.perspectiveContainer}>\n {isLoaded ? (\n <ProfilePerspectiveResizablePanes hideHistory={true} perspectiveId={perspectiveId}>\n <div className={styles.contentWrapper}>\n <DCRProfileBand />\n <div className={styles.attributesWrapper}>\n <AttributesView />\n </div>\n </div>\n </ProfilePerspectiveResizablePanes>\n ) : (\n <EmptyState\n LogoRenderer={EMPTY_STATE_ICONS.NO_DATA}\n text={i18n.text('No data to display.')}\n variant={EMPTY_STATE_VARIANTS.embedded}\n />\n )}\n </div>\n </div>\n </WorkflowTasksContext.Provider>\n </FeaturesContext.Provider>\n );\n});\n\nDCRReviewPerspectiveView.displayName = 'DCRReviewPerspectiveView';\n","import React from 'react';\nimport {identity} from 'ramda';\nimport createGenerateClassName from '@mui/styles/createGenerateClassName';\nimport StylesProvider from '@mui/styles/StylesProvider';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {ErrorPopup, ViewIdContext} from '@reltio/components';\nimport {DCRReviewPerspectiveConfig} from '@reltio/mdm-sdk';\nimport {AdapterMoment} from '@mui/x-date-pickers/AdapterMoment';\nimport {LocalizationProvider} from '@mui/x-date-pickers/LocalizationProvider';\nimport DCRReviewPerspectiveView from '../components/DCRReviewPerspectiveView';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'dcrReviewPerspective',\n disableGlobal: true,\n seed: 'dcr'\n});\n\ntype Props = {\n config: DCRReviewPerspectiveConfig;\n onResize?: (width: number, height: number) => void;\n};\n\nconst DCRReviewPerspective = ({config, onResize = identity}: Props) => {\n return (\n <ViewIdContext.Provider value={config.id}>\n <StylesProvider generateClassName={generateClassName}>\n <LocalizationProvider dateAdapter={AdapterMoment}>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize(Math.floor(width), Math.floor(height))}\n />\n <DCRReviewPerspectiveView />\n <ErrorPopup showErrorFromStore={true} />\n </LocalizationProvider>\n </StylesProvider>\n </ViewIdContext.Provider>\n );\n};\n\nexport default DCRReviewPerspective;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n addButton: {\n marginLeft: '12px',\n padding: '9px 16px 9px 12px',\n backgroundColor: 'rgba(98, 2, 238, 0)'\n },\n label: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n }\n});\n","import AddIcon from '@mui/icons-material/Add';\nimport Button from '@mui/material/Button';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport i18n from 'ui-i18n';\nimport {useStyles} from './styles';\n\nconst AddRelationButton = ({onClick}) => {\n const styles = useStyles();\n return (\n <Button color=\"primary\" className={styles.addButton} onClick={onClick}>\n <AddIcon classes={{root: styles.icon}} />\n <div className={styles.label}>{i18n.text('Add')}</div>\n </Button>\n );\n};\n\nAddRelationButton.propTypes = {\n onClick: PropTypes.func\n};\n\nexport default AddRelationButton;\n","import {makeStyles} from '@mui/styles';\n\nconst removedStyle = {\n textDecoration: 'line-through',\n color: 'rgba(0,0,0,.54)'\n};\n\nconst inactiveStyle = {\n color: 'rgba(0,0,0,.54)'\n};\n\nexport const useStyles = makeStyles((theme) => ({\n headCell: {\n display: 'flex',\n alignItems: 'center',\n height: '100%',\n fontSize: '12px'\n },\n entityCell: {\n display: 'flex',\n alignItems: 'center',\n height: '100%'\n },\n entityLabel: {\n fontSize: '15px',\n color: theme.palette.primary.main,\n cursor: 'pointer',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n '$row-cell--removed &': removedStyle,\n '$row-cell--inactive &': inactiveStyle\n },\n entityAvatar: {\n transform: 'scale(0.7)',\n margin: '0 10px'\n },\n rowCell: {\n fontSize: '13px',\n overflow: 'hidden'\n },\n description: {\n marginLeft: '-22px'\n },\n 'row-cell--sorted': {\n color: 'rgba(0,0,0,0.87)'\n },\n 'row-cell--removed': {\n pointerEvents: 'none',\n '& > :not($entityCell)': removedStyle\n },\n 'row-cell--inactive': inactiveStyle\n}));\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classnames from 'classnames';\nimport {checkRemoved, isActiveObject} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\nconst RowCellRenderer = ({cell, CellValueRenderer, rowValue: {connection}, isSorted, ...otherProps}) => {\n const styles = useStyles();\n const isRemoved = checkRemoved(connection);\n const isActive = isActiveObject(connection.relation) && isActiveObject(connection.entity);\n\n return (\n <div\n className={classnames(\n {\n [styles['row-cell--sorted']]: isSorted,\n [styles['row-cell--removed']]: isRemoved,\n [styles['row-cell--inactive']]: !isActive\n },\n styles.rowCell\n )}\n >\n {cell.values.map((value, index) => (\n <CellValueRenderer key={index} value={value} {...otherProps} />\n ))}\n </div>\n );\n};\n\nRowCellRenderer.propTypes = {\n rowValue: PropTypes.object,\n cell: PropTypes.object,\n CellValueRenderer: PropTypes.elementType,\n isSorted: PropTypes.bool\n};\n\nexport default RowCellRenderer;\n","import PropTypes from 'prop-types';\nimport React, {useContext} from 'react';\nimport {ui} from '@reltio/mdm-module';\nimport {always, pipe} from 'ramda';\nimport {useDispatch} from 'react-redux';\nimport {useStyles} from './styles';\nimport {EntityTypeType, getEntityUriForLink, getLabel} from '@reltio/mdm-sdk';\nimport {EntityTypeIcon, ExpandedValueTooltip, ViewIdContext} from '@reltio/components';\n\nconst EntityProfileRenderer = ({value: {entityType, entity}}) => {\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n const styles = useStyles();\n const entityLabel = getLabel(entity.entityLabel);\n const preparedUri = getEntityUriForLink({uri: entity.entityUri, dataTenant: entity.dataTenant});\n return (\n <div className={styles.entityCell}>\n <EntityTypeIcon className={styles.entityAvatar} entityType={entityType} />\n <ExpandedValueTooltip value={entityLabel}>\n <span\n className={styles.entityLabel}\n onClick={pipe(always({uri: preparedUri, viewId}), ui.actions.openEntity, dispatch)}\n >\n {entityLabel}\n </span>\n </ExpandedValueTooltip>\n </div>\n );\n};\n\nEntityProfileRenderer.propTypes = {\n value: PropTypes.shape({\n entity: PropTypes.shape({\n entityUri: PropTypes.string,\n entityLabel: PropTypes.string\n }),\n entityType: EntityTypeType\n })\n};\n\nexport default EntityProfileRenderer;\n","import React from 'react';\n\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport {withFilterAtBottom, DescriptionIcon} from '@reltio/components';\nimport {useStyles} from './styles';\n\nconst HeadCellRenderer = (props) => {\n const styles = useStyles();\n const {description} = props?.headCellData || {};\n\n return (\n <div className={styles.headCell}>\n <DefaultHeadCellRenderer {...props} />\n <DescriptionIcon description={description} className={styles.description} />\n </div>\n );\n};\n\nexport default withFilterAtBottom(HeadCellRenderer);\n","import {getOvAttributeValuesByPath, getReadableAttributesList} from '@reltio/mdm-sdk';\nimport {chain, find, map, path, pipe, propEq, uniq} from 'ramda';\n\nconst getRelationTypes = pipe(\n map((rel) => rel.uri || rel),\n uniq\n);\n\nconst getRelationsAttributesFromMetadata = ({content: {inRelations = [], outRelations = []}}, {relationTypes}) =>\n pipe(\n getRelationTypes,\n chain((relationType) => pipe(find(propEq('uri', relationType)), getReadableAttributesList)(relationTypes))\n )([...inRelations, ...outRelations]);\n\nconst getRelationAttributeValues = (attrPath, relation) =>\n pipe(path(['object', 'attributes']), getOvAttributeValuesByPath(attrPath))(relation);\n\nexport {getRelationsAttributesFromMetadata, getRelationAttributeValues};\n","import EntityProfileRenderer from '../cell-renderers/EntityProfileRenderer';\nimport HeadCellRenderer from '../cell-renderers/HeadCellRenderer';\nimport {DefaultCellValueRenderer} from '@reltio/components';\nimport {assoc, map, pipe, reduce, slice, split} from 'ramda';\nimport {getEntityType, getRelationTypeLabelFromMetadata} from '@reltio/mdm-sdk';\nimport {getRelationAttributeValues} from '../../../core/relations';\n\nconst getAttrPathFromColumnId = pipe(split('.'), slice(2, Infinity));\n\nconst getRowValueByColumnId = (columnId, {entity, relation}, metadata) => {\n switch (columnId) {\n case 'entity.label':\n return {entity, entityType: getEntityType(metadata, entity.entityType)};\n case 'relation.label':\n return relation.relationLabel || getRelationTypeLabelFromMetadata(metadata, relation.relationType);\n case 'relation.activeness.startDate':\n return relation.startDate;\n case 'relation.activeness.endDate':\n return relation.endDate;\n default: {\n const attrPath = getAttrPathFromColumnId(columnId);\n return getRelationAttributeValues(attrPath, relation);\n }\n }\n};\n\nconst getBasicTableRowsData = (connections, columnsData, metadata) =>\n connections.map((connection) =>\n pipe(\n reduce((acc, {id}) => assoc(id, getRowValueByColumnId(id, connection, metadata), acc), {}),\n assoc('connection', connection)\n )(columnsData)\n );\n\nconst getNestedPathByColumnId = (columnId) => {\n if (columnId.startsWith('relation.attributes')) {\n const attrPath = getAttrPathFromColumnId(columnId);\n return attrPath.length > 1 ? attrPath.slice(0, -1) : null;\n } else {\n return null;\n }\n};\n\nconst getCellValueRenderer = (columnId) => {\n switch (columnId) {\n case 'entity.label':\n return EntityProfileRenderer;\n default:\n return DefaultCellValueRenderer;\n }\n};\n\nconst getColumnDataByColumnId = (columnData) => ({\n ...columnData,\n sortable: true,\n resizable: true,\n nestedPath: getNestedPathByColumnId(columnData.id),\n headCellRenderer: HeadCellRenderer,\n rowCellValueRenderer: getCellValueRenderer(columnData.id)\n});\n\nconst getBasicTableColumnsData = map(getColumnDataByColumnId);\n\nexport {getBasicTableRowsData, getBasicTableColumnsData};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n tableContainer: {\n display: 'flex',\n fontFamily: 'Roboto',\n color: 'rgba(0,0,0,0.54)'\n },\n\n emptyData: {\n marginBottom: '30px'\n },\n\n '@global div[role=tooltip]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n },\n\n '@global div[role=presentation]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n },\n 'row-cell__buttons-container': {\n position: 'absolute'\n },\n 'row-cell__buttons-wrapper': {\n display: 'flex',\n paddingLeft: '10px',\n '& > button': {\n marginLeft: '-10px',\n transform: 'scale(0.9)'\n }\n }\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Tooltip from '@mui/material/Tooltip';\nimport IconButton from '@mui/material/IconButton';\nimport EditIcon from '@mui/icons-material/Edit';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport i18n from 'ui-i18n';\n\nexport const EditButtons = ({canUpdate, canRemove, handleEditRelation, handleRemoveRelation}) => (\n <>\n {canUpdate && (\n <Tooltip title={i18n.text('Edit')}>\n <IconButton onClick={handleEditRelation} size=\"large\">\n <EditIcon />\n </IconButton>\n </Tooltip>\n )}\n {canRemove && (\n <Tooltip title={i18n.text('Remove')}>\n <IconButton onClick={handleRemoveRelation} size=\"large\">\n <DeleteIcon />\n </IconButton>\n </Tooltip>\n )}\n </>\n);\nEditButtons.propTypes = {\n canUpdate: PropTypes.bool,\n canRemove: PropTypes.bool,\n handleEditRelation: PropTypes.func,\n handleRemoveRelation: PropTypes.func\n};\n\nexport default EditButtons;\n","import PropTypes from 'prop-types';\nimport React, {useCallback, useMemo, useState} from 'react';\nimport RowCellRenderer from './cell-renderers/RowCellRenderer';\nimport {BasicTable, ColumnFilterType, ColumnsDataType, SortingType} from '@reltio/components';\nimport {getBasicTableColumnsData, getBasicTableRowsData} from './helpers/dataHelpers';\nimport {useStyles} from './styles';\nimport {ConnectionType, MetadataType} from '@reltio/mdm-sdk';\nimport {path} from 'ramda';\nimport {checkRelationPermission} from './helpers/buttonsHelper';\nimport EditButtons from './EditButtons';\n\nconst MAX_HEIGHT = 477;\n\nconst RelationsTable = ({\n mode,\n columnsData,\n connections,\n metadata,\n sorting,\n onSort,\n filters,\n onFilter,\n onEditRelation,\n onRemoveRelation,\n basicTableRef,\n allowOnlyCreateNew\n}) => {\n const tableRowsData = useMemo(\n () => getBasicTableRowsData(connections, columnsData, metadata),\n [connections, columnsData, metadata]\n );\n const tableColumnsData = useMemo(() => getBasicTableColumnsData(columnsData), [columnsData]);\n\n const styles = useStyles();\n\n const renderRowCell = useCallback(\n (props) => (\n <RowCellRenderer\n {...props}\n isSorted={!!sorting && sorting.field === props.columnData.id} /* eslint-disable-line react/prop-types */\n />\n ),\n [sorting]\n );\n\n const [hoverRowIndex, setHoverRowIndex] = useState(null);\n const {canRemove, canUpdate} = checkRelationPermission({\n mode,\n onRemoveRelation,\n onEditRelation,\n metadata,\n allowOnlyCreateNew,\n connection: path([hoverRowIndex, 'connection'], tableRowsData)\n });\n\n const handleOnRowHover = useCallback((rowIndex) => setHoverRowIndex(rowIndex), []);\n const handleEditRelation = useCallback(\n () => onEditRelation(path([hoverRowIndex, 'connection'], tableRowsData)),\n [hoverRowIndex, onEditRelation, tableRowsData]\n );\n const handleRemoveRelation = useCallback(\n () => onRemoveRelation(path([hoverRowIndex, 'connection', 'relation', 'relationUri'], tableRowsData)),\n [hoverRowIndex, onRemoveRelation, tableRowsData]\n );\n\n const hoveredRowRightContent =\n canRemove || canUpdate ? (\n <EditButtons\n handleEditRelation={handleEditRelation}\n handleRemoveRelation={handleRemoveRelation}\n canRemove={canRemove}\n canUpdate={canUpdate}\n />\n ) : undefined;\n return (\n <div className={styles.tableContainer}>\n <BasicTable\n autosizing\n maxHeight={MAX_HEIGHT}\n columnsData={tableColumnsData}\n rowsData={tableRowsData}\n sorting={sorting}\n onSort={onSort}\n filters={filters}\n onFilter={onFilter}\n hoverStateEnabled={true}\n defaultColumnWidth={250}\n defaultColumnMinWidth={200}\n headRowHeight={56}\n renderRowCell={renderRowCell}\n onRowHover={handleOnRowHover}\n hoverRowIndex={hoverRowIndex}\n hoveredRowRightContent={hoveredRowRightContent}\n classes={{\n hoveredRowRightContentWrapper: styles['row-cell__buttons-wrapper'],\n hoveredRowRightContentContainer: styles['row-cell__buttons-container']\n }}\n ref={basicTableRef}\n resizeDebounceDelay={150}\n />\n </div>\n );\n};\n\nRelationsTable.propTypes = {\n mode: PropTypes.string,\n columnsData: ColumnsDataType,\n connections: PropTypes.arrayOf(ConnectionType),\n metadata: MetadataType,\n filters: PropTypes.objectOf(ColumnFilterType),\n onFilter: PropTypes.func,\n sorting: SortingType,\n onSort: PropTypes.func,\n onEditRelation: PropTypes.func,\n onRemoveRelation: PropTypes.func,\n basicTableRef: PropTypes.shape({current: PropTypes.object}),\n allowOnlyCreateNew: PropTypes.bool\n};\n\nexport default RelationsTable;\n","import {profile} from '@reltio/mdm-module';\nimport {checkMetadataForDelete, checkMetadataForUpdate, checkNew, checkRemoved, getRelationType} from '@reltio/mdm-sdk';\n\nconst checkRelationPermission = ({\n metadata,\n mode,\n connection,\n onRemoveRelation,\n onEditRelation,\n allowOnlyCreateNew\n}) => {\n const isNew = checkNew(connection);\n const isEditableMode = profile.mode.selectors.getIsEditableMode(mode);\n if (isEditableMode && connection && (!allowOnlyCreateNew || isNew)) {\n const {\n relation: {relationType}\n } = connection;\n const isRemoved = checkRemoved(connection);\n const relationTypeMetadata = getRelationType(metadata, relationType);\n const canRemove = onRemoveRelation && !isRemoved && checkMetadataForDelete(mode, relationTypeMetadata);\n const canUpdate = onEditRelation && !isRemoved && checkMetadataForUpdate(mode, relationTypeMetadata);\n return {canRemove, canUpdate};\n } else {\n return {canRemove: false, canUpdate: false};\n }\n};\n\nexport {checkRelationPermission};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n popupContent: {\n padding: '19px 23px'\n },\n checkboxControlLabel: {\n fontSize: '0.85rem'\n },\n checkboxControlCheckbox: {\n marginRight: '5px'\n }\n}));\n","import React, {useRef, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport Popover from '@mui/material/Popover';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Checkbox from '@mui/material/Checkbox';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n showInactive: boolean;\n onShowInactiveChange: (value: boolean) => void;\n};\n\nconst MoreButton = ({className, showInactive, onShowInactiveChange}: Props) => {\n const styles = useStyles();\n const buttonRef = useRef();\n const [isOpen, setIsOpen] = useState(false);\n\n const togglePopup = () => setIsOpen((open) => !open);\n\n return (\n <>\n <SmallIconButtonWithTooltip\n className={className}\n ref={buttonRef}\n tooltipTitle={i18n.text('More')}\n icon={MoreVertIcon}\n onClick={togglePopup}\n size=\"L\"\n />\n <Popover\n open={isOpen}\n classes={{paper: styles.popupContent}}\n anchorEl={buttonRef.current}\n onClose={togglePopup}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <FormControlLabel\n classes={{\n label: styles.checkboxControlLabel\n }}\n control={\n <Checkbox\n className={styles.checkboxControlCheckbox}\n checked={showInactive || false}\n onChange={(e) => onShowInactiveChange(e.target.checked)}\n />\n }\n label={i18n.text('Show inactive Relationships')}\n />\n </Popover>\n </>\n );\n};\n\nexport default MoreButton;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n header: {\n padding: '0 4px 0 16px'\n },\n totalCaption: {\n lineHeight: '19px',\n fontSize: '14px',\n letterSpacing: '0.24px',\n color: 'rgba(0,0,0,0.6)',\n flexShrink: 0,\n marginRight: '5px',\n justifyContent: 'flex-start',\n paddingTop: '16px',\n paddingBottom: '13px'\n },\n moreButton: {\n marginLeft: '-6px'\n },\n rightMenuItems: {\n display: 'flex',\n flex: '1 0 auto',\n justifyContent: 'flex-end',\n alignItems: 'center'\n }\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport Typography from '@mui/material/Typography';\nimport {\n FacetViewHeader,\n ColumnsDataType,\n ColumnsSettings,\n FilterButton,\n HideOnShrink,\n VerticalDivider,\n ExpandableSearchInput\n} from '@reltio/components';\nimport MoreButton from './MoreButton/MoreButton';\nimport {useStyles} from './styles';\n\nconst RelationsTableHeader = ({\n title,\n total,\n searchQuery,\n onChangeSearchQuery,\n filtersEnabled,\n onToggleFilters,\n columnsData,\n selectedColumns,\n onChangeColumns,\n showInactive,\n onChangeShowInactive\n}) => {\n const styles = useStyles();\n return (\n <FacetViewHeader title={title} className={styles.header}>\n <HideOnShrink widthToHide={500}>\n <VerticalDivider height={24} margin={16} />\n <Typography className={styles.totalCaption} variant=\"caption\">\n {total > 1\n ? i18n.text('${count} entities', {count: total})\n : i18n.text('${count} entity', {count: total})}\n </Typography>\n </HideOnShrink>\n <div className={styles.rightMenuItems}>\n <ExpandableSearchInput query={searchQuery} onChange={onChangeSearchQuery} />\n <FilterButton enabled={filtersEnabled} onClick={onToggleFilters} />\n <VerticalDivider height={24} margin={4} />\n <ColumnsSettings\n columnsData={columnsData}\n selectedColumns={selectedColumns}\n onChangeColumns={onChangeColumns}\n />\n <MoreButton\n className={styles.moreButton}\n showInactive={showInactive}\n onShowInactiveChange={onChangeShowInactive}\n />\n </div>\n </FacetViewHeader>\n );\n};\n\nRelationsTableHeader.propTypes = {\n title: PropTypes.string,\n total: PropTypes.number,\n columnsData: ColumnsDataType,\n selectedColumns: PropTypes.arrayOf(PropTypes.string),\n onChangeColumns: PropTypes.func,\n searchQuery: PropTypes.string,\n onChangeSearchQuery: PropTypes.func,\n filtersEnabled: PropTypes.bool,\n onToggleFilters: PropTypes.func,\n showInactive: PropTypes.bool,\n onChangeShowInactive: PropTypes.func\n};\n\nexport default RelationsTableHeader;\n","import {basicTableViewState, createStandardAction} from '@reltio/components';\n\nconst CHANGE_SEARCH_QUERY = 'CHANGE_SEARCH_QUERY';\nconst CHANGE_SHOW_INACTIVE = 'CHANGE_SHOW_INACTIVE';\n\nconst actions = {\n ...basicTableViewState.actions,\n changeSearchQuery: createStandardAction(CHANGE_SEARCH_QUERY),\n changeShowInactive: createStandardAction(CHANGE_SHOW_INACTIVE)\n};\n\nconst reducer = (state, action) => {\n switch (action.type) {\n case CHANGE_SEARCH_QUERY:\n return {...state, searchQuery: action.payload, page: 0};\n case CHANGE_SHOW_INACTIVE:\n return {...state, showInactive: action.payload};\n default:\n return basicTableViewState.reducer(state, action);\n }\n};\n\nexport {reducer as default, actions};\n","import {ActivenessAttrTypes, attributeUriToSearchUri, DataTypes, getAttrDataTypeDefinition} from '@reltio/mdm-sdk';\nimport {concat, map, pipe, prop, subtract, uniqBy} from 'ramda';\nimport {getRelationsAttributesFromMetadata} from '../../core/relations';\nimport i18n from 'ui-i18n';\n\nconst ROWS_PER_PAGE_OPTIONS = [10, 25, 50, 100];\nconst getRowsPerPageOptions = (defaultRowsPerPage) =>\n ROWS_PER_PAGE_OPTIONS.filter((option) => option !== defaultRowsPerPage)\n .concat(defaultRowsPerPage)\n .sort(subtract);\n\nconst DEFAULT_COLUMNS_DATA = [\n {\n id: 'entity.label',\n get label() {\n return i18n.text('Entity label');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_STRING\n },\n hideable: false\n },\n {\n id: 'relation.label',\n get label() {\n return i18n.text('Directional label');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_STRING\n }\n },\n {\n id: 'relation.activeness.startDate',\n get label() {\n return i18n.text('Start date');\n },\n dataTypeDefinition: ActivenessAttrTypes.startDate\n },\n {\n id: 'relation.activeness.endDate',\n get label() {\n return i18n.text('End date');\n },\n dataTypeDefinition: ActivenessAttrTypes.endDate\n }\n];\n\nconst getColumnIdFromAttrUri = pipe(attributeUriToSearchUri, concat('relation.'));\n\nconst getColumnsDataFromRelationAttributes = pipe(\n map((attr) => ({\n id: getColumnIdFromAttrUri(attr.uri),\n label: attr.label,\n description: attr.description,\n dataTypeDefinition: getAttrDataTypeDefinition(attr)\n })),\n uniqBy(prop('id'))\n);\n\nconst getColumnsData = pipe(\n getRelationsAttributesFromMetadata,\n getColumnsDataFromRelationAttributes,\n concat(DEFAULT_COLUMNS_DATA)\n);\n\nexport {getRowsPerPageOptions, DEFAULT_COLUMNS_DATA, getColumnsData};\n","import {buildColumnsFilter} from '@reltio/components';\nimport {FilterBuilder, filterValueToQueryStringWithQuotes, Maybe} from '@reltio/mdm-sdk';\n\nexport const buildRelationsFilter = (searchQuery, filters, columnsData) => {\n const queryClause = Maybe.fromFalsy(searchQuery)\n .map(filterValueToQueryStringWithQuotes)\n .map(\n (queryString) =>\n `containsWordStartingWith(entity.label,${queryString})` +\n ' or ' +\n `containsWordStartingWith(relation.label,${queryString})`\n )\n .orSome('');\n\n const filtersClause = buildColumnsFilter(columnsData, filters);\n\n return new FilterBuilder().addClause(queryClause).addClause(filtersClause).build();\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n addArea: {\n display: 'flex',\n alignItems: 'center',\n height: '48px',\n borderBottom: '1px solid rgba(0, 0, 0, 0.12)'\n },\n noData: {\n fontSize: '13px',\n paddingLeft: '20px',\n marginBottom: '20px',\n marginTop: '10px',\n color: 'rgba(0,0,0,0.54)'\n }\n});\n","import React, {useCallback, useContext, useEffect, useMemo, useReducer, useRef} from 'react';\nimport AddRelationButton from './AddRelationButton/AddRelationButton';\nimport RelationsTable from './RelationsTable/RelationsTable';\nimport RelationsTableHeader from './RelationsTableHeader/RelationsTableHeader';\nimport reducer, {actions} from './stateReducer';\nimport {\n BasicTablePagination,\n BasicView,\n LinearLoadIndicator,\n ProfilePerspectiveViewContext,\n useConfigPermissions,\n useRelationsLoader,\n RelationEditor,\n FeaturesContext,\n useExpandInvalidRelations\n} from '@reltio/components';\nimport {DEFAULT_COLUMNS_DATA, getColumnsData, getRowsPerPageOptions} from './helpers/tableHelpers';\nimport {pipe, pluck, propEq} from 'ramda';\nimport {buildRelationsFilter} from './helpers/relationsHelpers';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {\n isTempUri,\n createNewConnectionWithDefaultRelationType,\n RelationsViewConfig,\n Entity,\n Metadata,\n Connection,\n Mode,\n ActivityFilter,\n getRelationUriFromConnection,\n getEntityUriFromConnection\n} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\nimport Typography from '@mui/material/Typography';\nimport i18n from 'ui-i18n';\nimport {Dispatch} from 'redux';\nimport {useSelector} from 'react-redux';\n\nconst DEFAULT_ROWS_PER_PAGE = 15;\nconst DEFAULT_SORT_ORDER = 'asc';\nconst DEFAULT_COLUMNS_TO_SHOW = pluck('id', DEFAULT_COLUMNS_DATA);\nconst [DEFAULT_SORT_FIELD] = DEFAULT_COLUMNS_TO_SHOW;\nconst DEFAULT_SHOW_INACTIVE = false;\n\ntype Props = {\n config: RelationsViewConfig;\n entity: Entity;\n metadata: Metadata;\n connections: Connection[];\n total: number;\n mode: Mode;\n className?: string;\n relationToAdd: Connection;\n relationsToEdit: Connection[];\n checkIfCanAddRelations: boolean;\n dispatch: Dispatch;\n readOnlyMode?: boolean;\n};\nconst RelationsTableView = ({\n className,\n config,\n entity,\n metadata,\n connections = [],\n total = 0,\n mode: modeProp,\n relationToAdd,\n relationsToEdit = [],\n checkIfCanAddRelations,\n dispatch: reduxDispatch,\n readOnlyMode\n}: Props) => {\n const initialState = {\n searchQuery: '',\n filters: null,\n visibleColumns: DEFAULT_COLUMNS_TO_SHOW,\n sorting: {\n order: config.sortOrder || DEFAULT_SORT_ORDER,\n field: config.sortColumn || DEFAULT_SORT_FIELD\n },\n page: 0,\n rowsPerPage: config.max || DEFAULT_ROWS_PER_PAGE,\n showInactive: DEFAULT_SHOW_INACTIVE\n };\n\n const styles = useStyles();\n const isProfilePerspectiveView = useContext(ProfilePerspectiveViewContext);\n const mode = isProfilePerspectiveView ? modeProp : Mode.Viewing;\n\n const [state, dispatch] = useReducer(reducer, initialState);\n const changeSearchQuery = pipe(actions.changeSearchQuery, dispatch);\n const changeShowInactive = pipe(actions.changeShowInactive, dispatch);\n const clearSearchQuery = () => {\n changeSearchQuery('');\n };\n const featuresContext = useContext(FeaturesContext);\n const showDescription = useSelector(mdmModule.selectors.getShowAttributeDescription);\n const features = useMemo(() => ({...featuresContext, showDescription}), [featuresContext, showDescription]);\n useEffect(clearSearchQuery, [entity?.uri]); //eslint-disable-line react-hooks/exhaustive-deps\n\n const {visibleColumns, searchQuery, filters, sorting, page, rowsPerPage, showInactive} = state;\n\n const allColumnsData = useMemo(() => getColumnsData(config, metadata), [config, metadata]);\n\n const visibleColumnsData = useMemo(\n () => visibleColumns.map((id) => allColumnsData.find(propEq('id', id))),\n [visibleColumns, allColumnsData]\n );\n\n const filter = useMemo(\n () => buildRelationsFilter(searchQuery, filters, visibleColumnsData),\n [filters, searchQuery] // eslint-disable-line\n );\n\n const {isLoading} = useRelationsLoader({\n sorting,\n filter,\n page,\n rowsPerPage,\n config,\n entity,\n relationActivityFilter: showInactive ? ActivityFilter.ALL : ActivityFilter.ACTIVE_ONLY,\n mode: modeProp\n });\n\n const rowsPerPageOptions = useMemo(() => getRowsPerPageOptions(initialState.rowsPerPage), []); // eslint-disable-line\n const {handleRowsPerPageChange, handlePageChange} = useMemo(\n () => ({\n handleRowsPerPageChange: pipe(actions.changeRowsPerPage, dispatch),\n handlePageChange: pipe(actions.changePage, dispatch)\n }),\n []\n );\n\n const onAddRelation = useCallback(() => {\n const newConnection = createNewConnectionWithDefaultRelationType({\n config,\n mode,\n metadata,\n parentEntityUri: undefined\n });\n pipe(profile.relations.actions.openRelationEditor(config.id), reduxDispatch)(newConnection);\n }, [config, mode, metadata, reduxDispatch]);\n\n const onRemoveRelation = useCallback(\n (relationUri) => {\n reduxDispatch(profile.relations.actions.closeRelationEditor(config.id, relationUri));\n reduxDispatch(profile.relations.actions.removeRelation(config.id, relationUri));\n const connectionToRemove = connections.find(\n (connection) => getRelationUriFromConnection(connection) === relationUri\n );\n const entityUri = getEntityUriFromConnection(connectionToRemove);\n if (isTempUri(entityUri)) {\n reduxDispatch(profile.modifiedEntities.actions.entityDeleted(entityUri));\n }\n },\n [config, connections, reduxDispatch]\n );\n\n const canAddRelations = entity && checkIfCanAddRelations && !readOnlyMode;\n const openedRelations = relationToAdd ? [relationToAdd, ...relationsToEdit] : relationsToEdit;\n const {canUpdate, canDelete} = useConfigPermissions();\n const canEditRelations = canUpdate(config) && !readOnlyMode;\n const canRemoveRelations = canDelete(config) && !readOnlyMode;\n const basicTableRef = useRef(null);\n useExpandInvalidRelations(config.id);\n return (\n <FeaturesContext.Provider value={features}>\n <BasicView className={className}>\n <RelationsTableHeader\n title={config.caption}\n total={total}\n columnsData={allColumnsData}\n selectedColumns={visibleColumns}\n onChangeColumns={pipe(actions.changeColumns, dispatch)}\n searchQuery={searchQuery}\n onChangeSearchQuery={changeSearchQuery}\n filtersEnabled={!!filters}\n onToggleFilters={pipe(actions.toggleFilters, dispatch)}\n showInactive={showInactive}\n onChangeShowInactive={changeShowInactive}\n />\n {canAddRelations && (\n <div className={styles.addArea}>\n <AddRelationButton onClick={onAddRelation} />\n </div>\n )}\n {openedRelations.map((relation) => (\n <RelationEditor\n key={getRelationUriFromConnection(relation)}\n connection={relation}\n config={config}\n mode={mode}\n metadata={metadata}\n />\n ))}\n <div style={{position: 'relative'}}>\n <RelationsTable\n mode={mode}\n columnsData={visibleColumnsData}\n connections={connections}\n metadata={metadata}\n filters={filters}\n onFilter={pipe(actions.changeFilter, dispatch)}\n sorting={sorting}\n onSort={pipe(actions.toggleSort, dispatch)}\n onEditRelation={\n canEditRelations\n ? pipe(profile.relations.actions.openRelationEditor(config.id), reduxDispatch)\n : null\n }\n onRemoveRelation={canRemoveRelations ? onRemoveRelation : null}\n basicTableRef={basicTableRef}\n allowOnlyCreateNew={config.allowOnlyCreateNew}\n />\n {connections.length ? (\n <BasicTablePagination\n count={total}\n rowsPerPageOptions={rowsPerPageOptions}\n rowsPerPage={rowsPerPage}\n onChangeRowsPerPage={handleRowsPerPageChange}\n page={page}\n onChangePage={handlePageChange}\n basicTableRef={basicTableRef}\n />\n ) : (\n <Typography className={styles.noData}>{i18n.text('No data found')}</Typography>\n )}\n {isLoading && <LinearLoadIndicator />}\n </div>\n </BasicView>\n </FeaturesContext.Provider>\n );\n};\n\nexport default RelationsTableView;\n","import {memoizeWith} from 'ramda';\nimport {connect} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {parseRelationsConfig} from '@reltio/mdm-sdk';\nimport RelationsTableView from './RelationsTableView';\n\nconst mapStateToProps = (state, ownProps) => {\n const {config} = ownProps;\n\n return {\n connections: mdm.selectors.getConnectionsWithDraftsByViewId(state, config.id),\n total: mdm.selectors.getTotalByViewId(state, config.id),\n entity: mdm.selectors.getEntity(state),\n metadata: mdm.selectors.getMetadata(state),\n mode: mdm.selectors.getMode(state),\n relationToAdd: mdm.selectors.getRelationToAddByViewId(state, config.id),\n relationsToEdit: mdm.selectors.getRelationsToEditByViewId(state, config.id),\n checkIfCanAddRelations: mdm.selectors.getCheckIfCanAddRelations(state, config.content)\n };\n};\n\nconst memoizedParseRelationsConfig = memoizeWith((metadata, config) => config.id, parseRelationsConfig);\n\nconst mergeProps = (stateProps, dispatchProps, ownProps) => ({\n ...stateProps,\n ...dispatchProps,\n ...ownProps,\n config: memoizedParseRelationsConfig(stateProps.metadata, ownProps.config)\n});\n\nexport default connect(mapStateToProps, undefined, mergeProps)(RelationsTableView);\n","import {AdapterMoment} from '@mui/x-date-pickers/AdapterMoment';\nimport React from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport RelationsTableView from './RelationsTableView';\nimport StylesProvider from '@mui/styles/StylesProvider';\nimport createGenerateClassName from '@mui/styles/createGenerateClassName';\n\nimport {LocalizationProvider} from '@mui/x-date-pickers/LocalizationProvider';\nimport {RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {identity} from 'ramda';\nimport {ErrorPopup, ViewIdContext} from '@reltio/components';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'relTable',\n disableGlobal: true,\n seed: 'relT'\n});\n\ntype Props = {\n config: RelationsViewConfig;\n onResize?: (width: number, height: number) => void;\n className?: string;\n readOnlyMode?: boolean;\n};\n\nconst StandaloneRelationsTableView = ({config, onResize = identity, className, readOnlyMode}: Props) => (\n <ViewIdContext.Provider value={config.id}>\n <StylesProvider generateClassName={generateClassName}>\n <LocalizationProvider dateAdapter={AdapterMoment}>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize(Math.floor(width), Math.floor(height))}\n />\n {config && <RelationsTableView config={config} className={className} readOnlyMode={readOnlyMode} />}\n <ErrorPopup />\n </LocalizationProvider>\n </StylesProvider>\n </ViewIdContext.Provider>\n);\n\nexport default StandaloneRelationsTableView;\n"],"names":["_interopRequireDefault","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","SingleAttributeContext","React","displayName","useStyles","makeStyles","triggerButton","minWidth","color","width","popupContent","paddingTop","paddingBottom","paddingLeft","paddingRight","maxWidth","checkboxControlRoot","marginTop","marginLeft","checkboxControlLabel","fontSize","checkboxControlCheckbox","marginRight","className","styles","buttonRef","useRef","isOpen","setIsOpen","useState","showInactive","toggleShowInactive","useContext","togglePopup","open","Button","ref","classes","root","classnames","onClick","Popover","paper","anchorEl","current","onClose","anchorOrigin","vertical","horizontal","transformOrigin","FormControlLabel","label","control","Checkbox","checked","onChange","e","target","i18n","padding","rightMenuItems","display","flex","justifyContent","alignItems","totalCaption","lineHeight","letterSpacing","flexShrink","ovIcon","SingleAttributeHeader","caption","totalVisibleValues","showInactiveValuesMenu","isEditableMode","searchQuery","setSearchQuery","setPage","totalNonVisibleValues","nonVisibleValues","attributeType","showRequiredMark","required","FacetViewHeader","title","RequiredMark","DescriptionIcon","description","HideOnShrink","widthToHide","VerticalDivider","height","margin","Typography","variant","OvIcon","nonOvTotal","nonOvValues","ExpandableSearchInput","query","getAttributeNameFromAttributeUri","getLastUriPart","search","value","Object","values","some","utils","String","theme","moreButton","backgroundColor","marginBottom","buttonLabel","fontWeight","icon","divider","borderColor","ovFalse","inactive","noData","palette","text","secondary","emptyArray","withContext","ScrollToElementContext","contextValue","parentUri","element","type","highlightedError","isHighlightedErrorType","isAttributeTypeError","uri","noDataText","attributeTypeUri","isRequired","cardinality","name","dispatch","useDispatch","viewId","ViewIdContext","entity","useSelector","mdmModule","modifiedEntity","state","errors","errorMessage","getAttributePagerActiveTypeErrorMessage","mode","attributeSource","getAttributeSource","entityValuesUris","pipe","pathOr","map","prop","modifiedEntityValues","modifiedEntityValuesUris","showEmptyEditors","isTempUri","emptyEditorValue","useMemo","createNewAttribute","omit","errorClassName","useScrollToAttributeError","isSimple","isModifiedEntityValuesEmpty","isEmptyValue","showEmpty","newValues","filter","onAddAttributes","useCallback","params","profile","param","onChangeAttribute","onDeleteAttribute","onDeactivateError","onAdd","createAttribute","isComplexAttribute","attributes","canCreate","checkCanCreateAttribute","commonProps","crosswalks","showNonOv","isEmptyAttributeList","length","isEmpty","CardinalityMessage","ErrorMessage","message","Add","idx","key","attributeValue","lazy","ownError","getAttributeOwnError","isEmptyEditor","Divider","originalValue","modifiedEntityValue","find","propEq","deleted","includes","edited","value1","value2","cleanser","is","over","lensPath","cleanAttributesWith","valueTransformer","unless","isOv","deleteEmptyComplex","identity","equals","areValuesEqual","cond","always","simpleAttribute","SingleAttributeReadableContent","style","flexDirection","content","position","overflow","flexGrow","pagination","DEFAULT_ROWS_PER_PAGE","SingleAttributeView","config","max","page","isLoading","hasPaging","entityUri","mdm","isViewMode","pivotingAttributes","hasValues","PivotingAttributeContext","BasicView","Box","LinearLoadIndicator","props","renderContent","BasicTablePagination","count","rowsPerPage","rowsPerPageOptions","onChangePage","useSingleAttributeLoader","attributeUri","metadata","setValues","paging","setPaging","setIsLoading","safePromise","useSafePromise","attributeValuesRef","apiPath","tenant","isHistoryModeEnabled","diff","attributeTypeName","attributeTypeSource","findAttributeValues","findAttributeTypeByUri","globalFilter","loadAttributes","isReadableAttribute","isFirstLevelAttributeUri","rest","getRequest","defaultMaxValues","offset","isDataTenantEntity","async","Infinity","findAttributeValuesByTypeUri","ovValues","slice","totalOvValues","totalValues","getPagedLocalEntity","getPagedEntity","options","undefined","then","response","path","loadedValue","catch","error","console","ui","getRequestErrorMessage","finally","useEffect","useDidUpdateEffect","partitionByOv","partition","totalProp","ifElse","has","RelationsViewStateContext","button","sortControls","sortSelectorRoot","sortSelectorMenuItem","sortOrderButton","FilterButton","sortOrder","toggleSortOrder","sortOption","changeSortOption","sortOptions","hasSortOptions","isAsc","DropDownEditor","entries","TextFieldProps","menuItem","fullWidth","disableUnderline","MenuProps","SmallIconButton","tooltipTitle","ArrowUpwardIcon","ArrowDownwardIcon","size","header","ImportDTContext","MAX","Math","pow","cursor","top","left","userSelect","zIndex","badge","badgePosition","right","MultipleImportIcon","Badge","anchorOriginTopRightRectangular","badgeContent","CloudDownload","ImportFromDT","tenants","selectedTenant","onConfirmImport","onCancelConfirmation","onImportClick","dataTenants","reloadRelations","setTenants","setSelectedTenant","dtssPath","customerTenant","maxDtssImport","checkHasNonImportedConnections","importFromDT","Promise","all","hasNonImportedRelations","dataTenant","id","hasNonImportedConnections","modifiedTenants","importDTConnections","useImportFromDTLoader","oneTenant","labelOnButton","indexOf","CloudDownloadIcon","DropDownMenuButton","menuId","buttonComponent","SmallIconButtonWithTooltip","buttonProps","menuItems","ConfirmationDialog","discardCaption","saveCaption","onDiscard","onSave","total","changeSearchQuery","tooltip","tooltipContent","secondaryLabel","progress","children","tooltipProps","setSecondaryLabel","onOpen","isNil","request","getDataTenantEntitySecondaryLabel","getEntitySecondaryLabel","CircularProgress","colorPrimary","Tooltip","disableFocusListener","useRelationInfo","connection","relation","entityType","getEntityType","entityLabel","getLabel","preparedUri","getEntityUriForLink","relationLabel","getRelationTypeLabelFromMetadata","relationType","container","SuggestedButtons","acceptRelation","ignoreRelation","alignSelf","row","minHeight","rowInactive","background","inactiveBackground","entityAvatar","entityLabelContainer","textDecoration","primary","main","editButtonsContent","editButtons","removed","editedLabel","fontStyle","EditableRelationItem","memo","showControls","onRemoveRelation","onEditRelation","onAcceptRelation","onIgnoreRelation","renderRelationArrowButton","checkRemoved","checkEdited","ignored","checkIgnored","isActive","isActiveObject","canRemove","canUpdate","Mode","isRemoved","relationTypeMetadata","getRelationType","checkMetadataForDelete","checkMetadataForUpdate","checkRelationPermission","handleRemoveRelation","relationUri","handleEditRelation","handleAcceptRelation","handleIgnoreRelation","suggested","EditIcon","DeleteIcon","suggustedButtonsContent","disabled","captionText","EntityTypeIcon","EntityUriLink","getUri","when","isObject","getFirstRelationTypeObject","inRelations","outRelations","prepareRelation","direction","relations","wrapInArrayIfNeeded","Directions","concat","arrowIcon","RelationArrowButton","showSecondLevel","parentEntityUri","contentSecondLevel","checkNew","ArrowDropDown","ArrowRight","secondLevelContent","SecondLevelWrapper","connections","toggleShowSecondLevel","loadRelations","loading","relationActivityFilter","setShowSecondLevel","setLoading","activityFilter","requestConfig","returnObjects","returnDates","activeness","ActivityFilter","getRelationsForEntity","show","useSecondLevelConnections","entitiesMap","getEntitiesMapForConnections","EntitiesMapContext","RelationsContent","relationToAdd","relationsToEdit","checkIfCanAddRelations","onAddRelation","newConnection","createNewConnectionWithDefaultRelationType","connectionToRemove","getRelationUriFromConnection","getEntityUriFromConnection","defaultRelationTypeObject","connectionWithDefaultRelationType","evolve","object","relationDirection","newConnections","currentConnections","canAddRelations","isEmptyRelationList","getRelationEditableContent","openedRelation","allowOnlyCreateNew","itemKey","RelationEditor","shouldShowAddRelationButton","shouldShowRelationEditorToAdd","attributesList","RelationAttributes","currentEntityUri","firstLevelRelationAttrTypes","getRelationAttributesList","attributeListEntity","getRelationAttributesFromConnection","getActivenessAttributes","showAttributesList","getAttributesListForReadMode","objectIds","getAttributeValuesUris","getCommentsCount","CollaborationContext","additionalRelatedObjectUris","createRelatedObjectUris","CollaborationObjectTypes","RelatedObjectUrisContext","attrTypes","ShowDetailsButton","onToggle","tooltipPlacement","InfoIconSelected","InfoIcon","wordBreak","showDetails","suggestedWrapper","commentsContainer","additionalButtonsWrapper","labelWrapper","RelationItem","isSuggested","setShowDetails","relatedObjectUris","COMMENTS_CONTAINER_VISIBILITY_AREA","CommentsContainer","getConnectionRelationUriForLink","objectType","allowOnlyOneComment","calcAverageRating","ratings","pluck","mean","defaultTo","toFixed","getCountOfLikes","rating","getCountOfDislikes","calcRatingsScale","percentOfLikes","percentOfDislikes","formattedPercentOfLikes","parseFloat","Number","wrapper","gap","info","axis","scaleHistory","greenBadge","redBadge","scale","scaleBar","ratingsList","borderTop","borderBottom","maxHeight","boxSizing","avatar","userInfo","user","textOverflow","ratingDateWrapper","ratingDate","sourcesWrapper","RatingsPopup","sortedRatings","sort","a","b","timestampA","Date","timestamp","getTime","sortRatingsByTime","agreeCount","disagreeCount","PopupWithArrow","placement","transition","LinearProgress","bar","empty","ThumbUp","ThumbDown","i","comment","Avatar","Person","crosswalk","ColoredSourceIcon","averageRating","counts","Ratings","ratingsRef","setOpen","textTransform","RatingsButtons","onAgree","onDisagree","username","ratingOfCurrentUser","endIcon","buttonContent","entityTypeIcon","showDetailsButton","relationAttributes","RelationComplexItem","showRating","rateRelation","RelationsList","mainEnityUri","isComplex","relationTypeObject","ignoreSuggestedRelation","relatedEntityUri","startDate","endDate","isInDirection","startEntityUri","endEntityUri","createRelation","useSuggestedRelations","getRelationshipsObjectIdsForCollaboration","list","linearIndicator","selectors","getEntity","getMode","RelationsView","getConnectionsWithDraftsByViewId","getTotalByViewId","sorting","order","field","queryClause","Maybe","filterValueToQueryStringWithQuotes","queryString","orSome","FilterBuilder","addClause","build","buildRelationsFilter","reload","useRelationsLoader","importDTContextValue","pick","useExpandInvalidRelations","EntityContext","Provider","TableAttributeContext","CHANGE_SEARCH_QUERY","actions","basicTableViewState","createStandardAction","reducer","action","payload","removedStyle","headCell","rowCell","blobWrapper","overflowY","overflowX","whiteSpace","defaultWrapper","updateAttribute","historyPalettes","HistoryOperations","insertAttribute","deleteAttribute","pointerEvents","withFilterAtBottom","headCellData","DefaultHeadCellRenderer","historyClassName","onScroll","stopPropagation","columnData","dataTypeDefinition","simpleValue","appearance","HistoryDiffContext","getHistoryAppearanceByUri","getHistoryAttributeClassName","DataTypes","dataTypeValue","DataTypeValue","ExpandedValueTooltip","getColumnsDataFromAttributeNode","attrNode","parents","reject","attributeUriToSearchUri","getAttrDataTypeDefinition","childNode","getAttrPathFromColumnId","split","getNestedPathByColumnId","columnId","isAttributeSearchUri","attrPath","getBasicTableColumnsData","sortable","resizable","nestedPath","headCellRenderer","HeadCellRenderer","rowCellValueRenderer","DefaultCellValueRenderer","filters","onToggleFilters","allColumnsData","visibleColumns","onChangeColumns","enabled","ColumnsSettings","columnsData","selectedColumns","withTableContext","deletedUris","rowValue","Boolean","cell","CellValueRenderer","isSorted","otherProps","index","tableContainer","fontFamily","transform","onEdit","onRemove","onSort","onFilter","tableRowsData","reduce","acc","assoc","getOvAttributeValuesByPathWithUri","getAttributeValues","getRowValueByColumnId","getBasicTableRowsData","tableColumnsData","checkIsEditableMode","renderRowCell","hoverRowIndex","setHoverRowIndex","canDelete","useConfigPermissions","hideRightContent","checkCanDeleteAttribute","isReltioCrosswalk","canEdit","checkCanEditAttribute","checkCanEdit","handleEditAttribute","handleRemoveAttribute","attribute","hoveredRowRightContent","context","BasicTable","autosizing","rowsData","hoverStateEnabled","defaultColumnWidth","defaultColumnMinWidth","headRowHeight","resizeDebounceDelay","onRowHover","hoveredRowRightContentWrapper","hoveredRowRightContentContainer","actionButtons","AttributeEditing","onCancel","onApply","hasChanges","shouldConnectAllModifiedEntities","isReference","getReferencedEntityUriFromAttrValue","allModifiedEntities","expanded","isMissedTypeError","ErrorType","findAttributeValueByError","curry","either","areOneHierarchyUris","addButton","editor","TableAttributeEditableContent","editingValues","modifiedValues","onStartEditing","onReset","checkHasChanges","highlightedAttributeError","hasConfigToCreate","shouldOpenInvalidEditors","listenToActions","useActionsHook","missedAttributeError","both","forEach","stopListeningActions","useExpandAttributes","isError","checkIsAttributeTypeError","isPartOfErrorAttributeTypeUri","isPartOfErrorParentUri","newAttributeUri","setNewAttributeUri","originalValues","setOriginalValues","actualValues","not","newAttribute","createDefaultValues","attributeTypes","getEditableAttributeTypeSubAttributes","prev","editingValueOriginal","attributeItem","without","validate","tempEntitiesMap","validateComplexAttribute","evaluateErrorPath","getSingleAttributeEntity","original","useEditableAttribute","preparedValues","visibleColumnsData","TableAttributeView","showTable","nodeCounter","generateId","processResponse","fakeRoot","nodeId","parentPaths","nextRoot","j","nextParent","entities","isRoot","node","rootIndex","push","hidePageSelectorWhenSmall","treeContainer","tree","buttonsContainer","ConfigContext","onImageLoadFail","src","DEFAULT_ICON","Node","absoluteImagePath","popperAnchor","setPopperAnchor","isSelected","entityTypeGraphIcon","getPropWithInheritance","getAbsoluteImageUrl","alt","onError","HierarchyNodeTitle","getNodeKey","lineBlock","lineChildren","bottom","treeTheme","verticalLine","horizontalLineRight","textAlign","rootNode","longRootNode","nodeContent","nodeRootLongContent","rowContents","borderLeft","verticalAlign","buttonWrapper","collapsedButton","expandedButton","borderRight","rowTitle","nodeContentRenderer","scaffoldBlockPxWidth","toggleChildrenVisibility","treeIndex","nodeTitle","showToggleChildrenButton","treeNodeRenderer","lowerSiblingCounts","scaffoldBlockCount","scaffold","lowerSiblingCount","shift","scaffoldWidth","nodeStyle","rowHeight","slideRegionSize","_extends","assign","arguments","source","prototype","hasOwnProperty","call","apply","this","viewBox","version","xmlns","stroke","strokeWidth","fill","fillRule","fillOpacity","onGraphOpen","showNavigateToGraph","FeaturesContext","ShowGraphIcon","getCacheKey","ROOTS_PER_PAGE_OPTIONS","bodyWrapper","CustomView","basicViewRef","dialogRef","showModal","setShowModal","defaultTooltip","html","visible","updatedTooltip","customStyles","popup","useAPI","innerHTML","Array","from","childNodes","child","appendChild","Dialog","Component","WithErrorBoundary","ErrorBoundary","EmptyState","LogoRenderer","EMPTY_STATE_ICONS","secondaryText","EMPTY_STATE_VARIANTS","stubView","fullHeight","component","boxShadow","borderRadius","filterWrongLat","gt","lt","fullscreenBtn","ImageLineCaption","totalImages","photoWord","ImageAttributeViewEditableContent","requestNextPageOfAttributeValues","attributeValues","imageSize","IMAGE_SIZE","imageMargin","imageWidth","imageHeight","ActionButtons","match","onStartRequest","onFinishRequest","canMerge","canMark","getActionPermissionForMatch","matchRules","actionButtonProps","ActionButtonMode","onMergeFinish","MergeButton","NotMatchButton","MatchCard","ProfileMatchCard","createObjectIdForPM","matchEntityUri","matchesContainer","footer","DEFAULT_OPTIONS","showTransitiveMatches","showInactiveEntities","DEFAULT_SORTING","Order","ComponentStates","wrapView","withErrorBoundary","withDragHandle","WrappedStubView","WrappedProfileAttributesView","AttributesView","excludeUris","includeUris","attributesCount","pinnedAttributes","WrappedProfileSingleAttributeView","singleAttribute","setShowInactive","useSingleAttribute","WrappedProfileTableAttributeView","tableAttribute","getAttributeTypesTree","chain","flatAttributeTreeNode","uniqBy","getColumnsData","initialState","useReducer","requestFilters","mdmFilters","columnFilter","columnFilterToMdmFilter","buildMDMFilters","changePage","toggleSort","changeFilter","toggleFilters","changeColumns","useActions","hidden","useTableAttribute","WrappedProfileRelationsView","parsedConfig","parseRelationsConfig","relationsState","append","setSortOrder","setSortOption","option","useRelationsState","WrappedCustomView","WrappedHierarchyPathView","graph","_showNavigateToGraph","graphType","treeData","setTreeData","onChangeRowsPerPage","graphUri","setErrorMessage","setRowsPerPage","pagedData","setPagedData","forest","newTrees","updateTreesWithNewEntity","updatedTime","getPathsTree","warn","useLoadPaths","onResize","getRowHeight","clearHeightsCache","heightsCache","setHeightsCache","_","prevCache","useDynamicNodesHeights","featuresContext","features","openGraph","generateNodeProps","rowInfo","handleHeight","refreshMode","refreshRate","ReactSortableTree","isVirtualized","canDrag","labelRowsPerPage","WrappedProfilePotentialMatchesView","turnOnDisableSpinner","turnOffDisableSpinner","matches","loadMatches","useMatchesLoader","onStartLoading","onFinishLoading","onFinishMatchAction","openPotentialMatchPerspective","mdmModuleUi","perspectiveId","getPotentialMatchesObjectIdsForCollaboration","getEntityUriFromMatchObject","showSeeAll","Loading","NoData","Loaded","Link","underline","WrappedHierarchyTreeView","importedModule","HierarchyTreeView","WrappedRelationshipsTableView","RelationshipsTableView","WrappedEntityMapView","isFullscreen","onToggleFullscreen","mapKey","markers","setMarkers","resolve","useMarkers","loadingElement","defaultCenter","lat","lng","mapOptions","mapTypeControl","FullscreenExitIcon","FullscreenIcon","ReltioMap","defaultZoom","mapContainerClassName","WrappedImageAttributeView","entityValues","ImageAttributesLine","ViewsFactory","ViewTypes","ProfileViewTypes","getComponentBy","propName","HierarchyTree","HierarchyPaths","RelationsTable","Relations","Attributes","SingleAttribute","AttributeTable","Map","Custom","ImageAttribute","PotentialMatches","getComponent","Fallback","ViewComponent","isAutosize","Suspense","fallback","item","basicView","fixedSizeContainer","overflowContainer","omittingProps","ProfileLayoutItem","layoutItemConfig","views","ResizeComponent","AutosizeComponent","isCustomView","class","platform","CustomScriptPlatform","reltioClass","getViewTypeByClass","customView","DEFAULT_MIN_WIDTH","scrollWrapper","scrollableContent","scrollbarWidth","ProfileLayout","layout","frozen","onLayoutChanged","scrollWrapperRef","offsetWidth","clientWidth","boundariesElement","popupBoundariesValue","priority","scrollTop","PopupBoundariesContext","ReltioGridLayout","LayoutItem","draggableHandle","isStatic","closeIcon","snackbar","flexWrap","Notification","notification","autoCloseInterval","autoHideDuration","setAction","setShow","closeSnackbar","_e","reason","cancelAction","onConfirm","applyAction","needConfirmation","CloseIcon","Portal","document","body","Snackbar","confirmationText","confirmationDescription","Notifications","notifications","n","xmlnsXlink","xlinkHref","mask","editingButtons","searchResults","comments","menuButton","cancelButton","border","SuggestIcon","SvgIcon","CopyIcon","filterGroupByPermissions","group","isTempEntity","isWorkflowEnabled","canStartProcessInstanceSearchQuery","permission","isSuggestMode","checkMetadataPermission","PerspectiveProfileBand","profileBandConfig","showMenu","profileOperation","entityTypeUri","isOperationSaving","Operation","isDisabledButtons","openCloneConfirmationDialog","setOpenCloneConfirmationDialog","onCloneDiscard","onClone","cloneAction","cloneActionProp","relationTypes","isRelationSuitableForEntityType","isRelationWithEntityType","complement","propOr","modifiedRelationTypes","getRelationTypeUriFromAttrType","T","data","relationshipTypesToCopy","useCloneAction","OPTIONS_GROUP","CreateIcon","VisibilityIcon","BUTTONS_GROUP","window","confirm","shouldShowSelect","MetadataPermissions","hasOnlyReadPermission","accessibleOptionsGroup","accessibleButtonsGroup","handleChange","handleSave","ProfileBand","mr","ProfileBandHistory","ProfileBandNavigation","ModeSwitcherSelect","optionsGroup","buttonsGroup","MoreVertIcon","MenuItemRenderer","MultilineMenuItem","ActivePanel","RightSidePanel","active","tabs","headerProps","SidePanel","SidePanelContentHeader","itemWrapper","DBConnectorsList","dBConnectorSideViews","sideView","WorkflowButton","WorkflowTasksContext","Inbox","CollaborationButton","commentsMap","calcTotalCommentItems","CollaborationIcon","WorkflowList","tasks","task","WorkflowTaskCard","taskId","SidePanelEmptyState","showMoreLink","showMoreIcon","CollaborationList","getComments","pageToken","useCommentsEntitiesMap","objectId","commentId","CollaborationItem","KeyboardArrowDown","getSecondTitle","profileContainer","ProfilePerspectiveResizablePanes","hideHistory","defaultTab","isWorkflowSideViewEnabled","isCollaborationSideViewEnabled","isDBConnectorSideViewEnabled","isCollaborationEnabled","Collaboration","historyEvent","workflowTasksContext","collaborationContext","isHistoryEnabled","isProfilePersisted","useHistoryEnabled","historyButtonId","History","historyFilter","onApplyFilter","historicUris","historyWithTotal","canLoadMore","onLoadMore","useHistory","enabledWorkflowButton","enabledCollaborationButton","collaborationTotal","Workflow","mainTitle","secondTitle","rightContent","AddWorkflowButton","HistoryIcon","HistoryView","contributorsUris","HistoryPanelEmptyState","HistoryHeader","DBConnector","ConnectorsIcon","useProfileRightSidePanelElements","ProfileResizablePanes","buttonsProps","emptyState","typography","fontWeightRegular","loadingWrapper","errorWrapper","successWrapper","success","indicatorIcon","link","pxToRem","BackgroundUpdateStatus","CloseIconButton","ProcessLoading","ProcessSuccess","onRefresh","ProcessError","BackgroundProcessIndicator","status","checkEntityTypeInList","entityTypeList","isEntityTypeInBackgroundProcess","perspectiveView","profileWrapper","ProfilePerspectiveView","saveState","getSavedState","profileBand","workflow","isHistoryActive","keywordValue","allErrors","historyDiff","useHistoryDiff","workflowTasks","workflowConfig","commonWorkflowTasks","useCommonWorkflowTasks","defaultActionSuccessHandler","useWorkflowDefaultActionSuccessHandler","onActionSuccess","useWorkflowTasks","isEntityLoading","useEntityLoadingIndication","entityUpdatedTime","onRefreshProfile","onCloseBackgroundProcessIndicator","cancelUpdateProcess","isOpenBackgroundProcessIndicator","backgroundUpdateStatus","autoUpdateInReadMode","entityTypes","entityTypesForUpdate","needBackgroundProcess","isAutoUpdated","timerId","setIsOpenBackgroundProcessIndicator","setBackgroundUpdateStatus","backgroundUpdateDelay","clearTimeout","getUpdatedTime","numberOfRetry","getEntityUpdatedTime","result","setTimeout","runBackgroundUpdate","NUMBER_OF_RETRY","useBackgroundProcessIndicator","getProfileObjectIdsForCollaboration","emptyCollaboration","collaboration","useCollaboration","showDescription","isLoaded","isLayoutLoaded","onLayoutReset","onResetUndo","handleLayoutChange","profileConfig","setLayout","setViews","canRead","validatedViews","validatedLayout","removeUnsupportedLayoutItems","configHash","hash","nestedRoute","savedStateKey","getSavedStateAndFix","debouncedSaveState","debounce","savedState","updateSavedState","useSavedStateForEntityType","tempConfig","handleResetUndo","handleLayoutReset","fixedViews","fixedLayout","fixNonUniqViewsIds","isConfigChanged","useProfileLayout","useHistorySlice","isValidateReadMode","isDTEntity","profileViews","hasProfileViews","needDispatch","useProfileValidation","sidePanelViews","hideLayout","renderEmptyState","SnackbarRenderer","resetLayout","useLayoutResetter","ProfilePerspectiveViewContext","SearchValueContext","AttributesErrorsPanel","attributesWithErrors","generateClassName","createGenerateClassName","productionPrefix","disableGlobal","seed","userPreferencesComparator","newState","sortLayoutItems","x","y","prepareState","looseEquals","qxSandboxApi","getSavedStatePromisified","promisifyCallback","showSnackbarMessage","useSnackbar","processedConfig","convertOldProfileConfig","SnackbarContext","S","SandboxAPIContext","StylesProvider","LocalizationProvider","dateAdapter","AdapterMoment","floor","ErrorPopup","showErrorFromStore","titleContainer","totalNumber","TagListHeader","switchToProfile","ArrowForwardIosRounded","Spacer","toolbar","TagProfileBand","Toolbar","tagsContainer","tagsView","listContainer","entitiesList","ROWS_PER_PAGE_OPTIONS","TagPerspectiveView","tag","globalSearchRequestOptions","safeRequestTotalPromise","safeRequestEntitiesPromise","setTotal","setEntities","requestEntities","requestTotal","getDataTenantFromEntityUri","fieldName","isDT","getEntities","requestOptions","select","getFilteredEntitiesFromDataTenant","enrichEntityWithDataTenant","getFilteredEntities","getTotalFromDataTenant","getTotals","json","useTagsProvider","useTag","refScrollBlock","hasPagination","ProfilesList","actionsWrapper","DCRProfileBand","entityTask","objectURIs","getEntityUriFromDCRUri","TaskActionButtons","perspectiveContainer","attributesWrapper","contentWrapper","processTypes","DCRReviewPerspectiveView","actionSuccessHandler","point","AddRelationButton","propTypes","PropTypes","inactiveStyle","entityCell","RowCellRenderer","EntityProfileRenderer","EntityTypeType","getRelationTypes","rel","uniq","startsWith","emptyData","EditButtons","IconButton","Edit","Delete","basicTableRef","getOvAttributeValuesByPath","getRelationAttributeValues","isNew","handleOnRowHover","rowIndex","ColumnsDataType","ConnectionType","MetadataType","ColumnFilterType","SortingType","onShowInactiveChange","RelationsTableHeader","onChangeSearchQuery","filtersEnabled","onChangeShowInactive","CHANGE_SHOW_INACTIVE","changeShowInactive","DEFAULT_COLUMNS_DATA","hideable","ActivenessAttrTypes","getColumnIdFromAttrUri","getColumnsDataFromRelationAttributes","attr","getReadableAttributesList","addArea","DEFAULT_COLUMNS_TO_SHOW","DEFAULT_SORT_FIELD","memoizedParseRelationsConfig","memoizeWith","connect","ownProps","stateProps","dispatchProps","modeProp","reduxDispatch","readOnlyMode","sortColumn","filtersClause","buildColumnsFilter","getRowsPerPageOptions","defaultRowsPerPage","subtract","handleRowsPerPageChange","handlePageChange","changeRowsPerPage","openedRelations","canEditRelations","canRemoveRelations"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"2300.js","mappings":"olBAEIA,EAAyB,EAAQ,OAIrCC,EAAQ,OAAU,EAClB,IAAIC,EAAiBF,EAAuB,EAAQ,QAChDG,EAAc,EAAQ,OACtBC,GAAW,EAAIF,EAAeG,UAAuB,EAAIF,EAAYG,KAAK,OAAQ,CACpFC,EAAG,kEACD,iBACJN,EAAQ,EAAUG,G,mBCVdJ,EAAyB,EAAQ,OAIrCC,EAAQ,OAAU,EAClB,IAAIC,EAAiBF,EAAuB,EAAQ,QAChDG,EAAc,EAAQ,OACtBC,GAAW,EAAIF,EAAeG,UAAuB,EAAIF,EAAYG,KAAK,OAAQ,CACpFC,EAAG,yKACD,0BACJN,EAAQ,EAAUG,G,oBCVdJ,EAAyB,EAAQ,OAIrCC,EAAQ,OAAU,EAClB,IAAIC,EAAiBF,EAAuB,EAAQ,QAChDG,EAAc,EAAQ,OACtBC,GAAW,EAAIF,EAAeG,UAAuB,EAAIF,EAAYG,KAAK,OAAQ,CACpFC,EAAG,gEACD,eACJN,EAAQ,EAAUG,G,oBCVdJ,EAAyB,EAAQ,OAIrCC,EAAQ,OAAU,EAClB,IAAIC,EAAiBF,EAAuB,EAAQ,QAChDG,EAAc,EAAQ,OACtBC,GAAW,EAAIF,EAAeG,UAAuB,EAAIF,EAAYG,KAAK,OAAQ,CACpFC,EAAG,yJACD,UACJN,EAAQ,EAAUG,G,oBCVdJ,EAAyB,EAAQ,OAIrCC,EAAQ,OAAU,EAClB,IAAIC,EAAiBF,EAAuB,EAAQ,QAChDG,EAAc,EAAQ,OACtBC,GAAW,EAAIF,EAAeG,UAAuB,EAAIF,EAAYG,KAAK,OAAQ,CACpFC,EAAG,qOACD,WACJN,EAAQ,EAAUG,G,oBCVdJ,EAAyB,EAAQ,OAIrCC,EAAQ,OAAU,EAClB,IAAIC,EAAiBF,EAAuB,EAAQ,QAChDG,EAAc,EAAQ,OACtBC,GAAW,EAAIF,EAAeG,UAAuB,EAAIF,EAAYG,KAAK,OAAQ,CACpFC,EAAG,sJACD,SACJN,EAAQ,EAAUG,G,oBCVdJ,EAAyB,EAAQ,OAIrCC,EAAQ,OAAU,EAClB,IAAIC,EAAiBF,EAAuB,EAAQ,QAChDG,EAAc,EAAQ,OACtBC,GAAW,EAAIF,EAAeG,UAAuB,EAAIF,EAAYG,KAAK,OAAQ,CACpFC,EAAG,yJACD,gBACJN,EAAQ,EAAUG,G,oBCVdJ,EAAyB,EAAQ,OAIrCC,EAAQ,OAAU,EAClB,IAAIC,EAAiBF,EAAuB,EAAQ,QAChDG,EAAc,EAAQ,OACtBC,GAAW,EAAIF,EAAeG,UAAuB,EAAIF,EAAYG,KAAK,OAAQ,CACpFC,EAAG,0JACD,eACJN,EAAQ,EAAUG,G,kBCVdJ,EAAyB,EAAQ,OAIrCC,EAAQ,OAAU,EAClB,IAAIC,EAAiBF,EAAuB,EAAQ,QAChDG,EAAc,EAAQ,OACtBC,GAAW,EAAIF,EAAeG,UAAuB,EAAIF,EAAYG,KAAK,OAAQ,CACpFC,EAAG,uDACD,iBACJN,EAAQ,EAAUG,G,oBCVdJ,EAAyB,EAAQ,OAIrCC,EAAQ,OAAU,EAClB,IAAIC,EAAiBF,EAAuB,EAAQ,QAChDG,EAAc,EAAQ,OACtBC,GAAW,EAAIF,EAAeG,UAAuB,EAAIF,EAAYG,KAAK,OAAQ,CACpFC,EAAG,yMACD,aACJN,EAAQ,EAAUG,G,oBCVdJ,EAAyB,EAAQ,OAIrCC,EAAQ,OAAU,EAClB,IAAIC,EAAiBF,EAAuB,EAAQ,QAChDG,EAAc,EAAQ,OACtBC,GAAW,EAAIF,EAAeG,UAAuB,EAAIF,EAAYG,KAAK,OAAQ,CACpFC,EAAG,4MACD,WACJN,EAAQ,EAAUG,G,oeCHX,MCNMI,EAAyBC,IAAAA,cAc3B,MAEXD,EAAuBE,YAAc,yB,iNCjB9B,MAAMC,IAAYC,EAAAA,GAAAA,aAAW,KAAM,CACtCC,cAAe,CACXC,SAAU,EACVC,MAAO,mBACPC,MAAO,QAEXC,aAAc,CACVC,WAAY,OACZC,cAAe,OACfC,YAAa,OACbC,aAAc,OACdC,SAAU,QACVN,MAAO,OAEXO,oBAAqB,CACjBC,UAAW,MACXC,WAAY,SAEhBC,qBAAsB,CAClBC,SAAU,WAEdC,wBAAyB,CACrBC,YAAa,WCsCrB,GA9CqB,IAAwB,IAAvB,UAACC,GAAsB,EACzC,MAAMC,EAASpB,KACTqB,GAAYC,EAAAA,EAAAA,WACXC,EAAQC,IAAaC,EAAAA,EAAAA,WAAS,IAC/B,aAACC,EAAD,mBAAeC,IAAsBC,EAAAA,EAAAA,YAAW/B,GAEhDgC,EAAc,IAAML,GAAWM,IAAUA,IAE/C,OACI,oCACI,kBAACC,GAAA,EAAD,CAAQC,IAAKX,EAAWY,QAAS,CAACC,KAAMC,GAAAA,CAAWf,EAAOlB,cAAeiB,IAAaiB,QAASP,GAC3F,kBAAC,KAAD,OAEJ,kBAACQ,GAAA,GAAD,CACIP,KAAMP,EACNU,QAAS,CAACK,MAAOlB,EAAOd,cACxBiC,SAAUlB,EAAUmB,QACpBC,QAASZ,EACTa,aAAc,CACVC,SAAU,SACVC,WAAY,SAEhBC,gBAAiB,CACbF,SAAU,MACVC,WAAY,UAGhB,kBAACE,GAAA,EAAD,CACIb,QAAS,CACLC,KAAMd,EAAOR,oBACbmC,MAAO3B,EAAOL,sBAElBiC,QACI,kBAACC,GAAA,EAAD,CACI9B,UAAWC,EAAOH,wBAClBiC,QAASxB,EACTyB,SAAWC,GAAMzB,EAAmByB,EAAEC,OAAOH,WAGrDH,MAAOO,IAAAA,KAAU,6BCrDxBtD,IAAYC,EAAAA,GAAAA,aAAW,KAAM,CACtCiC,KAAM,CACFqB,QAAS,gBAEbC,eAAgB,CACZC,QAAS,OACTC,KAAM,WACNC,eAAgB,WAChBC,WAAY,UAEhBC,aAAc,CACVC,WAAY,OACZ9C,SAAU,OACV+C,cAAe,SACf3D,MAAO,kBACP4D,WAAY,EACZL,eAAgB,aAChBpD,WAAY,OACZC,cAAe,QAEnByD,OAAQ,CACJpD,UAAW,MACXC,WAAY,WCDPoD,GAAwB,IAAkF,IAAjF,QAACC,EAAD,mBAAUC,EAAV,uBAA8BC,EAA9B,eAAsDC,GAA2B,EACnH,MAAMlD,EAASpB,MAET,YAACuE,EAAD,eAAcC,EAAd,QAA8BC,EAA9B,sBAAuCC,EAAvC,iBAA8DC,EAA9D,cAAgFC,IAClFhD,EAAAA,EAAAA,YAAW/B,GAMTgF,EAAmBP,IAAkBM,MAAAA,OAAJ,EAAIA,EAAeE,UAC1D,OACI,kBAACC,EAAA,EAAD,CAAiBC,MAAOb,EAAShD,UAAWC,EAAOc,MAC9C2C,GAAoB,kBAACI,EAAA,EAAD,MACrB,kBAACC,EAAA,EAAD,CAAiBC,YAAaP,MAAAA,OAAF,EAAEA,EAAeO,cAC7C,kBAACC,EAAA,EAAD,CAAcC,YAAa,KACvB,kBAACC,EAAA,EAAD,CAAiBC,OAAQ,GAAIC,OAAQ,KACrC,kBAACC,EAAA,EAAD,CAAYtE,UAAWC,EAAOyC,aAAc6B,QAAQ,WAC/CpC,IAAAA,OAAYc,GAAqB,IACV,IAAvBA,EAA2Bd,IAAAA,KAAU,QAAUA,IAAAA,KAAU,WAI9D,kBAACqC,EAAA,EAAD,CACIC,WAAYlB,EACZvD,UAAWC,EAAO6C,OAClB4B,YAAalB,EACbC,cAAeA,IAGvB,yBAAKzD,UAAWC,EAAOoC,gBACnB,kBAACsC,GAAA,EAAD,CAAuBC,MAAOxB,EAAapB,SAzBtB4C,IAC7BvB,EAAeuB,GACftB,EAAQ,MAwBCJ,GAA0B,kBAAC,GAAD,S,wFC1CpC,MAAM2B,GAAmCC,EAAAA,IAEnCC,GAAS,CAACC,EAAgC5B,IAE1C,iBADM4B,EAEAC,OAAOC,OAAOF,GAAOG,MAAMH,GACvBA,EAAMG,MAAK,IAAa,IAAZ,MAACH,GAAW,EAC3B,OAAOD,GAAOC,EAAO5B,QAItBgC,EAAAA,IAAAA,QAAAA,OAAqBC,OAAOL,GAAQ5B,GCtB1CvE,IAAYC,EAAAA,GAAAA,aAAYwG,IAAD,CAChCC,WAAY,CACRnD,QAAS,oBACToD,gBAAiB,sBACjBC,aAAc,OAElBC,YAAa,CACT7F,SAAU,OACV8F,WAAY,IACZhD,WAAY,QAEhBiD,KAAM,CACF/F,SAAU,OACVE,YAAa,OAEjB8F,QAAS,CACLxB,OAAQ,cACRyB,YAAa,oBAEjBC,QAAST,EAAMU,SACfC,OAAQ,CACJpG,SAAU,OACVZ,MAAOqG,EAAMY,QAAQC,KAAKC,UAC1BhE,QAAS,sB,8pBCyBjB,MAAMiE,GAAa,GA+InB,IAAeC,EAAAA,GAAAA,GACXC,EAAAA,IACA,CAACC,EAAD,KAA8C,IAA/B,UAACC,EAAD,cAAYhD,GAAmB,EAC1C,MAAM,QAACiD,EAAD,KAAUC,GAAQH,GAAgB,GAIxC,MAAO,CAACI,kBAFJC,EAAAA,EAAAA,IAAuBF,KACvBG,EAAAA,EAAAA,KAAqBJ,EAA2BD,EAAWhD,EAAcsD,KACnCP,EAAe,SApJ1B,IAO1B,IAP2B,OACpCtB,EADoC,cAEpCzB,EAFoC,UAGpCgD,EAHoC,aAIpClG,EAJoC,WAKpCyG,EALoC,iBAMpCJ,GACS,EACT,MAAM3G,EAASpB,MAERkI,IAAKE,EAAkBtD,SAAUuD,EAAlC,YAA8CC,EAA9C,KAA2DC,GAAQ3D,EACnE4D,GAAWC,EAAAA,EAAAA,eACXC,GAAS9G,EAAAA,EAAAA,YAAW+G,EAAAA,GACpBC,GAASC,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,WACrBC,GAAiBF,EAAAA,EAAAA,cAClBG,GAAUF,EAAAA,GAAAA,UAAAA,kBAAsCE,EAAOJ,EAAOV,MAAS,KAEtEe,GAASJ,EAAAA,EAAAA,cAAaG,GACxBF,EAAAA,GAAAA,UAAAA,kCAAsDE,EAAOpB,EAAWhD,KAEtEsE,GAAeL,EAAAA,EAAAA,cAAaG,IAC9BG,EAAAA,EAAAA,KAAwCvB,EAAWhD,EAAekE,EAAAA,GAAAA,UAAAA,iBAAqCE,MAErGI,GAAOP,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,SACnBO,GAAkBC,EAAAA,EAAAA,KAAmB1E,GACrC2E,GAA6BC,EAAAA,EAAAA,OAAKC,EAAAA,EAAAA,QAAOjC,GAAY,CAAC6B,EAAiBd,KAAQmB,EAAAA,EAAAA,MAAIC,EAAAA,EAAAA,MAAK,QAA3DH,CAAoEZ,GACjGgB,GAAyCH,EAAAA,EAAAA,QAAOjC,GAAY,CAAC6B,EAAiBd,GAAOQ,GACrFc,EAAqCD,EAAqBF,KAAIC,EAAAA,EAAAA,MAAK,QACnEG,GAAmBC,EAAAA,EAAAA,KAAUnB,EAAOV,KAEpC8B,GAAmCC,EAAAA,EAAAA,UACrC,KACIC,EAAAA,EAAAA,KAAmB,CACftC,UAAAA,EACAhD,eAAeuF,EAAAA,EAAAA,MAAK,CAAC,gBAAiBvF,MAE9C,CAACgD,EAAWhD,KAGV,IAAC5C,EAAD,eAAMoI,IAAkBC,EAAAA,GAAAA,GAA0B,CAACtC,iBAAAA,EAAkBuC,UAAU,IAE/EC,GAA8BC,EAAAA,EAAAA,KAAaZ,GAC3Ca,EAAYpC,GAAckC,EAE1BG,EAAYD,EAAY,CAACT,GAAoBJ,EAAqBe,QAAOnB,EAAAA,EAAAA,OAAKG,EAAAA,EAAAA,MAAK,OAAQI,EAAAA,MAE3Fa,GAAkBC,EAAAA,EAAAA,cACnBC,IACGtB,EAAAA,EAAAA,MAAKuB,EAAAA,GAAAA,QAAAA,cAA+BvC,EAApCgB,CAA8CsB,EAAOpB,KAAKsB,GAAD,MAAgBA,EAAhB,CAAuBtC,OAAAA,QACpF,CAACA,EAAQF,IAGPyC,GAAoBJ,EAAAA,EAAAA,cACrBC,IAA0BtB,EAAAA,EAAAA,MAAKuB,EAAAA,GAAAA,QAAAA,gBAAiCvC,EAAtCgB,CAAA,MAAoDsB,EAApD,CAA4DpC,OAAAA,MACvF,CAACA,EAAQF,IAGP0C,GAAoBL,EAAAA,EAAAA,cACrBC,IAA0BtB,EAAAA,EAAAA,MAAKuB,EAAAA,GAAAA,QAAAA,gBAAiCvC,EAAtCgB,CAAA,MAAoDsB,EAApD,CAA4DpC,OAAAA,MACvF,CAACA,EAAQF,IAGP2C,GAAoBN,EAAAA,EAAAA,cAAYrB,EAAAA,EAAAA,MAAKuB,EAAAA,GAAAA,OAAAA,QAAAA,iBAAyCvC,GAAW,CAACA,IAE1F4C,GAAQP,EAAAA,EAAAA,cAAY,KACtB,MAAMQ,EAAmBzG,IAAD,CAAmDgD,UAAAA,EAAWhD,cAAAA,IAEtF,GAAI6F,KAAca,EAAAA,EAAAA,KAAmB1G,EAAckD,MAAO,CACtD,MAAMyD,EAAa,CAACF,GAAgBlB,EAAAA,EAAAA,MAAK,CAAC,gBAAiBvF,IAAiByG,EAAgBzG,IAC5F,OAAOgG,EAAgBW,GAG3B,OAAOX,EAAgB,CAACS,EAAgBzG,OACzC,CAACgG,EAAiBhD,EAAWhD,EAAe6F,IAEzCe,GAAYC,EAAAA,EAAAA,KAAwB,CAAC7G,cAAAA,EAAewE,KAAAA,IAEpDsC,EAAc,CAChB9G,cAAeA,EACfqE,OAAAA,EACA0C,WAAY5C,EAAe4C,WAC3BvC,KAAAA,EACAwB,gBAAAA,EACAK,kBAAAA,EACAE,kBAAAA,EACAS,UAAWlK,GAETmK,EAA4C,IAArBnB,EAAUoB,QAAkC,IAAlBzF,EAAOyF,OAC9D,QACKC,EAAAA,EAAAA,SAAQhD,IACL,yBAAK/G,IAAKA,EAAKb,UAAWiJ,GACtB,kBAAC4B,GAAA,EAAD,CAAoB1D,YAAaA,IACjC,kBAAC2D,GAAA,EAAD,CAAcC,QAAShD,IACtBsC,GACG,kBAACzJ,GAAA,EAAD,CAAQ3B,MAAM,UAAUgC,QAASgJ,EAAOjK,UAAWC,EAAOsF,YACtD,kBAACyF,GAAA,EAAD,CAASlK,QAAS,CAACC,KAAMd,EAAO2F,QAChC,yBAAK5F,UAAWC,EAAOyF,aAAcvD,IAAAA,KAAU,SAGtDoH,EAAUhB,KAAI,CAACvD,EAAOiG,IACnB,kBAAC,KAAD,IACIC,IAAKlG,EAAM+B,KACPwD,EAFR,CAGIY,eAAgBnG,EAChBoG,KAAM9B,IAAcpC,EACpByB,iBAAkBA,EAClB0C,UAAUC,EAAAA,EAAAA,KAAqBtG,EAAOiG,EAAKhE,EAAkBa,GAC7DiC,kBAAmBA,EACnBwB,cAAejC,OAGtBC,EAAUoB,OAAS,GAAKzF,EAAOyF,OAAS,GAAK,kBAACa,GAAA,EAAD,CAASxL,UAAWC,EAAO4F,UACxEX,EAAOqD,KAAKkD,IACT,MAAMC,EAAsBjD,EAAqBkD,MAAKC,EAAAA,EAAAA,QAAO,MAAOH,EAAc1E,MAC5E/B,EAAQ0G,GAAuBD,EAC/BI,EACFzD,EAAiB0D,SAAS9G,EAAM+B,OAAS2B,EAAyBoD,SAAS9G,EAAM+B,KAC/EgF,GACDF,GAAWH,IF1GN,EAACM,EAAwBC,KACnD,MAAMC,GACFC,EAAAA,EAAAA,IAAGlH,OAAQ+G,EAAOhH,SAAUmH,EAAAA,EAAAA,IAAGlH,OAAQgH,EAAOjH,QACxCoH,EAAAA,EAAAA,OACEC,EAAAA,EAAAA,UAAS,CAAC,WACVC,EAAAA,EAAAA,KAAoB,CAChBC,kBAAkBC,EAAAA,EAAAA,QAAOC,EAAAA,KAAMzD,EAAAA,EAAAA,MAAK,CAAC,WACrC0D,oBAAoB,KAG1BC,EAAAA,SACV,OAAOC,EAAAA,EAAAA,QAAOV,EAASF,GAASE,EAASD,KE+FeY,CAAenB,EAAqBD,GACtE5D,GAAQiF,EAAAA,EAAAA,MAAK,CACf,EAACC,EAAAA,EAAAA,QAAOlB,IAAUkB,EAAAA,EAAAA,QAAO,YACzB,EAACA,EAAAA,EAAAA,QAAOhB,IAASgB,EAAAA,EAAAA,QAAO,YAFdD,GAId,OACI,yBAAK5B,IAAKlG,EAAM+B,IAAK/G,UAAWgB,GAAAA,CAAW,CAAC,CAACf,EAAO8F,WAAW0G,EAAAA,EAAAA,KAAKzH,MAChE,kBAAC,KAAD,MACQuF,EADR,CAEIY,eAAgBnG,EAChBqG,UAAUC,EAAAA,EAAAA,KAAqBtG,EAAO,KAAMiC,EAAkBa,GAC9DiC,kBAAmBA,EACnBlC,MAAOA,SAKtB6C,GAAwB,kBAACpG,EAAA,EAAD,CAAYtE,UAAWC,EAAOgG,QAASe,O,gBCzLzE,MAAMnI,IAAYC,EAAAA,GAAAA,aAAW,KAAM,CACtCkO,gBAAiB,CACbnN,SAAU,OACV8C,WAAY,OACZ8C,aAAc,WCMTwH,GAAiC,IAAkD,IAAjD,OAAC/H,EAAD,cAASzB,EAAT,aAAwBlD,GAAyB,EAC5F,MAAM2M,EAAQrO,KACRsK,IAAYgB,EAAAA,EAAAA,KAAmB1G,GACrC,OACI,oCACKyB,EAAOqD,KAAKvD,GAEL,kBAAC,KAAD,CACIkG,IAAKlG,EAAM+B,IACXoE,eAAgBnG,EAChBvB,cAAeA,EACfgH,UAAWlK,EACXP,UAAWgB,GAAAA,CAAW,CAAC,CAACkM,EAAMF,iBAAkB7D,UCtB3DtK,IAAYC,EAAAA,GAAAA,aAAW,KAAM,CACtCiC,KAAM,CACFuB,QAAS,OACT6K,cAAe,UAEnBC,QAAS,CACLC,SAAU,WACVjL,QAAS,eACTkL,SAAU,SACVC,SAAU,GAEdtH,OAAQ,CACJpG,SAAU,OACVZ,MAAO,oBAEXuO,WAAY,CACRD,SAAU,EACV1K,WAAY,OCJd4K,GAAwB,GAOjBC,GAAsB,IAAgC,IAA/B,OAACC,EAAD,UAAS3N,GAAsB,EAC/D,MAAM,QAACgD,EAAD,IAAU4K,EAAMH,GAAhB,uBAAuCvK,GAA0ByK,EAEjE1N,EAASpB,MAET,OAACqG,EAAD,mBAASjC,EAAT,KAA6B4K,EAA7B,QAAmCvK,EAAnC,UAA4CwK,EAA5C,UAAuDC,EAAvD,cAAkEtK,EAAlE,aAAiFlD,IACnFE,EAAAA,EAAAA,YAAW/B,GAETsP,GAAYtG,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,cACxBC,GAAaxG,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,eACzB9K,GAAiBuE,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,mBAC7BE,GAA0CzG,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,uBAEtDG,EAA8B,IAAlBlJ,EAAOyF,OACnB3D,EAAa2G,EAAO,eAAiBxL,IAAAA,KAAU,iBA8BrD,OACI,kBAACkM,EAAA,WAAD,CAAmCrJ,MAAOmJ,GACtC,kBAACG,EAAA,EAAD,CAAWtO,UAAWgB,GAAAA,CAAWf,EAAOc,KAAMf,IAC1C,kBAAC+C,GAAD,CACIE,mBAAoBA,EACpBD,QAASA,EACTE,uBAAwBA,EACxBC,eAAgBA,IAEpB,kBAACoL,EAAA,EAAD,CAAKvO,UAAWC,EAAOmN,SArCb,MAClB,GAAIU,EACA,OAAO,kBAACU,EAAA,EAAD,MAGX,GAAI/K,EAAe,CACf,GAAIyK,GAAcE,EAAW,CACzB,MAAMK,EAAQ,CACVvJ,OAAAA,EACAzB,cAAAA,EACAlD,aAAAA,GAEJ,OAAO,kBAAC0M,GAAmCwB,GACxC,GAAItL,EAAgB,CACvB,MAAMsL,EAAQ,CACVvJ,OAAAA,EACAzB,cAAAA,EACAgD,UAAWuH,EACXzN,aAAAA,EACAyG,WAAAA,GAEJ,OAAO,kBAAC,GAAmCyH,IAInD,OAAO,kBAACnK,EAAA,EAAD,CAAYtE,UAAWC,EAAOgG,QAASe,IAYL0H,IAChCX,GACG,kBAACY,EAAA,EAAD,CACIC,MAAO3L,EACP4K,KAAMA,EACNgB,YAAajB,EACbkB,mBAAoB,GACpBC,aAAczL,EACdxC,QAAS,CAACC,KAAMd,EAAOuN,iB,ueC9CxC,MAAMwB,GAA2B,CACpCrB,EACAhE,KAEA,MAAM,aAACsF,EAAD,IAAerB,EAAM,IAAMD,EAC3BuB,GAAWxH,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,cACtB/I,EAAQiK,IAAa7O,EAAAA,EAAAA,UAAkC,KACvD8O,EAAQC,IAAa/O,EAAAA,EAAAA,UAAiB,OACtCwN,EAAWwB,IAAgBhP,EAAAA,EAAAA,WAAS,GACrCiP,GAAcC,EAAAA,GAAAA,KACdC,GAAqBtP,EAAAA,EAAAA,QAAyB,MAE9CkH,GAAWC,EAAAA,EAAAA,eACXoI,GAAUhI,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,YACtB0B,GAASjI,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,WACrBxG,GAASC,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,mBAErBC,GAAaxG,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,eACzB2B,GAAuBlI,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,yBACnC4B,GAAOnI,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,gBAEnBxH,EAAYgB,EAAOV,IACnB+I,EAAoBjL,GAAiCoK,GACrDc,GAAsB5H,EAAAA,EAAAA,KAAmB8G,GAC/CQ,EAAmBpO,SAAU2O,EAAAA,EAAAA,KAAoBvI,EAAQhB,EAAWqJ,GACpE,MAAMrM,GAAgBqF,EAAAA,EAAAA,UAAQ,KAAMmH,EAAAA,EAAAA,KAAuBf,EAAUD,IAAe,CAACC,EAAUD,KACzF,aAACiB,IAAgBxI,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,gCAC7B,aAAC1N,GAAgBoJ,EACjBwG,GAAiBzG,EAAAA,EAAAA,cAAY,KAC/B,GACIjG,IACA2M,EAAAA,EAAAA,KAAoB3M,MACnBmF,EAAAA,EAAAA,KAAUnC,KACX4J,EAAAA,EAAAA,KAAyBpB,GAC3B,CACEK,GAAa,GACb,MAAM,KAACzB,EAAD,aAAOtN,EAAP,YAAqB6C,GAAwBuG,EAAR2G,E,kXAA3C,CAAmD3G,EAAnD,uCAEM4G,EAAa,KACf,MAAMhG,EAAc,CAChBiG,iBAAkB5C,EAClB3G,iBAAkBgI,EAClBwB,OAAQ7C,EAAMC,EACdzK,YAAAA,GAGJ,OAAIsN,EAAAA,EAAAA,KAAmBjJ,IAAWmI,EP9Cfe,OAAAA,IAOrB,IAP4B,SACtCzB,EADsC,OAEtCzH,EAFsC,iBAGtCR,EAHsC,iBAItCuJ,EAAmBI,EAAAA,EAJmB,OAKtCH,EAAS,EAL6B,YAMtCrN,EAAc,IACJ,EACV,MAAM8B,GAASmD,EAAAA,EAAAA,MACXwI,EAAAA,KACArH,EAAAA,EAAAA,SAAO,QAAC,MAACxE,GAAF,SAAaD,GAAOC,EAAO5B,MAFvBiF,CAGb6G,EAAUzH,EAAQR,GACd6J,GAAWtH,EAAAA,EAAAA,QAAOiD,EAAAA,IAAMvH,GAE9B,MAAO,CACH,EAACiD,EAAAA,EAAAA,KAAmBlB,IAAoB,CACpC,CAACpC,GAAiCoC,IAAoB6J,EAASC,MAAMN,EAAQA,EAASD,GACtFpB,OAAQ,CACJ,CAACnI,GAAmB,CAChB+J,cAAeF,EAASnG,OACxBsG,YAAa/L,EAAOyF,YO2BbuG,CAAoB,MAAI3G,EAAL,CAAkB2E,SAAAA,EAAUzH,OAAAA,MAGnD0J,EAAAA,EAAAA,KAAe,MACf5G,EACA+F,EAFc,CAGjBX,OAAAA,EACAD,QAAAA,EACAjJ,UAAAA,EACA2K,QAAS7Q,EAAe,QAAK8Q,EAC7BnB,aAAAA,MAIRX,EAAYgB,KACPe,MAAMC,IACH,MAAMnH,GAAaoH,EAAAA,EAAAA,MAAK,CAACzB,GAAsBwB,GACzCrM,GAAkCoD,EAAAA,EAAAA,QAAO,GAAI,CAACwH,GAAoB1F,GACnEwF,GACDvI,EACIuC,EAAAA,GAAAA,QAAAA,iCAAiD,CAC7CnD,UAAAA,EACAQ,iBAAkBgI,EAClBa,kBAAAA,EACA5K,OAAAA,KAIZiK,EACIjK,EAAOqD,KAAKkJ,IAAgB,MAExB,OADqB,UAAGhC,EAAmBpO,eAAtB,aAAG,EAA4BsK,MAAKC,EAAAA,EAAAA,QAAO,MAAO6F,EAAY1K,QAC9B0K,MAG7DpC,GAAUmC,EAAAA,EAAAA,MAAK,CAAC,SAAUvC,GAAe7E,OAE5CsH,OAAOC,IACJC,QAAQD,MAAMA,GACdxC,EAAU,IACV9H,EAASwK,EAAAA,GAAAA,QAAAA,UAAoBC,EAAAA,EAAAA,KAAuBH,EAAOxP,IAAAA,KAAU,8BAExE4P,SAAQ,KACLzC,GAAa,WAGrBH,EAAU,IACVE,EAAU,QAGf,CACCK,EACAjJ,EACAkJ,EACAV,EACArB,EACAsB,EACAvF,EACAuG,EACAzM,EACAmM,EACAC,KAGJmC,EAAAA,EAAAA,YAAU,KACN7B,MACD,CAACA,KAEJ8B,EAAAA,GAAAA,IAAmB,KACX/D,GACAiC,MAEL,CAACjC,IACJ,MAAMgE,GAAgBC,EAAAA,EAAAA,WAAU1F,EAAAA,MACzB,CAAE/H,GAAewN,EAAczC,EAAmBpO,SAAW,IAC9DmC,EAA4CjD,EAAe,GAAKmE,EAChE0N,EAAY7R,EAAe,cAAgB,gBAC3C0C,GAA6BoP,EAAAA,EAAAA,SAAOC,EAAAA,EAAAA,KAAIF,IAAY5J,EAAAA,EAAAA,MAAK4J,IAAYrF,EAAAA,EAAAA,QAAO7H,EAAOyF,QAAtD0H,CAA+DjD,GAC5FrB,EAAYH,EAAM3K,EAClBM,EAAwB6L,MAAAA,GAAAA,EAAQ6B,YAChC7B,EAAO6B,YAAchO,EACrBO,EAAiBmH,OACvB,MAAO,CACHzF,OAAAA,EACA4I,UAAAA,EACAC,UAAAA,EACA9K,mBAAAA,EACAQ,cAAAA,EACAF,sBAAAA,EACAC,iBAAAA,I,0NCzKD,MAAM+O,GAA4B5T,IAAAA,cAAwC,MAEjF4T,GAA0B3T,YAAc,4BCHxC,MAEaC,IAAYC,EAAAA,GAAAA,aAAYwG,IAAD,CAChCkN,OAAQ,CACJvT,MAAOqG,EAAMY,QAAQC,KAAKC,UAC1BlH,MAAO,OACPF,SAAU,QAEdG,aAAc,CACViD,QAAU,aAEdxC,qBAAsB,CAClBC,SAAU,WAEdC,wBAAyB,CACrBC,YAAa,OAEjB8F,QAAS,CACLC,YAAa,kBACbzB,OAAS,cAEbR,MAAO,CACH4B,aAAc,QAElBgN,aAAc,CACVnQ,QAAS,OACTG,WAAY,UAEhBiQ,iBAAkB,CACdnQ,KAAM,EACNH,QAAS,YACTvC,SAAU,WAEd8S,qBAAsB,CAClB9S,SAAU,WAEd+S,gBAAiB,CACb/P,WAAY,EACZwB,OAAQ,mBClBVwO,GAAe,IAAwB,IAAvB,UAAC7S,GAAsB,EACzC,MAAMC,EAASpB,KACTqB,GAAYC,EAAAA,EAAAA,WACZ,aAACI,EAAD,mBAAeC,EAAf,UAAmCsS,EAAnC,gBAA8CC,EAA9C,WAA+DC,EAA/D,iBAA2EC,EAA3E,YAA6FC,IAC/FzS,EAAAA,EAAAA,YAAW8R,KACRnS,EAAQC,IAAaC,EAAAA,EAAAA,WAAS,GAE/BI,EAAc,IAAML,GAAWM,IAAUA,IAEzCwS,IAAkB9J,EAAAA,EAAAA,KAAa6J,GAE/BE,EAAsB,QAAdN,EAEd,OACI,oCACI,kBAAClS,GAAA,EAAD,CACIC,IAAKX,EACLY,QAAS,CACLC,KAAMC,GAAAA,CAAWf,EAAOuS,OAAQxS,IAEpCiB,QAASP,GAET,kBAAC,KAAD,OAEJ,kBAACQ,GAAA,GAAD,CACIP,KAAMP,EACNU,QAAS,CAACK,MAAOlB,EAAOd,cACxBiC,SAAUlB,EAAUmB,QACpBC,QAASZ,EACTa,aAAc,CACVC,SAAU,SACVC,WAAY,SAEhBC,gBAAiB,CACbF,SAAU,MACVC,WAAY,UAGhB,kBAACE,GAAA,EAAD,CACIb,QAAS,CACLc,MAAO3B,EAAOL,sBAElBiC,QACI,kBAACC,GAAA,EAAD,CACI9B,UAAWC,EAAOH,wBAClBiC,QAASxB,IAAgB,EACzByB,SAAUxB,IAGlBoB,MAAOO,IAAAA,KAAU,iCAEpBgR,GACG,oCACI,kBAAC3H,GAAA,EAAD,CAASxL,UAAWC,EAAO4F,UAC3B,kBAACvB,EAAA,EAAD,CAAYtE,UAAWC,EAAO4D,MAAOU,QAAQ,MACxCpC,IAAAA,KAAU,YAEf,yBAAKnC,UAAWC,EAAOwS,cACnB,kBAACY,GAAA,EAAD,CACIC,QAASJ,EACTK,eAAgB,CAAChP,QAAS,UAC1BzD,QAAS,CACLC,KAAMd,EAAOyS,iBACbc,SAAUvT,EAAO0S,sBAErBc,WAAS,EACTC,kBAAgB,EAChB1O,MAAOgO,EACPhR,SAAUiR,EACVU,UAAW,CACPpS,aAAc,CAACC,SAAU,SAAUC,WAAY,WAGvD,kBAACmS,GAAA,EAAD,CACIC,aAAcT,EAAQjR,IAAAA,KAAU,aAAeA,IAAAA,KAAU,cACzDyD,KAAMwN,EAAQU,GAAAA,EAAkBC,GAAAA,EAChC9S,QAAS8R,EACT/S,UAAWC,EAAO2S,gBAClBoB,KAAK,WAUrCnB,GAAajU,YAAc,eAE3B,YC9GaC,IAAYC,EAAAA,GAAAA,YAAW,CAChCmV,OAAQ,CACJ7R,QAAS,gBAEbC,eAAgB,CACZC,QAAS,OACTC,KAAM,WACNC,eAAgB,WAChBC,WAAY,UAEhBC,aAAc,CACVC,WAAY,OACZ9C,SAAU,OACV+C,cAAe,SACf3D,MAAO,kBACP4D,WAAY,EACZ9C,YAAa,MACbyC,eAAgB,aAChBpD,WAAY,OACZC,cAAe,U,4BClBhB,MAAM6U,GAAkBvV,IAAAA,cAGpB,M,2cCEX,MAAMwV,GAAMC,KAAKC,IAAI,EAAG,IAAM,ECNjBxV,IAAYC,EAAAA,GAAAA,aAAW,KAAM,CACtC6Q,OAAQ,CACJnK,gBAAiB,UACjB8O,OAAQ,UACRjH,SAAU,WACVkH,IAAK,MACLC,KAAM,OACNtV,MAAO,OACPkF,OAAQ,OACRnF,MAAO,QACPY,SAAU,OACV8F,WAAY,OACZ8O,WAAY,OACZC,OAAQ,EACRpS,QAAS,OACTG,WAAY,SACZD,eAAgB,UAEpBgQ,OAAQ,CACJnF,SAAU,YAEdsH,MAAO,CACH9U,SAAU,OACVuE,OAAQ,OACRpF,SAAU,OACVE,MAAO,OACPyG,WAAY,OACZH,gBAAiB,UACjBvG,MAAO,QAEX2V,cAAe,CACXC,MAAO,MACPN,IAAK,W,4BCzBN,MAAMO,GAAqB,IAAoB,IAAnB,MAAClT,GAAkB,EAClD,MAAM3B,EAASpB,KACf,OACI,kBAACkW,GAAA,EAAD,CACIjU,QAAS,CACLkU,gCAAiC/U,EAAO2U,cACxCD,MAAO1U,EAAO0U,OAElBM,aAAcrT,GAEd,kBAACsT,GAAA,EAAD,QCTCC,GAAe,KACxB,MAAM,QAACC,EAAD,eAAUC,EAAV,gBAA0BC,EAA1B,qBAA2CC,EAA3C,cAAiEC,GHAtC,MAAM,MACvC,MAAMC,GAA6B/N,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,gBACzCN,GAAWC,EAAAA,EAAAA,gBACX,OAACqG,EAAD,gBAAS+H,IAAmBjV,EAAAA,EAAAA,YAAWyT,IACvClG,GAAYtG,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,eACvByN,EAASO,IAAcrV,EAAAA,EAAAA,UAAwB,KAC/C+U,EAAgBO,IAAqBtV,EAAAA,EAAAA,UAAiB,MACvDuV,GAAWnO,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,aACvBmO,GAAiBpO,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,WAC7ByF,EAAU,CAAC,MAAIO,EAAOP,QAAZ,CAAqBqD,OAAQ,EAAG7C,IAAG,UAAED,EAAOoI,qBAAT,QAA0B5B,MAEvE6B,GAAiCtM,EAAAA,EAAAA,cAAY,KAC/CiM,EAAW,IACPhI,EAAOsI,gBAAiBrN,EAAAA,EAAAA,KAAUoF,IAClCkI,QAAQC,KACHV,GAAe,IAAIlN,KAAKoH,IACrByG,EAAAA,EAAAA,KAAwB,CACpBpI,UAAAA,EACAZ,QAAAA,EACAyI,SAAAA,EACAC,eAAAA,EACAO,WAAY1G,EAAO2G,KACpBhF,MAAK,QAAC,0BAACiF,GAAF,eACD5G,EADC,CAEJ4G,0BAAAA,UAIPjF,MAAMkF,GAAoBA,EAAgBhN,QAAQmG,GAAWA,EAAO4G,8BACpEjF,KAAKqE,KAEf,CAAC3H,EAAW6H,EAAUC,EAAgBnI,EAAQ8H,IAE3CH,GAAkB5L,EAAAA,EAAAA,cAAY,MAChC+M,EAAAA,EAAAA,KAAoB,CAChBzI,UAAAA,EACAZ,QAAAA,EACAyI,SAAAA,EACAC,eAAAA,EACAO,WAAYhB,EAAeiB,KAE1BhF,MAAK,KACFoE,IACAM,OAEHtE,OAAOC,GACJtK,EAASwK,EAAAA,GAAAA,QAAAA,UAAoBC,EAAAA,EAAAA,KAAuBH,EAAOxP,IAAAA,KAAU,6BAE7EyT,EAAkB,QACnB,CACC5H,EACA6H,EACAC,EACAnI,EACAqI,EACAN,EACAL,EACAO,KAGJ5D,EAAAA,EAAAA,YAAU,KACNgE,MACD,CAACA,IACJ,MAAMT,GAAuB7L,EAAAA,EAAAA,cAAY,IAAMkM,EAAkB,OAAO,IAClEJ,GAAgB9L,EAAAA,EAAAA,cAAaiG,GAAmBiG,EAAkBjG,IAAS,IACjF,MAAO,CACHyF,QAAAA,EACAC,eAAAA,EACAC,gBAAAA,EACAC,qBAAAA,EACAC,cAAAA,IGtEoFkB,GAClFzW,EAASpB,KACT8X,EAA+B,IAAnBvB,EAAQzK,OACpBiM,EAAgBD,EACoB,IAApCvB,EAAQ,GAAGxT,MAAMiV,QAAQ,OACrBzB,EAAQ,GAAGxT,MAAM,GACjBwT,EAAQ,GAAGxT,MAAM,GACrBwT,EAAQzK,OACd,OACI,sCACOyK,EAAQzK,QACP,oCACKgM,EACG,yBAAK3W,UAAWC,EAAOuS,QACnB,kBAACoB,GAAA,EAAD,CACII,KAAM,IACNpO,KAAMkR,GAAAA,EACNjD,aAAc1R,IAAAA,KAAU,mCAAoC,CAACP,MAAOwT,EAAQ,GAAGxT,QAC/EX,QAAS,IAAMuU,EAAcJ,EAAQ,MAEzC,yBAAKpV,UAAWgB,GAAAA,CAAWf,EAAO0P,SAAUiH,IAGhD,kBAACG,GAAA,EAAD,CACIC,OAAQ,yBACRC,gBAAiBC,GAAAA,EACjBC,YAAa,CACTtD,aAAc1R,IAAAA,KAAU,sBACxB6R,KAAM,IAENpO,KAAM,IAAM,kBAACkP,GAAD,CAAoBlT,MAAOgV,KAE3CQ,UAAWhC,EAAQ7M,KAAKoH,IAAD,CACnB1O,QAAS,KACLuU,EAAc7F,IAElBxJ,KAAMwJ,EAAO/N,YAIzB,kBAACyV,GAAA,EAAD,CACI1W,OAAQ0U,EACRxR,MAAO1B,IAAAA,KAAU,gBACjBiL,QAASjL,IAAAA,KAAU,oCAAqC,CAACP,MAAOyT,MAAAA,OAAF,EAAEA,EAAgBzT,QAChF0V,eAAgBnV,IAAAA,KAAU,UAC1BoV,YAAapV,IAAAA,KAAU,UACvBqV,UAAWjC,EACXkC,OAAQnC,OClBhC,GA1BwB,IAA2B,IAA1B,MAACzR,EAAD,MAAQ6T,GAAkB,EAC/C,MAAMzX,EAASpB,MAET,YAACuE,EAAD,kBAAcuU,IAAqBlX,EAAAA,EAAAA,YAAW8R,IAEpD,OACI,kBAAC3O,EAAA,EAAD,CAAiBC,MAAOA,GAAS,GAAI7D,UAAWC,EAAOgU,QAClDyD,EAAQ,GACL,kBAACzT,EAAA,EAAD,CAAcC,YAAa,KACvB,kBAACC,EAAA,EAAD,CAAiBC,OAAQ,GAAIC,OAAQ,KACrC,kBAACC,EAAA,EAAD,CAAYtE,UAAWC,EAAOyC,aAAc6B,QAAQ,WAC/CmT,EAAQ,EACHvV,IAAAA,KAAU,iBAAkB,CAACyM,MAAO8I,IACpCvV,IAAAA,KAAU,gBAAiB,CAACyM,MAAO8I,MAIrD,yBAAK1X,UAAWC,EAAOoC,gBACnB,kBAACsC,GAAA,EAAD,CAAuBC,MAAOxB,EAAapB,SAAU2V,IACrD,kBAACxC,GAAD,MACA,kBAAC,GAAD,S,uFChCT,MAAMtW,IAAYC,EAAAA,GAAAA,aAAYwG,IAAD,CAChCsS,QAAStS,EAAMsS,QACfC,eAAgB,CACZ7Y,SAAU,QACVoD,QAAS,eAEbR,MAAO,CACH/B,SAAU,OACV8C,WAAY,OACZgD,WAAY,IACZtB,OAAQ,EACRpF,MAAO,SAEX6Y,eAAgB,CACZ7Y,MAAO,2BACPY,SAAU,OACVH,UAAW,MACXiG,WAAY,IACZhD,WAAY,QAEhBoV,SAAU,CACNrY,UAAW,MACXT,MAAO,e,mNCRf,MAkEA,GA1DwB,IAAuD,IAAtD,MAAC2C,EAAD,OAAQ6F,EAAR,SAAgBuQ,GAAsC,EAAzBC,E,kXAAyB,kCAC3E,MAAMhY,EAASpB,KACT0Q,GAAcC,EAAAA,GAAAA,KACdG,GAASjI,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,WACrB4H,GAAWnO,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,cACtBH,EAAWwB,IAAgBhP,EAAAA,EAAAA,WAAS,IACpCwX,EAAgBI,IAAqB5X,EAAAA,EAAAA,UAAiB,OAE7D0R,EAAAA,EAAAA,YAAU,KACNkG,EAAkB,QACnB,CAACzQ,IAEJ,MAAM0Q,GAASzO,EAAAA,EAAAA,cAAY,KACvB,GAAIjC,MAAAA,GAAAA,EAAQuG,aAAcpF,EAAAA,EAAAA,KAAUnB,MAAAA,OAAD,EAACA,EAAQuG,aAAcoK,EAAAA,EAAAA,OAAMN,GAAiB,CAC7E,MAAMO,GAAUhG,EAAAA,EAAAA,QACZ3B,EAAAA,KACCjJ,IACG6Q,EAAAA,EAAAA,KAAkC,CAC9BtK,UAAWvG,EAAOuG,UAClBqI,WAAY5O,EAAO4O,WACnBP,eAAgBnG,EAChBkG,SAAAA,MAEPpO,IAA6B8Q,EAAAA,EAAAA,KAAwB9Q,EAAOuG,aAGjEsB,GAAa,GACbC,EAAY8I,EAAQ5Q,IACf6J,MAAK,IAAsB,IAArB,eAACwG,GAAoB,EACxBI,EAAkBJ,MAErB/F,SAAQ,KACLzC,GAAa,SAG1B,CAACuG,EAAUpO,EAAQkI,EAAQJ,EAAauI,IAErCD,EACF,yBAAK7X,UAAWC,EAAO4X,gBACnB,yBAAK7X,UAAWC,EAAO2B,OAAQA,GAC9BkM,GAAa,kBAAC0K,GAAA,EAAD,CAAkBxE,KAhDjB,GAgD2ClT,QAAS,CAAC2X,aAAcxY,EAAO8X,YACxFD,GAAkB,yBAAK9X,UAAWC,EAAO6X,gBAAiBA,IAInE,OACI,kBAACY,GAAA,EAAD,IACIP,OAAQA,EACRtU,MAAOgU,EACPc,sBAAoB,EACpB7X,QAAS,CAAC8W,QAAS3X,EAAO2X,UACtBK,GAEHD,ICnEAY,GAAkB,CAACC,EAAwB3J,KACpD,MAAM,OAACzH,EAAD,SAASqR,GAAYD,EAO3B,MAAO,CACHE,YAPeC,EAAAA,EAAAA,KAAc9J,EAAUzH,MAAAA,OAAX,EAAWA,EAAQsR,YAQ/CE,aAPgBC,EAAAA,EAAAA,KAASzR,MAAAA,OAAD,EAACA,EAAQwR,aAQjCE,aAPgBC,EAAAA,EAAAA,KAAoB,CAACrS,IAAKU,MAAAA,OAAF,EAAEA,EAAQuG,UAAWqI,WAAY5O,MAAAA,OAAF,EAAEA,EAAQ4O,aAQjFgD,eANAP,MAAAA,OAAA,EAAAA,EAAUO,iBAAkBC,EAAAA,EAAAA,KAAiCpK,EAAU4J,MAAAA,OAAX,EAAWA,EAAUS,gBCd5E1a,IAAYC,EAAAA,GAAAA,aAAW,KAAM,CACtC0a,UAAW,CACPlX,QAAS,Y,mNCMV,MAAMmX,GAAmB,IAAqE,IAApE,eAACC,EAAD,eAAiBC,GAAmD,EAAhClL,E,kXAAgC,wCACjG,MAAMxO,EAASpB,KACf,OACI,yBAAKmB,UAAWC,EAAOuZ,WACnB,kBAAC5Y,GAAA,EAAD,IAAQK,QAASyY,EAAgBnV,QAAQ,OAAOtF,MAAM,WAAcwP,EAApE,CAA2EvB,MAAO,CAAC0M,UAAW,YACzFzX,IAAAA,KAAU,WAEf,kBAACvB,GAAA,EAAD,IAAQK,QAAS0Y,EAAgBpV,QAAQ,OAAOtF,MAAM,WAAcwP,EAApE,CAA2EvB,MAAO,CAAC0M,UAAW,YACzFzX,IAAAA,KAAU,aChBdtD,IAAYC,EAAAA,GAAAA,aAAYwG,IAAD,CAChCkU,UAAW,CACPlX,QAAS,OACT6K,cAAe,SAEf1H,aAAc,OAElBoU,IAAK,CACDvX,QAAS,OACTG,WAAY,SACZ0K,cAAe,MACf2M,UAAW,OACX1X,QAAS,UAEb2X,YAAa,CACTC,WAAY1U,EAAM2U,oBAEtBC,aAAc,CACV9V,OAAQ,OACRlF,MAAO,OACPW,SAAU,OACVE,YAAa,OAEjBoa,qBAAsB,CAClBC,eAAgB,OAChB9F,OAAQ,UACR/U,aAAc,OAElB0Z,YAAa,CACTha,MAAOqG,EAAMY,QAAQmU,QAAQC,KAC7Bza,SAAU,OACV+C,cAAe,EACfD,WAAY,QAEhB0W,cAAe,CACXpa,MAAOqG,EAAMY,QAAQC,KAAKC,UAC1BvG,SAAU,OACV+C,cAAe,EACfD,WAAY,QAEhB4X,mBAAoB,CAChB5a,WAAY,OACZ4C,KAAM,YAEViY,YAAa,CACTpY,QAAS,GAEbqY,QAAS,CACLxb,MAAOqG,EAAMY,QAAQC,KAAKC,UAC1BgU,eAAgB,gBAEpBM,YAAa,CACTC,UAAW,SACX1b,MAAOqG,EAAMY,QAAQC,KAAKC,UAC1B/B,OAAQ,aC7BVuW,IAAuBC,EAAAA,EAAAA,OACzB,IASa,IATZ,WACGhC,EADH,SAEG3J,EAFH,aAGG4L,EAHH,iBAIGC,EAJH,eAKGC,EALH,iBAMGC,EANH,iBAOGC,EAPH,0BAQGC,GACS,EACT,MAAMlb,EAASpB,MAET,OAAC4I,EAAD,SAASqR,GAAYD,EACrB4B,GAAUW,EAAAA,EAAAA,KAAavC,GACvB9M,GAASsP,EAAAA,EAAAA,KAAYxC,GACrByC,GAAUC,EAAAA,EAAAA,KAAa1C,IACvB,WAACE,EAAD,YAAaE,EAAb,YAA0BE,EAA1B,cAAuCE,GAAiBT,GAAgBC,EAAY3J,GACpFsM,GAAWC,EAAAA,EAAAA,KAAe3C,KAAa2C,EAAAA,EAAAA,KAAehU,GACtDQ,GAAOP,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,UACnB,UAACyN,EAAD,UAAYC,GC7Ca,KAAoE,IAAnE,SAACzM,EAAD,KAAWjH,EAAX,WAAiB4Q,EAAjB,iBAA6BkC,EAA7B,eAA+CC,GAAoB,EAEvG,IADuB/S,IAAS2T,EAAAA,IAAAA,SAAgB3T,IAAS2T,EAAAA,IAAAA,aACnC/C,EAAY,CAC9B,MACIC,UAAU,aAACS,IACXV,EACEgD,GAAYT,EAAAA,EAAAA,KAAavC,GACzBiD,GAAuBC,EAAAA,EAAAA,KAAgB7M,EAAUqK,GAGvD,MAAO,CAACmC,UAFUX,IAAqBc,IAAaG,EAAAA,EAAAA,KAAuB/T,EAAM6T,GAE9DH,UADDX,IAAmBa,IAAaI,EAAAA,EAAAA,KAAuBhU,EAAM6T,IAG/E,MAAO,CAACJ,WAAW,EAAOC,WAAW,IDiCNO,CAAwB,CACnDjU,KAAAA,EACA8S,iBAAAA,EACAC,eAAAA,EACA9L,SAAAA,EACA2J,WAAAA,IAGEsD,GAAuBzS,EAAAA,EAAAA,cACzB,IAAMqR,EAAiBlC,EAAWC,SAASsD,cAC3C,CAACrB,EAAkBlC,IAGjBwD,GAAqB3S,EAAAA,EAAAA,cAAY,IAAMsR,EAAenC,IAAa,CAACmC,EAAgBnC,IAEpFyD,GAAuB5S,EAAAA,EAAAA,cAAY,KACrCuR,EAAiBpC,KAClB,CAACoC,EAAkBpC,IAEhB0D,GAAuB7S,EAAAA,EAAAA,cAAY,IAAMwR,EAAiBrC,IAAa,CAACqC,EAAkBrC,IAE1F0B,GACDmB,GAAaC,IAAcb,IAAiBjC,EAAW2D,UACpD,oCACKb,GACG,kBAAC/H,GAAA,EAAD,CACIhO,KAAM6W,GAAAA,EACNzI,KAAK,KACL/S,QAASob,EACTxI,aAAc1R,IAAAA,KAAU,UAG/BuZ,GACG,kBAAC9H,GAAA,EAAD,CACIhO,KAAM8W,GAAAA,EACN1I,KAAK,KACL/S,QAASkb,EACTtI,aAAc1R,IAAAA,KAAU,kBAIpCkP,EAEFsL,EAA0B9D,EAAW2D,UACvC,kBAAC/C,GAAD,CACIC,eAAgB4C,EAChB3C,eAAgB4C,EAChBvI,KAAK,QACL4I,SAAUtB,SAEdjK,EACEwL,EAAcvB,EAAUnZ,IAAAA,KAAU,WAAaA,IAAAA,KAAU,UAC/D,OACI,yBACInC,UAAWgB,GAAAA,CACPf,EAAOuZ,UACP,CAAC,CAACvZ,EAAO8Z,cAAeyB,GACxB,CAAC,CAACvb,EAAOwa,SAAUA,GAAWa,KAGlC,yBAAKtb,UAAWC,EAAO4Z,KAClBsB,GAA6BA,IAC9B,kBAAC2B,GAAA,EAAD,CAAgB9c,UAAWC,EAAOia,aAAcnB,WAAYA,IAC5D,kBAACgE,GAAA,EAAD,CAAe/X,MAAOmU,EAAanZ,UAAWC,EAAOka,sBACjD,kBAAC,GAAD,CAAiBvY,MAAOqX,EAAaxR,OAAQA,GACzC,0BAAMzH,UAAWC,EAAOgZ,aAAcA,KAExClN,GAAUuP,IACR,kBAAChX,EAAA,EAAD,CAAYC,QAAQ,UAAUvE,UAAWC,EAAOya,aAAhD,IACMmC,EADN,KAIHxD,GAAiB,0BAAMrZ,UAAWC,EAAOoZ,eAAiB,KAAIA,MAGnE,yBAAKrZ,UAAWC,EAAOsa,oBAAqBA,GAC3CoC,OAOrB/B,GAAqBhc,YAAc,uBAEnC,YEjIMoe,IAAkEC,EAAAA,EAAAA,MAAKC,EAAAA,KAAU1U,EAAAA,EAAAA,MAAK,QAE/E2U,GAA6B,CAACC,EAA4BC,KACnE,MAAMC,EAAkB,CAACC,EAAmBC,KACnBA,GAAYC,EAAAA,EAAAA,KAAoBD,GAAa,IAC9CjV,KAAKuQ,IAAD,CACpBnS,KAAMqW,GAAOlE,GACbyE,UAAWA,IAAcG,EAAAA,IAAAA,GAAgBA,EAAAA,IAAAA,GAAgBA,EAAAA,IAAAA,QAGjE,OAAOJ,EAAgBI,EAAAA,IAAAA,GAAeN,GAAaO,OAAOL,EAAgBI,EAAAA,IAAAA,IAAgBL,IAAe,I,qJCXtG,MAAMxe,IAAYC,EAAAA,GAAAA,YAAW,CAChC8e,UAAW,CACP/d,SAAU,OACVE,YAAa,SCQR8d,GAAsB,IAA2D,IAA1D,QAAC5c,EAAD,WAAU4X,EAAV,OAAsBlL,EAAtB,gBAA8BmQ,GAA4B,EAC1F,MAAM7d,EAASpB,MACT,gBAACkf,GAAmBlF,GACpB,mBAACmF,GAAsBrQ,EAEvBc,EAAQ,CACVxN,QAAAA,EACAjB,UAAWC,EAAO2d,WAGtB,OAAIG,IAAoBC,IAAsBC,EAAAA,EAAAA,KAASpF,GAC5C,KAGJiF,EAAkB,kBAACI,GAAA,EAAsBzP,GAAY,kBAAC0P,GAAA,EAAmB1P,ICzBvE5P,IAAYC,EAAAA,GAAAA,YAAW,CAChC+a,IAAK,CACDvX,QAAS,OACTG,WAAY,SACZvD,MAAO,QAEXkf,mBAAoB,CAChB9e,YAAa,UCMR+e,GAAqB,IAA2C,IAA1C,OAAC1Q,EAAD,WAASkL,EAAT,SAAqBb,GAAqB,EACzE,MAAM/X,EAASpB,MAET,aAAC0B,IAAgBE,EAAAA,EAAAA,YAAW8R,KAE5B,YACF+L,EADE,gBAEFR,EAFE,sBAGFS,EAHE,cAIFC,EAJE,QAKFC,EALE,MAMF/G,GCTiC,KAA0D,IAAzD,OAAC/J,EAAD,WAASkL,EAAT,uBAAqB6F,GAAoC,EAC/F,MAAMrX,GAAWC,EAAAA,EAAAA,gBAEVwW,EAAiBa,IAAsBre,EAAAA,EAAAA,WAAS,IAChDme,EAASG,IAActe,EAAAA,EAAAA,WAAS,IAEjC,mBAAC0d,GAAsBrQ,GACvB,OAAClG,GAAUoR,EAEXyF,GACD5W,EAAAA,EAAAA,cAAaG,GACVF,EAAAA,GAAAA,UAAAA,iCAAqDE,EAAO8F,EAAO2I,GAAI7O,EAAOuG,cAC5D,GAEpB0J,GAAQhQ,EAAAA,EAAAA,cAAaG,GAAUF,EAAAA,GAAAA,UAAAA,iBAAqCE,EAAO8F,EAAO2I,GAAI7O,EAAOuG,cAC7F,eAAC6Q,IACHnX,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,gCAAsD,GAEhE6W,GAAgB9U,EAAAA,EAAAA,cAAY,KAC9B,MAAMoV,E,+UAAgB,IACfd,EADY,CAEfe,eAAe,EACfC,aAAa,EACbC,WAAY,CACRnG,SAAU4F,GAA0BQ,EAAAA,IAAAA,IACpCzX,OAAQoX,KAIhBD,GAAW,IAEXO,EAAAA,EAAAA,KAAsB1X,EAAOuG,UAAW,CAAC8Q,IAAgBxN,MAAMC,IAC3D,MAAM,YAAC+M,EAAD,MAAc5G,GAASnG,EAAS,GAElC+M,GACAjX,EACIuC,EAAAA,GAAAA,UAAAA,QAAAA,2BAAqD,CACjD0U,YAAAA,EACAP,gBAAiBtW,EAAOuG,UACxBsI,GAAI3I,EAAO2I,GACXoB,MAAAA,KAKZkH,GAAW,QAEhB,CAACjR,EAAO2I,GAAI0H,EAAoB3W,EAAUI,EAAOuG,UAAW6Q,EAAgBH,IAEzEH,GAAwB7U,EAAAA,EAAAA,cAAY,KACjCoU,GAAoBjF,EAAWyF,aAChCE,IAGJG,GAAoBS,IAAUA,MAC/B,CAACZ,EAAe3F,EAAWyF,YAAaR,IAE3C,MAAO,CAACQ,YAAAA,EAAaR,gBAAAA,EAAiBS,sBAAAA,EAAuBC,cAAAA,EAAeC,QAAAA,EAAS/G,MAAAA,ID/CjF2H,CAA0B,CAC1B1R,OAAAA,EACAkL,WAAAA,EACA6F,uBAAwBne,EAAe2e,EAAAA,IAAAA,IAAqBA,EAAAA,IAAAA,cAG1DI,GAAcxW,EAAAA,EAAAA,UAAQ,KAAMyW,EAAAA,EAAAA,KAA6BjB,IAAc,CAACA,IAa9E,OACI,oCACKtG,GAbyB,IAE1B,kBAAC6F,GAAD,CACI5c,QAASsd,EACT1F,WAAYA,EACZlL,OAAQA,EACRmQ,gBAAiBA,MAQpBA,GACG,kBAAC0B,GAAA,WAAD,CAA6Bxa,MAAOsa,GAChC,yBAAKtf,UAAWC,EAAOme,oBACnB,kBAACqB,GAAD,CACI3R,UAAW2Q,EACX9Q,OAAQA,EACR6Q,cAAeA,EACfF,YAAaA,EACb5G,MAAOA,EACPqG,gBAAiBlF,EAAWpR,OAAOuG,gBExDlDnP,IAAYC,EAAAA,GAAAA,aAAYwG,IAAD,CAChCC,WAAY,CACRnD,QAAS,oBACToD,gBAAiB,sBACjBC,aAAc,MACd9F,WAAY,QAEhB+F,YAAa,CACT7F,SAAU,OACV8F,WAAY,IACZhD,WAAY,QAEhBiD,KAAM,CACF/F,SAAU,OACVE,YAAa,OAEjB8F,QAAS,CACLxB,OAAQ,UACRyB,YAAa,oBAEjBG,OAAQ,CACJpG,SAAU,OACVZ,MAAOqG,EAAMY,QAAQC,KAAKC,UAC1BhE,QAAS,gBCiIjB,GAxHiC,IAAqF,IAApF,UAACpC,EAAD,YAAYse,EAAc,GAA1B,OAA8B3Q,EAA9B,KAAsC1F,EAAtC,WAA4CjB,EAA5C,gBAAwD+W,GAA4B,EAClH,MAAM7O,GAAWxH,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,aACvB+X,GAAgBhY,EAAAA,EAAAA,cAAaG,GAAUF,EAAAA,GAAAA,UAAAA,yBAA6CE,EAAO8F,EAAO2I,MAClGqJ,GAAkBjY,EAAAA,EAAAA,cAAaG,GAAUF,EAAAA,GAAAA,UAAAA,2BAA+CE,EAAO8F,EAAO2I,MACtG7O,GAASC,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,WACrBiY,GAAyBlY,EAAAA,EAAAA,cAAaG,GACxCF,EAAAA,GAAAA,UAAAA,0BAA8CE,EAAO8F,EAAOP,WAG1D/F,GAAWC,EAAAA,EAAAA,eACXrH,EAASpB,KAETghB,GAAgBnW,EAAAA,EAAAA,cAAY,KAC9B,MAAMoW,GAAgBC,EAAAA,EAAAA,KAA2C,CAACpS,OAAAA,EAAQ1F,KAAAA,EAAMiH,SAAAA,EAAU6O,gBAAAA,KAC1F1V,EAAAA,EAAAA,MAAKuB,EAAAA,GAAAA,UAAAA,QAAAA,mBAA6C+D,EAAO2I,IAAKjP,EAA9DgB,CAAwEyX,KACzE,CAACnS,EAAQ1F,EAAMiH,EAAU7H,EAAU0W,IAEhChD,GAAmBrR,EAAAA,EAAAA,cACpB0S,IACG/U,EAASuC,EAAAA,GAAAA,UAAAA,QAAAA,oBAA8C+D,EAAO2I,GAAI8F,IAClE/U,EAASuC,EAAAA,GAAAA,UAAAA,QAAAA,eAAyC+D,EAAO2I,GAAI8F,IAC7D,MAAM4D,EAAqB1B,EAAY3S,MAClCkN,IAAeoH,EAAAA,EAAAA,KAA6BpH,KAAgBuD,IAE3DpO,GAAYkS,EAAAA,EAAAA,IAA2BF,IACzCpX,EAAAA,EAAAA,KAAUoF,IACV3G,EAASuC,EAAAA,GAAAA,iBAAAA,QAAAA,cAA+CoE,MAGhE,CAACL,EAAQ2Q,EAAajX,IAEpB+F,EAAUO,EAAOP,QACjB+S,EAA4BhD,GAA2B/P,EAAQgQ,YAAahQ,EAAQiQ,cACpFpC,GAAmBvR,EAAAA,EAAAA,cACpBmP,IACG,MAAMuH,GAAoC/X,EAAAA,EAAAA,OACtCW,EAAAA,EAAAA,MAAK,CAAC,eACNqX,EAAAA,EAAAA,QAAO,CACHvH,SAAU,CACNS,cAAcxM,EAAAA,EAAAA,QAAOoT,EAA0BxZ,MAC/C2Z,QAAQD,EAAAA,EAAAA,QAAO,CAAC1Z,MAAMoG,EAAAA,EAAAA,QAAOoT,EAA0BxZ,MAAOyD,YAAY2C,EAAAA,EAAAA,QAAO,WALnD1E,CAQxCwQ,GACFxR,EAASuC,EAAAA,GAAAA,UAAAA,QAAAA,YAAsC+D,EAAO2I,GAAI8J,MAE9D,CAAC/Y,EAAUsG,EAAQwS,IAGjBjF,GAAmBxR,EAAAA,EAAAA,cACpBmP,IACGxR,EACIuC,EAAAA,GAAAA,UAAAA,QAAAA,eAAyC+D,EAAO2I,GAAI,CAChDiD,aAAc4G,EAA0BxZ,KACxC4Z,kBAAmBJ,EAA0B5C,UAC7CvP,UAAW6K,EAAWpR,OAAOuG,UAC7BoO,YAAavD,EAAWC,SAASsD,iBAI7C,CAAC/U,EAAUsG,EAAQwS,KAGhBK,EAAgBC,IAAsBtO,EAAAA,EAAAA,WAAU8L,EAAAA,IAAUK,GAC3DoC,EAAkBjZ,GAAUmY,EAE5Be,EAAgD,IAA1BH,EAAe7V,QAA8C,IAA9B8V,EAAmB9V,OAExEiW,EAA8B/H,IAA2B,QAC3D,MAAMgI,EAAiBlB,EAAgBhU,MAClCkV,IAAD,eAAoBA,MAAAA,GAAA,UAAAA,EAAgB/H,gBAAhB,eAA0BsD,gBAAgBvD,MAAAA,GAA1C,UAA0CA,EAAYC,gBAAtD,aAA0C,EAAsBsD,gBAElFtB,GAAgBnN,EAAOmT,qBAAsB7C,EAAAA,EAAAA,KAASpF,GACtDkI,EAAW,GAAElI,MAAAA,GAAH,UAAGA,EAAYC,gBAAf,aAAG,EAAsBsD,eAAevD,MAAAA,GAAxC,UAAwCA,EAAYC,gBAApD,aAAwC,EAAsByE,YAC9E,OACI,kBAACc,GAAD,CAAoB1Q,OAAQA,EAAQkL,WAAYA,EAAY3N,IAAK6V,IAC3D5F,GACS0F,EACH,kBAACG,GAAA,EAAD,CAAgBnI,WAAYgI,EAAgBlT,OAAQA,EAAQ1F,KAAMA,EAAMiH,SAAUA,IAElF,kBAAC,GAAD,CACIiM,0BAA2BA,EAC3BtC,WAAYA,EACZ3J,SAAUA,EACV4L,aAAcA,EACdC,iBAAkBA,EAClBC,gBAAgB3S,EAAAA,EAAAA,MAAKuB,EAAAA,GAAAA,UAAAA,QAAAA,mBAA6C+D,EAAO2I,IAAKjP,GAC9E4T,iBAAkBA,EAClBC,iBAAkBA,OAQpC+F,EACFP,KAAqBhB,GAAkBA,GAAiBA,EAAc3B,kBAAoBA,GAExFmD,EAAgCxB,GAAiBA,EAAc3B,kBAAoBA,EAEzF,OACI,yBAAK/d,UAAWA,GACXihB,GACG,kBAACrgB,GAAA,EAAD,CAAQ3B,MAAM,UAAUgC,QAAS4e,EAAe7f,UAAWC,EAAOsF,YAC9D,kBAACyF,GAAA,EAAD,CAASlK,QAAS,CAACC,KAAMd,EAAO2F,QAChC,yBAAK5F,UAAWC,EAAOyF,aAAcvD,IAAAA,KAAU,SAGtD+e,GACG,kBAACF,GAAA,EAAD,CAAgBnI,WAAY6G,EAAe/R,OAAQA,EAAQ1F,KAAMA,EAAMiH,SAAUA,IAEpFsR,EAAejY,IAAIqY,GACnBJ,EAAe7V,OAAS,GAAK8V,EAAmB9V,OAAS,GAAK,kBAACa,GAAA,EAAD,CAASxL,UAAWC,EAAO4F,UACzF4a,EAAmBlY,IAAIqY,GACvBD,GAAuB,kBAACrc,EAAA,EAAD,CAAYtE,UAAWC,EAAOgG,QAASe,K,oDCnJpE,MAAMnI,IAAYC,EAAAA,GAAAA,aAAYwG,IAAD,CAChC6b,eAAgB,CACZ7hB,YAAa,OACbC,aAAc,OACdkG,aAAc,OACdxG,MAAOqG,EAAMY,QAAQC,KAAKC,UAC1BvG,SAAU,OACV+C,cAAe,O,2cCmBhB,MAAMwe,GAAqB,IAAoC,IAAnC,WAACvI,EAAD,UAAa7Y,GAAsB,EAClE,MAAMC,EAASpB,MAET,SAACia,GAAYD,EACbwI,GAAmB3Z,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,4BAE/BuH,GAAWxH,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,aAEvB2Z,GAA8BxY,EAAAA,EAAAA,UAChC,KAAMyY,EAAAA,EAAAA,KAA0BrS,EAAU4J,MAAAA,OAAX,EAAWA,EAAUS,eACpD,CAACT,MAAAA,OAAD,EAACA,EAAUS,aAAcrK,IAGvBsS,GAAsB1Y,EAAAA,EAAAA,UACxB,IAAM,IACFsB,WAAY,OACLqX,EAAAA,EAAAA,IAAoC5I,MAExC6I,EAAAA,EAAAA,MAAwB7I,MAAAA,OAAA,EAAAA,EAAYC,WAAY,MAEvD,CAACD,IAQC8I,GALiB7Y,EAAAA,EAAAA,UACnB,KAAM8Y,EAAAA,EAAAA,KAA6BN,EAA6BE,IAChE,CAACF,EAA6BE,IAGQhY,QAAO,QAAC,OAACtE,GAAF,UAAemE,EAAAA,EAAAA,KAAanE,MAASyF,OAAS,EAEzFkX,GAAY/Y,EAAAA,EAAAA,UAAQ,KAAMgZ,EAAAA,EAAAA,KAAuBN,EAAoBpX,aAAa,CAACoX,KAEnF,iBAACO,IAAoBthB,EAAAA,EAAAA,YAAWuhB,EAAAA,IACtChQ,EAAAA,EAAAA,YAAU,OACLpH,EAAAA,EAAAA,SAAQiX,IAAcE,EAAiBF,KACzC,CAACE,EAAkBF,IAEtB,MAAMI,GAA8BnZ,EAAAA,EAAAA,UAChC,KAAMoZ,EAAAA,EAAAA,KAAwBC,EAAAA,IAAAA,SAAmC,CAACnU,UAAWqT,EAAkBxI,WAAAA,KAC/F,CAACA,EAAYwI,IAGjB,OAAOM,EACH,kBAACS,GAAA,WAAD,CAAmCpd,MAAOid,GACtC,kBAAC,KAAD,CACIjiB,UAAWgB,GAAAA,CAAWf,EAAOkhB,eAAgBnhB,GAC7CyH,OAAQ+Z,EACRa,UAAWf,KAInB,yBAAKthB,UAAWgB,GAAAA,CAAWf,EAAOkhB,eAAgBnhB,IAAamC,IAAAA,KAAU,mB,4BCnE1E,MAAMmgB,GAAoB,IAAwC,IAAvC,KAAClD,EAAD,SAAOmD,EAAP,UAAiBviB,GAAsB,EACrE,OACI,kBAAC4T,GAAA,EAAD,CACI5T,UAAWA,EACX6T,aACIuL,EACMjd,IAAAA,KAAU,uCACVA,IAAAA,KAAU,uCAEpBqgB,iBAAiB,aACjBxO,KAAK,MACLpO,KAAMwZ,EAAOqD,GAAAA,EAAmBC,GAAAA,EAChCzhB,QAASshB,KCtBR1jB,IAAYC,EAAAA,GAAAA,aAAYwG,IAAD,CAChCkU,UAAW,CACPlX,QAAS,OACT6K,cAAe,SACf9N,cAAe,OAEnBwa,IAAK,CACDvX,QAAS,OACTG,WAAY,SACZ0K,cAAe,MACf2M,UAAW,OACX1X,QAAS,qBAEb2X,YAAa,CACTC,WAAY1U,EAAM2U,oBAEtBC,aAAc,CACV9V,OAAQ,OACRlF,MAAO,OACPW,SAAU,OACVE,YAAa,OAEjBoa,qBAAsB,CAClBC,eAAgB,OAChB9F,OAAQ,UACRqO,UAAW,YACXpjB,aAAc,OAElB0Z,YAAa,CACTha,MAAOqG,EAAMY,QAAQmU,QAAQC,KAC7Bza,SAAU,OACV+C,cAAe,EACfD,WAAY,QAEhB0W,cAAe,CACXpa,MAAOqG,EAAMY,QAAQC,KAAKC,UAC1BvG,SAAU,OACV+C,cAAe,EACfD,WAAY,QAEhBigB,YAAa,CACTjjB,WAAY,OACZJ,aAAc,OAElB4hB,eAAgB,CACZ7hB,YAAa,OACbmG,aAAc,OACdxG,MAAOqG,EAAMY,QAAQC,KAAKC,UAC1BvG,SAAU,OACV+C,cAAe,GAEnBigB,iBAAkB,CACdrd,gBAAiBF,EAAMkX,WAE3BsG,kBAAmB,CACfnjB,WAAY,OACZ8C,WAAY,SACZ,mBAAoB,CAChB9C,WAAY,QAGpBojB,yBAA0B,CACtBpjB,WAAY,OACZ2C,QAAS,QAEb0gB,aAAc,CACV1gB,QAAS,OACTG,WAAY,cCzCdwgB,IAAepI,EAAAA,EAAAA,OAAK,IAAoF,IAAnF,WAAChC,EAAD,0BAAasC,EAAb,eAAwCzB,EAAxC,eAAwDC,GAA2B,EAC1G,MAAM1Z,EAASpB,KACTqkB,EAAcrK,EAAW2D,WACzB,OAAC/U,EAAD,SAASqR,GAAYD,GACpB+J,EAAaO,IAAkB7iB,EAAAA,EAAAA,WAAS,GAEzC4O,GAAWxH,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,cACvB,WAACoR,EAAD,YAAaE,EAAb,YAA0BE,EAA1B,cAAuCE,GAAiBT,GAAgBC,EAAY3J,GACpFsM,GAAWC,EAAAA,EAAAA,KAAe3C,KAAa2C,EAAAA,EAAAA,KAAehU,GAKtD4Z,GAAmB3Z,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,4BAC/Byb,EACD3b,GACGqR,IACAoJ,EAAAA,EAAAA,KAAwBC,EAAAA,IAAAA,SAAmC,CACvDnU,UAAWqT,EACXxI,WAAAA,KAER,GACJ,OACI,yBACI7Y,UAAWgB,GAAAA,CACPf,EAAOuZ,UACP,CAAC,CAACvZ,EAAO8Z,cAAeyB,GACxB,CAAC,CAACvb,EAAO4iB,kBAAmBK,KAGhC,yBAAKljB,UAAWgB,GAAAA,CAAWf,EAAO4Z,IAAKwJ,GAAAA,IAClClI,GAA6BA,IAC9B,yBAAKnb,UAAWC,EAAO+iB,cACnB,kBAAClG,GAAA,EAAD,CAAgB9c,UAAWC,EAAOia,aAAcnB,WAAYA,IAC5D,kBAACgE,GAAA,EAAD,CAAe/X,MAAOmU,EAAanZ,UAAWC,EAAOka,sBACjD,kBAAC,GAAD,CAAiBvY,MAAOqX,EAAaxR,OAAQA,GACzC,0BAAMzH,UAAWC,EAAOgZ,aAAcA,IAEzCI,GAAiB,0BAAMrZ,UAAWC,EAAOoZ,eAAiB,KAAIA,OAGvE,yBAAKrZ,UAAWC,EAAO8iB,4BACjBnY,EAAAA,EAAAA,SAAQwY,IACN,kBAACE,GAAA,EAAD,CACItjB,UAAWC,EAAO6iB,kBAClB/b,KAAKwc,EAAAA,EAAAA,KAAgCzK,GACrCsK,kBAAmBA,EACnBI,WAAYrB,EAAAA,IAAAA,SACZsB,qBAAmB,IAG1BP,GACG,kBAACzJ,GAAD,CACIzF,KAAK,QACL0F,eAAgBA,EAAeb,GAC/Bc,eAAgBA,EAAed,MAGrCqK,GACE,kBAACZ,GAAD,CACIlD,KAAMwD,EACNL,SAnDE,KACtBY,GAAgB/D,IAAUA,KAmDNpf,UAAWC,EAAO2iB,gBAKjCA,GAAe,kBAACxB,GAAD,CAAoBvI,WAAYA,QAK5DoK,GAAarkB,YAAc,eAE3B,Y,wFCnGO,MAQM8kB,GAAqBC,IACAtb,EAAAA,EAAAA,OAAKub,EAAAA,EAAAA,OAAM,SAAUC,EAAAA,MAAMC,EAAAA,EAAAA,WAAU,GAArCzb,CAAyCsb,GAClDI,QAAQ,GAGpBC,GAAmBL,GACrBA,EAAQna,QAAQya,GAA4B,IAAjBA,EAAOjf,QAAa2F,OAG7CuZ,GAAsBP,GACxBA,EAAQna,QAAQya,GAA4B,IAAjBA,EAAOjf,QAAa2F,OAG7CwZ,GAAoBR,IAC7B,GAAuB,IAAnBA,EAAQhZ,OACR,MAAO,CAACyZ,eAAgB,EAAGC,kBAAmB,GAGlD,MAAMD,EAAkBJ,GAAgBL,GAAWA,EAAQhZ,OAAU,IAC/D2Z,EAA0BC,WAAWC,OAAOJ,GAAgBL,QAAQ,IAG1E,MAAO,CAACK,eAAgBE,EAAyBD,kBAFdE,WAAWC,OAAO,IAAMF,GAAyBP,QAAQ,MC7BnFllB,IAAYC,EAAAA,GAAAA,aAAYwG,IAAD,CAChCmf,QAAS,CACLniB,QAAS,OACT6K,cAAe,SACf/K,QAAS,GACTlD,MAAO,IACPwlB,IAAK,IAETC,KAAM,CACF3K,WAAY,sBACZ1X,QAAS,OACTF,QAAS,WACTvC,SAAU,GACV6kB,IAAK,IAETE,KAAM,CACFvX,SAAU,WACV/K,QAAS,OACTE,eAAgB,gBAChB3C,SAAU,GACVZ,MAAOqG,EAAMY,QAAQC,KAAKC,UAC1BhH,WAAY,EACZ,YAAa,CACTgO,QAAS,KACTC,SAAU,WACVkH,IAAK,EACLC,KAAM,EACNwF,WAAY1U,EAAMY,QAAQL,QAC1B3G,MAAO,MACPkF,OAAQ,OAEZ,WAAY,CACRgJ,QAAS,KACTC,SAAU,WACVkH,IAAK,EACLM,MAAO,EACPmF,WAAY1U,EAAMY,QAAQL,QAC1B3G,MAAO,MACPkF,OAAQ,QAGhBygB,aAAc,CACVviB,QAAS,OACTE,eAAgB,iBAEpBqB,MAAO,CACHhE,SAAU,GACVyC,QAAS,OACTG,WAAY,SACZxD,MAAOqG,EAAMY,QAAQC,KAAKC,UAC1Bse,IAAK,EACL,WAAY,CACRzlB,MAAOqG,EAAMY,QAAQC,KAAKkU,SAE9B,eAAgB,CACZpb,MAAOqG,EAAMY,QAAQC,KAAKkU,QAC1B1U,WAAY,MAGpBmf,WAAY,CACR5lB,MAAO,GACPkF,OAAQ,GACR4V,WAAY,qBAEhB+K,SAAU,CACN7lB,MAAO,GACPkF,OAAQ,GACR4V,WAAY,sBAEhBgL,MAAO,CACH9lB,MAAO,OACPkF,OAAQ,GACR4V,WAAY,sBACZ,UAAW,CACPA,WAAY,YAGpBiL,SAAU,CACNjL,WAAY,oBAEhBpU,KAAM,CACF1G,MAAO,OACPkF,OAAQ,OACRnF,MAAO,oBAEXimB,YAAa,CACTC,UAAW,iBACXC,aAAc,iBACdhjB,QAAS,SACTijB,UAAW,IACXC,UAAW,aACXhY,SAAU,QAEd2W,OAAQ,CACJ3hB,QAAS,OACTF,QAAS,UACTK,WAAY,UAEhB8iB,OAAQ,CACJrmB,MAAO,GACPkF,OAAQ,GACRrE,YAAa,GACb,UAAW,CACPF,SAAU,KAGlB2lB,SAAU,CACNlY,SAAU,UAEdmY,KAAM,CACF5lB,SAAU,GACVZ,MAAOqG,EAAMY,QAAQC,KAAKkU,QAC1B/M,SAAU,SACVoY,aAAc,YAElBC,kBAAmB,CACfrjB,QAAS,OACTsX,UAAW,QACXja,WAAY,QAEhBimB,WAAY,CACR/lB,SAAU,GACVZ,MAAOqG,EAAMY,QAAQC,KAAKC,UAC1BrG,YAAa,GAEjB8lB,eAAgB,CACZvjB,QAAS,OACTG,WAAY,SACZiiB,IAAK,OCrGAoB,GAAe,IAA2D,IAA1D,QAACnC,EAAD,WAAUnZ,EAAV,KAAsB7J,EAAtB,SAA4BS,EAA5B,QAAsCE,GAAoB,EACnF,MAAMrB,EAASpB,KAETknB,EF7BwBpC,CAAAA,GACvB,IAAIA,GAASqC,MAAK,CAACC,EAAGC,KACzB,MAAMC,EAAa,IAAIC,KAAKH,EAAEI,WAAWC,UAEzC,OADmB,IAAIF,KAAKF,EAAEG,WAAWC,UACrBH,KEyBFI,CAAkB5C,IAClC,eAACS,EAAD,kBAAiBC,GAAqBF,GAAiBR,GACvD6C,EAAc,GAAExC,GAAgBL,OAAaS,MAC7CqC,EAAiB,GAAEvC,GAAmBP,OAAaU,MAEzD,OACI,kBAACqC,GAAA,EAAD,CAAgB/lB,KAAMA,EAAMS,SAAUA,EAAUE,QAASA,EAASqlB,UAAU,YAAYC,YAAU,GAC9F,yBAAK5mB,UAAWC,EAAOwkB,SACnB,yBAAKzkB,UAAWC,EAAO0kB,MACnB,0BAAM3kB,UAAWC,EAAO4D,OACnB1B,IAAAA,KAAU,UACX,0BAAMnC,UAAU,aAAa0jB,GAAkBC,KAEnD,0BAAM3jB,UAAWC,EAAO4D,OACnB1B,IAAAA,KAAU,qBACX,0BAAMnC,UAAU,SAAS2jB,EAAQhZ,UAGzC,6BACI,kBAACkc,GAAA,EAAD,CACItiB,QAAQ,cACRS,MAAOof,EACPtjB,QAAS,CAACgmB,IAAK7mB,EAAOglB,UACtBjlB,UAAWgB,GAAAA,CAAWf,EAAO+kB,MAAO,CAAC+B,OAAQpD,EAAQhZ,WAEzD,yBAAK3K,UAAWC,EAAO2kB,MACnB,mCACA,wCAGR,yBAAK5kB,UAAWC,EAAO4kB,cACnB,0BAAM7kB,UAAWC,EAAO4D,OACpB,yBAAK7D,UAAWC,EAAO6kB,aACvB,kBAACkC,GAAA,EAAD,CAAahnB,UAAWC,EAAO2F,OAC9BzD,IAAAA,KAAU,UACX,0BAAMnC,UAAU,SAASwmB,IAE7B,0BAAMxmB,UAAWC,EAAO4D,OACpB,yBAAK7D,UAAWC,EAAO8kB,WACvB,kBAACkC,GAAA,EAAD,CAAejnB,UAAWC,EAAO2F,OAChCzD,IAAAA,KAAU,aACX,0BAAMnC,UAAU,SAASymB,OAG9BV,EAAcpb,QACb,yBAAK3K,UAAWC,EAAOilB,YAAa,iBAAe,uBAC9Ca,EAAcxd,KAAI,CAAC,EAAmC2e,KAApC,IAAC,KAACzB,EAAD,QAAO0B,EAAP,UAAgBd,EAAhB,MAA2BrhB,GAA5B,SACf,yBAAKkG,IAAKgc,EAAGlnB,UAAWC,EAAOgkB,OAAQ,iBAAe,sBAClD,kBAACmD,GAAA,EAAD,CAAQpnB,UAAWC,EAAOslB,QACtB,kBAAC8B,GAAA,EAAD,CAAYrnB,UAAU,UAE1B,yBAAKA,UAAWC,EAAOulB,UACnB,yBAAKxlB,UAAWC,EAAOwlB,MAAOA,GAC9B,yBAAKzlB,UAAWC,EAAO4D,OAAQsjB,GAAWhlB,IAAAA,KAAU,gBAExD,yBAAKnC,UAAWC,EAAO0lB,mBACnB,0BAAM3lB,UAAWC,EAAO2lB,YAAazjB,IAAAA,KAAUkkB,EAAW,SAC/C,IAAVrhB,EACG,kBAACiiB,GAAA,EAAD,CAAejnB,UAAWC,EAAO2F,KAAM,iBAAe,wBAEtD,kBAACohB,GAAA,EAAD,CAAahnB,UAAWC,EAAO2F,KAAM,iBAAe,2BAO5E,yBAAK5F,UAAWC,EAAO4lB,gBACnB,0BAAM7lB,UAAWC,EAAO4D,OAAQ1B,IAAAA,KAAU,aACzCqI,EAAWjC,KAAI,CAAC+e,EAAWJ,IACxB,kBAACK,GAAA,EAAD,CAAmBrc,IAAKgc,EAAGI,UAAWA,UCpGjDzoB,IAAYC,EAAAA,GAAAA,aAAYwG,IAAD,CAChCmf,QAAS,CACLniB,QAAS,OACT6K,cAAe,SACf1K,WAAY,WACZvD,MAAO,IACPoV,OAAQ,WAEZkT,cAAe,CACX/hB,aAAc,EACd5F,SAAU,OACV+C,cAAe,SACfD,WAAY,OACZ1D,MAAOqG,EAAMY,QAAQC,KAAKkU,SAE9BoN,OAAQ,CACJnlB,QAAS,OACT5C,UAAW,EACXglB,IAAK,IAET9V,MAAO,CACHtM,QAAS,OACTG,WAAY,SACZxD,MAAOqG,EAAMY,QAAQC,KAAKC,UAC1BvG,SAAU,OACV+C,cAAe,EACfD,WAAY,QAEhBiD,KAAM,CACF7F,YAAa,MACbb,MAAO,OACPkF,OAAQ,OACRnF,MAAOqG,EAAMY,QAAQC,KAAKC,WAE9B4e,MAAO,CACH5gB,OAAQ,EACRlF,MAAO,OACP8a,WAAY,sBACZ,UAAW,CACPA,WAAY,YAGpBiL,SAAU,CACNjL,WAAY,wBC3BP0N,GAAU,IAA6C,IAA5C,QAAC/D,EAAD,WAAUnZ,EAAV,UAAsBxK,GAAsB,EAChE,MAAMC,EAASpB,KACT8oB,GAAaxnB,EAAAA,EAAAA,WACZQ,EAAMinB,IAAWtnB,EAAAA,EAAAA,WAAS,IAC3B,eAAC8jB,GAAkBD,GAAiBR,GAE1C,OACI,oCACI,yBACI,iBAAe,iBACf3jB,UAAWgB,GAAAA,CAAWf,EAAOwkB,QAASzkB,GACtCa,IAAK8mB,EACL1mB,QAAS,IAAM2mB,GAAQ,IAEvB,kBAACtjB,EAAA,EAAD,CAAYtE,UAAWC,EAAOunB,eAAgB9D,GAAkBC,IAChE,kBAACkD,GAAA,EAAD,CACItiB,QAAQ,cACRS,MAAOof,EACPtjB,QAAS,CAACgmB,IAAK7mB,EAAOglB,UACtBjlB,UAAWgB,GAAAA,CAAWf,EAAO+kB,MAAO,CAAC+B,OAAQpD,EAAQhZ,WAEzD,yBAAK3K,UAAWC,EAAOwnB,QACnB,yBAAKznB,UAAWC,EAAO2O,OACnB,kBAACoY,GAAA,EAAD,CAAahnB,UAAWC,EAAO2F,OAC9Boe,GAAgBL,IAErB,yBAAK3jB,UAAWC,EAAO2O,OACnB,kBAACqY,GAAA,EAAD,CAAejnB,UAAWC,EAAO2F,OAChCse,GAAmBP,MAIhC,kBAACmC,GAAD,CACInC,QAASA,EACThjB,KAAMA,EACN6J,WAAYA,EACZpJ,SAAUumB,EAAWtmB,QACrBC,QAAS,IAAMsmB,GAAQ,OCrD1B/oB,IAAYC,EAAAA,GAAAA,aAAYwG,IAAD,CAChCmf,QAAS,CACLniB,QAAS,OACT3C,YAAa,EACb+kB,IAAK,GAETlS,OAAQ,CACJxT,SAAU,EACVoD,QAAS,EACTvC,SAAU,OACV8C,WAAY,OACZklB,cAAe,OACf5oB,MAAOqG,EAAMY,QAAQC,KAAKC,WAE9BoV,SAAU,CACNvc,MAAOqG,EAAMY,QAAQC,KAAKkU,aCArByN,GAAiB,IAA2C,IAA1C,QAACnE,EAAD,QAAUoE,EAAV,WAAmBC,GAAuB,EACrE,MAAM/nB,EAASpB,KAETopB,GAAWvgB,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,aACvBugB,EAAsBvE,EAAQhY,MAAK,QAAC,KAAC8Z,GAAF,SAAYA,IAASwC,KAExD7Q,EAAY,CACd,CACIjR,KAAMhE,IAAAA,KAAU,yBAChBlB,QAAS,IAAM+mB,EAAW7lB,IAAAA,KAAU,2BAExC,CACIgE,KAAMhE,IAAAA,KAAU,kBAChBlB,QAAS,IAAM+mB,EAAW7lB,IAAAA,KAAU,oBAExC,CACIgE,KAAMhE,IAAAA,KAAU,mBAChBlB,QAAS,IAAM+mB,EAAW7lB,IAAAA,KAAU,qBAExC,CACIgE,KAAMhE,IAAAA,KAAU,eAChBlB,QAAS,IAAM+mB,EAAW7lB,IAAAA,KAAU,iBAExC,CACIgE,KAAMhE,IAAAA,KAAU,SAChBlB,QAAS,IAAM+mB,EAAW7lB,IAAAA,KAAU,YAI5C,OACI,yBAAKnC,UAAWC,EAAOwkB,SACnB,kBAAC7jB,GAAA,EAAD,CACIK,QAAS8mB,EACTxjB,QAAQ,OACRyP,KAAK,QACLhU,UAAWgB,GAAAA,CAAWf,EAAOuS,OAAQ,CACjC,CAACvS,EAAOub,UAA0C,KAA/B0M,MAAAA,OAAA,EAAAA,EAAqBljB,UALhD,SAUA,kBAAC+R,GAAA,EAAD,CACII,YAAa,CACTgR,QAAS,kBAACjK,GAAA,EAAD,MACT3Z,QAAS,OACTyP,KAAM,QACNhU,UAAWgB,GAAAA,CAAWf,EAAOuS,OAAQ,CACjC,CAACvS,EAAOub,UAA0C,KAA/B0M,MAAAA,OAAA,EAAAA,EAAqBljB,UAGhDojB,cAA8C,KAA/BF,MAAAA,OAAA,EAAAA,EAAqBljB,OAAckjB,EAAoBf,QAAU,WAChF/P,UAAWA,EACXJ,OAAO,oCCnEVnY,IAAYC,EAAAA,GAAAA,aAAYwG,IAAD,CAChCmf,QAAS,CACLriB,QAAS,YAEbimB,eAAgB,CACZtoB,YAAa,QAEjBkZ,YAAa,CACTha,MAAOqG,EAAMY,QAAQmU,QAAQC,KAC7Bza,SAAU,OACV8C,WAAY,QAEhBwX,qBAAsB,CAClB7X,QAAS,OACTqgB,UAAW,YACXvI,eAAgB,QAEpBf,cAAe,CACXpa,MAAOqG,EAAMY,QAAQC,KAAKC,UAC1BvG,SAAU,OACV8C,WAAY,QAEhBghB,QAAS,CACLhkB,WAAY,QAEhB2oB,kBAAmB,CACf3oB,WAAY,OACZD,UAAW,OAEf6oB,mBAAoB,CAChBjpB,YAAa,QAEjBujB,iBAAkB,CACdzgB,QAAS,mBACToD,gBAAiBF,EAAMkX,UACvBxd,SAAU,eAEd8jB,kBAAmB,CACflJ,UAAW,SACXla,UAAW,OACX,eAAgB,CACZC,WAAY,SAGpBojB,yBAA0B,CACtBpjB,WAAY,OACZ2C,QAAS,OACTG,WAAY,cChBP+lB,GAAsB,IAOtB,UAPuB,WAChC3P,EADgC,cAEhC2F,EAFgC,0BAGhCrD,EAHgC,eAIhCzB,EAJgC,eAKhCC,EALgC,WAMhC8O,GACS,EACT,MAAMxoB,EAASpB,KACTqkB,EAAcrK,EAAW2D,WAExBoG,EAAaO,IAAkB7iB,EAAAA,EAAAA,WAAS,IAEzC,OAACmH,EAAD,SAASqR,GAAYD,EACrB3J,GAAWxH,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,cACvB,YAACsR,EAAD,WAAcF,EAAd,YAA0BI,EAA1B,cAAuCE,GAAiBT,GAAgBC,EAAY3J,GACpFyU,GAAU7K,MAAAA,OAAA,EAAAA,EAAU6K,UAAW,GAC/BnZ,GAAasO,MAAAA,GAAA,UAAAA,EAAUwH,cAAV,eAAkB9V,aAAc,GAmB7C6W,GAAmB3Z,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,4BAC/Byb,EACD3b,GACGqR,IACAoJ,EAAAA,EAAAA,KAAwBC,EAAAA,IAAAA,SAAmC,CACvDnU,UAAWqT,EACXxI,WAAAA,KAER,GAEJ,OACI,yBAAK7Y,UAAWgB,GAAAA,CAAWf,EAAOwkB,QAAS,CAAC,CAACxkB,EAAO4iB,kBAAmBK,KACnE,kBAAC3U,EAAA,EAAD,CAAKjM,QAAQ,OAAOwX,UAAU,OAAO9Z,UAAWqjB,GAAAA,GAC5C,kBAAC9U,EAAA,EAAD,CAAKjM,QAAQ,OAAOG,WAAW,UAC3B,kBAAC8L,EAAA,EAAD,CAAKjM,QAAQ,OAAOG,WAAW,UAC1B0Y,GAA6BA,IAC9B,kBAAC2B,GAAA,EAAD,CAAgB/D,WAAYA,EAAY/Y,UAAWC,EAAOooB,kBAE9D,kBAAC9Z,EAAA,EAAD,CAAKjM,QAAQ,OAAO6K,cAAc,UAC9B,kBAAC4P,GAAA,EAAD,CAAe/X,MAAOmU,EAAanZ,UAAWC,EAAOka,sBACjD,kBAAC,GAAD,CAAiBvY,MAAOqX,EAAaxR,OAAQA,GACzC,0BAAMzH,UAAWC,EAAOgZ,aAAcA,KAG7CI,GAAiB,0BAAMrZ,UAAWC,EAAOoZ,eAAgBA,IACxD6J,GAAeuF,GACb,kBAACX,GAAD,CAAgBnE,QAASA,EAASoE,QAvCtC,MAChBW,EAAAA,EAAAA,KAAa5P,MAAAA,OAAD,EAACA,EAAUsD,YAAa,CAChC+K,QAAS,GACTniB,MAAO,IACRsM,KAAKkN,IAmCoEwJ,WAhCxDb,KACpBuB,EAAAA,EAAAA,KAAa5P,MAAAA,OAAD,EAACA,EAAUsD,YAAa,CAChC+K,QAAAA,EACAniB,MAAO,IACRsM,KAAKkN,QAgCA,yBAAKxe,UAAWC,EAAO8iB,4BACjBnY,EAAAA,EAAAA,SAAQwY,IACN,kBAACE,GAAA,EAAD,CACItjB,UAAWC,EAAO6iB,kBAClB/b,KAAKwc,EAAAA,EAAAA,KAAgCzK,GACrCsK,kBAAmBA,EACnBI,WAAYrB,EAAAA,IAAAA,SACZsB,qBAAmB,IAG1BP,GACG,kBAACzJ,GAAD,CACIC,eAAgBA,EAAeb,GAC/Bc,eAAgBA,EAAed,MAGrCqK,GACE,oCACKuF,GACG,kBAACf,GAAD,CAAS/D,QAASA,EAASnZ,WAAYA,EAAYxK,UAAWC,EAAO0jB,UAEzE,kBAACrB,GAAD,CACIlD,KAAMwD,EACNL,SAtEF,KACtBY,GAAgB/D,IAAUA,KAsEFpf,UAAWC,EAAOqoB,uBAMrC1F,GAAe,kBAACxB,GAAD,CAAoBvI,WAAYA,EAAY7Y,UAAWC,EAAOsoB,uBCjHpFI,GAAgB,IAA+E,IAA9E,UAAC3oB,EAAD,YAAYse,EAAc,GAA1B,cAA8BE,EAA9B,OAA6C7Q,EAA7C,aAAqDib,GAAyB,EACjG,MAAM,UAACC,EAAD,QAAYzb,EAAZ,KAAqBzG,GAAQgH,GAC7B,eAACgM,EAAD,eAAiBD,GCLU,EAACtM,EAA2BoR,EAA2BoK,KACxF,MAAME,EAAqB3L,GAA2B/P,EAAQgQ,YAAahQ,EAAQiQ,cAC7EhW,GAAWC,EAAAA,EAAAA,eAkCjB,MAAO,CACHqS,eAlCoBd,GAA2B,KAC/C,MAAM,OAACpR,GAAUoR,GACjBkQ,EAAAA,EAAAA,KAAwBH,EAAc,CAClCI,iBAAkBvhB,EAAOuG,UACzBuL,aAAcuP,EAAmBniB,KACjC4Z,kBAAmBuI,EAAmBvL,YAErCjM,KAAKkN,GACL9M,OAAOC,IACJtK,EAASwK,EAAAA,GAAAA,QAAAA,UAAoBC,EAAAA,EAAAA,KAAuBH,EAAOxP,IAAAA,KAAU,+BA0B7EuX,eAtBoBb,GAA2B,KAC/C,MAAM,OAACpR,EAAD,SAASqR,GAAYD,GACrB,UAACoQ,EAAD,QAAYC,GAAWpQ,EACvBqQ,EAAgBL,EAAmBvL,YAAcG,EAAAA,IAAAA,GACjD0L,EAAiBD,EAAgB1hB,EAAOuG,UAAY4a,EACpDS,EAAeF,EAAgBP,EAAenhB,EAAOuG,WAC3Dsb,EAAAA,EAAAA,KAAe,CACXF,eAAAA,EACAC,aAAAA,EACA9P,aAAcuP,EAAmBniB,KACjCyD,WAAY,KACZ6e,UAAAA,EACAC,QAAAA,IAEC5X,KAAKkN,GACL9M,OAAOC,IACJtK,EAASwK,EAAAA,GAAAA,QAAAA,UAAoBC,EAAAA,EAAAA,KAAuBH,EAAOxP,IAAAA,KAAU,iCD3BxConB,CAAsBnc,EAASoR,EAAeoK,GAEjF/G,GAAY/Y,EAAAA,EAAAA,UAAQ,KACf0gB,EAAAA,EAAAA,KAA0ClL,IAClD,CAACA,KAEE,iBAACyD,IAAoBthB,EAAAA,EAAAA,YAAWuhB,EAAAA,GAMtC,OAJAhQ,EAAAA,EAAAA,YAAU,KACN+P,EAAiBF,KAClB,CAACE,EAAkBF,IAGlB,yBAAK7hB,UAAWA,GACXse,EAAY/V,KAAKsQ,IAAe,QAC7B,MAAMkI,EAAW,GAAElI,MAAAA,GAAH,UAAGA,EAAYC,gBAAf,aAAG,EAAsBsD,eAAevD,MAAAA,GAAxC,UAAwCA,EAAYC,gBAApD,aAAwC,EAAsByE,YAE9E,OACI,kBAACc,GAAD,CAAoB1Q,OAAQA,EAAQkL,WAAYA,EAAY3N,IAAK6V,IAC3D5F,GACM0N,EAEI,kBAACL,GAAD,CACIhK,cAAeA,EACf3F,WAAYA,EACZa,eAAgBA,EAChBC,eAAgBA,EAChBwB,0BAA2BA,EAC3BsN,WAAqB,WAAT9hB,IAMpB,kBAAC,GAAD,CACI+S,eAAgBA,EAChBC,eAAgBA,EAChBd,WAAYA,EACZsC,0BAA2BA,WAW/DwN,GAAc/pB,YAAc,gBAE5B,YEnEaC,IAAYC,EAAAA,GAAAA,aAAYwG,IAAD,CAChCmkB,KAAM,CACFrqB,WAAY,MACZC,cAAe,OACfiO,SAAU,OACVC,SAAU,GAEdtH,OAAQ,CACJpG,SAAU,OACVZ,MAAOqG,EAAMY,QAAQC,KAAKC,UAC1BhE,QAAS,YAEbsnB,gBAAiB,CACbnV,IAAK,YCKAkL,GAAmB,IAAoF,IAAnF,UAAC3R,EAAD,OAAYH,EAAZ,cAAoB6Q,EAApB,YAAmCF,EAAnC,MAAgD5G,EAAhD,gBAAuDqG,GAA4B,EAChH,MAAM9d,EAASpB,MAET,UAAC8qB,GAAahiB,EAAAA,GACdF,GAASC,EAAAA,EAAAA,aAAYiiB,EAAUC,WAC/B3hB,GAAOP,EAAAA,EAAAA,aAAYiiB,EAAUE,SAE7B7iB,EAAa2G,EAAO,eAAiBxL,IAAAA,KAAU,iBAErD,OAAI2L,EACO,kBAACU,EAAA,EAAD,CAAqBxO,UAAWC,EAAOypB,kBAG9C/b,EAAOP,UAAWjK,EAAAA,EAAAA,KAAe8E,GAE7B,kBAAC,GAAD,CACIqW,YAAaA,EACbte,UAAWC,EAAOwpB,KAClBve,IAAKzD,MAAAA,OAAF,EAAEA,EAAQV,IACb4G,OAAQA,EACR1F,KAAMA,EACNjB,WAAYA,EACZ+W,gBAAiBA,IAKzBpQ,EAAOP,SAAWsK,EAAQ,EAEtB,kBAAC,GAAD,CACI/J,OAAQA,EACR6Q,cAAeA,EACfF,YAAaA,EACbte,UAAWC,EAAOwpB,KAClBve,IAAKzD,MAAAA,OAAF,EAAEA,EAAQV,IACb6hB,aAAcnhB,EAAOV,MAK1B,kBAACzC,EAAA,EAAD,CAAYtE,UAAWC,EAAOgG,QAASe,IC1DrCnI,IAAYC,EAAAA,GAAAA,YAAW,CAChC0a,UAAW,CACPjM,SAAU,EACVjL,QAAS,OACT6K,cAAe,SACf2M,UAAW,GAEf1M,QAAS,CACL9K,QAAS,OACTiL,SAAU,EACVJ,cAAe,SACf2M,UAAW,GAEftM,WAAY,CACRpJ,OAAQ,OACRmJ,SAAU,EACV1K,WAAY,KCOdinB,GAAgB,IAAgC,IAA/B,OAACnc,EAAD,UAAS3N,GAAsB,EAClD,MAAMC,EAASpB,MAET,KAACgP,EAAD,QAAOvK,EAAP,YAAgBuL,EAAhB,UAA6BiE,EAA7B,WAAwCE,EAAxC,aAAoDzS,EAApD,YAAkE6C,EAAlE,kBAA+EuU,IACjFlX,EAAAA,EAAAA,YAAW8R,KACT,UAACoX,GAAahiB,EAAAA,GACd2W,GAAc5W,EAAAA,EAAAA,cAAaG,GAC7B8hB,EAAUI,iCAAiCliB,EAAO8F,EAAO2I,MAEvD7O,GAASC,EAAAA,EAAAA,aAAYiiB,EAAUC,WAC/BlS,GAAQhQ,EAAAA,EAAAA,cAAaG,GAAU8hB,EAAUK,iBAAiBniB,EAAO8F,EAAO2I,MACxErO,GAAOP,EAAAA,EAAAA,aAAYiiB,EAAUE,SAC7BI,GAAUnhB,EAAAA,EAAAA,UACZ,KAAM,CACFohB,MAAOpX,EACPqX,MAAOnX,KAEX,CAACF,EAAWE,KAGhBhB,EAAAA,EAAAA,YAAU,KACN2F,EAAkB,MACnB,CAAClQ,MAAAA,OAAD,EAACA,EAAQV,MAEZ,MAAMyC,GAASV,EAAAA,EAAAA,UAAQ,IC/CG1F,CAAAA,IAC1B,MAAMgnB,EAAcC,EAAAA,IAAAA,UAAwBjnB,GACvCmF,IAAI+hB,EAAAA,KACJ/hB,KACIgiB,GACI,yCAAwCA,iDAEEA,OAElDC,OAAO,IAEZ,OAAO,IAAIC,EAAAA,KAAgBC,UAAUN,GAAaO,SDoCrBC,CAAqBxnB,IAAc,CAACA,KAE3D,UAAC0K,EAAW+c,OAAQrM,IAAiBsM,EAAAA,GAAAA,GAAmB,CAC1Db,QAAAA,EACAzgB,OAAAA,EACAqE,KAAAA,EACAgB,YAAAA,EACAlB,OAAAA,EACAlG,OAAAA,EACAiX,uBAAwBne,EAAe2e,EAAAA,IAAAA,IAAqBA,EAAAA,IAAAA,YAC5DjX,KAAAA,IAGEqX,GAAcxW,EAAAA,EAAAA,UAAQ,KAAMyW,EAAAA,EAAAA,KAA6BjB,IAAc,CAACA,IAExEyM,GAAuBjiB,EAAAA,EAAAA,UACzB,KAAM,CACF4M,gBAAiB8I,EACjB7Q,QAAQqd,EAAAA,EAAAA,MAAK,CAAC,UAAW,eAAgB,iBAAkBrd,MAE/D,CAAC6Q,EAAe7Q,IAGpB,OADAsd,EAAAA,GAAAA,GAA0Btd,EAAO2I,IAE7B,kBAAC4U,GAAA,WAAD,CAAwBlmB,MAAOyC,GAC3B,kBAAC+X,GAAA,WAAD,CAA6Bxa,MAAOsa,GAChC,kBAAChR,EAAA,EAAD,CAAWtO,UAAWA,GAClB,yBAAKA,UAAWC,EAAOuZ,WACnB,kBAACtF,GAAgBiX,SAAjB,CAA0BnmB,MAAO+lB,GAC7B,kBAAC,GAAD,CAAiBlnB,MAAO8J,EAAO3K,QAAS0U,MAAOA,KAEnD,yBAAK1X,UAAWC,EAAOmN,SACnB,kBAACqS,GAAD,CACI3R,UAAWA,EACXH,OAAQA,EACR6Q,cAAeA,EACfF,YAAaA,EACb5G,MAAOA,IAEVA,EAAQ7I,GACL,kBAACF,EAAA,EAAD,CACI7N,QAAS,CAACC,KAAMd,EAAOuN,YACvBoB,MAAO8I,EACP5I,mBAAoB,GACpBD,YAAaA,EACbhB,KAAMA,EACNkB,aAAczL,UAWlDwmB,GAAclrB,YAAc,gBErG5B,MCDawsB,GAAwBzsB,IAAAA,cA2B1B,MAEXysB,GAAsBxsB,YAAc,wB,mfC/BpC,MAAMysB,GAAsB,sBAEtBC,GAAU,MACTC,GAAAA,GAAAA,QADM,CAET5T,mBAAmB6T,EAAAA,GAAAA,IAAqBH,MAGtCI,GAAU,CAAC5jB,EAAO6jB,IACZA,EAAO/kB,OACN0kB,GACD,MAAWxjB,EAAX,CAAkBzE,YAAasoB,EAAOC,QAAS9d,KAAM,IAE9C0d,GAAAA,GAAAA,QAA4B1jB,EAAO6jB,G,ueCXtD,MAEME,GAAe,CACjBxR,eAAgB,eAChBnb,MAAO,mBAGEJ,IAAYC,EAAAA,GAAAA,aAAW,KAAM,CACtC+sB,SAAU,CACNvpB,QAAS,OACTG,WAAY,SACZ2B,OAAQ,OACRvE,SAAU,QAEdisB,QAAS,CACLjsB,SAAU,OACVyN,SAAU,UAEdye,YAAa,CACT1e,SAAU,WACV2e,UAAW,OACXC,UAAW,SACXC,WAAY,MACZ7G,UAAY,QACZC,UAAW,aACXljB,QAAS,oBAEb+pB,eAAgB,CACZD,WAAY,SACZ5e,SAAU,SACVoY,aAAc,WACdtjB,QAAS,oBAEbgqB,gBAAiB,IACbhqB,QAAS,QACTzC,WAAY,QACT0sB,EAAAA,IAAgBC,EAAAA,IAAAA,kBAEvBC,gBAAiB,MACVF,EAAAA,IAAgBC,EAAAA,IAAAA,kBAEvBE,gBAAiB,IACbpqB,QAAS,QACTzC,WAAY,OACZya,eAAgB,gBACbiS,EAAAA,IAAgBC,EAAAA,IAAAA,kBAEvBtoB,YAAa,CACTrE,WAAY,SAEhB,mBAAoB,CAChBV,MAAO,oBAEX,oBAAqB,CACjBwtB,cAAe,OACf,UAAWb,QCxCnB,IAAec,EAAAA,GAAAA,IAZWje,IACtB,MAAMxO,EAASpB,MACT,YAACmF,IAAeyK,MAAAA,OAAA,EAAAA,EAAOke,eAAgB,GAE7C,OACI,yBAAK3sB,UAAWC,EAAO4rB,UACnB,kBAACe,GAAA,QAA4Bne,GAC7B,kBAAC1K,EAAA,EAAD,CAAiBC,YAAaA,EAAahE,UAAWC,EAAO+D,kB,4BCHzE,MASA,GATqB,IAAsC,IAArC,MAACgB,EAAD,iBAAQ6nB,GAA6B,EACvD,MAAM5sB,EAASpB,KACf,OACI,yBAAKmB,UAAWC,EAAO8rB,YAAae,SAAUC,GAAAA,IAC1C,0BAAM/sB,UAAWC,EAAO4sB,IAAoB7nB,KC4BxD,GAvBiC,IAAsD,IAArD,MAACA,EAAOgoB,YAAY,mBAACC,IAAgC,EACnF,MAAMhtB,EAASpB,MAERmG,MAAOkoB,EAAR,IAAqBnmB,GAAO/B,GAC5B,WAACmoB,IAAc1sB,EAAAA,EAAAA,YAAW2sB,EAAAA,GAC1BP,GAAmBxkB,EAAAA,EAAAA,MAAKglB,EAAAA,IAA2BC,EAAAA,IAAhCjlB,CAA8DtB,EAAKomB,GAE5F,GAAQF,EAAmBtmB,OAClB4mB,EAAAA,IAAAA,UACD,OAAO,kBAAC,GAAD,CAAcvoB,MAAOkoB,EAAaL,iBAAkBA,IACtD,CACL,MAAMW,EAAgB,kBAACC,GAAA,EAAD,CAAezoB,MAAOkoB,EAAaD,mBAAoBA,IAC7E,OACI,kBAACS,GAAA,EAAD,CAAsB1oB,MAAOwoB,GACzB,yBAAKxtB,UAAWC,EAAOksB,gBACnB,0BAAMnsB,UAAWC,EAAO4sB,IAAoBW,O,yHClB7D,MAAMG,GAAkC,CAACC,EAAyBC,KACrE,MAAM,IAAC9mB,EAAD,MAAMnF,EAAN,SAAaoW,EAAb,KAAuB5Q,EAAvB,YAA6BpD,GAAe4pB,EAClD,OAAOE,EAAAA,EAAAA,QAAO1V,EAAAA,MAAO,CACjB9B,IAAIyX,EAAAA,EAAAA,KAAwBhnB,EAAK8mB,GACjCjsB,MAAAA,EACAoC,YAAAA,EACAipB,oBAAoBe,EAAAA,EAAAA,KAA0BJ,GAC9C5V,SAAUA,MAAAA,OAAF,EAAEA,EAAUzP,KAAK0lB,GAAcN,GAAgCM,EAAWJ,EAAQlQ,OAAO,CAACvW,KAAAA,UAYpG8mB,IAA0B7lB,EAAAA,EAAAA,OAAK8lB,EAAAA,EAAAA,OAAM,MAAMpd,EAAAA,EAAAA,OAAM,EAAGH,EAAAA,IAkBpDwd,GAA2BC,IAC7B,IAAIC,EAAAA,EAAAA,KAAqBD,GAAW,CAChC,MAAME,EAAWL,GAAwBG,GACzC,OAAOE,EAAS5jB,OAAS,EAAI4jB,EAASxd,MAAM,GAAI,GAAK,KAErD,OAAO,MAaFyd,IAA2BjmB,EAAAA,EAAAA,MATPykB,G,+UAAD,IACzBA,EADyB,CAE5ByB,UAAU,EACVC,WAAW,EACXC,WAAYP,GAAwBpB,EAAW1W,IAC/CsY,iBAAkBC,GAClBC,qBAAsBC,O,qKClEnB,MAAMlwB,IAAYC,EAAAA,GAAAA,aAAW,KAAM,CACtCmV,OAAQ,CACJ7R,QAAS,iBAEbC,eAAgB,CACZC,QAAS,OACTC,KAAM,WACNC,eAAgB,WAChBC,WAAY,cC4CpB,GAnC6B,IAAoB,IAAnB,MAACoB,GAAkB,EAC7C,MAAM5D,EAASpB,KACTsE,GAAiBuE,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,oBAE7B,cACFlE,EADE,YAEFL,EAFE,eAGFC,EAHE,QAIF2rB,EAJE,gBAKFC,EALE,eAMFC,EANE,eAOFC,EAPE,gBAQFC,IACA3uB,EAAAA,EAAAA,YAAW2qB,IAET1nB,EAAmBP,IAAkBM,MAAAA,OAAJ,EAAIA,EAAeE,UAE1D,OACI,kBAACC,EAAA,EAAD,CAAiBC,MAAOA,EAAO7D,UAAWC,EAAOgU,QAC5CvQ,GAAoB,kBAACI,EAAA,EAAD,MACrB,kBAACC,EAAA,EAAD,CAAiBC,YAAaP,MAAAA,OAAF,EAAEA,EAAeO,cAC7C,yBAAKhE,UAAWC,EAAOoC,gBACnB,kBAACsC,GAAA,EAAD,CAAuBC,MAAOxB,EAAapB,SAAUqB,IACrD,kBAAC,KAAD,CAAcgsB,UAAWL,EAAS/tB,QAASguB,IAC3C,kBAAC9qB,EAAA,EAAD,CAAiBC,OAAQ,GAAIC,OAAQ,IACrC,kBAACirB,GAAA,EAAD,CACIC,YAAaL,EACbM,gBAAiBL,EACjBC,gBAAiBA,O,mNCpCrC,MAmBA,IAAeK,E,SAAAA,IAAiB,CAAC,EAAD,SAAC,YAACC,GAAF,GAAiBC,UAAU,MAAC3qB,IAA5B,QAAyC,CACrE6W,UAAW+T,QAAQF,EAAY/jB,MAAM5E,GAAQ/B,EAAM+B,MAAQA,QAD/D,EAnBwB,IAA0E,IAAzE,KAAC8oB,EAAD,kBAAOC,EAAP,UAA0BjU,EAA1B,SAAqCkU,GAAoC,EAAvBC,E,kXAAuB,wDAC9F,MAAM/vB,EAASpB,KACf,OACI,yBACImB,UAAWgB,GAAAA,CACP,CACI,CAACf,EAAO,qBAAsB8vB,EAC9B,CAAC9vB,EAAO,sBAAuB4b,GAEnC5b,EAAO6rB,UAGV+D,EAAK3qB,OAAOqD,KAAI,CAACvD,EAAOirB,IACrB,kBAACH,EAAD,IAAmB5kB,IAAK+kB,EAAOjrB,MAAOA,GAAWgrB,U,4BCtB1D,MAAMnxB,IAAYC,EAAAA,GAAAA,aAAW,KAAM,CACtCoxB,eAAgB,CACZ5tB,QAAS,OACT6tB,WAAY,SACZlxB,MAAO,mBACPwG,aAAc,QAElB,8BAA+B,CAC3B4H,SAAU,YAEd,4BAA6B,CACzB/K,QAAS,OACThD,YAAa,OACb,aAAc,CACVK,WAAY,QACZywB,UAAW,mBCUvB,GAhB2B,QAAC,OAACC,EAAD,SAASC,GAAV,SACvB,oCACKD,GACG,kBAACzc,GAAA,EAAD,CAA4BC,aAAc1R,IAAAA,KAAU,QAASyD,KAAM6W,GAAAA,EAAUzI,KAAK,IAAI/S,QAASovB,IAElGC,GACG,kBAAC1c,GAAA,EAAD,CACIC,aAAc1R,IAAAA,KAAU,UACxByD,KAAM8W,GAAAA,EACN1I,KAAK,IACL/S,QAASqvB,M,mNCEzB,MAmJA,GA7HuB,IAWV,IAXW,YACpBf,EADoB,OAEpBrqB,EAFoB,QAGpB+kB,EAHoB,OAIpBsG,EAJoB,QAKpBvB,EALoB,SAMpBwB,EANoB,OAOpB7iB,EAPoB,OAQpB0iB,EARoB,kBASpBtmB,EAToB,YAUpB2lB,GACS,EACT,MAAMe,GAAgB3nB,EAAAA,EAAAA,UAAQ,INZG,EAAC5D,EAAQqqB,IAC1CrqB,EAAOqD,KAAKvD,IACRqD,EAAAA,EAAAA,OACIqoB,EAAAA,EAAAA,SAAO,CAACC,EAAD,SAAM,GAACra,GAAP,SAAesa,EAAAA,EAAAA,OAAMta,EARV,EAAC+X,EAAUrpB,IAHd,EAACupB,EAAUvpB,KAClCqD,EAAAA,EAAAA,OAAKmJ,EAAAA,EAAAA,MAAK,CAAC,WAAWqf,EAAAA,EAAAA,KAAkCtC,GAAxDlmB,CAAmErD,GAI5D8rB,CADU5C,GAAwBG,GACLrpB,GAMI+rB,CAAsBza,EAAItR,GAAQ2rB,KAAM,KACxEC,EAAAA,EAAAA,OAAM,QAAS5rB,GAFnBqD,CAGEknB,KMO8ByB,CAAsB9rB,EAAQqqB,IAAc,CAACrqB,EAAQqqB,IACnF0B,GAAmBnoB,EAAAA,EAAAA,UAAQ,IAAM0lB,GAAyBe,IAAc,CAACA,IAEzEtvB,EAASpB,KACToJ,GAAOP,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,SACnBxE,GAAiB+tB,EAAAA,EAAAA,KAAoBjpB,GACrCiH,GAAWxH,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,aACvBqG,GAAYtG,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,cAExBC,GAAiBF,EAAAA,EAAAA,cAClBG,GAAUF,EAAAA,GAAAA,UAAAA,kBAAsCE,EAAOmG,IAAe,MAErE,cAACvK,IAAiBhD,EAAAA,EAAAA,YAAW2qB,IAE7B+F,GAAgBznB,EAAAA,EAAAA,cACjB+E,GACG,kBAAC,GAAD,MACQA,EADR,CAEIshB,WAAY9F,GAAWA,EAAQE,QAAU1b,EAAMue,WAAW1W,OAGlE,CAAC2T,KAGEmH,EAAeC,IAAoB/wB,EAAAA,EAAAA,UAAS,OAE7C,UAACqb,EAAD,UAAY2V,IAAaC,EAAAA,GAAAA,KAoBzBC,GAAmB1oB,EAAAA,EAAAA,UACrB,IAC6B,iBAAlBsoB,IAA8BjuB,GAC/BusB,EAAY5jB,UAASzD,EAAAA,EAAAA,OAAKmJ,EAAAA,EAAAA,MAAK,CAAC4f,KAAiB5oB,EAAAA,EAAAA,MAAK,OAAjCH,CAAyCnD,KAExE,CAACksB,EAAe1B,EAAaxqB,EAAQ/B,IAEnCuY,EAAqC,iBAAlB0V,IAjBDjmB,GAiB8CqG,EAAAA,EAAAA,MAAK,CAAC4f,GAAgBlsB,GAhBxFosB,EAAU3jB,KACV8jB,EAAAA,EAAAA,KAAwB,CACpBhuB,cAAAA,EACAwE,KAAAA,EACAkD,eAAAA,EACA+D,SAAAA,EACAwiB,mBAAmBA,EAAAA,EAAAA,KAAkB9pB,EAAe4C,WAAYW,MAPhDA,IAAAA,EAkBxB,MAAMwmB,EAAmC,iBAAlBP,GA1BDjmB,CAAAA,GAClBwQ,EAAUhO,KACVikB,EAAAA,EAAAA,KAAsB,CAClBnuB,cAAAA,EACAwE,KAAAA,EACAkD,eAAAA,EACAumB,mBAAmBA,EAAAA,EAAAA,KAAkB9pB,EAAe4C,WAAYW,KAoBnB0mB,EAAargB,EAAAA,EAAAA,MAAK,CAAC4f,GAAgBlsB,IAElF4sB,GAAsBpoB,EAAAA,EAAAA,cAAY,KACpC,MAAMyB,GAAiBqG,EAAAA,EAAAA,MAAK,CAAC4f,GAAgBlsB,GACxCysB,GACLtB,EAAOllB,KACR,CAACklB,EAAQe,EAAelsB,EAAQysB,IAE7BI,GAAwBroB,EAAAA,EAAAA,cAAY,KACtC,MAAMyB,GAAiBqG,EAAAA,EAAAA,MAAK,CAAC4f,GAAgBlsB,GAC7C,IAAKwW,EAAW,OAChB,MAAMsW,EAA2B,CAC7BvrB,UAAWuH,EACXvK,cAAAA,EACAsD,IAAKoE,EAAepE,IACpB/B,MAAOmG,GAEXpB,EAAkBioB,GAClBX,EAAiB,QAClB,CAACD,EAAelsB,EAAQ6E,EAAmB2R,EAAWjY,EAAeuK,IAElEikB,EACDT,IAAqB9V,IAAaiW,OAK/BtgB,EAJA,kBAAC,GAAD,CACIgf,OAAQsB,EAAUG,OAAsBzgB,EACxCif,SAAU5U,EAAYqW,OAAwB1gB,IAGpD6gB,GAAUppB,EAAAA,EAAAA,UAAQ,KAAM,CAAE4mB,YAAAA,KAAe,CAACA,IAChD,OACI,yBAAK1vB,UAAWC,EAAOiwB,gBACnB,kBAACiC,GAAA,EAAD,CACIC,YAAU,EACV/M,UAzHG,IA0HHkK,YAAa0B,EACboB,SAAU5B,EACVxG,QAASA,EACTsG,OAAQA,EACRvB,QAASA,EACTwB,SAAUA,EACV8B,mBAAmB,EACnBC,mBAAoB,IACpBC,sBAAuB,IACvBC,cAAe,GACfC,oBAAqB,IACrBvB,cAAeA,EACfwB,WAAYtB,EACZD,cAAeA,EACfa,uBAAwBA,EACxBC,QAASA,EACTpxB,QAAS,CACL8xB,8BAA+B3yB,EAAO,6BACtC4yB,gCAAiC5yB,EAAO,oC,2cC5I5D,MAAMoG,GAAa,GCrBNxH,IAAYC,EAAAA,GAAAA,aAAW,KAAM,CACtCg0B,cAAe,CACXxwB,QAAS,OACTE,eAAgB,WAChB6B,OAAQ,aAER,aAAc,CACVxE,SAAU,OACV8C,WAAY,OACZhD,WAAY,MACZyC,QAAS,WACToD,gBAAiB,4B,yHCgBtB,MAAMutB,GAAmB,IAOnB,IAPoB,kBAC7BjpB,EAD6B,SAE7BkpB,EAF6B,QAG7BC,EAH6B,kBAI7BlpB,EAJ6B,WAK7BmpB,EAL6B,eAM7B/nB,GACS,EACT,MAAMlL,EAASpB,KACTwI,GAAWC,EAAAA,EAAAA,eAEXC,GAAS9G,EAAAA,EAAAA,YAAW+G,EAAAA,IACpB,cAAC/D,IAAiBhD,EAAAA,EAAAA,YAAW2qB,IAE7Bpd,GAAYtG,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,cACxBM,GAAOP,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,SACnBC,GAAiBF,EAAAA,EAAAA,cAClBG,GAAUF,EAAAA,GAAAA,UAAAA,kBAAsCE,EAAOmG,IAAe,KAErEmlB,GACFC,EAAAA,EAAAA,KAAY3vB,KAAkBmF,EAAAA,EAAAA,MAAUyqB,EAAAA,EAAAA,KAAoCloB,IAC1EmoB,GAAsB5rB,EAAAA,EAAAA,cAAaG,GACrCsrB,EAAmCxrB,EAAAA,GAAAA,UAAAA,oBAAwCE,QAASwJ,IAElFvJ,GAASJ,EAAAA,EAAAA,cAAaG,GACxBF,EAAAA,GAAAA,UAAAA,kCAAsDE,EAAOmG,EAAWvK,KAGtEkF,GAAmBC,EAAAA,EAAAA,KAAUoF,GAE7BvE,GAAkBC,EAAAA,EAAAA,cACnBC,IACGtB,EAAAA,EAAAA,MAAKuB,EAAAA,GAAAA,QAAAA,cAA+BvC,EAApCgB,CAA8CsB,EAAOpB,KAAKsB,G,+UAAD,IAAgBA,EAAhB,CAAuBtC,OAAAA,QACpF,CAACA,EAAQF,IAGP2C,GAAoBN,EAAAA,EAAAA,cAAYrB,EAAAA,EAAAA,MAAKuB,EAAAA,GAAAA,OAAAA,QAAAA,iBAAyCvC,GAAW,CAACA,IAEhG,OACI,oCACI,kBAAC,KAAD,CACIksB,UAAQ,EACRpoB,eAAgBA,EAChBxC,iBAAkBA,EAClBoB,kBAAmBA,EACnBC,kBAAmBA,EACnBF,kBAAmBA,EACnBL,gBAAiBA,EACjBxB,KAAMA,EACNuC,WAAY5C,EAAe4C,WAC3B1C,OAAQA,EACRrE,cAAeA,EACf4H,UAAUC,EAAAA,EAAAA,KAAqBH,EAAgB,KAAM1H,EAAcsD,IAAKe,KAE5E,yBAAK9H,UAAWC,EAAO6yB,eACnB,kBAAClyB,GAAA,EAAD,CAAQK,QAAS,IAAM+xB,EAAS7nB,IAAkBhJ,IAAAA,KAAU,WAC5D,kBAACvB,GAAA,EAAD,CACI3B,MAAM,UACN2d,UAAWsW,EACXjyB,QAAS,IAAMgyB,EAAQ9nB,EAAgBmoB,GACvC,iBAAe,qCAEdnxB,IAAAA,KAAU,a,gBCrE/B,MAAMqxB,GAAqB7hB,IAA0BA,MAAAA,OAAA,EAAAA,EAAOhL,QAAS8sB,EAAAA,IAAAA,OAE/DC,IAA4BC,EAAAA,EAAAA,QAAM,CAACzuB,EAAiCyM,IACtEzM,EAAOyG,MAAKtD,EAAAA,EAAAA,OAAKG,EAAAA,EAAAA,MAAK,QAAQorB,EAAAA,EAAAA,SAAOC,EAAAA,EAAAA,KAAoBliB,EAAMlL,YAAYmG,EAAAA,EAAAA,QAAO+E,EAAM5K,UCvB/ElI,IAAYC,EAAAA,GAAAA,aAAW,KAAM,CACtCg1B,UAAW,CACP1xB,QAAS,oBACToD,gBAAiB,sBACjBC,aAAc,OAElBC,YAAa,CACT7F,SAAU,OACV8F,WAAY,IACZhD,WAAY,QAEhBiD,KAAM,CACF/F,SAAU,OACVE,YAAa,OAEjBg0B,OAAQ,CACJ3xB,QAAS,gBCkBJ4xB,GAAgC,IAchC,IAdiC,OAC1CrmB,EAD0C,cAE1CsmB,EAF0C,eAG1CC,EAH0C,kBAI1CpqB,EAJ0C,kBAK1CC,EAL0C,MAM1CE,EAN0C,SAO1C+oB,EAP0C,QAQ1CC,EAR0C,eAS1CkB,EAT0C,QAU1CC,EAV0C,gBAW1CC,EAX0C,iBAY1CztB,EAZ0C,0BAa1C0tB,GACS,EACT,MAAMr0B,EAASpB,MAET,cAAC4E,IAAiBhD,EAAAA,EAAAA,YAAW2qB,IAC7BnjB,GAAOP,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,UAElB0C,UAAWkqB,IAAqBhD,EAAAA,GAAAA,KF5BR,KAKtB,IALuB,eAChC4C,EADgC,eAEhCD,EAFgC,iBAGhCttB,EAHgC,0BAIhC0tB,GACS,EACT,MAAM,cAAC7wB,IAAiBhD,EAAAA,EAAAA,YAAW2qB,IAC7Bpd,GAAYtG,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,cACxBG,GAASJ,EAAAA,EAAAA,cAAaG,GACxBF,EAAAA,GAAAA,UAAAA,kCAAsDE,EAAOmG,EAAWvK,KAGtE+wB,GAA2Br0B,EAAAA,EAAAA,SAAO,GAClCs0B,GAAkBC,EAAAA,GAAAA,KAElBC,GAAuB7rB,EAAAA,EAAAA,UACzB,IACIhB,EAAO6D,MAAKipB,EAAAA,EAAAA,MAAKpB,IAAoB7hB,IAAU7K,EAAAA,EAAAA,KAAqB6K,EAAO3D,EAAWvK,EAAcsD,SAExG,CAACe,EAAQkG,EAAWvK,EAAcsD,OAGtCiL,EAAAA,EAAAA,YAAU,KACN,GAAIvO,MAAAA,GAAAA,EAAeE,UAAsC,IAA1BuwB,EAAevpB,SAAgB/B,EAAAA,EAAAA,KAAUsrB,EAAe,GAAGntB,KACtF,OAAOotB,EAAeD,EAAe,MAG1C,CAACzwB,KAEJuO,EAAAA,EAAAA,YAAU,KACF2iB,GAAkD,IAA1BT,EAAevpB,QACvCwpB,EAAeD,EAAe,MAGnC,CAACS,KAEJ3iB,EAAAA,EAAAA,YAAU,KACFwiB,EAAyBnzB,SAAWyG,EAAO6C,UAC3CtC,EAAAA,EAAAA,OAAKE,EAAAA,EAAAA,KAAImrB,GAA0BQ,KAAkBpG,EAAAA,EAAAA,QAAO1V,EAAAA,QAAQyc,EAAAA,EAAAA,SAAQV,GAA5E9rB,CAA6FP,GAC7F0sB,EAAyBnzB,SAAU,KAGxC,CAACyG,KAEJkK,EAAAA,EAAAA,YAAU,KACFwhB,GAAkB5sB,IAA+C,IAA1BstB,EAAevpB,QACtDwpB,EAAeD,EAAe,MAGnC,CAACttB,KAEJoL,EAAAA,EAAAA,YAAU,KACN,GAAIsiB,EAA2B,CAC3B,MAAMnpB,EAAiBuoB,GAA0BQ,EAAgBI,GAC7DnpB,GAAgBgpB,EAAehpB,MAGxC,CAACmpB,KAEJtiB,EAAAA,EAAAA,YAAU,KACN,MAAM8iB,EAAuBL,GAAiB/I,IACtCA,EAAO/kB,OAASiD,EAAAA,GAAAA,UAAAA,eAAAA,eAChB4qB,EAAyBnzB,SAAU,MAG3C,MAAO,IAAMyzB,MACd,CAACL,KErCJM,CAAoB,CAACZ,eAAAA,EAAgBD,eAAAA,EAAgBttB,iBAAAA,EAAkB0tB,0BAAAA,IAEvE,MAAMjqB,EACFkqB,EAAkB5mB,IAClBlK,IACA6G,EAAAA,EAAAA,KAAwB,CAAC7G,cAAAA,EAAewE,KAAAA,MACvCgsB,EAActpB,OAMnB,OAJAqH,EAAAA,EAAAA,YAAU,IACC,IAAMoiB,KACd,CAACA,IAGA,yBAAKp0B,UAAWC,EAAO8zB,QAClB1pB,GACG,kBAACzJ,GAAA,EAAD,CACI3B,MAAM,UACNgC,QAASgJ,EACTjK,UAAWC,EAAO6zB,UAClB,iBAAe,mCAEf,kBAAC9oB,GAAA,EAAD,CAASlK,QAAS,CAACC,KAAMd,EAAO2F,QAChC,yBAAK5F,UAAWC,EAAOyF,aAAcvD,IAAAA,KAAU,SAGtD8xB,EAAc1rB,KAAKvD,GAChB,kBAAC+tB,GAAD,CACI7nB,IAAKlG,EAAM+B,IACXoE,eAAgBnG,EAChB8E,kBAAmBA,EACnBC,kBAAmBA,EACnBipB,SAAUA,EACVC,QAASA,EACTC,WAAYmB,EAAgBrvB,SCYhD,IAAesB,EAAAA,GAAAA,GACXC,EAAAA,IACA,CAACC,EAAD,KAA8C,IAA/B,UAACwH,EAAD,cAAYvK,GAAmB,EAC1C,MAAM,QAACiD,EAAD,KAAUC,GAAQH,GAAgB,GAClCwuB,GAAUnuB,EAAAA,EAAAA,IAAuBF,GAEjCG,EACFkuB,IAAWC,EAAAA,EAAAA,KAA0BvuB,EAA2BsH,EAAWvK,EAAcsD,KAU7F,MAAO,CAACH,iBAFiBE,EAAuBN,EAAe,KAErC8tB,0BARtB5tB,GACAsuB,IACCluB,IACDouB,EAAAA,EAAAA,KAA8BzxB,EAAeiD,KAC7CyuB,EAAAA,EAAAA,KAAuBnnB,EAAWtH,GAGeF,EAAe,SApFvC,IAA6E,IAA5E,OAACmH,EAAD,UAASK,EAAT,iBAAoBpH,EAApB,0BAAsC0tB,GAAsC,EAC9G,MAAMnxB,GAAiBuE,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,mBAC7BC,GAAiBF,EAAAA,EAAAA,cAClBG,GAAUF,EAAAA,GAAAA,UAAAA,kBAAsCE,EAAOmG,IAAe,MAGrE,OAAC9I,EAAD,eAASiqB,EAAT,SAAyBqB,EAAzB,OAAmCD,EAAnC,QAA2CvB,EAA3C,QAAoD/E,EAApD,eAA6DiF,IAC/DzuB,EAAAA,EAAAA,YAAW2qB,KAET,kBACFrhB,EADE,eAEFoqB,EAFE,kBAGFrqB,EAHE,MAIFG,EAJE,SAKF+oB,EALE,QAMFC,EANE,QAOFmB,EAPE,gBAQFC,EARE,eASFH,EATE,cAUFD,EAVE,YAWFvE,GN7B4B,MAChC,MAAO0F,EAAiBC,IAAsB/0B,EAAAA,EAAAA,aACvCg1B,EAAgBC,IAAqBj1B,EAAAA,EAAAA,UAAkC,IAExE+G,GAAWC,EAAAA,EAAAA,eACXW,GAAOP,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,SACnBqG,GAAYtG,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,cACxBuH,GAAWxH,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,aACvBC,GAAiBF,EAAAA,EAAAA,cAClBG,GAAUF,EAAAA,GAAAA,UAAAA,kBAAsCE,EAAOmG,IAAe,KAGrEzG,GAAS9G,EAAAA,EAAAA,YAAW+G,EAAAA,IACpB,cAAC/D,EAAD,OAAgByB,IAAUzE,EAAAA,EAAAA,YAAW2qB,IAErCjoB,GAAiB+tB,EAAAA,EAAAA,KAAoBjpB,GACrCC,GAAkBC,EAAAA,EAAAA,KAAmB1E,GACrCgF,GAA+CH,EAAAA,EAAAA,QACjDjC,GACA,CAAC6B,EAAiBzE,MAAAA,OAAlB,EAAkBA,EAAe2D,MACjCQ,GAGEiB,GAA0CC,EAAAA,EAAAA,UAC5C,KACIC,EAAAA,EAAAA,KAAmB,CACftC,UAAWuH,EACXvK,cAAAA,KAER,CAACuK,EAAWvK,IAGV2F,GAA8BC,EAAAA,EAAAA,KAAaZ,GAC3Ca,EAAY7F,EAAcE,UAAYyF,EACtCosB,GAAe1sB,EAAAA,EAAAA,UACjB,IAAOQ,EAAY,CAACT,GAAoBJ,GACxC,CAACI,EAAkBJ,EAAsBa,IAGvC4qB,GAAiBprB,EAAAA,EAAAA,UAAQ,IAOpB,IANW0sB,EAAahsB,QAAOnB,EAAAA,EAAAA,OAAKG,EAAAA,EAAAA,MAAK,QAAQosB,EAAAA,EAAAA,MAAKhsB,EAAAA,KAAWP,EAAAA,EAAAA,OAAKuE,EAAAA,EAAAA,QAAOwoB,GAAkBK,EAAAA,YAEpFltB,EAAAA,EAAAA,MAAKkD,GAAkB+pB,EAAa7pB,MAAKC,EAAAA,EAAAA,QAAO,MAAOH,EAAc1E,OAAS0E,GAA9ElD,CACdrD,IAGgCqD,KAAKvD,IAAD,uBAAWswB,EAAe3pB,MAAKC,EAAAA,EAAAA,QAAO,MAAO5G,EAAM+B,aAAnD,QAA4D/B,MACrG,CAACwwB,EAAcF,EAAgBF,EAAiBlwB,IAE7CwqB,GAAc5mB,EAAAA,EAAAA,UAChB,KACIT,EAAAA,EAAAA,OACIE,EAAAA,EAAAA,MAAIC,EAAAA,EAAAA,MAAK,SACTgB,EAAAA,EAAAA,SAAQzC,IAASyuB,EAAa7pB,MAAKC,EAAAA,EAAAA,QAAO,MAAO7E,MAFrDsB,CAGElF,EAAiB+B,EAAS,KAChC,CAACswB,EAActwB,EAAQ/B,IAGrB8wB,EAAgBuB,EAAahsB,QAC/B,QAAC,IAACzC,GAAF,SAAWA,IAAQquB,GAAmBE,EAAe3pB,MAAKC,EAAAA,EAAAA,QAAO,MAAO7E,OAGtE+C,GAAoBJ,EAAAA,EAAAA,cACrBC,IAA0BtB,EAAAA,EAAAA,MAAKuB,EAAAA,GAAAA,QAAAA,gBAAiCvC,EAAtCgB,CAAA,MAAoDsB,EAApD,CAA4DpC,OAAAA,MACvF,CAACA,EAAQF,IAGP0C,GAAoBL,EAAAA,EAAAA,cACrBC,IAA0BtB,EAAAA,EAAAA,MAAKuB,EAAAA,GAAAA,QAAAA,gBAAiCvC,EAAtCgB,CAAA,MAAoDsB,EAApD,CAA4DpC,OAAAA,MACvF,CAACA,EAAQF,IAGP4C,GAAQP,EAAAA,EAAAA,cAAY,KACtB,MAAMgsB,GAAe3sB,EAAAA,EAAAA,KAAmB,CACpCtC,UAAWuH,EACXvK,cAAAA,IAEJ4xB,EAAmBK,EAAa3uB,KAChC+C,EAAkB,CACd9E,MAAO,MACA0wB,EADF,CAED1wB,OAAO2wB,EAAAA,EAAAA,KAAoB,CACvBC,gBAAgBC,EAAAA,EAAAA,KAAsC3mB,EAAUzL,GAChEgD,UAAWivB,EAAa3uB,IACxBkB,KAAAA,EACAiH,SAAAA,MAGRnI,IAAK2uB,EAAa3uB,IAClBtD,cAAAA,MAEL,CAACuK,EAAWvK,EAAeyL,EAAUjH,EAAM6B,IAExCqqB,GAAiBzqB,EAAAA,EAAAA,cAClByB,IACGoqB,GAAmBO,GACVA,EAAKnqB,MAAKC,EAAAA,EAAAA,QAAO,MAAOT,EAAepE,MAGrC+uB,EAFI,IAAIA,EAAM3qB,OAK7B,CAACoqB,IAGCvC,GAAWtpB,EAAAA,EAAAA,cACZyB,IACG,MAAM4qB,EAAuBT,EAAe3pB,MAAKC,EAAAA,EAAAA,QAAO,MAAOT,EAAepE,MAC9E,GAAIgvB,EAAsB,CACtB,MAAMC,EAAgB,CAACvyB,cAAAA,EAAeuB,MAAO+wB,EAAsBhvB,IAAKoE,EAAepE,KACvFwuB,GAAmBO,IAASG,EAAAA,EAAAA,SAAQ,CAACF,GAAuBD,KACvD1sB,GAA6BU,EAAkBksB,OACjD,CACH,MAAMA,EAAgB,CAAChxB,MAAOmG,EAAgB1H,cAAAA,EAAesD,IAAKoE,EAAepE,KACjFsuB,EAAmB,MACnBtrB,EAAkBisB,GAEtB3uB,EAASuC,EAAAA,GAAAA,OAAAA,QAAAA,UAAiC,OAE9C,CACIG,EACAD,EACAyrB,EACAnsB,EACAksB,EACA7xB,EACA4D,IAIF6uB,GAAWxsB,EAAAA,EAAAA,cACb,CAACyB,EAAuCgrB,KACpC,MAAMruB,GAASsuB,EAAAA,EAAAA,KAAyBlnB,EAAUzL,EAAe0H,EAAgBgrB,GAAiB5tB,KAC7FoJ,GAAD,MACOA,EADP,CAEIH,MAAM6kB,EAAAA,EAAAA,KACF,CACIroB,UAAAA,EACAkB,SAAAA,EACAoQ,YAAa6W,GAAmB,CAC5B,CAACnoB,IAAYsoB,EAAAA,EAAAA,KAAyB7yB,EAAe0H,KAG7DwG,EAAM5K,KAAO4K,EAAMlL,eAK/B,OADAY,EAASuC,EAAAA,GAAAA,OAAAA,QAAAA,UAAiC9B,IACjB,IAAlBA,EAAO6C,SAElB,CAACtD,EAAU2G,EAAWvK,EAAeyL,IAGnC+jB,GAAUvpB,EAAAA,EAAAA,cACZ,CAACyB,EAAuCgrB,KAChCD,EAAS/qB,EAAgBgrB,KACzBd,EAAmB,MACnBE,GAAmBO,IACf,MAAMS,EAAWT,EAAKnqB,MAAKC,EAAAA,EAAAA,QAAO,MAAOT,EAAepE,MACxD,OAAOwvB,GAAWN,EAAAA,EAAAA,SAAQ,CAACM,GAAWT,GAAQA,QAI1D,CAACP,EAAmBF,EAAoBa,IAGtC9B,GAAU1qB,EAAAA,EAAAA,cAAY,KACxB6rB,EAAkB,IAClBF,EAAmB,QACpB,IAIH,MAAO,CACHhB,gBAHqBrvB,GAAiCswB,EAAe3pB,MAAKC,EAAAA,EAAAA,QAAO,MAAO5G,EAAM+B,QAAU/B,EAIxG8E,kBAAAA,EACAC,kBAAAA,EACAE,MAAAA,EACA+oB,SAAAA,EACAC,QAAAA,EACAkB,eAAAA,EACAC,QAAAA,EACAF,eAAAA,EACAD,cAAAA,EACAvE,YAAAA,IM1JA8G,IACE,IAAC31B,EAAD,eAAMoI,IAAkBC,EAAAA,GAAAA,GAA0B,CAACtC,iBAAAA,EAAkBuC,UAAU,IAE/EstB,EAAiBtzB,EAAiB+wB,EAAiBhvB,EAEnDwxB,GAAqB5tB,EAAAA,EAAAA,UACvB,IAAMqmB,EAAe5mB,KAAK+N,GAAO4Y,EAAevjB,MAAKC,EAAAA,EAAAA,QAAO,KAAM0K,OAClE,CAAC6Y,EAAgBD,IAGrB,OACI,yBAAKruB,IAAKA,EAAKb,UAAWiJ,GACrB9F,KAAmByH,EAAAA,EAAAA,SAAQhD,IACxB,kBAACosB,GAAD,CACIrmB,OAAQA,EACRsmB,cAAeA,EACfC,eAAgBA,EAChBpqB,kBAAmBA,EACnBC,kBAAmBA,EACnBE,MAAOA,EACPmqB,QAASA,EACTpB,SAAUA,EACVC,QAASA,EACTkB,eAAgBA,EAChBE,gBAAiBA,EACjBztB,iBAAkBA,MAAAA,OAAF,EAAEA,EAAkBF,QACpC4tB,0BAA2BA,MAAAA,OAAF,EAAEA,EAA2B5tB,UAG7DgwB,EAAmB/rB,OAAS,GACzB,kBAAC,GAAD,CACI4kB,YAAamH,EACb/oB,OAAQA,EACRzI,OAAQuxB,EACRzH,QAASA,EACTwB,SAAUA,EACVvG,QAASA,EACTsG,OAAQA,EACRF,OAAQ8D,EACRpqB,kBAAmBA,EACnB2lB,YAAaA,QC7FpB7wB,IAAYC,EAAAA,GAAAA,aAAW,KAAM,CACtCiC,KAAM,CACFuB,QAAS,OACT6K,cAAe,UAEnBC,QAAS,CACLC,SAAU,WACVC,SAAU,UAEdrH,OAAQ,CACJpG,SAAU,OACVP,YAAa,OACbL,MAAO,oBAEXgV,OAAQ,CACJ7R,QAAS,oBCEXqL,GAAwB,GAOjBkpB,GAAqB,IAAgC,IAA/B,OAAChpB,EAAD,UAAS3N,GAAsB,EAC9D,MAAM,QAACgD,EAAD,IAAU4K,EAAMH,IAAyBE,EAEzC1N,EAASpB,KACTmP,GAAYtG,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,eACxB,mBAAC1E,EAAD,cAAqBQ,EAArB,UAAoCmzB,EAApC,UAA+C7oB,EAA/C,UAA0DD,EAA1D,KAAqED,EAArE,QAA2EvK,IAC7E7C,EAAAA,EAAAA,YAAW2qB,IAEf,OACI,kBAAC9c,EAAA,EAAD,CAAWtO,UAAWgB,GAAAA,CAAWf,EAAOc,KAAMf,IACzC42B,EACG,oCACI,kBAAC,GAAD,CAAsB/yB,MAAOb,IAC7B,yBAAKhD,UAAWC,EAAOmN,SACnB,kBAAC,GAAD,CAAuBO,OAAQA,EAAQlK,cAAeA,EAAeuK,UAAWA,IAC/ED,GACG,kBAACY,EAAA,EAAD,CACIC,MAAO3L,EACP6L,mBAAoB,GACpBD,YAAajB,EACbC,KAAMA,EACNkB,aAAczL,IAGrBwK,GAAa,kBAACU,EAAA,EAAD,QAItB,oCACI,kBAAC5K,EAAA,EAAD,CAAiBC,MAAOb,EAAShD,UAAWC,EAAOgU,QAC/C,kBAAClQ,EAAA,EAAD,CAAiBC,YAAaP,MAAAA,OAAF,EAAEA,EAAeO,eAEjD,kBAACM,EAAA,EAAD,CAAYtE,UAAWC,EAAOgG,QAAS9D,IAAAA,KAAU,e,yICjDrE,IAAI00B,GAAc,EACX,MAAMC,GAAa,IAAMD,KAE1BE,GAAmBxlB,IACrB,MAAMylB,EAAW,CACbhf,SAAU,GACVif,OAAQH,MAEZ,GAAIvlB,EAAS2lB,YACT,IAAK,IAAIhQ,EAAI,EAAGA,EAAI3V,EAAS2lB,YAAYvsB,OAAQuc,IAAK,CAClD,MAAM1V,EAAOD,EAAS2lB,YAAYhQ,GAClC,IAAIiQ,EAAWH,EACf,IAAK,IAAII,EAAI5lB,EAAK7G,OAAS,EAAGysB,GAAK,EAAGA,IAAK,CACvC,MAAMC,EAAa7lB,EAAK4lB,GAClB3vB,EAAS8J,EAAS+lB,SAASD,EAAWrpB,WACtCupB,EAASH,IAAM5lB,EAAK7G,OAAS,EAC7B6sB,EAAa,CACf/vB,OAAAA,EACAuQ,SAAU,GACVif,OAAQH,KACRvD,UAAU,EACVkE,UAAWF,EAASrQ,EAAI,OAAI7V,GAE5BkmB,IACAC,EAAKz2B,KAAOw2B,GAEhBJ,EAASnf,SAAS0f,KAAKF,GACvBL,EAAWK,GAIvB,OAAOR,EAAShf,U,cCtCb,MAAMnZ,IAAYC,EAAAA,GAAAA,aAAYwG,IAAD,CAChCkU,UAAW,CACP3Z,SAAU,OACVyC,QAAS,OACTlD,WAAY,MACZiO,SAAU,YAEdxJ,MAAO,CACH0J,SAAU,EACVuM,UAAW,OACX7a,MAAOqG,EAAMY,QAAQmU,QAAQC,KAC7B3X,WAAY,QAEhB8hB,QAAS,CACLvlB,MAAO,QAEXy4B,0BAA2B,CACvB,4BAA6B,CACzB,uBAAwB,CACpBr1B,QAAS,QAEb,oCAAqC,CACjCA,QAAS,UAIrBijB,OAAQ,CACJnhB,OAAQ,OACRlF,MAAO,OACPa,YAAa,MACbJ,WAAY,OAEhBsU,OAAQ,CACJ7R,QAAS,gBAEbw1B,cAAe,CACXrqB,SAAU,EACVjL,QAAS,OACT6K,cAAe,SACf/I,OAAQ,OACR0V,UAAW,QACXuL,UAAW,QACX/X,SAAU,QAEduqB,KAAM,CACFtqB,SAAU,EACVnJ,OAAQ,GAEZ0zB,iBAAkB,CACdj1B,WAAY,EACZlD,WAAY,OACZ,YAAa,CACTA,WAAY,SAGpB6S,OAAQ,CACJpQ,QAAS,OAEb2F,aAAc,CACVlI,SAAU,OACVwE,OAAQ,WACR1B,WAAY,MACZ1D,MAAOqG,EAAMY,QAAQC,KAAKC,WAE9BsjB,gBAAiB,CACbnV,IAAK,Y,eChEN,MAAMwjB,GAAgBp5B,IAAAA,cAA8C,MCSrEq5B,GAAmB/1B,IACrBA,EAAEC,OAAO+1B,IAAMC,IAONC,GAAO,IAAmB,IAAlB,KAACX,GAAiB,EACnC,MACI/vB,QAAQ,IAACV,GADP,OAEFkwB,GACAO,EACE3zB,GAAQqV,EAAAA,EAAAA,KAASse,EAAK/vB,OAAO7F,OAE7B3B,EAASpB,KACTu5B,GAAoB1wB,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,sBAChCiB,GAAWxH,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,cACtBlH,IAAKsa,IAAoB3Z,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,YAErCoqB,EAAcC,IAAmBh4B,EAAAA,EAAAA,YAClCqN,GAASlN,EAAAA,EAAAA,YAAWs3B,IAEpBQ,EAAaxxB,IAAQsa,EACrBtI,GAAaC,EAAAA,EAAAA,KAAc9J,EAAUsoB,EAAK/vB,OAAOd,MACjD6xB,EAAsBzf,GAAa0f,EAAAA,EAAAA,KAAuBvpB,EAAU6J,EAAY,iBAAmB,KACnGnT,EAAO4yB,IAAuBE,EAAAA,EAAAA,KAAoBN,EAAmBI,GAE3E,OACI,yBAAKx4B,UAAWC,EAAOwkB,QAAS,eAAcwS,GAC1C,yBAAKp2B,IAAKy3B,EAAiBt4B,UAAWC,EAAOuZ,WACzC,kBAAC4N,GAAA,EAAD,CACIuR,IAAI,YACJ34B,UAAWgB,GAAAA,CAAWf,EAAOslB,QAC7B0S,IAAKryB,GAAQsyB,GACbU,QAASZ,KAEb,kBAACa,GAAA,EAAD,CACIN,WAAYA,EACZ10B,MAAOA,EACPmK,UAAWjH,EACXQ,OAAQoG,EAAO2I,GACflV,SAAUi3B,OCpDjBS,KD2DEje,EAAAA,EAAAA,MAAKsd,IC3DM,QAAC,KAACX,GAAF,SAA0BA,EAAKP,SCC5Cp4B,IAAYC,EAAAA,GAAAA,aAAW,KAAM,CACtCi6B,UAAW,CACP30B,OAAQ,OACRiJ,SAAU,WACV/K,QAAS,gBAEb02B,aAAc,CACV50B,OAAQ,OACRiJ,SAAU,WACV/K,QAAS,eACT,UAAW,CACP8K,QAAS,KACTC,SAAU,WACV7H,gBAAiB,sBACjBtG,MAAO,MACPsV,KAAM,MACNykB,OAAQ,IACR70B,OAAS,eAAc80B,GAAAA,iBAG/BzB,UAAW,CACPn1B,QAAS,OACTG,WAAY,SACZxD,MAAO,mBACPmF,OAAQ,QAEZ+0B,aAAc,CACVj6B,MAAO,MACPsV,KAAM,kBACND,IAAK,EACLnQ,OAAW80B,GAAAA,UAAsB,EAAxB,KACT7rB,SAAU,WACV7H,gBAAiB,uBAErB4zB,oBAAqB,CACjBh1B,OAAQ,MACRmQ,IAAQ2kB,GAAAA,UAAsB,EAAxB,KACN1kB,KAAM,kBACNtV,MAAO,MACPmO,SAAU,WACV7H,gBAAiB,uBAErBgyB,KAAM,CACFx4B,SAAU,OACVqO,SAAU,WACVgsB,UAAW,OACXj3B,QAAS,gBACTkjB,UAAW,aACX4G,WAAY,SACZ,UAAW,CACP1mB,gBAAiB,qBAGzB8zB,SAAU,CACNl3B,QAAS,iBAGbm3B,aAAc,CACVn3B,QAAS,gBAGbo3B,YAAa,CACTnsB,SAAU,WACVkH,IAAK,EACL0kB,OAAQ,EACR35B,YAAa,OACbgmB,UAAW,cAEfmU,oBAAqB,CACjBn6B,YAAa,QAEjBua,IAAK,CACDvX,QAAS,QAEbo3B,YAAa,CACTrsB,SAAU,WACVssB,WAAY,OACZr6B,YAAa,MACbiD,KAAM,WACNrD,MAAO,EACPoD,QAAS,OACTs3B,cAAe,SACftU,UAAW,cAEfuU,cAAe,CACXv3B,QAAS,OACTlD,WAAY,OACZF,MAAO,OACPoV,OAAQ,WAEZwlB,gBAAiB,CACb1J,UAAW,kBAEf2J,eAAgB,CACZ3J,UAAW,gBAEf5d,OAAQ,CACJoU,WAAY,sBACZ1nB,MAAO,EACPkF,OAAQ,EACRu1B,WAAY,wBACZK,YAAa,wBACb7U,UAAW,iCAEf8U,SAAU,CACN13B,KAAM,WACNrD,MAAO,EACPK,aAAc,Y,+hBC9FtB,MCTa+F,GAAQ,CAAC40B,oBDSOzrB,IACzB,SAA6GzF,EAAAA,EAAAA,MACzG,CACI,qBACA,oBACA,aACA,UACA,UACA,cACA,gBACA,gBACA,UACA,UACA,WACA,SACA,SACA,aACA,gBAEJyF,IAlBE,qBAAC0rB,EAAD,yBAAuBC,EAAvB,KAAiD5C,EAAjD,MAAuD3zB,EAAvD,KAA8D2N,EAA9D,UAAoE6oB,EAApE,MAA+EntB,GAArF,EAA+F8iB,E,kXAA/F,kGAoBMsK,EAAYz2B,EAEZ02B,EACFH,IAA6B5C,EAAKz2B,MAAQy2B,EAAKxf,UAAYwf,EAAKxf,SAASrN,OAAS,EAShF1K,EAASpB,KACf,OACI,4BAAKqO,MAAO,CAAC9I,OAAQ,SAAa4rB,EAAlC,CAA8C9kB,IAAKssB,EAAKP,SACnDsD,GAA4B/C,EAAKjE,UAC9B,yBAAKrmB,MAAO,CAAChO,MAAOi7B,EAAuB,GAAIn6B,UAAWC,EAAO+4B,eAErE,yBAAKh5B,UAAWC,EAAO4Z,IAAK3M,MAAOA,GAC/B,yBAAKlN,UAAWC,EAAOy5B,aAClBa,GACG,yBAAKv6B,UAAWC,EAAO45B,cAAe54B,QAhBzC,KACbm5B,EAAyB,CACrB5C,KAAAA,EACAhmB,KAAAA,EACA6oB,UAAAA,MAagB,yBACI,aAAY7C,EAAKjE,SAAW,WAAa,SACzCvzB,UAAWgB,GAAAA,CACPf,EAAOuS,OACPglB,EAAKjE,SAAWtzB,EAAO85B,eAAiB95B,EAAO65B,oBAK/D,yBAAK95B,UAAWC,EAAOg6B,UACG,mBAAdK,EACFA,EAAU,CACR9C,KAAAA,EACAhmB,KAAAA,EACA6oB,UAAAA,IAEFC,OCpEaE,iBCUzB/rB,IACd,SAAkFzF,EAAAA,EAAAA,MAC9E,CACI,YACA,WACA,aACA,YACA,cACA,aACA,oBACA,SACA,UACA,YACA,SACA,OACA,gBAEJyF,IAhBE,SAACuJ,EAAD,qBAAWmiB,EAAX,mBAAiCM,EAAjC,KAAqDjD,GAA3D,EAAoExH,E,kXAApE,oEAkBM/vB,EAASpB,KAET67B,EAAqBD,EAAmB9vB,OACxCgwB,EAAW,GACjBF,EAAmB5F,SAAQ,CAAC+F,EAAmB1T,KAC3CyT,EAASjD,KACL,yBAAKxsB,IAAM,OAAM,EAAIgc,IAAKha,MAAO,CAAChO,MAAOi7B,GAAuBn6B,UAAWC,EAAO84B,WAC7EvB,EAAKz2B,MAAQ,yBAAKf,UAAWC,EAAOw3B,WAAYD,EAAKC,UAAxC,KACbvQ,IAAMwT,EAAqB,GAAW,IAANxT,GAC7B,oCACI,yBAAKlnB,UAAWC,EAAOk5B,eACvB,yBAAKn5B,UAAWC,EAAOm5B,4BAO3C,MAAMyB,EAAQrD,EAAKz2B,KAAOo5B,EAAuB,EAAI,EAC/CW,EAAgBX,EAAuBO,EAAqBG,EAC5D3tB,EAAQ,CAACsH,KAAMsmB,EAAe57B,MAAQ,eAAc47B,OACpD57B,EAAS,GAAE47B,EAnDU,QAoDrBC,E,+UAAY,IAAI/K,EAAW9iB,MAAlB,CAAyBhO,MAAAA,IAClCq6B,GAAe/B,MAAAA,OAAA,EAAAA,EAAMC,WAAY,IAAMD,EAAKz2B,KAClD,OACI,8BACQivB,EADR,CAEIhwB,UAAWgB,GAAAA,CAAWf,EAAOu3B,KAAM,CAC/B,CAACv3B,EAAOs5B,cAAeA,EACvB,CAACt5B,EAAOq5B,UAAW9B,EAAKz2B,OAASw4B,IAErCrsB,MAAO6tB,IAENJ,EAED,yBAAK36B,UAAWgB,GAAAA,CAAWf,EAAOu5B,YAAa,CAAC,CAACv5B,EAAOw5B,qBAAsBF,IAAgBrsB,MAAOA,GAChG8K,KDjE4CmiB,qBAJhC,GAIsDa,UAHjE,GAG4EC,gBAFtE,IELxB,SAASC,KAA2Q,OAA9PA,GAAWj2B,OAAOk2B,QAAU,SAAUj5B,GAAU,IAAK,IAAIglB,EAAI,EAAGA,EAAIkU,UAAUzwB,OAAQuc,IAAK,CAAE,IAAImU,EAASD,UAAUlU,GAAI,IAAK,IAAIhc,KAAOmwB,EAAcp2B,OAAOq2B,UAAUC,eAAeC,KAAKH,EAAQnwB,KAAQhJ,EAAOgJ,GAAOmwB,EAAOnwB,IAAY,OAAOhJ,GAAkBg5B,GAASO,MAAMC,KAAMN,WAGhT,SAAgB,QAAC,OACfn7B,EAAS,IADK,EAEXwO,E,kXAFW,sBAGV9P,IAAAA,cAAoB,MAAOu8B,GAAS,CACxCh8B,MAAO,KACPkF,OAAQ,KACRu3B,QAAS,YACTC,QAAS,MACTC,MAAO,8BACNptB,GAAQ9P,IAAAA,cAAoB,IAAK,CAClCm9B,OAAQ,OACRC,YAAa,IACbC,KAAM,OACNC,SAAU,UACVC,YAAa,OACZv9B,IAAAA,cAAoB,OAAQ,CAC7BF,EAAG,mSACHu9B,KAAM,YCWR,GApB6B,IAAiC,IAAhC,MAACn4B,EAAD,YAAQs4B,GAAwB,EAC1D,MAAMl8B,EAASpB,MACT,oBAACu9B,IAAuB37B,EAAAA,EAAAA,YAAW47B,EAAAA,GACzC,OACI,kBAACz4B,EAAA,EAAD,CAAiBC,MAAOA,EAAO7D,UAAWC,EAAOgU,QAC5CmoB,GACG,yBAAKp8B,UAAWC,EAAO63B,kBACnB,kBAAClkB,GAAA,EAAD,CACI5T,UAAWC,EAAOuS,OAClBqB,aAAc1R,IAAAA,KAAU,cACxByD,KAAM02B,GACNr7B,QAASk7B,EACTnoB,KAAK,SCdvBuoB,GAAe/E,GAAesB,GAAW,CAACtB,KAAAA,I,yHCkBhD,MAAMgF,GAAyB,CAAC,GAAI,I,4BCzB7B,MAAM39B,IAAYC,EAAAA,GAAAA,aAAW,KAAM,CACtCiC,KAAM,CACFsM,SAAU,YAEdovB,YAAa,CACTr9B,WAAY,Y,2cCOb,MAAMs9B,GAAa,IAAgC,IAA/B,OAAC/uB,EAAD,UAAS3N,GAAsB,EACtD,MAAM28B,GAAex8B,EAAAA,EAAAA,UACfy8B,GAAYz8B,EAAAA,EAAAA,WACX08B,EAAWC,IAAgBx8B,EAAAA,EAAAA,WAAkB,IAC9C,OAAC8D,EAAD,MAASlF,EAAO0Y,QAASmlB,GAAkBpvB,GAC3C,KAACqvB,EAAD,QAAOC,EAASrlB,QAASslB,EAAzB,aAAyCC,EAAzC,MAAuDC,IAASC,EAAAA,GAAAA,GAAO1vB,GACvE1N,EAASpB,KACT+Y,EAAUslB,GAAkBH,GAClC/qB,EAAAA,EAAAA,YAAU,KACF2qB,EAAat7B,SAAW27B,IACxBL,EAAat7B,QAAQi8B,UAAY,GACjCC,MAAMC,KAAKR,EAAKS,YAAY5I,SAAS6I,IACjCf,EAAat7B,QAAQs8B,YAAYD,SAG1C,CAACV,KACJhrB,EAAAA,EAAAA,YAAU,KACN8qB,IAAeM,KAChB,CAACA,KAEJprB,EAAAA,EAAAA,YAAU,KACF6qB,GAAaD,EAAUv7B,UACvBu7B,EAAUv7B,QAAQi8B,UAAY,GAC1BF,GACAG,MAAMC,KAAKJ,EAAMK,YAAY5I,SAAS6I,IAClCd,EAAUv7B,QAAQs8B,YAAYD,SAI3C,CAACb,EAAWO,IAEf,MAAMlwB,GAA2C4gB,EAAAA,EAAAA,QAAO1V,EAAAA,MAAO,CAAClZ,MAAAA,EAAOkF,OAAAA,IACvE,OAAO64B,EACH,yBAAKj9B,UAAWC,EAAOw8B,aACnB,kBAACmB,GAAA,EAAD,CAAQ/8B,IAAK+7B,EAAWj8B,OAAQy8B,IAChC,kBAAC1kB,GAAA,EAAD,CAAS7U,MAAO+T,GAAW,IACvB,yBACI/W,IAAK87B,EACLzvB,MAAK,MAAMA,EAAUiwB,GACrBn9B,UAAWgB,GAAAA,CAAWf,EAAOc,KAAMf,OAI/C,M,eCrDR,MAsBA,GAtB8D69B,IAC1D,MAAMC,EAAqBrvB,GAEnB,kBAACsvB,GAAA,EAAD,CACIpsB,MACI,kBAACqsB,EAAA,GAAD,CACIC,aAAcC,EAAAA,GAAAA,MACd/3B,KAAK,GACLg4B,cAAeh8B,IAAAA,KAAU,wBACzBoC,QAAS65B,EAAAA,GAAAA,SAIjB,kBAACP,EAAcpvB,IAM3B,OADAqvB,EAAkBl/B,YAAc,oBACzBk/B,GCrBEj/B,IAAYC,EAAAA,GAAAA,YAAW,CAChCu/B,SAAU,CACNj8B,QAAS,QAEbk8B,WAAY,CACRl6B,OAAQ,QAEZm6B,UAAW,CACPjZ,UAAW,aACXhY,SAAU,OACVkxB,UAAW,OACXC,aAAc,W,oDCRtB,MAAMC,IAAiBr2B,EAAAA,EAAAA,OAAKmJ,EAAAA,EAAAA,MAAK,CAAC,QAAS,SAASojB,EAAAA,EAAAA,OAAK+J,EAAAA,EAAAA,IAAG,KAAKC,EAAAA,EAAAA,KAAI,MCcrE,IAjBkB9/B,EAAAA,GAAAA,aAAW,KAAM,CAC/BiC,KAAM,CACFqD,OAAQ,OACR9B,QAAS,OACT6K,cAAe,UAEnBmxB,WAAY,CACRl6B,OAAQ,QAEZy6B,cAAe,CACXxxB,SAAU,WACVwH,MAAO,MACPN,IAAK,MACLG,OAAQ,S,4BCbhB,MAAM7V,IAAYC,EAAAA,GAAAA,aAAYwG,IAAD,CACzBtC,QAAS,CACL/D,MAAOqG,EAAMY,QAAQC,KAAKC,UAC1BvG,SAAU,YAIlB,MCAai/B,GAAmB,IAA0C,IAAzC,YAACC,GAAwC,EACtE,MAAM9+B,EAASpB,KACTmgC,EAAYD,EAAc,EAAI58B,IAAAA,KAAU,UAAYA,IAAAA,KAAU,SACpE,OACI,kBAACmC,EAAA,EAAD,CAAYC,QAAQ,UAAUvE,UAAWC,EAAO+C,SAC1C,GAAE+7B,KAAeC,M,2cCSxB,MAAMC,GAAoC,IAKH,IALI,OAC9CtxB,EAD8C,cAE9ClK,EAF8C,OAG9C2L,EAH8C,iCAI9C8vB,GAC0C,EAC1C,MAAM73B,GAAWC,EAAAA,EAAAA,eACXG,GAASC,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,WACrBC,GAAiBF,EAAAA,EAAAA,cAClBG,GAAUF,EAAAA,GAAAA,UAAAA,kBAAsCE,EAAOJ,EAAOV,MAAS,KAEtE0B,GAAuBH,EAAAA,EAAAA,QAAO,GAAI,CAAC,aAAc7E,EAAc2D,MAAOQ,GACtEL,EAASoG,EAAO2I,GAQtB,OACI,oCACI,kBAAC,KAAD,CACI6oB,gBAAiB12B,EACjBhF,cAAeA,EACfsG,kBAReJ,IACvBtB,EAAAA,EAAAA,MAAKuB,EAAAA,GAAAA,QAAAA,gBAAiCvC,EAAtCgB,CAAA,MAAoDsB,EAApD,CAA4DpC,OAAAA,KAQpDd,UAAWmB,EAAeb,IAC1B+C,kBAbeH,IACvBtB,EAAAA,EAAAA,MAAKuB,EAAAA,GAAAA,QAAAA,gBAAiCvC,EAAtCgB,CAAA,MAAoDsB,EAApD,CAA4DpC,OAAAA,KAapD63B,UAAWC,GACXjwB,OAAQA,EACR8vB,iCAAkCA,IAEtC,kBAACJ,GAAD,CAAkBC,YAAat2B,EAAqBkC,WCrD1D9L,IAAYC,EAAAA,GAAAA,aAAYwG,IAAD,CACzBkU,UAAW,CACPpX,QAAS,YAEb6D,OAAQ,CACJpG,SAAU,OACVZ,MAAOqG,EAAMY,QAAQC,KAAKC,eAIlC,MCUai5B,GAAa,CACtBC,YAAa,EACbC,WAAY,IACZC,YAAa,K,+RCbV,MAAMC,GAAgB,IAA6D,IAA5D,OAAC9xB,EAAD,MAAS+xB,EAAT,eAAgBC,EAAhB,gBAAgCC,GAA4B,EACtF,MAAMv4B,GAAWC,EAAAA,EAAAA,eACX4H,GAAWxH,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,aACvBF,GAASC,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,YACrB,SAACk4B,EAAD,QAAWC,IAAWC,EAAAA,EAAAA,KAA4B7wB,EAAUvB,EAAQ+xB,EAAMpf,OAAQ7Y,EAAQi4B,EAAMM,YAChG1I,GAAWxuB,EAAAA,EAAAA,UAAQ,IACd,CAAC42B,EAAMpf,SACf,CAACof,EAAMpf,SAEJ2f,EAAoB,CACtBx4B,OAAAA,EACA6vB,SAAAA,EACArvB,KAAMi4B,GAAAA,EAAAA,WACNP,eAAAA,GAEEp4B,GAAS9G,EAAAA,EAAAA,YAAW+G,EAAAA,GACpB24B,GAAgBz2B,EAAAA,EAAAA,cAAY,KAC9Bk2B,IACAv4B,EAASuC,EAAAA,GAAAA,OAAAA,QAAAA,WAAkC,CAACrC,OAAAA,EAAQR,IAAKU,EAAOV,SACjE,CAACM,EAAUI,EAAOV,IAAK64B,EAAiBr4B,IAC3C,OACI,oCACKs4B,GAAY,kBAACO,GAAA,EAAD,MAAiBH,EAAjB,CAAoCL,gBAAiBO,KACjEL,GAAW,kBAACO,GAAA,EAAD,MAAoBJ,EAApB,CAAuCL,gBAAiBA,OCVnEU,GAAY,IAA0E,IAAzE,OAAC3yB,EAAD,YAAS2R,EAAT,MAAsBogB,EAAtB,gBAA6BE,EAA7B,eAA8CD,GAA2B,EAC/F,MAAMzwB,GAAWxH,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,aACvBF,GAASC,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,WAC3B,OACI,kBAAC44B,GAAA,EAAD,CACIb,MAAOA,EACPj4B,OAAQA,EACR6X,YAAaA,EACbpQ,SAAUA,EACVlP,UAAWqjB,GAAAA,GAEX,kBAACC,GAAA,EAAD,CACIvc,KAAKy5B,EAAAA,EAAAA,KAAoB/4B,EAAOV,IAAK24B,EAAMpf,OAAOvZ,KAClDqc,mBAAmBlB,EAAAA,EAAAA,KAAwBC,EAAAA,IAAAA,gBAA0C,CACjFnU,UAAWvG,EAAOV,IAClB05B,eAAgBf,EAAMpf,OAAOvZ,MAEjCyc,WAAYrB,EAAAA,IAAAA,kBAEhB,kBAACsd,GAAD,CACIC,MAAOA,EACP/xB,OAAQA,EACRgyB,eAAgBA,EAChBC,gBAAiBA,MC9CpB/gC,IAAYC,EAAAA,GAAAA,aAAYwG,IAAD,CAChCvE,KAAM,CACFuB,QAAS,OACT6K,cAAe,SACf2M,UAAW,QAEf4mB,iBAAkB,CACdrzB,SAAU,YAEdszB,OAAQ,CACJr+B,QAAS,OACTG,WAAY,MACZ8K,SAAU,EACV/K,eAAgB,aAChB2iB,UAAW,8BACX/iB,QAAS,WACTnD,MAAOqG,EAAMY,QAAQmU,QAAQC,KAC7Bza,SAAU,OACV+C,cAAe,IACfD,WAAY,QAEhBsD,OAAQ,CACJ3G,YAAa,OACbD,cAAe,OACfQ,SAAU,OACVZ,MAAO,wBCMF2hC,GAAkB,CAC3BC,uBAAuB,EACvBC,sBAAsB,GAEbC,GAAkB,CAAC7W,MAAO8W,EAAAA,IAAAA,IAAW7W,MAAO,S,IACpD8W,I,SAAAA,GAAAA,EAAAA,EAAAA,QAAAA,GAAAA,UAAAA,EAAAA,EAAAA,OAAAA,GAAAA,SAAAA,EAAAA,EAAAA,OAAAA,GAAAA,S,CAAAA,KAAAA,GAAAA,KAKE,MCfDC,GAA+B3C,IAAoBl2B,EAAAA,EAAAA,MAAK84B,GAAmBC,EAAAA,EAAxB/4B,CAAwCk2B,GAE3F8C,GAAkBH,ICpBP,IAAwB,IAAvB,UAAClhC,GAAsB,EACrC,MAAMC,EAASpB,KACf,OACI,kBAACyP,EAAA,EAAD,CAAWtO,UAAWgB,GAAAA,CAAWf,EAAOo+B,SAAU,sBAAuBr+B,IAAzE,sBDkBKshC,GAA+BJ,IhHtBP,IAAqD,IAApD,UAAClhC,EAAD,OAAY2N,GAAwC,EACtF,OACI,kBAAC4zB,EAAA,EAAD,CACIvhC,UAAWA,EACXgD,QAAS2K,EAAO3K,QAChBw+B,YAAa7zB,EAAO6zB,YACpBC,YAAa9zB,EAAO8zB,YACpBC,gBAAiB/zB,EAAO+zB,gBACxBC,iBAAkBh0B,EAAOg0B,sBgHexBC,GAAoCV,IErBP,IAAgC,IAA/B,UAAClhC,EAAD,OAAY2N,GAAmB,EACtE,MAAMk0B,ECRyBl0B,CAAAA,IAC/B,MAAOvK,EAAaC,IAAkB/C,EAAAA,EAAAA,UAAS,KACxCuN,EAAMvK,IAAWhD,EAAAA,EAAAA,UAAS,IAC1BC,EAAcuhC,IAAmBxhC,EAAAA,EAAAA,WAAS,GAC3CqJ,GAASb,EAAAA,EAAAA,UAAQ,KAAM,CAAE+E,KAAAA,EAAMzK,YAAAA,EAAa7C,aAAAA,KAAgB,CAACsN,EAAMzK,EAAa7C,IAChFyxB,EAAYhjB,GAAyBrB,EAAQhE,GAC7CnJ,GAAqBkJ,EAAAA,EAAAA,cAAY,KACnCpG,EAAQ,GACRw+B,GAAiBvhC,IAAkBA,MACpC,IAEH,O,+UAAA,EACI8C,eAAAA,EACAD,YAAAA,EACAE,QAAAA,EACAuK,KAAAA,EACArN,mBAAAA,EACAD,aAAAA,GACGyxB,IDViB+P,CAAmBp0B,GAE3C,OACI,kBAACjP,EAAuBysB,SAAxB,CAAiCnmB,MAAO68B,GACpC,kBAACn0B,GAAD,CAAqBC,OAAQA,EAAQ3N,UAAWA,QFiB/CgiC,GAAmCd,IItBP,IAAgC,IAA/B,OAACvzB,EAAD,UAAS3N,GAAsB,EACrE,MAAMiiC,ECMwBt0B,CAAAA,IAAsC,MACpE,MAAM,aAACsB,GAAgBtB,EACjBuB,GAAWxH,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,aACvBxK,GAAgBqF,EAAAA,EAAAA,UAAQ,KAAMmH,EAAAA,EAAAA,KAAuBf,EAAUD,IAAe,CAACC,EAAUD,IACzFigB,GAAiBpmB,EAAAA,EAAAA,UACnB,IAAOrF,EjDIe,EAACyL,EAAoBzL,KAC/C4E,EAAAA,EAAAA,OACI,CAAC6G,EAAoBzL,KAAiCy+B,EAAAA,EAAAA,KAAsBhzB,EAAUzL,KACtF8E,EAAAA,EAAAA,MAAKqlB,GAA4BD,GAAgCC,EAAU,CAACnqB,OAC5E0+B,EAAAA,EAAAA,OAAMC,EAAAA,MACNC,EAAAA,EAAAA,SAAO75B,EAAAA,EAAAA,MAAK,OAJhBH,CAKE6G,EAAUzL,GiDVe6+B,CAAepzB,EAAUzL,GAAiB,IACjE,CAACyL,EAAUzL,IAET8+B,GAAez5B,EAAAA,EAAAA,UACjB,KAAM,CACF1F,YAAa,GACb4rB,QAAS,KACT/E,aAAS5Y,EACT8d,eAAgBD,EACX1lB,QAAOnB,EAAAA,EAAAA,OAAKG,EAAAA,EAAAA,MAAK,sBAAuB2B,EAAAA,IAAoBsrB,EAAAA,MAC5DltB,KAAI,QAAC,GAAC+N,GAAF,SAAUA,KACdvF,MAAM,EAlBM,GAmBjBlD,KAAM,KAEV,CAACqhB,KAGErnB,EAAOR,IAAYm7B,EAAAA,EAAAA,YAAW/W,GAAS8W,IAExC,YAACn/B,EAAD,QAAc4rB,EAAd,QAAuB/E,EAAvB,KAAgCpc,GAAQhG,EACxC1E,GAAiBuE,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,mBAE7Bw0B,GAAiB35B,EAAAA,EAAAA,UAAQ,KAC3B,MAAM45B,EC1CiB,EAACnT,EAA2BP,IACvD3E,EAAAA,IAAAA,SAA6C2E,GACxCzmB,KAAmDymB,GAChD/pB,OAAOqO,QAAQ0b,GAASzmB,KAAI,IAA8B,IAA5B8lB,EAAUsU,GAAkB,EACtD,MAAM3V,EAAauC,EAAY5jB,MAAKC,EAAAA,EAAAA,QAAO,KAAMyiB,IACjD,OAAOuU,EAAAA,GAAAA,IAAwB5V,EAAY2V,QAGlDnY,OAAO,IDkCWqY,CAAgB3T,EAAgBF,GACnD,OAAO0T,EAAW/3B,OAAS+3B,EAAa,OACzC,CAAC1T,EAASE,IAEPvlB,GAASb,EAAAA,EAAAA,UACX,KAAMglB,EAAAA,EAAAA,QAAO1V,EAAAA,MAAO,CAAC4W,QAASyT,EAAgB50B,KAAAA,EAAMoc,QAAAA,EAAS7mB,YAAAA,KAC7D,CAACq/B,EAAgB50B,EAAMoc,EAAS7mB,KAE9B,kBAACuU,EAAD,WAAoBmrB,EAApB,WAAgCC,EAAhC,aAA4CC,EAA5C,cAA0DC,EAA1D,cAAyEC,IAAiBC,EAAAA,GAAAA,GAAW,CACvG7X,QADuG,GAEvGjkB,SAAAA,IAEE2qB,EAAYhjB,GAAgDrB,EAAQhE,GAM1E,O,+UAAA,IACO9B,EADP,CAEIxE,eAAgBsU,EAChBrU,QAASw/B,EACTvS,OAAQwS,EACRvS,SAAUwS,EACV/T,gBAAiBgU,EACjB7T,gBAAiB8T,EACjBtM,UAbchH,UACboC,MAAAA,GAAA,UAAAA,EAAW9sB,cAAX,eAAmByF,SAAU83B,GAAkBr/B,GAAeD,IAC3DM,IACCA,EAAc2/B,QAWnBlU,eAAAA,GACG8C,ID9DgBqR,CAAkB11B,GAEzC,OACI,kBAACyd,GAAsBD,SAAvB,CAAgCnmB,MAAOi9B,GAClCt0B,GAAU,kBAACgpB,GAAD,CAAoBhpB,OAAQA,EAAQ3N,UAAWA,QJkBzDsjC,GAA8BpC,IOpBP,IAAgC,IAA/B,OAACvzB,EAAD,UAAS3N,GAAsB,EAChE,MAAMkP,GAAqBxH,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,aACjC47B,GAAez6B,EAAAA,EAAAA,UAAQ,KAAM06B,EAAAA,EAAAA,KAAqBt0B,EAAUvB,IAAS,CAACuB,EAAUvB,IAChF81B,E1DYiB91B,CAAAA,IAAoD,MAC3E,MAAMuF,GAAcpK,EAAAA,EAAAA,UAChB,KACIT,EAAAA,EAAAA,MACIpD,OAAOqO,SACP/K,EAAAA,EAAAA,MAAI,QAAE2C,EAAKlG,GAAP,QAAmB,CACnBA,MAAOkG,EACPtJ,MAAOoD,OAEXwH,EAAAA,EAAAA,SACK4E,IAAY/H,EAAAA,EAAAA,KAAa+H,IAAYA,EAAQjM,MAAKyG,EAAAA,EAAAA,QAAO,QAAS,WACnE83B,EAAAA,EAAAA,QAAO,CAAC9hC,MAAOO,IAAAA,KAAU,QAAS6C,MAAO,UARjDqD,CAUEsF,EAAOuF,aAAe,KAC5B,CAACvF,EAAOuF,cAGNrE,EAAc2V,OAAO7W,EAAOC,MAzCR,IA0CnBC,EAAMvK,IAAWhD,EAAAA,EAAAA,UAAS,IAC1BwS,EAAW6wB,IAAgBrjC,EAAAA,EAAAA,UAASqN,EAAOmF,WA1C3B,QA2ChBE,EAAY4wB,IAAiBtjC,EAAAA,EAAAA,UAAQ,UAAC4S,EAAY,UAAb,aAAC,EAAgBlO,QACtD5B,EAAaC,IAAkB/C,EAAAA,EAAAA,UAAS,KACxCC,EAAcuhC,IAAmBxhC,EAAAA,EAAAA,WA5Cd,GA8CpBE,GAAqBkJ,EAAAA,EAAAA,cAAY,KACnCpG,EAAQ,GACRw+B,GAAiBvhC,IAAkBA,MACpC,IAEGwS,GAAkBrJ,EAAAA,EAAAA,cAAY,KAChCpG,EAAQ,GACRqgC,GAAczZ,GACO,QAAVA,EAAkB,OAAS,UAEvC,IAEGjX,GAAmBvJ,EAAAA,EAAAA,cAAam6B,IAClCvgC,EAAQ,GACRsgC,EAAcC,KACf,IAOH,MAAO,CACHzgC,YAAAA,EACAuU,mBAPsBjO,EAAAA,EAAAA,cAAa1E,IACnC1B,EAAQ,GACRD,EAAe2B,KAChB,IAKC8N,UAAAA,EACAC,gBAAAA,EACAC,WAAAA,EACAC,iBAAAA,EACAC,YAAAA,EACArF,KAAAA,EACAvK,QAAAA,EACAuL,YAAAA,EACAtO,aAAAA,EACAC,mBAAAA,I0DtEmBsjC,CAAkBP,GACzC,OACI,kBAAChxB,GAA0B4Y,SAA3B,CAAoCnmB,MAAOy+B,GACvC,kBAAC3Z,GAAD,CAAenc,OAAQ41B,EAAcvjC,UAAWA,QPe/C+jC,GAAoB7C,GAASxE,IAC7BsH,GAA2B9C,IhBPN,IAAgC,IAA/B,OAACvzB,EAAD,UAAS3N,GAAsB,EAC9D,MAAM,GAACsW,EAAD,QAAKtT,EAAL,MAAcihC,EAAd,qBAAqBC,GAAwBv2B,EAC7Cw2B,EAAYF,MAAAA,OAAH,EAAGA,EAAOt9B,KAEnB1G,EAASpB,KACTwI,GAAWC,EAAAA,EAAAA,eACX0G,GAAYtG,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,eAExB,SACFy8B,EADE,YAEFC,EAFE,aAGFt8B,EAHE,UAIF+F,EAJE,YAKFe,EALE,MAMFD,EANE,aAOFG,EAPE,oBAQFu1B,EARE,KASFz2B,GZJoB,EAACG,EAAmBu2B,KAC5C,MAAMh1B,GAAcC,EAAAA,GAAAA,MACb1B,EAAWwB,IAAgBhP,EAAAA,EAAAA,WAAS,IACpC8jC,EAAUC,IAAe/jC,EAAAA,EAAAA,UAAiB,KAC1CyH,EAAcy8B,IAAmBlkC,EAAAA,EAAAA,UAAiB,OAClDuO,EAAa41B,IAAkBnkC,EAAAA,EAAAA,UAAS,KACxCokC,EAAWC,IAAgBrkC,EAAAA,EAAAA,UAAiB,KAC5CuN,EAAMvK,IAAWhD,EAAAA,EAAAA,UAAS,IACjC0R,EAAAA,EAAAA,YAAU,KACN2yB,EAAaP,EAASrzB,MAAMlD,EAAOgB,EAAahB,EAAOgB,EAAcA,MACtE,CAAChB,EAAMgB,EAAau1B,KAEvBpyB,EAAAA,EAAAA,YAAU,KACN1O,EAAQ,GACRmhC,EAAe,MAChB,CAACL,IACJ,MAAME,GAAsB56B,EAAAA,EAAAA,cACvBmF,IACG41B,EAAe51B,GACfvL,EAAQ,KAEZ,CAACmhC,IAGCh9B,GAAiBC,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,WA4BnC,OA3BAsK,EAAAA,GAAAA,IAAmB,KACf,MAAM2yB,EAASR,EACV77B,KAAI,CAACsvB,EAAM5H,KAAP,CAAmB4H,KAAAA,EAAM5H,MAAAA,MAC7BS,QAAO,CAACC,EAAKkH,I,+UAAN,IAAoBlH,EAApB,CAAyB,CAACkH,EAAK5H,OAAQ,CAAClvB,KAAM82B,EAAKA,SAAS,IAClEgN,GAAWC,EAAAA,EAAAA,MAAyB9Z,EAAAA,EAAAA,MAAK,CAAC,MAAO,QAAS,iBAAkB,QAASvjB,GAASm9B,GACpGP,EAAYQ,EAASt8B,KAAIC,EAAAA,EAAAA,MAAK,YAC/B,CAACf,MAAAA,OAAD,EAACA,EAAQs9B,eACZ/yB,EAAAA,EAAAA,YAAU,MACDpJ,EAAAA,EAAAA,KAAUoF,KACXw2B,EAAgB,MAChBl1B,GAAa,GACbC,GAAYy1B,EAAAA,EAAAA,KAAa,CAACj+B,IAAKiH,EAAWu2B,SAAAA,KACrCjzB,KAAKylB,IACLzlB,KAAK+yB,GACL3yB,OAAOzP,IACJ2P,QAAQqzB,KAAKhjC,GACbuiC,GAAgB1yB,EAAAA,EAAAA,KAAuB7P,EAAGE,IAAAA,KAAU,6BAEvD4P,SAAQ,KACLzC,GAAa,OAGlB,KACH+0B,EAAY,OAEjB,CAACr2B,EAAWu2B,EAAUh1B,IAElB,CACHzB,UAAAA,EACAs2B,SAAUM,EACVL,YAAAA,EACAt8B,aAAAA,EACA8G,YAAAA,EACAD,MAAOw1B,EAASz5B,OAChBoE,aAAczL,EACdghC,oBAAAA,EACAz2B,KAAAA,IYxDAq3B,CAAal3B,EAAWm2B,IACtB,SAACgB,EAAD,aAAWC,EAAX,kBAAyBC,GDrCG,MAClC,MAAOC,EAAcC,IAAmBjlC,EAAAA,EAAAA,UAAuB,IACzD+kC,GAAoB37B,EAAAA,EAAAA,cAAY,KAClC67B,EAAgB,MACjB,IAgBH,MAAO,CAACJ,UAfSz7B,EAAAA,EAAAA,cACZ8tB,GAAe,CAACgO,EAAGphC,KAChBmhC,GAAiBE,GACbA,EAAUlJ,GAAY/E,MAAWpzB,GAASwsB,EAAAA,EAAAA,OAAM2L,GAAY/E,GAAOpzB,EAAQqhC,GAAaA,MAGhG,IAScL,cAPG17B,EAAAA,EAAAA,cACjB,QAAC,KAAC8tB,GAAF,SACI8N,EAAa/I,GAAY/E,IACnBpjB,KAAKxG,IAAI03B,EAAa/I,GAAY/E,IAAQlyB,GAAM01B,WAChD11B,GAAM01B,YAChB,CAACsK,IAE2BD,kBAAAA,ICiBoBK,GAE9CC,GAAkBllC,EAAAA,EAAAA,YAAW47B,EAAAA,GAC7BD,OACuB/qB,IAAzB6yB,EAAqCA,EAAuByB,EAAgBvJ,oBAC1EwJ,GAAW98B,EAAAA,EAAAA,UAAQ,I,+UAAM,IAAK68B,EAAX,CAA4BvJ,oBAAAA,KAAuB,CAACA,EAAqBuJ,IAE5FE,GAAYn8B,EAAAA,EAAAA,cAAY,KAC1BrC,EAASwK,EAAAA,GAAAA,QAAAA,UAAqB,CAACtK,OAAQ+O,EAAI6tB,UAAAA,EAAWn2B,UAAAA,OACvD,CAAC3G,EAAUiP,EAAI6tB,EAAWn2B,IAEvB83B,GAAoBp8B,EAAAA,EAAAA,cACrBq8B,IAAD,CACIliC,MACI,kBAAC,IAAD,CACImiC,cAAY,EACZC,YAAY,WACZC,YAAa,IACbf,SAAUA,EAASY,EAAQvO,OAE3B,kBAACW,GAAD,CAAMX,KAAMuO,EAAQvO,WAIhC,CAAC2N,IAOL,OAJAnzB,EAAAA,EAAAA,YAAU,KACNqzB,MACD,CAACA,EAAmBr3B,IAGnB,kBAACquB,EAAA,WAAD,CAA0Br3B,MAAO4gC,GAC7B,kBAACt3B,EAAA,EAAD,CAAWtO,UAAWA,GAClB,kBAAC,GAAD,CAAsBm8B,YAAa0J,EAAWhiC,MAAOb,IACpD8K,GAAa,kBAACU,EAAA,EAAD,CAAqBxO,UAAWC,EAAOypB,kBACrD,kBAACqO,GAAc5M,SAAf,CAAwBnmB,MAAO2I,GAC3B,yBAAK3N,UAAWC,EAAO23B,eACnB,yBAAK53B,UAAWC,EAAO43B,MACjB9vB,EAcE,kBAACzD,EAAA,EAAD,CAAYtE,UAAWC,EAAO8H,cAAeA,GAb7C,oCACI,kBAACo+B,GAAA,GAAD,CACIC,eAAe,EACfhC,SAAUA,EACViC,SAAS,EACT/gC,MAAOA,GACPwgC,kBAAmBA,EACnB9jC,SAAUqiC,EACVvL,WAAYA,GACZkC,UAAWoK,OAQ9Bx2B,EAAQ4tB,GAAuB,GAC5B,kBAAC7tB,EAAA,EAAD,CACI7N,QAAS,CAACC,KAAMd,EAAO03B,2BACvB/oB,MAAOA,EACPG,aAAcA,EACdlB,KAAMA,EACNgB,YAAaA,EACby1B,oBAAqBA,EACrBx1B,mBAAoB0tB,GACpB8J,iBAAkBnkC,IAAAA,KAAU,qBAEhC,WgB/EXokC,GAAqCrF,IDMP,IAAgC,IAA/B,OAACvzB,EAAD,UAAS3N,GAAsB,EACvE,MAAMC,EAASpB,KACT4I,GAASC,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,WACrBqG,GAAYoL,EAAAA,EAAAA,KAAoB3R,IAE/BqG,EAAWwB,IAAgBhP,EAAAA,EAAAA,WAAS,GACrCkmC,GAAuB98B,EAAAA,EAAAA,cAAY,KACrC4F,GAAa,KACd,IACGm3B,GAAwB/8B,EAAAA,EAAAA,cAAY,KACtC4F,GAAa,KACd,KAEG,QAACo3B,EAAD,YAAUpnB,EAAV,YAAuBqnB,IAAeC,EAAAA,GAAAA,GAAiB,CACzDvX,UAAWrhB,EACXvG,OAAAA,EACA2J,QAASwvB,GACTp3B,OAAQ,GACRqE,KAAM,EACNoc,QAAS8W,GACTlyB,YA/B6B,EAgC7Bg4B,eAAgBL,EAChBM,gBAAiBL,IAEfM,GAAsBr9B,EAAAA,EAAAA,cAAY,KACpCi9B,MACD,CAACA,IAEEt/B,GAAWC,EAAAA,EAAAA,eACXC,GAAS9G,EAAAA,EAAAA,YAAW+G,EAAAA,GACpBw/B,GAAgCt9B,EAAAA,EAAAA,cAAY,KAC9CrC,EAAS4/B,EAAAA,GAAAA,QAAAA,gBAAoC,CAACC,cAAe,mBAAoB3/B,OAAAA,OAClF,CAACF,EAAUE,IAERsa,GAAY/Y,EAAAA,EAAAA,UACd,KAAMq+B,EAAAA,EAAAA,KAA6Cn5B,GAAWzF,EAAAA,EAAAA,KAAI6+B,EAAAA,IAA6BV,KAC/F,CAAC14B,EAAW04B,KAGV,iBAAC3kB,IAAoBthB,EAAAA,EAAAA,YAAWuhB,EAAAA,IACtChQ,EAAAA,EAAAA,YAAU,KACN+P,EAAiBF,KAClB,CAACE,EAAkBF,IAEtB,MAAMwlB,IAAcz8B,EAAAA,EAAAA,SAAQ87B,GAUtB7+B,EAREiG,EACOmzB,GAAgBqG,SAEvB18B,EAAAA,EAAAA,SAAQ87B,GACDzF,GAAgBsG,OAEpBtG,GAAgBuG,OAG3B,OACI,kBAAChoB,GAAA,WAAD,CAA6Bxa,MAAOsa,GAChC,kBAAChR,EAAA,EAAD,CAAWtO,UAAWgB,GAAAA,CAAWf,EAAOc,KAAMf,IAC1C,kBAAC4D,EAAA,EAAD,CAAiBC,MAAO8J,EAAO3K,UAC/B,yBAAKhD,UAAWC,EAAOygC,kBAClB74B,IAAUo5B,GAAgBqG,SAAW,kBAAC94B,EAAA,EAAD,MACrC3G,IAAUo5B,GAAgBsG,QACvB,kBAACjjC,EAAA,EAAD,CAAYtE,UAAWC,EAAOgG,QAAS9D,IAAAA,KAAU,qBAEpD0F,IAAUo5B,GAAgBuG,QACvBd,EAAQn+B,KAAKm3B,GACT,kBAACY,GAAD,CACI3yB,OAAQA,EACR2R,YAAaA,EACbogB,MAAOA,EACPE,gBAAiBmH,EACjBpH,eAAgB6G,EAChBt7B,IAAKw0B,EAAMpf,OAAOvZ,SAIjCsgC,GACG,oCACI,yBAAKrnC,UAAWC,EAAO0gC,QACnB,kBAAC8G,GAAA,EAAD,CACIlJ,UAAU,SACVh6B,QAAQ,UACRtD,QAAS+lC,EACTU,UAAU,QAETvlC,IAAAA,KAAU,mBCzF9BwlC,IAA2Bv8B,EAAAA,EAAAA,OAAK,IACzC,wCAA4DkG,MAAMs2B,IAAD,CAC7DrpC,QAAS2iC,GAAS0G,EAAeC,yBAI5BC,IAAgC18B,EAAAA,EAAAA,OAAK,IAC9C,wCAA6DkG,MAAMs2B,IAAD,CAC9DrpC,QAAS2iC,GAAS0G,EAAeG,8BAG5BC,GAAuB9G,IQ9BP,IAA+E,IAA9E,OAACvzB,EAAD,aAASs6B,EAAT,mBAAuBC,EAAvB,UAA2CloC,GAAmC,EACxG,MAAMC,EAASpB,KACTqQ,GAAWxH,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,aACvBxG,GAASC,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,WACrBk6B,GAASzgC,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,kBACrB,QAACm6B,EAAD,QAAU3pB,GnBlBM,EAAChX,EAAgByH,EAAoBi5B,KAC3D,MAAOC,EAASC,IAAc/nC,EAAAA,EAAAA,UAAqB,KAC5Cme,EAASG,IAActe,EAAAA,EAAAA,WAAS,GACjCiP,GAAcC,EAAAA,GAAAA,KAepB,OAdAwC,EAAAA,EAAAA,YAAU,KACN4M,GAAW,GACXrP,GAAY+4B,EAAAA,EAAAA,KAAQp5B,EAAU,CAACzH,GAAS0gC,IACnC72B,MAAM82B,IACHC,EAAWD,EAAQ5+B,OAAOk1B,QAE7BhtB,OAAM,KACH22B,EAAW,OAEdt2B,SAAQ,KACL6M,GAAW,QAEpB,CAACnX,EAAQyH,EAAUi5B,EAAQ54B,IAEvB,CAAC64B,QAAAA,EAAS3pB,QAAAA,ImBAU8pB,CAAW9gC,EAAQyH,EAAUi5B,GAClDK,GAAiB1/B,EAAAA,EAAAA,UACnB,IACI,yBAAK9I,UAAWC,EAAOq+B,YACnB,kBAAC9vB,EAAA,EAAD,QAGR,CAACvO,IAGCwoC,GAAgB3/B,EAAAA,EAAAA,UAAQ,KAAM,CAAE4/B,IAAK,EAAGC,IAAK,KAAK,IAClDC,GAAa9/B,EAAAA,EAAAA,UAAQ,KAAM,CAAE+/B,gBAAgB,KAAQ,IAE3D,OACIV,GACI,kBAAC75B,EAAA,EAAD,CAAWtO,UAAWgB,GAAAA,CAAWf,EAAOc,KAAMf,IACzCye,GAAW,kBAACjQ,EAAA,EAAD,MACZ,kBAAC,KAAD,CACIwF,KAAK,IACLpO,KAAMqiC,EAAea,GAAAA,EAAqBC,GAAAA,EAC1C9nC,QAAS,IAAMinC,EAAmBv6B,EAAO2I,IACzCtW,UAAWC,EAAO4+B,gBAGtB,kBAACmK,GAAA,EAAD,CACIR,eAAgBA,EAChBS,YAAa,EACbR,cAAeA,EACfL,QAASA,EACTc,sBAAuBjpC,EAAOq+B,WAC9B6J,OAAQA,EACRS,WAAYA,QRLnBO,GAA4BjI,ILvBP,IAAkD,IAAjD,OAACvzB,EAAD,UAAS3N,GAAwC,EAChF,MAAM,aAACiP,GAAgBtB,EACjB1N,EAASpB,KACTwI,GAAWC,EAAAA,EAAAA,eAEXW,GAAOP,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,SACnBF,GAASC,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,mBACrBuH,GAAWxH,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,aAEvBlE,EAAgBwL,GAAegB,EAAAA,EAAAA,KAAuBf,EAAUD,GAAgB,KAChFjI,EAAa2G,EAAO,eAAiBxL,IAAAA,KAAU,iBAE/C+8B,GAAmCx1B,EAAAA,EAAAA,cACpCiiB,GACGtkB,EAASuC,EAAAA,GAAAA,QAAAA,iCAAiD+hB,KAC9D,CAACtkB,IAwCL,OACI,kBAACiH,EAAA,EAAD,CAAWtO,UAAWA,GAClB,kBAAC4D,EAAA,EAAD,CAAiBC,MAAO8J,EAAO3K,SAC3B,kBAACe,EAAA,EAAD,CAAiBC,YAAaP,MAAAA,OAAF,EAAEA,EAAeO,eAEjD,yBAAKhE,UAAWC,EAAOuZ,WA1CT,MAClB,GAAI/V,EAAe,CACf,MAAM2lC,GAAe9gC,EAAAA,EAAAA,QAAO,GAAI,CAAC,aAAc7E,EAAc2D,MAAOK,GAC9D2H,GAASoC,EAAAA,EAAAA,MAAK,CAAC,aAAc,SAAUvC,GAAexH,GACtDwJ,EAAcm4B,EAAaz+B,OAEjC,IAAIxH,EAAAA,EAAAA,KAAe8E,GAAO,CACtB,MAAMwG,EAAQ,CACVhL,cAAAA,EACAkK,OAAAA,EACAyB,OAAAA,EACA8vB,iCAAAA,GAEJ,OAAO,kBAACD,GAAsCxwB,GAGlD,GAAIwC,EAAc,EAAG,CACjB,MAAMxC,EAAQ,CACV0wB,gBAAiBiK,EACjB3lC,cAAAA,EACA27B,UAAWC,GACXjwB,OAAAA,EACA3I,UAAWgB,EAAOV,IAClBm4B,iCAAAA,GAEJ,OACI,oCACI,kBAACmK,GAAA,EAAwB56B,GACzB,kBAACqwB,GAAD,CAAkBC,YAAa9tB,MAM/C,OAAO,kBAAC3M,EAAA,EAAD,CAAYtE,UAAWC,EAAOgG,QAASe,IAQP0H,QKrB/C,MAAM46B,IAAAA,GACKC,UAAYC,EAAAA,IADjBF,GAEKG,eAAiB,CACpBC,EADoB,KAGnB,IADD,OAAC/7B,EAAD,UAAS3N,EAAT,aAAoBioC,EAApB,mBAAkCC,GACjC,EACD,OAAQv6B,EAAO+7B,IACX,KAAKJ,GAAaC,UAAUI,cACxB,OAAO,kBAAChC,GAAD,CAA0Bh6B,OAAQA,EAAmC3N,UAAWA,IAC3F,KAAKspC,GAAaC,UAAUK,eACxB,OAAO,kBAAC5F,GAAD,CAA0Br2B,OAAQA,EAAoC3N,UAAWA,IAC5F,KAAKspC,GAAaC,UAAUM,eACxB,OAAO,kBAAC/B,GAAD,CAA+Bn6B,OAAQA,EAA+B3N,UAAWA,IAC5F,KAAKspC,GAAaC,UAAUO,UACxB,OAAO,kBAACxG,GAAD,CAA6B31B,OAAQA,EAA+B3N,UAAWA,IAC1F,KAAKspC,GAAaC,UAAUQ,WACxB,OAAO,kBAACzI,GAAD,CAA8BthC,UAAWA,EAAW2N,OAAQA,IACvE,KAAK27B,GAAaC,UAAUS,gBACxB,OACI,kBAACpI,GAAD,CACIj0B,OAAQA,EACR3N,UAAWA,IAGvB,KAAKspC,GAAaC,UAAUU,eACxB,OACI,kBAACjI,GAAD,CACIr0B,OAAQA,EACR3N,UAAWA,IAGvB,KAAKspC,GAAaC,UAAUW,IACxB,OACI,kBAAClC,GAAD,CACIr6B,OAAQA,EACRs6B,aAAcA,EACdC,mBAAoBA,EACpBloC,UAAWA,IAGvB,KAAKspC,GAAaC,UAAUY,OACxB,OAAO,kBAACpG,GAAD,CAAmBp2B,OAAQA,EAAkC3N,UAAWA,IACnF,KAAKspC,GAAaC,UAAUa,eACxB,OAAO,kBAACjB,GAAD,CAA2Bx7B,OAAQA,EAAoC3N,UAAWA,IAC7F,KAAKspC,GAAaC,UAAUc,iBACxB,OACI,kBAAC9D,GAAD,CACI54B,OAAQA,EACR3N,UAAWA,MAhD7BspC,GAqDKgB,aAAgB77B,GAEf66B,GAAaG,eAAe,QAASh7B,IACrC66B,GAAaG,eAAe,cAAeh7B,IAAU,kBAAC4yB,GAAD,CAAiBrhC,UAAWyO,EAAMzO,YAKnG,YS3HMuqC,GAAW,IAAM,KAEjBC,IAAgB3vB,EAAAA,EAAAA,OAAK,IAAgF,IAA/E,OAAClN,EAAD,aAASs6B,EAAT,WAAuBwC,EAAvB,mBAAmCvC,GAA4C,EACvG,MAAMjoC,EAASpB,KACf,OACI,kBAAC,EAAA6rC,SAAD,CAAUC,SAAU,kBAACJ,GAAD,OACfjB,GAAAA,aAA0B,CACvB37B,OAAAA,EACA3N,UAAWgB,GAAAA,CAAWf,EAAOs+B,UAAW,CAAC,CAACt+B,EAAOq+B,aAAcmM,IAC/DxC,aAAAA,EACAC,mBAAAA,QAMhBsC,GAAc5rC,YAAc,gBCnBrB,MAAMC,IAAYC,EAAAA,GAAAA,aAAYwG,IAAD,CAChCslC,KAAMtlC,EAAMulC,UACZC,mBAAoB,CAChB1mC,OAAQ,QAEZ2mC,kBAAmB,CACf7rC,MAAO,OACPkF,OAAQ,OACRkJ,SAAU,c,mNCYlB,MAAM09B,GAAgB,CAAC,kBAAmB,YAKpCC,GAAoB,IAUb,UAVc,iBACvBC,EADuB,MAEvBC,EAFuB,UAGvBnrC,EACAgY,SAAUozB,EAJa,MAKvBl+B,EALuB,aAMvB+6B,EANuB,mBAOvBC,EAPuB,kBAQvBmD,GAES,EADN58B,E,kXACM,wHACT,MAAMd,EAASw9B,EAAMx/B,MAAK,QAAC,GAAC2K,GAAF,SAAU40B,EAAiBhkB,IAAM5Q,KACrDrW,EAASpB,KACTspC,GAASzgC,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,iBAE3B,IAAKN,EACD,OAAO,KAEX,MAAM29B,EAAe39B,EAAO49B,QAAUjC,GAAAA,UAAAA,OACtC,GAAIgC,IAAiB39B,MAAAA,GAAD,UAACA,EAAQ+d,cAAT,eAAkC8f,YAAaC,EAAAA,IAAAA,QAC/D,OAAO,KAIX,GADkB99B,EAAO49B,QAAUjC,GAAAA,UAAAA,MACjBnB,EACd,OAAO,KAGX,MAAMuD,EA/BkB1rC,CAAAA,IAAD,uBACvBiF,OAAOqO,QAAQk2B,EAAAA,KAAkB79B,MAAK,QAAE65B,EAAGxgC,GAAL,SAAgBhF,IAAcgF,YAD7C,aACvB,EAA6E,IA8BzD2mC,CAAmBh+B,EAAO49B,OAC9C,OACI,+BACQviC,EAAAA,EAAAA,MAAKgiC,GAAev8B,GAD5B,CAEI,iBAAgBd,EAAO2I,GACvB,oBAAmBo1B,GAAe,GAClCx+B,MAAOA,EACPlN,UAAWgB,GAAAA,CAAWhB,EAAW,CAC7B,CAACC,EAAO2qC,OAAQU,EAChBM,WAAYN,MAGhB,yBAAKtrC,UAAWC,EAAO8qC,mBACnB,yBACI,iBAAe,yBACf/qC,UAAWgB,GAAAA,CAAW,CAAC,CAACf,EAAO6qC,qBAAsBO,KAEpDA,EACD,kBAACb,GAAD,CACI78B,OAAQA,EACRs6B,aAAcA,EACdC,mBAAoBA,EACpBuC,WAAY7a,QAAQyb,MAG3BD,KC9EXS,GAAoB,KAQbhtC,IAAYC,EAAAA,GAAAA,YAAW,CAChCgtC,cAAe,CACXv+B,SAAU,EACVD,SAAU,QAEdy+B,kBAAmB,QAAC,SAACvsC,EAAD,SAAWR,EAAW6sC,GAAtB,eAAyCG,GAA1C,QAAsE,CACrFhtC,SAAUQ,GAAYA,EAAWR,EAAWQ,EAAWwsC,EAAiBhtC,EACxEoF,OAAQ,WCGV6nC,GAAgB,IAAoF,IAAnF,MAACd,EAAD,OAAQe,EAAR,OAAgBC,EAAhB,UAAwBn+B,EAAxB,SAAmCxO,EAAnC,SAA6CR,EAA7C,gBAAuDotC,GAA4B,EACtG,MAAMC,GAAmBlsC,EAAAA,EAAAA,UACnB6rC,GAJkBtlC,EAIkB2lC,EAAiBhrC,SAJIqF,EAAQ4lC,YAAc5lC,EAAQ6lC,YAAc,EAAnF7lC,IAAAA,EAKxB,MAAM8lC,EAAoBH,EAAiBhrC,QAErCpB,EAASpB,GAAU,CAACW,SAAAA,EAAUR,SAAAA,EAAUgtC,eAAAA,IAExCS,GAAuB3jC,EAAAA,EAAAA,UACzB,KAAM,CAAEpC,QAAS8lC,EAAmBE,SAAU,CAAC,OAAQ,QAAS,MAAO,aACvE,CAACF,IASL,OANAx6B,EAAAA,EAAAA,YAAU,KACFq6B,EAAiBhrC,UACjBgrC,EAAiBhrC,QAAQsrC,UAAY,KAE1C,CAAC3+B,IAGA,yBAAKnN,IAAKwrC,EAAkBrsC,UAAWC,EAAO6rC,eAC1C,yBAAK9rC,UAAWC,EAAO8rC,kBAAmB,iBAAe,uBACrD,kBAACa,EAAA,WAAD,CAAiC5nC,MAAOynC,GACpC,kBAACI,EAAA,EAAD,CACIC,WAAY7B,GACZE,MAAOA,EACPe,OAAQA,EACRE,gBAAiBA,EACjBW,gBAAgB,uBAChBC,SAAUb,Q,wCC9C3B,MAAMttC,IAAYC,EAAAA,GAAAA,aAAW,KAAM,CACtCmuC,UAAW,CACP1tC,aAAc,OACd+lB,UAAW,cACX,SAAU,CACN0W,KAAM,SAGdkR,SAAU,CACN,UAAW,CACPC,SAAU,SACV1qC,WAAY,iBCKX2qC,GAAe,IAA2B,IAA1B,aAACC,GAAyB,EACnD,MAAMptC,EAASpB,GAAU,IACnBwI,GAAWC,EAAAA,EAAAA,eACXgmC,GAA4B5lC,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,sBACxC4lC,EACFF,EAAaE,kBAAqBD,GAAyC,IAApBA,GAPpC,KAQhB5hB,EAAQ8hB,IAAaltC,EAAAA,EAAAA,aACrB8e,EAAMquB,IAAWntC,EAAAA,EAAAA,WAAS,GAC3BotC,GAAgBhkC,EAAAA,EAAAA,cAClB,CAACikC,EAAcC,KACI,cAAXA,IACAvmC,EAAS4/B,EAAAA,GAAAA,QAAAA,kBAAsCoG,EAAa/2B,KAC5Dm3B,GAAQ,MAGhB,CAACJ,IAEC71B,GAAY9N,EAAAA,EAAAA,cAAY,KAC1BgiB,EAAOmiB,cAAgBxmC,EAASqkB,EAAOmiB,cACvCL,OAAUn8B,KACX,CAACqa,IACEoiB,GAAYpkC,EAAAA,EAAAA,cAAY,KAC1BrC,EAASqkB,EAAOqiB,aAChBP,OAAUn8B,GACVhK,EAAS4/B,EAAAA,GAAAA,QAAAA,kBAAsCoG,EAAa/2B,OAC7D,CAACoV,EAAQ2hB,IAEN/hB,EACF,oCACK+hB,EAAa/hB,QAAQ/iB,KAAKmjB,GACvB,kBAAC9qB,GAAA,EAAD,CACIsK,IAAKwgB,EAAO9pB,MACZ3C,MAAM,UACN+U,KAAK,QACL/S,QAAS,KACDyqB,EAAOsiB,iBACPR,EAAU9hB,GAEVrkB,EAASqkB,EAAOqiB,aAEpBN,GAAQ,KAGX/hB,EAAO9pB,UAKlBmJ,EACF,oCACI,kBAAC,KAAD,CAAiB/K,UAAWC,EAAOgtC,UAAWj5B,KAAK,IAAIpO,KAAMqoC,GAAAA,QAAWhtC,QAASysC,IAChFL,EAAalnC,MAItB,OACI,oCACI,kBAAC+nC,GAAA,EAAD,CAAQ10B,UAAW20B,SAASC,MACxB,kBAACC,GAAA,EAAD,CACId,iBAAkBA,EAClB5sC,KAAMye,EACNte,QAAS,CAACC,KAAMd,EAAOitC,UACvBxhB,OAAQJ,EACRhqB,QAASosC,EACTnsC,aAAc,CAACC,SAAU,SAAUC,WAAY,UAC/CsJ,QAASA,KAGjB,kBAACsM,GAAA,EAAD,CACI1W,OAAQ+qB,EACR7nB,MAAO6nB,MAAAA,OAAF,EAAEA,EAAQ4iB,iBACflhC,QAASse,MAAAA,OAAF,EAAEA,EAAQ6iB,wBACjB92B,OAAQq2B,EACRt2B,UAAWA,EACXD,YAAapV,IAAAA,KAAU,WACvBmV,eAAgBnV,IAAAA,KAAU,cCvF7BqsC,GAAgB,KACzB,MAAMC,GAAoC/mC,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,kBACtD,OAAKwgC,EAED,oCACKA,EAAc19B,OAAO,GAAGxI,KAAKmmC,GAC1B,kBAACtB,GAAD,CAAcliC,IAAKwjC,EAAEp4B,GAAI+2B,aAAcqB,OAJxB,M,2jBCR/B,SAASxT,KAA2Q,OAA9PA,GAAWj2B,OAAOk2B,QAAU,SAAUj5B,GAAU,IAAK,IAAIglB,EAAI,EAAGA,EAAIkU,UAAUzwB,OAAQuc,IAAK,CAAE,IAAImU,EAASD,UAAUlU,GAAI,IAAK,IAAIhc,KAAOmwB,EAAcp2B,OAAOq2B,UAAUC,eAAeC,KAAKH,EAAQnwB,KAAQhJ,EAAOgJ,GAAOmwB,EAAOnwB,IAAY,OAAOhJ,GAAkBg5B,GAASO,MAAMC,KAAMN,WAGhT,SAAgB,QAAC,OACfn7B,EAAS,IADK,EAEXwO,E,kXAFW,sBAGV9P,IAAAA,cAAoB,MAAOu8B,GAAS,CACxCh8B,MAAO,KACPkF,OAAQ,KACRu3B,QAAS,YACTC,QAAS,MACTC,MAAO,6BACP8S,WAAY,gCACXlgC,GAAQ9P,IAAAA,cAAoB,OAAQ,KAAMA,IAAAA,cAAoB,OAAQ,CACvEF,EAAG,odACH6X,GAAI,oBACD3X,IAAAA,cAAoB,IAAK,CAC5Bm9B,OAAQ,OACRC,YAAa,IACbC,KAAM,OACNC,SAAU,WACTt9B,IAAAA,cAAoB,IAAK,CAC1ByxB,UAAW,sBACVzxB,IAAAA,cAAoB,OAAQ,CAC7B2X,GAAI,iBACJ0lB,KAAM,QACLr9B,IAAAA,cAAoB,MAAO,CAC5BiwC,UAAW,qBACRjwC,IAAAA,cAAoB,OAAQ,CAC/Bu9B,YAAa,MACbF,KAAM,OACN6S,KAAM,uBACNpwC,EAAG,sBChCL,SAASy8B,KAA2Q,OAA9PA,GAAWj2B,OAAOk2B,QAAU,SAAUj5B,GAAU,IAAK,IAAIglB,EAAI,EAAGA,EAAIkU,UAAUzwB,OAAQuc,IAAK,CAAE,IAAImU,EAASD,UAAUlU,GAAI,IAAK,IAAIhc,KAAOmwB,EAAcp2B,OAAOq2B,UAAUC,eAAeC,KAAKH,EAAQnwB,KAAQhJ,EAAOgJ,GAAOmwB,EAAOnwB,IAAY,OAAOhJ,GAAkBg5B,GAASO,MAAMC,KAAMN,WAGhT,SAAgB,QAAC,OACfn7B,EAAS,IADK,EAEXwO,E,kXAFW,sBAGV9P,IAAAA,cAAoB,MAAOu8B,GAAS,CACxCh8B,MAAO,KACPkF,OAAQ,KACRu3B,QAAS,YACTC,QAAS,MACTC,MAAO,6BACP8S,WAAY,gCACXlgC,GAAQ9P,IAAAA,cAAoB,OAAQ,KAAMA,IAAAA,cAAoB,OAAQ,CACvEF,EAAG,2LACH6X,GAAI,oBACD3X,IAAAA,cAAoB,IAAK,CAC5Bm9B,OAAQ,OACRC,YAAa,IACbC,KAAM,OACNC,SAAU,WACTt9B,IAAAA,cAAoB,OAAQ,CAC7B2X,GAAI,iBACJ0lB,KAAM,QACLr9B,IAAAA,cAAoB,MAAO,CAC5BiwC,UAAW,qBACRjwC,IAAAA,cAAoB,OAAQ,CAC/Bu9B,YAAa,MACbF,KAAM,OACN6S,KAAM,uBACNpwC,EAAG,qBC5BQI,IAAYC,EAAAA,GAAAA,YAAW,CAChCgwC,eAAgB,CACZxsC,QAAS,OACT,oBAAqB,CACjBtD,SAAU,OACVW,WAAY,QAGpBovC,cAAe,CACX7vC,MAAO,QACPkF,OAAQ,OACRoB,gBAAiB,QAErBwpC,SAAU,CACN1sC,QAAS,OACTE,eAAgB,WAChB9C,UAAW,QAEfuvC,WAAY,CACRtvC,WAAY,GAEhBuvC,aAAc,CACVC,OAAQ,mCC+BVC,GAAe3gC,GACjB,kBAAC4gC,GAAA,EAAY5gC,EACT,kBAAC,GAAD,OAIF6gC,GAAY7gC,GACd,kBAAC4gC,GAAA,EAAY5gC,EACT,kBAAC,GAAD,OAaF8gC,GAA2B,CAC7BC,EACAz2B,EACA02B,EACAC,EACAC,IAEIH,EAAMhmC,QAAO,IAAyB,IAAxB,MAACxE,EAAD,WAAQ4qC,GAAgB,EAClC,QAAIH,KAAiBtsC,EAAAA,EAAAA,KAAe6B,QAC9B0qC,GAAsBC,KAAuCE,EAAAA,EAAAA,KAAc7qC,MAC1E8qC,EAAAA,EAAAA,KAAwBF,EAAY72B,MAY1Cg3B,GAAyB,IAAuE,IAAtE,UAAC/vC,EAAD,kBAAYgwC,EAAZ,UAA+B54B,EAA/B,SAA0C64B,GAAW,GAAiB,EACzG,MAAMhwC,EAASpB,KACTwI,GAAWC,EAAAA,EAAAA,eACXqoC,GAAqCjoC,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,iCACjDxG,GAASC,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,sBACrBrG,GAAiBF,EAAAA,EAAAA,cAAaG,GAAUoG,EAAAA,GAAAA,UAAAA,kBAAgCpG,EAAOJ,EAAOV,OACtFmI,GAAWxH,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,aACvByhC,GAAoBhoC,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,mBAChChG,GAAOP,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,SACnB9K,GAAiBuE,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,mBAC7BC,GAAaxG,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,eACzB2B,GAAuBlI,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,yBACnCiiC,GAAmBxoC,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,qBAC/BkiC,EAAgB1oC,MAAAA,OAAH,EAAGA,EAAQd,KACxBoS,GAAajQ,EAAAA,EAAAA,UAAQ,KAAMkQ,EAAAA,EAAAA,KAAc9J,EAAUihC,IAAgB,CAACA,EAAejhC,IACnFkhC,EAAoBF,IAAqBG,EAAAA,IAAAA,OAEzCC,EADqBJ,IAAqBG,EAAAA,IAAAA,SACAD,GACzCG,EAA6BC,IAAkClwC,EAAAA,EAAAA,WAAS,GACzEmwC,GAAiB/mC,EAAAA,EAAAA,cAAY,KAC/B8mC,GAA+B,KAChC,IACGE,ECnFoB,KAA2D,IAAzDC,YAAaC,EAAd,eAA+BH,GAA2B,EACrF,MAAMhpC,GAAiBC,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,sBAC7BiB,GAAWxH,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,aACvB5G,GAAWC,EAAAA,EAAAA,eACX6oC,EAAgB1oC,MAAAA,OAAH,EAAGA,EAAQd,KACxBkqC,EAAgB3hC,EAAS2hC,cACzBC,GAAkCpnC,EAAAA,EAAAA,cAAYqnC,EAAAA,EAAAA,KAAyB7hC,EAAUihC,GAAgB,CACnGjhC,EACAihC,IAEEp3B,GAAaC,EAAAA,EAAAA,KAAc9J,EAAUihC,GACrCQ,GAAc7nC,EAAAA,EAAAA,UAChB,KACImU,EAAAA,EAAAA,OACI+zB,EAAAA,EAAAA,YAAW54B,EAAAA,QACX/P,EAAAA,EAAAA,OACIsD,EAAAA,EAAAA,OAAKtD,EAAAA,EAAAA,OAAK4oC,EAAAA,EAAAA,QAAO,GAAI,mBAAmBrd,EAAAA,EAAAA,SAAO9nB,EAAAA,EAAAA,UAASqkC,IAAgBrkC,EAAAA,EAAAA,UAAS,SACjFmR,EAAAA,EAAAA,OAAK+zB,EAAAA,EAAAA,YAAW54B,EAAAA,QAAQpP,EAAAA,EAAAA,MAAK,CAAC,qBAJtCiU,CAME2zB,IACN,CAACA,EAAiBT,IAEhBO,GAAUhnC,EAAAA,EAAAA,cAAY,KACxB,GAAIinC,EAAa,CACb,MAAMO,GAAkC7oC,EAAAA,EAAAA,OACpCG,EAAAA,EAAAA,MAAK,4BACLsE,EAAAA,EAAAA,MAAK,CACD,CACIsL,EAAAA,OACA/P,EAAAA,EAAAA,OACI0E,EAAAA,EAAAA,QAAOgM,IACPk4B,EAAAA,EAAAA,QAAO,GAAI,eACXznC,EAAAA,EAAAA,QAAO4pB,EAAAA,MACP7qB,EAAAA,EAAAA,KAAI4oC,EAAAA,OAGZ,EACIrlC,EAAAA,EAAAA,UAAS,MACTzD,EAAAA,EAAAA,OAAK0E,EAAAA,EAAAA,QAAO8jC,GAAiB,KAAKtoC,EAAAA,EAAAA,MAAIC,EAAAA,EAAAA,MAAK,SAASgB,EAAAA,EAAAA,QAAOsnC,KAE/D,CAACM,EAAAA,EAAGzkC,EAAAA,YAhB4BtE,CAkBtCsoC,GACFtpC,EACIuC,EAAAA,GAAAA,OAAAA,QAAAA,qBAA4C,CACxCynC,KAAM,OACCrmB,EAAAA,EAAAA,MAAK,CAAC,+BAAgC2lB,GADzC,CAEAW,wBAAyBJ,IAE7BljC,UAAWvG,EAAOV,OAI9B0pC,MACD,CAACE,EAAaF,EAAgB13B,EAAY83B,EAAeppC,EAAOV,IAAK+pC,IACxE,OAAOH,EAAcD,OAAUr/B,GD4BfkgC,CAAe,CAACZ,YAAaX,MAAAA,OAAF,EAAEA,EAAmBW,YAAaF,eAAAA,IACvEe,GAAgB1oC,EAAAA,EAAAA,UAClB,IAAM,CACF,CACIlH,MAAOO,IAAAA,KAAU,WACjB6C,MAAO4W,EAAAA,IAAAA,QACP5X,YAAa7B,IAAAA,KAAU,yBACvByD,KAAM6rC,GAAAA,EACN7B,WAAY,UAEhB,CACIhuC,MAAOO,IAAAA,KAAU,cACjB6C,MAAO4W,EAAAA,IAAAA,WACP5X,YAAa7B,IAAAA,KAAU,kDACvByD,KAAMwpC,GACNQ,WAAY,2BAEhB,CACIhuC,MAAOO,IAAAA,KAAU,WACjB6C,MAAO4W,EAAAA,IAAAA,QACP5X,YAAa7B,IAAAA,KAAU,yBACvByD,KAAM8rC,GAAAA,EACN9B,WAAY,UAGpB,IAGE+B,GAAgB7oC,EAAAA,EAAAA,UAClB,IAAM,IACE4nC,EACE,CACE,CACI9uC,MAAOO,IAAAA,KAAU,SACjB6C,MAAO,QACPhB,YAAa7B,IAAAA,KAAU,gCACvByD,KAAM0pC,GACNruC,QAAS,IAAMuvC,GAA+B,GAC9CZ,WAAY,WAGlB,GACN,CACIhuC,MAAOO,IAAAA,KAAU,UACjB6C,MAAO,SACPhB,YAAa7B,IAAAA,KAAU,8BACvByD,KAAM8W,GAAAA,EACNzb,QAAS,KACQ2wC,OAAOC,QAAQ1vC,IAAAA,KAAU,2CAElCkF,EAASuC,EAAAA,GAAAA,OAAAA,QAAAA,sBAA6C,CAACoE,UAAWvG,EAAOV,QAGjF6oC,WAAY,YAGpB,CAACvoC,EAAUI,EAAOV,IAAK2pC,IAGrBoB,GAAoBliC,KAAyBc,EAAAA,EAAAA,KAAmBjJ,KA1F3CsR,CAAAA,IAEvB+2B,EAAAA,EAAAA,KAAwBiC,EAAAA,IAAAA,KAA0Bh5B,MACjD+2B,EAAAA,EAAAA,KAAwBiC,EAAAA,IAAAA,OAA4Bh5B,MACpD+2B,EAAAA,EAAAA,KAAwBiC,EAAAA,IAAAA,OAA4Bh5B,MACpD+2B,EAAAA,EAAAA,KAAwBiC,EAAAA,IAAAA,wBAA6Ch5B,GAqFQi5B,CAAsBj5B,GAElG02B,GAAe7mC,EAAAA,EAAAA,KAAUnB,MAAAA,OAAD,EAACA,EAAQV,KAEjCkrC,GAAyBnpC,EAAAA,EAAAA,UAAQ,IAC5BymC,GACHiC,EACAz4B,EACA02B,EACAC,EACAC,IAEL,CAAC6B,EAAez4B,EAAY22B,EAAmBC,EAAoCF,IAChFyC,GAAyBppC,EAAAA,EAAAA,UAAQ,IAC5BymC,GACHoC,EACA54B,EACA02B,EACAC,EACAC,IAEL,CAACgC,EAAe54B,EAAY22B,EAAmBC,EAAoCF,IAEhF0C,GAAezoC,EAAAA,EAAAA,cAChB1E,IACGqC,EAASuC,EAAAA,GAAAA,KAAAA,QAAAA,YAAiC5E,MAE9C,CAACqC,IAGC2rB,GAAWtpB,EAAAA,EAAAA,cAAY,KACzBrC,EAASuC,EAAAA,GAAAA,KAAAA,QAAAA,uBACV,CAACvC,IAEE+qC,GAAa1oC,EAAAA,EAAAA,cAAY,KAC3BrC,EAASuC,EAAAA,GAAAA,QAAAA,iBACV,CAACvC,IAEJ,OACI,oCACI,kBAACgrC,GAAA,EAAD,CACIryC,UAAWgB,GAAAA,CAAWhB,EAAWqjB,GAAAA,GACjC5b,OAAQtE,GAAkByE,EAAiBA,EAAiBH,GAE5D,kBAAC8G,EAAA,EAAD,CAAKjM,QAAQ,OAAOG,WAAW,UAC3B,kBAAC8L,EAAA,EAAD,CAAK+jC,GAAI,GACJnvC,GACG,kBAACoL,EAAA,EAAD,CAAKvO,UAAWC,EAAO6uC,gBACnB,kBAACluC,GAAA,EAAD,CACI2D,QAAQ,WACRvE,UAAWC,EAAOivC,aAClBjuC,QAAS+xB,EACT,iBAAe,gCACfpW,SAAU0zB,GAETnuC,IAAAA,KAAU,WAEf,kBAACvB,GAAA,EAAD,CACI2D,QAAQ,YACRtF,MAAM,UACN,iBAAe,8BACfgC,QAASmxC,EACTx1B,SAAU0zB,IAETT,EAAAA,EAAAA,KAAc5nC,GAAQ9F,IAAAA,KAAU,WAAaA,IAAAA,KAAU,UAInEyN,GAAwB1B,EACrB,kBAACqkC,GAAA,EAAD,MAEArkC,GAAc,kBAACskC,GAAA,EAAD,OAGrBV,GACG,kBAACW,GAAA,EAAD,CACIC,aAAcT,EACdU,aAAcT,EACdltC,MAAOiD,EACPjG,SAAUmwC,EACVv1B,SAAU0zB,IAGjBL,GACG,kBAACl5B,GAAA,EAAD,CACIC,OAAO,sBACPC,gBAAiBrD,GAAAA,EACjBuD,YAAa,CACTvR,KAAMgtC,GAAAA,EACN5+B,KAAM,IACN,iBAAkB,6BAClBhU,UAAWC,EAAOgvC,YAEtB73B,UAAWA,EACXy7B,iBAAkBC,GAAAA,KAI9B,kBAACvkC,EAAA,EAAD,CAAKvO,UAAWC,EAAO+uC,UACnB,kBAAC1rB,GAAA,EAAD,CACIvc,IAAKU,EAAOV,IACZqc,mBAAmBlB,EAAAA,EAAAA,KAAwBC,EAAAA,IAAAA,OAAiC,CACxEnU,UAAWvG,EAAOV,MAEtByc,WAAYrB,EAAAA,IAAAA,aAIrBuuB,GACC,kBAACr5B,GAAA,EAAD,CACI1W,KAAM4vC,EACN1sC,MAAO1B,IAAAA,KAAU,iDACjBiL,QAASjL,IAAAA,KACL,4IAEJsV,OAAQi5B,EACRl5B,UAAWi5B,EACXl5B,YAAapV,IAAAA,KAAU,WACvBmV,eAAgBnV,IAAAA,KAAU,c,uCEvSvC,MAAMtD,IAAYC,EAAAA,GAAAA,YAAW,CAChC2lB,QAAS,CACLniB,QAAS,OACTgL,SAAU,SACVzK,WAAY,EACZlD,WAAY,MACZyE,OAAQ,QAEZuQ,MAAO,CACH9U,SAAU,OACVuE,OAAQ,OACRpF,SAAU,OACVwG,gBAAiB,UACjBvG,MAAO,QAEX2V,cAAe,CACXC,MAAO,S,mNCZR,IAAKk+B,I,SAAAA,GAAAA,EAAAA,EAAAA,SAAAA,GAAAA,WAAAA,EAAAA,EAAAA,cAAAA,GAAAA,gBAAAA,EAAAA,EAAAA,QAAAA,GAAAA,UAAAA,EAAAA,EAAAA,YAAAA,GAAAA,c,CAAAA,KAAAA,GAAAA,KAaL,MAAMC,GAAiB,IAAoC,IAAnC,OAACC,EAAD,KAASC,EAAT,QAAe5xC,GAAoB,EAC9D,MAAMrB,EAASpB,KACTuB,IAAUgY,EAAAA,EAAAA,OAAM66B,IAChB,QAAC7lC,EAAD,YAAU+lC,EAAV,OAAuB/P,GAAU8P,EAAKD,IAAW,GAQvD,OANAjhC,EAAAA,EAAAA,YAAU,KACFoxB,GACA9hC,MAEL,CAAC2xC,EAAQ7P,EAAQ9hC,IAGhB,yBAAKtB,UAAWC,EAAOwkB,SACnB,kBAAC2uB,GAAA,EAAD,CAAWzyC,KAAMP,IACXgjC,GACE,oCACI,kBAACiQ,GAAA,EAAD,MAA4BF,EAA5B,CAAyC7xC,QAASA,KACjD8L,M,uFClClB,MAAMvO,IAAYC,EAAAA,GAAAA,YAAW,CAChC2lB,QAAS,CACLniB,QAAS,OACT6K,cAAe,UAEnBmmC,YAAa,CACTh0C,YAAa,OACbC,aAAc,UCFTg0C,GAAmB,KAC5B,MAAMtzC,EAASpB,KACT20C,GAAuB9rC,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,yBAEzC,OACI,yBAAKjO,UAAWC,EAAOwkB,SAClB+uB,EAAqBjrC,KAAKkrC,GACvB,kBAAC/W,GAAD,CAAYxxB,IAAKuoC,EAASn9B,GAAI3I,OAAQ8lC,EAAUzzC,UAAWC,EAAOqzC,kB,gBCR3E,MAAMI,GAAsB,KAC/B,MAAM,MAACh8B,IAASjX,EAAAA,EAAAA,YAAWkzC,EAAAA,GACrB1zC,EAASpB,KACf,OACI,kBAACkW,GAAA,EAAD,CACIE,aAAcyC,EACd5W,QAAS,CACLkU,gCAAiC/U,EAAO2U,cACxCD,MAAO1U,EAAO0U,QAGlB,kBAACi/B,GAAA,EAAD,QCjBZ,SAAS1Y,KAA2Q,OAA9PA,GAAWj2B,OAAOk2B,QAAU,SAAUj5B,GAAU,IAAK,IAAIglB,EAAI,EAAGA,EAAIkU,UAAUzwB,OAAQuc,IAAK,CAAE,IAAImU,EAASD,UAAUlU,GAAI,IAAK,IAAIhc,KAAOmwB,EAAcp2B,OAAOq2B,UAAUC,eAAeC,KAAKH,EAAQnwB,KAAQhJ,EAAOgJ,GAAOmwB,EAAOnwB,IAAY,OAAOhJ,GAAkBg5B,GAASO,MAAMC,KAAMN,WAGhT,SAAgB,QAAC,OACfn7B,EAAS,IADK,EAEXwO,E,kXAFW,sBAGV9P,IAAAA,cAAoB,MAAOu8B,GAAS,CACxCh8B,MAAO,KACPkF,OAAQ,KACRu3B,QAAS,YACTC,QAAS,MACTC,MAAO,6BACP8S,WAAY,gCACXlgC,GAAQ9P,IAAAA,cAAoB,OAAQ,KAAMA,IAAAA,cAAoB,OAAQ,CACvEF,EAAG,gIACH6X,GAAI,oBACD3X,IAAAA,cAAoB,IAAK,CAC5Bm9B,OAAQ,OACRC,YAAa,IACbC,KAAM,OACNC,SAAU,WACTt9B,IAAAA,cAAoB,IAAK,KAAMA,IAAAA,cAAoB,IAAK,CACzDyxB,UAAW,oBACVzxB,IAAAA,cAAoB,OAAQ,CAC7B2X,GAAI,iBACJ0lB,KAAM,QACLr9B,IAAAA,cAAoB,MAAO,CAC5BiwC,UAAW,qBACRjwC,IAAAA,cAAoB,OAAQ,CAC/Bu9B,YAAa,MACbF,KAAM,OACN6S,KAAM,uBACNpwC,EAAG,uBCzBQo1C,GAA2B,KACpC,MAAM,YAACC,IAAerzC,EAAAA,EAAAA,YAAWuhB,EAAAA,GAC3B/hB,EAASpB,KACf,OACI,kBAACkW,GAAA,EAAD,CACIE,cAAc8+B,EAAAA,EAAAA,KAAsBD,GACpChzC,QAAS,CACLkU,gCAAiC/U,EAAO2U,cACxCD,MAAO1U,EAAO0U,QAGlB,kBAACq/B,GAAD,QClBZ,SAAS9Y,KAA2Q,OAA9PA,GAAWj2B,OAAOk2B,QAAU,SAAUj5B,GAAU,IAAK,IAAIglB,EAAI,EAAGA,EAAIkU,UAAUzwB,OAAQuc,IAAK,CAAE,IAAImU,EAASD,UAAUlU,GAAI,IAAK,IAAIhc,KAAOmwB,EAAcp2B,OAAOq2B,UAAUC,eAAeC,KAAKH,EAAQnwB,KAAQhJ,EAAOgJ,GAAOmwB,EAAOnwB,IAAY,OAAOhJ,GAAkBg5B,GAASO,MAAMC,KAAMN,WAGhT,SAAgB,QAAC,OACfn7B,EAAS,IADK,EAEXwO,E,kXAFW,sBAGV9P,IAAAA,cAAoB,MAAOu8B,GAAS,CACxCh8B,MAAO,KACPkF,OAAQ,KACRu3B,QAAS,YACTK,KAAM,OACNH,MAAO,8BACNptB,GAAQ9P,IAAAA,cAAoB,OAAQ,CACrCF,EAAG,oUACHu9B,KAAM,OACNE,YAAa,U,gBCbR,MAAMr9B,IAAYC,EAAAA,GAAAA,YAAW,CAChC2lB,QAAS,CACLnX,SAAU,OACVD,SAAU,WACVjJ,OAAQ,UCFH6vC,GAAe,KACxB,MAAMh0C,EAASpB,MACT,MAACq1C,EAAD,QAAQz1B,IAAWhe,EAAAA,EAAAA,YAAWkzC,EAAAA,GAEpC,OACI,yBAAK3zC,UAAWC,EAAOwkB,SAClBhG,GAAW,kBAACjQ,EAAA,EAAD,MACX0lC,GACGA,EAAM3rC,KAAK4rC,GACA,kBAACC,GAAA,EAAD,CAAkBlpC,IAAKipC,EAAKE,OAAQF,KAAMA,Q,gBCTrE,MASA,GATgC,IAC5B,kBAACG,GAAA,EAAD,CACInuC,KAAMhE,IAAAA,KAAU,8BAChBg8B,cAAeh8B,IAAAA,KACX,wG,wCCNL,MAAMtD,IAAYC,EAAAA,GAAAA,YAAW,CAChC2lB,QAAS,CACLnX,SAAU,OACV/N,aAAc,QAElBg1C,aAAc,CACVjyC,QAAS,OACT+B,OAAQ,QAEZmwC,aAAc,CACV30C,SAAU,UCFL40C,GAAoB,KAC7B,MAAMx0C,EAASpB,MACT,YAAC61C,EAAD,SAAc1F,EAAd,UAAwB2F,IAAal0C,EAAAA,EAAAA,YAAWuhB,EAAAA,GAChDhU,GAAYtG,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,6BAE9B+D,EAAAA,EAAAA,YAAU,KACN0iC,EAAY1mC,KACb,CAAC0mC,EAAa1mC,IAEjB,MAIMsR,GAAcs1B,EAAAA,GAAAA,GAAuB5F,GAE3C,OACI,kBAACxvB,GAAA,WAAD,CAA6Bxa,MAAOsa,GAChC,kBAAC/Q,EAAA,EAAD,CAAKvO,UAAWC,EAAOwkB,SAClBuqB,EAASzmC,KAAK4e,IACX,MAAM,SAAC0tB,EAAD,kBAAWzxB,EAAX,WAA8BI,EAA9B,UAA0CsxB,GAAa3tB,EAC7D,OACI,kBAAC4tB,GAAA,EAAD,CACI7pC,IAAK4pC,EACL/tC,IAAK8tC,EACLzxB,kBAAmBA,EACnBI,WAAYA,EACZ2D,QAASA,OAIpBwtB,GACG,kBAAClN,GAAA,EAAD,CACIlJ,UAAU,SACVh6B,QAAQ,UACRvE,UAAWC,EAAOs0C,aAClBtzC,QA1BW,KAC3ByzC,EAAY1mC,EAAW2mC,IA0BPjN,UAAU,QAEV,kBAACsN,GAAA,EAAD,CAAuBh1C,UAAWC,EAAOu0C,eACxCryC,IAAAA,KAAU,iBCpCnC,GATqC,IACjC,kBAACmyC,GAAA,EAAD,CACInuC,KAAMhE,IAAAA,KAAU,kCAChBg8B,cAAeh8B,IAAAA,KACX,6FCkBN8yC,GAAkBv9B,IACpB,GAAIA,EACA,OAAiB,IAAVA,EAAcvV,IAAAA,KAAU,gBAAiB,CAACuV,MAAAA,IAAUvV,IAAAA,KAAU,iBAAkB,CAACuV,MAAAA,KC1BnF7Y,IAAYC,EAAAA,GAAAA,aAAW,KAAM,CACtCo2C,iBAAkB,CACd5yC,QAAS,OACTgL,SAAU,SACVC,SAAU,OCSL4nC,IAAmCt6B,EAAAA,EAAAA,OAAK,IAA8D,IAA7D,cAACqsB,EAAD,UAAgB4N,EAAhB,YAA2BM,EAA3B,SAAwCp9B,GAAqB,EAC/G,MAAM/X,EAASpB,MACT,WAACw2C,EAAD,KAAanC,GFqByB,KAIgB,IAJf,UAC7C4B,EAD6C,YAE7CM,EAF6C,cAG7ClO,GAC4D,EAC5D,MAAMoO,GAA4B5tC,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,2BACxCyhC,GAAoBhoC,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,mBAChCsnC,GAAiC7tC,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,gCAC7CunC,GAA+B9tC,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,8BAC3CwnC,GAAyB/tC,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,wBAErConC,EAAaP,EAAY/B,GAAY2C,mBAAgBrkC,EAErDskC,GAA6BjuC,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,iBACzCiB,GAAqBxH,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,aACjCxG,GAAiBC,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,WAE7B2nC,GAAuBn1C,EAAAA,EAAAA,YAAWkzC,EAAAA,GAClCkC,GAAuBp1C,EAAAA,EAAAA,YAAWuhB,EAAAA,IAElC,iBAAC8zB,EAAD,mBAAmBC,IAAsBC,EAAAA,GAAAA,GAAkB,CAC7D9O,cAAAA,EACAz/B,OAAAA,EACAwuC,gBAAiBlD,GAAYmD,WAG3B,cAACC,EAAD,cAAgBC,EAAhB,UAA+BtoC,EAA/B,aAA0CuoC,EAA1C,iBAAwDC,EAAxD,YAA0EC,EAA1E,WAAuFC,IACzFC,EAAAA,GAAAA,IAAW,CAAChvC,OAAAA,EAAQ4nB,QAASymB,IAE3BY,EAAwBpB,GAA6B5F,KAAsB9mC,EAAAA,EAAAA,KAAUnB,MAAAA,OAAD,EAACA,EAAQV,KAC7F4vC,EAA6BpB,GAAkCE,EAC/DmB,GAAqB7C,EAAAA,EAAAA,KAAsB8B,MAAAA,OAAD,EAACA,EAAsB/B,aAgGvE,MAAO,CAACZ,MA9FKpqC,EAAAA,EAAAA,UACT,IAAM,CACF,CACIqO,YAAa,CACTb,GAAIy8B,GAAY8D,SAChBjxC,KAAM8tC,GACN7/B,aAAc1R,IAAAA,KAAU,aAE5BiL,QAASwoC,MAAAA,GAAAA,EAAsBl+B,MAAQ,kBAACu8B,GAAD,MAAmB,kBAAC,GAAD,MAC1Dd,YAAa,CACT2D,UAAW30C,IAAAA,KAAU,YACrB40C,YAAa9B,GAAeW,MAAAA,OAAD,EAACA,EAAsBl+B,OAClDs/B,aAAc,kBAACC,GAAA,EAAD,OAElB7T,QAASsT,GAEb,CACIv/B,YAAa,CACTb,GAAIy8B,GAAY2C,cAChB9vC,KAAMiuC,GACNhgC,aAAc1R,IAAAA,KAAU,kBAE5BiL,QAASwpC,EAAqB,kBAACnC,GAAD,MAAwB,kBAAC,GAAD,MACtDtB,YAAa,CACT2D,UAAW30C,IAAAA,KAAU,iBACrB40C,YAAa9B,GAAe2B,IAEhCxT,QAASuT,GAEb,CACIx/B,YAAa,CACTb,GAAIy8B,GAAYmD,QAChBtwC,KAAMsxC,GAAAA,EACNrjC,aAAc1R,IAAAA,KAAU,YAE5BiL,QAAS2oC,EACL,kBAACoB,GAAA,EAAD,CACIrpC,UAAWA,EACXwoC,iBAAkBA,EAClBc,iBAAkBf,EAClBroC,UAAWvG,MAAAA,OAAF,EAAEA,EAAQV,IACnB4uC,aAAcA,EACda,WAAYA,EACZD,YAAaA,IAGjB,kBAACc,GAAA,EAAD,MAEJlE,YAAa,CACT/lC,QACI,kBAACkqC,GAAA,EAAD,CACI5/B,MAAOq+B,IAAsBM,MAAAA,OAAA,EAAAA,EAAc1rC,SAAU,GAAK,OAAI0G,EAC9D0H,YAAYC,EAAAA,EAAAA,KAAc9J,EAAUzH,MAAAA,OAAX,EAAWA,EAAQd,MAC5C6C,OAAQ2sC,EACRC,cAAeA,KAI3BhT,OAAQgS,GAEZ,CACIj+B,YAAa,CACTb,GAAIy8B,GAAYwE,YAChB3xC,KAAM4xC,GACN3jC,aAAc1R,IAAAA,KAAU,kBAE5BiL,QAAS,kBAACmmC,GAAD,MACTJ,YAAa,CACT2D,UAAW30C,IAAAA,KAAU,kBAEzBihC,QAASoS,KAGjB,CACII,MAAAA,OADJ,EACIA,EAAsBl+B,MACtBg/B,EACAE,EACAD,EACAZ,EACAjoC,EACAwoC,EACAD,EACA5uC,MAAAA,OATJ,EASIA,EAAQV,IACRU,MAAAA,OAVJ,EAUIA,EAAQd,KACRgvC,EACAa,EACAD,EACArnC,EACAinC,EACAC,EACAZ,IAIMH,WAAAA,IEpJaoC,CAAiC,CAAC3C,UAAAA,EAAWM,YAAAA,EAAalO,cAAAA,IAErF,OACI,yBAAKlnC,UAAWC,EAAOi1C,kBACnB,kBAACwC,GAAA,EAAD,CACIrC,WAAYA,EACZnO,cAAeA,EACfyQ,cAActvC,EAAAA,EAAAA,OAAKylB,EAAAA,EAAAA,SAAOliB,EAAAA,EAAAA,QAAO,UAAU,KAAQgY,EAAAA,EAAAA,OAAM,eAA3Cvb,CAA2D6qC,IAExEl7B,EACD,kBAACg7B,GAAD,CAAgBE,KAAMA,SAMtCiC,GAAiCv2C,YAAc,yB,+JCb/C,MACMg5C,GAAa,G,+KCnBnB,MAAM/4C,IAAYC,EAAAA,GAAAA,aAAYwG,IAAD,CACzBmf,QAAS,CACLhiB,WAAY,SACZH,QAAS,OACTF,QAAS,YACTvC,SAAU,OACV8C,WAAY,OACZgD,WAAYL,EAAMuyC,WAAWC,kBAC7B74C,MAAOqG,EAAMY,QAAQC,KAAKC,WAE9B2xC,eAAgB,CACZz1C,QAAS,OACTkD,gBAAiB,yBACjBvG,MAAOqG,EAAMY,QAAQC,KAAKC,UAC1Bo4B,UAAW,0CAEfwZ,aAAc,CACV11C,QAAS,OACTkD,gBAAiB,yBACjBvG,MAAOqG,EAAMY,QAAQyL,MAAM2I,MAE/B29B,eAAgB,CACZ31C,QAAS,OACTkD,gBAAiB,yBACjBvG,MAAOqG,EAAMY,QAAQgyC,QAAQ59B,KAC7B,cAAe,CACX/a,aAAc,QAGtB0tC,UAAW,CACPhuC,MAAOqG,EAAMY,QAAQC,KAAKC,UAC1BkO,OAAQ,UACR,UAAW,CACP0F,WAAY,SAGpBm+B,cAAe,CACX/1C,QAAS,UAEbg2C,KAAM,CACFn5C,MAAOqG,EAAMY,QAAQmU,QAAQC,KAC7Bza,SAAUyF,EAAMuyC,WAAWQ,QAAQ,IACnC1yC,WAAYL,EAAMuyC,WAAWC,kBAC7BxjC,OAAQ,eAIhB,MClCO,IAAKgkC,I,SAAAA,GAAAA,EAAAA,QAAAA,UAAAA,EAAAA,QAAAA,UAAAA,EAAAA,MAAAA,Q,CAAAA,KAAAA,GAAAA,KAaZ,MAAMC,GAAkB,IAAsC,IAArC,QAACj3C,GAAoC,EAC1D,MAAMrB,EAASpB,KACf,OACI,kBAAC+U,GAAA,EAAD,CACIC,aAAc1R,IAAAA,KAAU,SACxBlB,QAASK,EACT0S,KAAM,IACNhU,UAAWC,EAAOgtC,UAClBrnC,KAAMqoC,GAAAA,WAKZuK,GAAiB,IAAsB,IAArB,QAACl3C,GAAoB,EACzC,MAAMrB,EAASpB,KAEf,OACI,yBAAKmB,UAAWgB,GAAAA,CAAWf,EAAOwkB,QAASxkB,EAAO83C,iBAC9C,kBAACQ,GAAD,CAAiBj3C,QAASA,IAC1B,kBAAC,KAAD,CAAUtB,UAAWgB,GAAAA,CAAWf,EAAOk4C,iBACvC,kBAAC7zC,EAAA,EAAD,KAAanC,IAAAA,KAAU,oCAK7Bs2C,GAAiB,IAAwC,IAAvC,MAAC72C,EAAD,QAAQN,EAAR,UAAiBo3C,GAAsB,EAC3D,MAAMz4C,EAASpB,KAEf,OACI,yBAAKmB,UAAWgB,GAAAA,CAAWf,EAAOwkB,QAASxkB,EAAOg4C,iBAC9C,kBAACM,GAAD,CAAiBj3C,QAASA,IAC1B,kBAAC,KAAD,CAAatB,UAAWgB,GAAAA,CAAWf,EAAOk4C,iBAC1C,yBAAK,iBAAe,6BAChB,8BAAOh2C,IAAAA,KAAU,iBACjB,4BAAI+W,EAAAA,EAAAA,KAAStX,IACb,8BAAOO,IAAAA,KAAU,sBACjB,0BAAMlB,QAASy3C,EAAW14C,UAAWC,EAAOm4C,MACvCj2C,IAAAA,KAAU,mCAEf,8BAAOA,IAAAA,KAAU,6CAM3Bw2C,GAAe,IAAsB,IAArB,QAACr3C,GAAoB,EACvC,MAAMrB,EAASpB,KAEf,OACI,yBAAKmB,UAAWgB,GAAAA,CAAWf,EAAOwkB,QAASxkB,EAAO+3C,eAC9C,kBAACO,GAAD,CAAiBj3C,QAASA,IAC1B,kBAAC,KAAD,CAAWtB,UAAWgB,GAAAA,CAAWf,EAAOk4C,iBACxC,kBAAC7zC,EAAA,EAAD,KACKnC,IAAAA,KACG,yHAOPy2C,GAA6B,IAAgD,IAA/C,MAACh3C,EAAD,QAAQN,EAAR,UAAiBo3C,EAAjB,OAA4BG,GAAmB,EACtF,OAAQA,GACJ,KAAKP,GAAuB75B,QACxB,OAAO,kBAAC+5B,GAAD,CAAgBl3C,QAASA,IACpC,KAAKg3C,GAAuBJ,QACxB,OAAO,kBAACO,GAAD,CAAgB72C,MAAOA,EAAON,QAASA,EAASo3C,UAAWA,IACtE,KAAKJ,GAAuB3mC,MACxB,OAAO,kBAACgnC,GAAD,CAAcr3C,QAASA,IAClC,QACI,OAAO,OC7Ebw3C,GAAwB,CAACC,EAA0BhgC,IAVjB,EAACggC,EAA2BhgC,IACpC,OAAxBggC,MAAAA,OAAA,EAAAA,EAAiB,OAGjB3gC,EAAAA,EAAAA,OAAM2gC,IAGHA,EAAejtC,SAASiN,GAI/BigC,CAAgCD,EAAgBhgC,GChBvCla,IAAYC,EAAAA,GAAAA,aAAYwG,IAAD,CAChC2zC,gBAAiB,CACb5rC,SAAU,WACVkH,IAAK,EACLC,KAAM,EACNK,MAAO,EACPokB,OAAQ,EACR9I,WAAY,uCACZlE,UAAW,SACXD,UAAW,OACX1pB,QAAS,OACT6K,cAAe,SACf3H,gBAAiBF,EAAMY,QAAQ8T,WAAWzb,SAE9Cq5C,WAAY,CACRpyC,gBAAiB,UACjBpB,OAAQ,QAEZ80C,eAAgB,QAAC,SAAC15C,GAAF,QAAwB,CACpC8C,QAAS,OACT6K,cAAe,SACfG,SAAU,SACVC,SAAU,EACV/N,SAAUA,EAAY,GAAEA,MAAe,SAE3C,4BAA6B,CACzB2wB,WAAY,wCAEhB,iCAAkC,CAC9BA,WAAY,4C,yHCoBpB,MAEMgpB,IAAyBt+B,EAAAA,EAAAA,OAAK,IAA0D,UAAzD,OAAClN,EAAD,UAASyrC,EAAT,cAAoBC,EAApB,UAAmCvE,GAAsB,EAC1F,MAAM,SAACt1C,EAAD,YAAW85C,EAAX,SAAwBC,EAAxB,OAAkCpN,GAAUx+B,GAAU,GACtD1N,EAASpB,GAAU,CAACW,SAAAA,IAEpBiI,GAAiBC,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,WAC7B0nC,GAA6BjuC,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,iBACzCurC,GAAkB9xC,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,yBAC9BwrC,GAAe,WAAA/xC,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,yBAAZ,eAA6CjJ,QAAS,GACrEiD,GAAOP,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,SACnByrC,GAA8BhyC,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,kBAE1C5G,GAAWC,EAAAA,EAAAA,eACXqyC,GAAcC,EAAAA,EAAAA,KACdC,ECnEuBC,CAAAA,IAC7B,MAAMC,GAAsBC,EAAAA,GAAAA,GAAuBF,GAC7CG,GAA8BC,EAAAA,GAAAA,KAEpC,OAAOpxC,EAAAA,EAAAA,UACH,I,+UAAM,IACCixC,EADP,CAEII,gBAAiBF,KAErB,CAACF,EAAqBE,KD0DJG,CAAiBb,IACjC,aAACc,IAAgBC,EAAAA,EAAAA,MAEhB3zC,KAAMwpC,EAAeppC,IAAKiH,EAAW+2B,YAAawV,GAAqB9yC,GAAU,IAClF,iBACF+yC,EADE,kCAEFC,EAFE,oBAGFC,EAHE,iCAIFC,EAJE,uBAKFC,GFjDqC,KAA0D,IAAzD,UAAC5sC,EAAD,cAAYmiC,EAAZ,kBAA2BoK,GAA8B,EACnG,MAAMlzC,GAAWC,EAAAA,EAAAA,gBACX,qBAACuzC,EAAsBC,YAAaC,IACtCrzC,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,wBAAwC,GAElD+sC,EAAwBlC,GAAsBiC,EAAsB5K,GACpE8K,EAAgBnC,GAAsB+B,EAAsB1K,GAE5D+K,GAAU/6C,EAAAA,EAAAA,QAAO,MACjBoP,GAAcC,EAAAA,GAAAA,KACdilB,GAAkBC,EAAAA,GAAAA,KAClBntB,GAAS9G,EAAAA,EAAAA,YAAW+G,EAAAA,IAEnBmzC,EAAkCQ,IAAuC76C,EAAAA,EAAAA,WAAS,IAClFs6C,EAAwBQ,IAA6B96C,EAAAA,EAAAA,UAASg4C,GAAuB75B,SACtF48B,EI7CsB,IJ+C5B,MAAMb,GAAmB9wC,EAAAA,EAAAA,cAAY,KAEjCrC,EAASuC,EAAAA,GAAAA,OAAAA,QAAAA,WAAkC,CAACrC,OAAAA,EAAQR,IAAKiH,KACzDmtC,GAAoC,KACrC,CAAC9zC,EAAU2G,EAAWzG,IAEnBkzC,GAAoC/wC,EAAAA,EAAAA,cAAY,KAClDyxC,GAAoC,KACrC,IAEGT,GAAsBhxC,EAAAA,EAAAA,cAAY,KACpC4xC,aAAaJ,EAAQ75C,SACrB85C,GAAoC,GACpC5rC,EAAY2G,QAAQoyB,aACrB,CAAC/4B,IAEEgsC,GAAiB7xC,EAAAA,EAAAA,cAClB8xC,IACGjsC,GAAYksC,EAAAA,EAAAA,KAAqBztC,IAC5BsD,MAAMoqC,IACCA,EAAO3W,YAAcwV,IACrBa,EAA0B9C,GAAuBJ,SAC7C+C,EACAT,IAEAW,GAAoC,GAExCK,GAAiB,MAGxB9pC,OAAM,SACNK,SAAQ,KACDypC,EAAgB,IAGfA,GAIDA,GAAgC,EAChCN,EAAQ75C,QAAUs6C,WAAWJ,EAAgBF,EAAuBG,KAJpEJ,EAA0B9C,GAAuB3mC,OACjDwpC,GAAoC,UAOpD,CAACZ,EAAmBvsC,EAAWitC,EAAeT,EAAkBjrC,EAAa8rC,IAG3EO,GAAsBlyC,EAAAA,EAAAA,cAAY,KAChCsxC,IACAI,EAA0B9C,GAAuB75B,SACjD08B,GAAoC,GACpCD,EAAQ75C,QAAUs6C,WAAWJ,EAAgBF,EAAuBQ,MAEzE,CAACN,EAAgBP,IAapB,OAXAhpC,EAAAA,EAAAA,YAAU,KACN,MAAM8iB,EAAuBL,GAAiB/I,IACtCA,EAAO/kB,OAASiD,EAAAA,GAAAA,UAAAA,eAAAA,eAChBgyC,OAGR,MAAO,KACH9mB,OAEL,CAACL,EAAiBllB,EAAaqsC,IAE3B,CACHpB,iBAAAA,EACAC,kCAAAA,EACAC,oBAAAA,EACAC,iCAAAA,EACAC,uBAAAA,IEtCAkB,CAA8B,CAAC9tC,UAAAA,EAAWmiC,cAAAA,EAAeoK,kBAAAA,IACvD14B,GAAY/Y,EAAAA,EAAAA,UAAQ,KAAMizC,EAAAA,EAAAA,KAAoCt0C,IAAS,CAACA,IACxEu0C,GAAqBv7C,EAAAA,EAAAA,YAAWuhB,EAAAA,GAChCi6B,GAAgBC,EAAAA,EAAAA,GAAiB,CAACr6B,UAAAA,IAElC8jB,IAAkBllC,EAAAA,EAAAA,YAAW47B,EAAAA,GAC7B8f,IAAkBz0C,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,6BAC9Bi+B,IAAW98B,EAAAA,EAAAA,UAAQ,I,+UAAM,IAAK68B,GAAX,CAA4BwW,gBAAAA,MAAmB,CAACxW,GAAiBwW,MAEpF,MACFhR,GADE,OAEFe,GACAkQ,SAAUC,GAHR,cAIFC,GAJE,YAKFC,GALE,mBAMFC,ILzEwB,KAA6E,IAA3E7uC,OAAQ8uC,EAAT,cAAwBtM,EAAxB,UAAuCiJ,EAAvC,cAAkDC,GAA0B,EACzG,MAAOnN,EAAQwQ,IAAap8C,EAAAA,EAAAA,UAAiB,KACtC6qC,EAAOwR,IAAYr8C,EAAAA,EAAAA,UAA4C,KAEhE,QAACs8C,IAAWrrB,EAAAA,GAAAA,KACZ5jB,GAAmC7E,EAAAA,EAAAA,UAAQ,KAC7C,MAAM+zC,EAAiBJ,EAActR,MAAM3hC,OAAOozC,GAC5CE,GAAkBC,EAAAA,EAAAA,KAA6BN,EAAcvQ,OAAQ2Q,GAC3E,O,+UAAA,IAAWJ,EAAX,CAA0BtR,MAAO0R,EAAgB3Q,OAAQ4Q,MAC1D,CAACL,EAAeG,IAEbI,GAAal0C,EAAAA,EAAAA,UAAQ,IAAMm0C,IAAAA,CAAKtvC,IAAS,CAACA,IAC1CuvC,EAAcvvC,MAAAA,GAAAA,EAAQuvC,YAAe,IAAGvvC,EAAOuvC,cAAgB,GAC/DC,EAAgBhN,GAAiBxiC,EAASwiC,EAAgB+M,EAAc,KAExEE,GAAsB1zC,EAAAA,EAAAA,cAAY,IAC7B2vC,IAAgB/nC,MAAMzJ,GAAWA,EAAMqkC,OAAS,GAAKrkC,KAC7D,CAACwxC,IACEgE,GAAqB3zC,EAAAA,EAAAA,cAAY4zC,EAAAA,EAAAA,KAASlE,EApBlB,KAoByD,CAACA,KAGlF,SACFgD,EADE,WAEFmB,EAAa3F,GAFX,iBAGF4F,IACAC,EAAAA,GAAAA,GAA8C,CAC9CpE,cAAe+D,EACfhE,UAAWiE,EACXlN,cAAegN,IAGbX,GAAqB9yC,EAAAA,EAAAA,cACtBwiC,IACGsR,EAAiB,CAACtR,OAAAA,EAAQf,MAAAA,EAAO6R,WAAAA,IACjCN,EAAUxQ,KAEd,CAACsR,EAAkBR,EAAY7R,IAG7BuS,GAAav9C,EAAAA,EAAAA,UACbw9C,GAAkBj0C,EAAAA,EAAAA,cAAY,KAChCizC,EAASe,EAAWr8C,QAAQ8pC,OAC5BqR,EAAmBkB,EAAWr8C,QAAQ6qC,UACvC,CAACsQ,IAEEoB,GAAoBl0C,EAAAA,EAAAA,cAAY,KAClCg0C,EAAWr8C,QAAU,CAAC8pC,MAAAA,EAAOe,OAAAA,GAC7B,MAAOf,MAAO0S,EAAY3R,OAAQ4R,IAAeC,EAAAA,EAAAA,KAA4D,CACzG5S,MAAOx9B,EAAOw9B,MACde,OAAQv+B,EAAOu+B,SAEnByQ,EAASkB,GACTrB,EAAmBsB,KACpB,CAACnwC,EAAQu+B,EAAQf,EAAOqR,IAiB3B,OAfAxqC,EAAAA,EAAAA,YAAU,KACN,GAAIoqC,EAAU,CACV,MAAM4B,EAAkBhB,IAAeO,EAAWP,YAC3C7R,MAAO0S,EAAY3R,OAAQ4R,IAAeC,EAAAA,EAAAA,KAG/C,CACE5S,MAAO6S,IAAoBT,EAAWpS,MAAQx9B,EAAOw9B,MAAQoS,EAAWpS,MACxEe,OAAQ8R,EAAkBrwC,EAAOu+B,OAASqR,EAAWrR,SAEzDyQ,EAASkB,GACTnB,EAAUoB,MAEf,CAAC1B,EAAUmB,EAAYJ,IAEnB,CACHhS,MAAAA,EACAe,OAAAA,EACAkQ,SAAAA,EACAE,cAAesB,EACfrB,YAAaoB,EACbnB,mBAAAA,IKFAyB,CAAiB,CACjBtwC,OAAAA,EACAwiC,cAAAA,EACAiJ,UAAAA,EACAC,cAAAA,KAEJ6E,EAAAA,EAAAA,GAAgB,CAACz2C,OAAAA,EAAQkuC,aAAAA,IGjGO,MAChC,MAAMtuC,GAAWC,EAAAA,EAAAA,eACX62C,GAA8Bz2C,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,qBAC1CF,GAAiBC,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,YAAmC,IAChE,IAACZ,EAAD,YAAMg+B,GAAet9B,EACrB22C,GAAa1tC,EAAAA,EAAAA,KAAmBjJ,GAChCQ,GAAaP,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,SACzB02C,GAAe32C,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,iBAC3B22C,EAAkBD,GAAgBA,EAAa1zC,OAAS,EAExDurB,GAAWxsB,EAAAA,EAAAA,cACb4zC,EAAAA,EAAAA,MAAUiB,IACFA,GACAl3C,EAASuC,EAAAA,GAAAA,QAAAA,qBAEd,KACH,CAACvC,KAGL2K,EAAAA,EAAAA,YAAU,KACN,MAAMusC,EACFJ,IAAuBC,GAAcr3C,KAAQ6B,EAAAA,EAAAA,KAAU7B,IAAQkB,IAAS2T,EAAAA,IAAAA,SAAgB0iC,EAC5FpoB,EAASqoB,KACV,CAACroB,EAAUkoB,EAAYD,EAAoBpZ,EAAah+B,EAAKkB,EAAMq2C,KH2EtEE,IAEAxsC,EAAAA,EAAAA,YAAU,KACN3K,EAASuC,EAAAA,GAAAA,MAAAA,QAAAA,gBAAsCuhC,OAChD,CAAC9jC,EAAU8jC,MAEdn5B,EAAAA,EAAAA,YAAU,KACFrE,EAAO8wC,gBACPp3C,EAASuC,EAAAA,GAAAA,eAAAA,QAAAA,qBAAoD+D,EAAO8wC,mBAEzE,CAAC9wC,KAEJqE,EAAAA,EAAAA,YAAU,IACC,IAAM0oC,KACd,CAAC1sC,EAAW/F,IAGf,MAAMy2C,GAAaz2C,IAAS2T,EAAAA,IAAAA,UAAgBhT,EAAAA,EAAAA,KAAUoF,GAEhD2wC,GAAoBx4C,GACtB,yBAAKnG,UAAWC,EAAO23C,YACnB,kBAAC5Z,EAAA,GAAD,CAAYC,aAAcC,EAAAA,GAAAA,QAA2B/3B,KAAMA,EAAM5B,QAAS65B,EAAAA,GAAAA,aAI5E,iBAACwgB,GAAD,YAAmBC,KAAeC,EAAAA,EAAAA,GAAkB,CAACxC,cAAAA,GAAeC,YAAAA,KACpEnlC,IAAYtO,EAAAA,EAAAA,UACd,IAAM,CACF,CACIuR,QAASlY,IAAAA,KAAU,gBACnBiE,UAAWjE,IAAAA,KAAU,yDACrBlB,QAAS49C,MAGjB,CAACA,KAGL,OACI,kBAACxiB,EAAA,WAAD,CAA0Br3B,MAAO4gC,IAC7B,kBAACmZ,EAAA,WAAD,CAAwC/5C,OAAO,GAC3C,kBAACgd,EAAA,EAAD,CAA8Bi6B,cAAezC,EAAkBwC,EAAqBC,GAChF,kBAACtI,EAAA,WAAD,CAA+B3uC,MAAO60C,GAClC,kBAAC,aAAD,CAA6B70C,MAAO20C,GAChC,kBAACqF,EAAA,WAAD,CAA6Bh6C,MAAOy0C,GAChC,kBAAC,KAAD,KACI,yBAAKz5C,UAAWC,EAAOg5C,iBAClBoD,IAAkBruC,EACf,kBAACmnC,GAAD,CACIL,UAAWA,EACX5N,cAjG1B,WAmG0B,yBAAKlnC,UAAWC,EAAOi5C,gBACnB,kBAACnJ,GAAD,CACIC,kBAAmBsJ,EACnBrJ,UAAW9D,EACX/0B,UAAWA,KAEdijC,EACGsE,GAAiBx8C,IAAAA,KAAU,YAE3B,oCACKw4C,GACG,kBAAC/B,GAAD,CACIh3C,MAAO6F,EAAO7F,MACdN,QAASm5C,EACT/B,UAAW8B,EACX3B,OAAQ+B,KAGdpB,GACE,kBAACyF,EAAA,EAAD,CACIC,qBAAsBxF,KAG5BgF,IACE,kBAACzS,GAAD,CACIzsC,SAAUA,EACV2rC,MAAOA,GACPe,OAAQA,GACRC,OAAQA,EACRn+B,UAAWA,EACXo+B,gBAAiBoQ,QAQzC,oCACI,kBAAChuC,EAAA,EAAD,MACCmwC,GAAiBx8C,IAAAA,KAAU,yBAGpC,kBAACqsC,GAAD,MACA,kBAACoQ,GAAD,iBAYxCzF,GAAuBv6C,YAAc,yBI9M9B,MCeDugD,IAAoBC,EAAAA,EAAAA,GAAwB,CAC9CC,iBAAkB,qBAClBC,eAAe,EACfC,KAAM,SAGVC,EAAAA,IAAAA,SAAmC,WDrBR,CACvBC,EACAlC,KAEA,MAAMmC,EAAmBxT,IACrBlmB,EAAAA,EAAAA,OAAK,CAACC,EAAGC,IAAOD,EAAE05B,EAAIz5B,EAAEy5B,GAAM15B,EAAE05B,IAAMz5B,EAAEy5B,GAAK15B,EAAE25B,EAAI15B,EAAE05B,EAAK,GAAK,GAAI1T,GACjE2T,GAAet3C,EAAAA,EAAAA,MAAKqiC,IACtBvqB,EAAAA,EAAAA,QACI,CACI6rB,QAAQ7jC,EAAAA,EAAAA,MACJq3C,GACAn3C,EAAAA,EAAAA,MACI8J,EAAAA,EAAAA,SACIzG,EAAAA,EAAAA,QAAO,cAAc,IACrB5C,EAAAA,EAAAA,MAAK,CAAC,IAAK,SAAU,YAAa,eAClCA,EAAAA,EAAAA,MAAK,CAAC,IAAK,YAAa,kBAKxC4hC,KAGR,OAAOkV,EAAAA,EAAAA,KAAYD,EAAaJ,GAAWI,EAAatC,OCS5D,MA2CA,GA3C2B,IAOd,IAPe,OACxB5vC,EADwB,SAExBw3B,EAAWx4B,EAAAA,SAFa,UAGxBysC,EAHwB,cAIxBC,EAJwB,aAKxB0G,EALwB,UAMxBjL,GACS,EACT,MAAMkL,GAA6Et2C,EAAAA,EAAAA,cAC/Eu2C,EAAAA,EAAAA,KAAkB5G,GAClB,CAACA,KAEC,iBAACuF,EAAD,oBAAmBsB,IAAuBC,EAAAA,EAAAA,KAC1CC,GAAkBt3C,EAAAA,EAAAA,UAAQ,IAAM6E,IAAU0yC,EAAAA,EAAAA,KAAwB1yC,IAAS,CAACA,IAElF,OACI,kBAACnG,EAAA,WAAD,CAAwBxC,MAAOo7C,MAAAA,OAAF,EAAEA,EAAiB9pC,IAC5C,kBAACgqC,EAAAC,EAAA,SAAD,CAA0Bv7C,MAAOk7C,GAC7B,kBAACM,EAAA,WAAD,CAA4Bx7C,MAAO+6C,GAC/B,kBAACU,EAAA,GAAD,CAAgBtB,kBAAmBA,IAC/B,kBAACuB,EAAA,EAAD,CAAsBC,YAAaC,EAAAA,GAC/B,kBAAC,IAAD,CACI5a,cAAY,EACZb,SAAU,CAACjmC,EAAOkF,IAAW+gC,EAAS/wB,KAAKysC,MAAM3hD,GAAQkV,KAAKysC,MAAMz8C,MAEvEg8C,GACG,kBAACjH,GAAD,CACIxrC,OAAQyyC,EACRhH,UAAWA,EACXC,cAAe2G,EACflL,UAAWA,IAGnB,kBAACgM,EAAA,EAAD,CAAYC,oBAAoB,IAChC,kBAACnC,EAAD,Y,sCCpErB,MAAM//C,IAAYC,EAAAA,GAAAA,aAAYwG,IAAD,CAChC07C,eAAgB,CACZ1zC,SAAU,SACVzN,SAAU,OACV8F,WAAY,SACZumB,WAAY,SACZxG,aAAc,WACdjjB,WAAY,SACZH,QAAS,OACTwX,UAAW,OACX7a,MAAOqG,EAAMY,QAAQC,KAAKC,WAE9BgyC,KAAM,CACFv4C,SAAU,OACV8F,WAAY,UAEhBC,KAAM,CACFxB,OAAQ,OACRnF,MAAOqG,EAAMY,QAAQC,KAAKC,WAE9B1D,aAAc,CACVC,WAAY,UACZ9C,SAAU,OACVZ,MAAO,kBACP4D,WAAY,EACZ9C,YAAa,OAEjBkhD,YAAa,CACTphD,SAAU,OACVZ,MAAO,mBACPc,YAAa,MACb4F,WAAY,SClBPu7C,GAAgB,IAAwB,IAAvB,MAACxpC,EAAQ,GAAc,EACjD,MAAMzX,EAASpB,KACTwI,GAAWC,EAAAA,EAAAA,eAEXC,GAAS9G,EAAAA,EAAAA,YAAW+G,EAAAA,GAEpB25C,GAAkBz3C,EAAAA,EAAAA,cAAY,KAChCrC,EAAS4/B,EAAAA,GAAAA,QAAAA,gBAAoC,CAACC,cAAe,UAAW3/B,OAAAA,OACzE,CAACF,EAAUE,IAEd,OACI,kBAAC3D,EAAA,EAAD,CAAiBC,MAAM,IACnB,yBAAK7D,UAAWC,EAAO+gD,gBACnB,kBAACvZ,GAAA,EAAD,CACIlJ,UAAU,SACVh6B,QAAQ,UACRvE,UAAWC,EAAOm4C,KAClBn3C,QAASkgD,EACTzZ,UAAU,QAETvlC,IAAAA,KAAU,YAEf,kBAACi/C,GAAA,EAAD,CAA4BphD,UAAWC,EAAO2F,OAC7CzD,IAAAA,KAAU,SAEf,kBAACk/C,GAAA,EAAD,MACA,kBAAC/8C,EAAA,EAAD,CAAYtE,UAAWC,EAAOyC,aAAc6B,QAAQ,WAChD,0BAAMvE,UAAWC,EAAOghD,aAAc9+C,IAAAA,OAAYuV,EAAO,QACxDvV,IAAAA,KAAU,qB,4BCzCpB,MAAMtD,IAAYC,EAAAA,GAAAA,aAAYwG,IAAD,CAChCg8C,QAAS,CACLh/C,QAAS,OACTO,WAAY,EACZmX,WAAY,QACZoL,aAAc,4BACdE,UAAW,aACXhmB,YAAa,QAEjBimB,OAAQ,CACJtmB,MAAO,sBACPc,YAAa,QAEjB6B,MAAO,CACH/B,SAAU,OACV+C,cAAe,SACfD,WAAY,MACZgD,WAAY,IACZ1G,MAAOqG,EAAMY,QAAQC,KAAKkU,QAC1BsI,UAAW,kBCXN4+B,GAAiB,IAAoB,IAAnB,MAAC3/C,GAAkB,EAC9C,MAAM3B,EAASpB,KACf,OACI,kBAAC2iD,GAAA,EAAD,CAASxhD,UAAWC,EAAOqhD,SACvB,kBAAC,KAAD,CAASthD,UAAWC,EAAOslB,SAC3B,kBAACjhB,EAAA,EAAD,CAAYC,QAAQ,KAAKvE,UAAWC,EAAO2B,OACtCA,K,2cCMV,MCpBM/C,IAAYC,EAAAA,GAAAA,aAAYwG,IAAD,CAChC2zC,gBAAiB,CACb5rC,SAAU,WACVkH,IAAK,EACLC,KAAM,EACNK,MAAO,EACPokB,OAAQ,EACR9I,WAAY,uCACZ7iB,SAAU,SACVhL,QAAS,OACT6K,cAAe,SACf3H,gBAAiBF,EAAMY,QAAQ8T,WAAWzb,SAE9CkjD,cAAe,CACXn/C,QAAS,QAEbg8B,WAAY,CACR/wB,SAAU,EACVnJ,OAAQ,GAEZs9C,SAAU,CACNr9C,OAAQ,OACRnF,MAAO,OACPE,WAAY,OAEhBuiD,cAAe,CACXp/C,KAAM,EACND,QAAS,OACTgL,SAAU,SACVD,SAAU,WACVF,cAAe,SACf2M,UAAW,OAEf8nC,aAAc,CACV51B,UAAW,OACXze,SAAU,GAEdC,WAAY,CACRD,SAAU,OC5BZs0C,GAAwB,CAAC,GAAI,GAAI,KAOjCC,IAAqBjnC,EAAAA,EAAAA,OAAK,IAA6B,IAA5B,IAACknC,EAAD,UAAM/zC,GAAsB,EACzD,MAAM/N,EAASpB,MAERgQ,EAAa41B,IAAkBnkC,EAAAA,EAAAA,UAASuhD,GAAsB,KAC9Dh0C,EAAMvK,IAAWhD,EAAAA,EAAAA,UAAS,GAE3B0hD,GAAyDt6C,EAAAA,EAAAA,aAC3DC,EAAAA,GAAAA,UAAAA,gCAGJqK,EAAAA,EAAAA,YAAU,KACN1O,EAAQ,KACT,CAACy+C,EAAK/zC,EAAWg0C,IAEpB,MAAM,UAACl0C,EAAD,MAAY4J,EAAZ,SAAmB4f,GClBP,KAAyD,IAAxD,IAACyqB,EAAD,UAAM/zC,EAAN,KAAiBH,EAAO,EAAxB,YAA2BgB,EAAc,IAAe,EAC3E,MAAMxH,GAAWC,EAAAA,EAAAA,eAEX26C,GAA0BzyC,EAAAA,GAAAA,KAC1B0yC,GAA6B1yC,EAAAA,GAAAA,MAC5B1B,EAAWwB,IAAgBhP,EAAAA,EAAAA,WAAkB,IAC7CoX,EAAOyqC,IAAY7hD,EAAAA,EAAAA,UAAiB,IACpCg3B,EAAU8qB,IAAe9hD,EAAAA,EAAAA,UAAmB,KAE7C,gBAAC+hD,EAAD,aAAkBC,GHFG,KAA6B,IAA5B,UAACt0C,EAAD,IAAY+zC,GAAgB,EACxD,MAAMC,GAAyDt6C,EAAAA,EAAAA,aAC3DC,EAAAA,GAAAA,UAAAA,+BAEEgI,GAAiBjI,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,WAC7BkO,GAAmBnO,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,aAC/B0O,GAAavN,EAAAA,EAAAA,UAAQ,KAAMy5C,EAAAA,EAAAA,KAA2Bv0C,IAAY,CAACA,IACnEghB,GAA0BlmB,EAAAA,EAAAA,UAAQ,IAC7B,CACH,CACIU,OAAQ,SACRg5C,UAAW,OACXt9C,OAAQ,CAAC68C,MAGlB,CAACA,IAEEU,IAASpsC,EAETqsC,GAAch5C,EAAAA,EAAAA,cAChB,WAAmE,IAAlEslB,EAAkE,uDAAxC,GACvB,MAAM2zB,EAAiB,IACnBC,OAAQ,0EAFmD,uDAA1B,IAKrC,OAAOH,GACDI,EAAAA,EAAAA,KAAkC,CAChC7zB,QAAAA,EACA5d,QAASuxC,EACT7sC,eAAgBnG,EAChB0G,WAAAA,EACAR,SAAAA,IACDvE,MAAK/I,EAAAA,EAAAA,MAAIu6C,EAAAA,EAAAA,KAA2BzsC,MACrC0sC,EAAAA,EAAAA,KAAoB/zB,EAAS2zB,KAEvC,CAACF,EAAMpsC,EAAY1G,EAAQkG,IAwB/B,MAAO,CAACwsC,iBArBgB34C,EAAAA,EAAAA,cACpB,CAACkE,EAAK6C,IACKiyC,EAAY1zB,EAAD,IAAWve,OAAAA,EAAQ7C,IAAAA,GAAQo0C,KAEjD,CAAChzB,EAASgzB,EAA4BU,IAiBjBJ,cAdJ54C,EAAAA,EAAAA,cAAY,KAC7B,MAAM0H,EAAU4wC,EAChB,OAAQS,GACFO,EAAAA,EAAAA,KAAuB,CACrBh0B,QAAAA,EACA5d,QAAAA,EACA0E,eAAgBnG,EAChB0G,WAAAA,EACAR,SAAAA,KAEFotC,EAAAA,EAAAA,KAAUj0B,EAAS5d,IACvBE,MAAM4xC,GAAUA,EAAuBxrC,UAC1C,CAACsX,EAASgzB,EAA4BS,EAAMpsC,EAAY1G,EAAQkG,MGvD3BstC,CAAgB,CAACn1C,UAAAA,EAAW+zC,IAAAA,IAE9DnpB,GAAUlvB,EAAAA,EAAAA,cACXzH,IACGoF,EAASwK,EAAAA,GAAAA,QAAAA,UAAoBC,EAAAA,EAAAA,KAAuB7P,EAAGE,IAAAA,KAAU,2BACjEggD,EAAS,KAEb,CAAC96C,IAeL,OAZA2K,EAAAA,EAAAA,YAAU,KACNiwC,EAAwBK,KAAgBhxC,KAAK6wC,GAAUzwC,MAAMknB,KAC9D,CAAC0pB,EAAcL,EAAyBrpB,KAE3C5mB,EAAAA,EAAAA,YAAU,KACN1C,GAAa,GACb4yC,EAA2BG,EAAgBxzC,EAAahB,EAAOgB,IAC1DyC,KAAK8wC,GACL1wC,MAAMknB,GACN7mB,SAAQ,IAAMzC,GAAa,OACjC,CAACzB,EAAMgB,EAAawzC,EAAiBH,EAA4BtpB,IAE7D,CAAC9qB,UAAAA,EAAW4J,MAAAA,EAAO4f,SAAAA,IDbW8rB,CAAO,CAACrB,IAAAA,EAAK/zC,UAAAA,EAAWH,KAAAA,EAAMgB,YAAAA,IAC7Dw0C,GAAiBljD,EAAAA,EAAAA,QAAO,OAE9B6R,EAAAA,EAAAA,YAAU,KACFqxC,EAAehiD,UACfgiD,EAAehiD,QAAQsrC,UAAY,KAExC,CAACrV,IAEJ,MAAMgsB,EAAgB5rC,EAAQmqC,GAAsB,GAEpD,OACI,yBAAK7hD,UAAWC,EAAOg5C,iBACnB,kBAACsI,GAAD,CAAgB3/C,MAAOmgD,IACvB,yBAAK/hD,UAAWgB,GAAAA,CAAWf,EAAOwhD,cAAe,CAAC,CAACxhD,EAAOq+B,YAAaglB,KACnE,kBAACh1C,EAAA,EAAD,CAAWtO,UAAWC,EAAOyhD,UACzB,kBAACR,GAAD,CAAexpC,MAAOA,IACtB,yBAAK1X,UAAWC,EAAO0hD,eAClB7zC,GAAa,kBAACU,EAAA,EAAD,MACbkJ,EAAQ,GACL,yBAAK1X,UAAWC,EAAO2hD,aAAc/gD,IAAKwiD,GACtC,kBAACE,GAAA,EAAD,CAAcjsB,SAAUA,KAG/BgsB,GACG,yBAAKtjD,UAAWC,EAAOuN,YACnB,kBAACmB,EAAA,EAAD,CACIC,MAAO8I,EACP5I,mBAAoB+yC,GACpBhzC,YAAaA,EACbhB,KAAMA,EACNkB,aAAczL,EACdghC,oBAAqBG,YAWzDqd,GAAmBljD,YAAc,qBEnEjC,MAAMugD,IAAoBC,EAAAA,EAAAA,GAAwB,CAC9CC,iBAAkB,iBAClBC,eAAe,IAyBnB,GAfuB,IAA0D,IAAzD,OAAC3xC,EAAD,IAASo0C,EAAT,UAAc/zC,EAAd,SAAyBm3B,EAAWx4B,EAAAA,UAAqB,EAC7E,OACI,kBAACnF,EAAA,WAAD,CAAwBxC,MAAO2I,EAAO2I,IAClC,kBAACmqC,EAAA,GAAD,CAAgBtB,kBAAmBA,IAC/B,kBAAC,IAAD,CACInZ,cAAY,EACZb,SAAU,CAACjmC,EAAOkF,IAAW+gC,EAAS/wB,KAAKysC,MAAM3hD,GAAQkV,KAAKysC,MAAMz8C,MAEvEuJ,GAAU,kBAACm0C,GAAD,CAAoBC,IAAKA,EAAK/zC,UAAWA,IACpD,kBAAC8yC,EAAA,EAAD,CAAYC,oBAAoB,O,gBC5BzC,MAAMliD,IAAYC,EAAAA,GAAAA,aAAW,KAAM,CACtC0kD,eAAgB,CACZlhD,QAAS,OACT,oBAAqB,CACjBpD,MAAO,OACPS,WAAY,YCAX8jD,GAAiB,KAC1B,MAAMxjD,EAASpB,KAET4I,GAAiBC,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,YAC7B,MAACimC,IAASzzC,EAAAA,EAAAA,YAAWkzC,EAAAA,GACrB+P,GAAa56C,EAAAA,EAAAA,UAAQ,IAChBorC,MAAAA,OAAP,EAAOA,EAAOvoC,MAAMwoC,GAASA,EAAKwP,WAAW73C,UAAS83C,EAAAA,EAAAA,KAAuBn8C,EAAOV,SACrF,CAACU,EAAOV,IAAKmtC,IAEhB,OACI,kBAAC7B,GAAA,EAAD,CAAa5qC,OAAQA,GACjB,yBAAKzH,UAAWC,EAAOujD,gBAAiBE,GAAc,kBAACG,GAAA,EAAD,CAAmB1P,KAAMuP,O,yHCZpF,MCJM7kD,IAAYC,EAAAA,GAAAA,aAAYwG,IAAD,CAChC2zC,gBAAiB,CACb5rC,SAAU,WACVkH,IAAK,EACLC,KAAM,EACNK,MAAO,EACPokB,OAAQ,EACR9I,WAAY,uCACZ7iB,SAAU,SACVhL,QAAS,OACT6K,cAAe,SACf3H,gBAAiBF,EAAMY,QAAQ8T,WAAWzb,SAE9CulD,qBAAsB,CAClBxhD,QAAS,OACTiL,SAAU,EACVD,SAAU,UAEdy2C,kBAAmB,CACf1/C,OAAQ,OACRkJ,SAAU,EACVye,UAAW,OACXxmB,gBAAiB,WAErBw+C,eAAgB,CACZ1hD,QAAS,OACT6K,cAAe,SACfG,SAAU,SACVC,SAAU,O,yHCTlB,MAAMusC,GAAiB,CAACmK,aAAc,CAAC,4BAG1BC,IAA2BrpC,EAAAA,EAAAA,OAAK,KACzC,MAAM5a,EAASpB,KACTwI,GAAWC,EAAAA,EAAAA,eAEXuyC,EFtBuBC,CAAAA,IAC7B,MAAMzyC,GAAWC,EAAAA,EAAAA,eACX0G,GAAoBtG,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,cAChCoyC,GAAsBC,EAAAA,GAAAA,GAAuBF,GAE7CqK,GAAuBz6C,EAAAA,EAAAA,cACxBgiB,IACkB,WAAXA,GACArkB,EAASwK,EAAAA,GAAAA,QAAAA,gBAA2B,CAACq1B,cAAe,KAAM3/B,OAAQ,QAEvD,YAAXmkB,GACArkB,EAASwK,EAAAA,GAAAA,QAAAA,WAAsB,CAAC9K,KAAK68C,EAAAA,EAAAA,KAAuB51C,GAAYzG,OAAQ,UAGxF,CAACF,EAAU2G,IAGf,OAAOlF,EAAAA,EAAAA,UACH,I,+UAAM,IACCixC,EADP,CAEII,gBAAiBgK,KAErB,CAACpK,EAAqBoK,KEAJ/J,CAAiBN,IACjCryC,GAAiBC,EAAAA,EAAAA,aAAYuG,EAAAA,GAAAA,UAAAA,WAE7B03B,GAAkBllC,EAAAA,EAAAA,YAAW47B,EAAAA,GAC7B8f,GAAkBz0C,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,6BAC9Bi+B,GAAW98B,EAAAA,EAAAA,UAAQ,I,+UAAM,IAAK68B,EAAX,CAA4BwW,gBAAAA,KAAmB,CAACxW,EAAiBwW,KAE1FnqC,EAAAA,EAAAA,YAAU,KACN3K,EACIuC,EAAAA,GAAAA,eAAAA,QAAAA,qBAAoD,CAChD,CACI0M,GAAI,SACJ60B,MAAO,CACH,CACIiZ,MAAO,6BACP9tC,GAAI,+CACJi1B,MAAO,uDAM5B,CAAClkC,IAEJ,MAAM+0C,GAAYvC,EAAcp7B,WAAahX,EAAOV,IAEpD,OACI,kBAACs1B,EAAA,WAAD,CAA0Br3B,MAAO4gC,GAC7B,kBAAC+N,EAAA,WAAD,CAA+B3uC,MAAO60C,GAClC,yBAAK75C,UAAWC,EAAOg5C,kBACjBmD,GAAY,kBAAC5tC,EAAA,EAAD,MACd,yBAAKxO,UAAWC,EAAO6jD,sBAClB1H,EACG,kBAACjH,GAAD,CAAkCC,aAAa,EAAMlO,cAvC3D,WAwCU,yBAAKlnC,UAAWC,EAAO+jD,gBACnB,kBAACP,GAAD,MACA,yBAAKzjD,UAAWC,EAAO8jD,mBACnB,kBAACxiB,EAAA,EAAD,SAKZ,kBAACvD,EAAA,GAAD,CACIC,aAAcC,EAAAA,GAAAA,QACd/3B,KAAMhE,IAAAA,KAAU,uBAChBoC,QAAS65B,EAAAA,GAAAA,kBAUzC8lB,GAAyBtlD,YAAc,2BCxEvC,MAAMugD,IAAoBC,EAAAA,EAAAA,GAAwB,CAC9CC,iBAAkB,uBAClBC,eAAe,EACfC,KAAM,QAyBV,GAjB6B,IAA0C,IAAzC,OAAC5xC,EAAD,SAASw3B,EAAWx4B,EAAAA,UAAqB,EACnE,OACI,kBAACnF,EAAA,WAAD,CAAwBxC,MAAO2I,EAAO2I,IAClC,kBAACmqC,EAAA,GAAD,CAAgBtB,kBAAmBA,IAC/B,kBAACuB,EAAA,EAAD,CAAsBC,YAAaC,EAAAA,GAC/B,kBAAC,IAAD,CACI5a,cAAY,EACZb,SAAU,CAACjmC,EAAOkF,IAAW+gC,EAAS/wB,KAAKysC,MAAM3hD,GAAQkV,KAAKysC,MAAMz8C,MAExE,kBAAC8/C,GAAD,MACA,kBAACpD,EAAA,EAAD,CAAYC,oBAAoB,S,+NC9B7C,MAAMliD,GAAYC,EAAAA,EAAAA,YAAW,CAChCg1B,UAAW,CACPn0B,WAAY,OACZyC,QAAS,oBACToD,gBAAiB,uBAErB5D,MAAO,CACH/B,SAAU,OACV8F,WAAY,IACZhD,WAAY,QAEhBiD,KAAM,CACF/F,SAAU,OACVE,YAAa,SCRfskD,EAAoB,IAAe,IAAd,QAACpjD,GAAa,EACrC,MAAMhB,EAASpB,IACf,OACI,kBAAC+B,EAAA,EAAD,CAAQ3B,MAAM,UAAUe,UAAWC,EAAO6zB,UAAW7yB,QAASA,GAC1D,kBAAC+J,EAAA,EAAD,CAASlK,QAAS,CAACC,KAAMd,EAAO2F,QAChC,yBAAK5F,UAAWC,EAAO2B,OAAQO,IAAAA,KAAU,UAKrDkiD,EAAkBC,UAAY,CAC1BrjD,QAASsjD,IAAAA,MAGb,U,wBCnBA,MAAM34B,EAAe,CACjBxR,eAAgB,eAChBnb,MAAO,mBAGLulD,EAAgB,CAClBvlD,MAAO,mBAGEJ,GAAYC,EAAAA,EAAAA,aAAYwG,IAAD,CAChCumB,SAAU,CACNvpB,QAAS,OACTG,WAAY,SACZ2B,OAAQ,OACRvE,SAAU,QAEd4kD,WAAY,CACRniD,QAAS,OACTG,WAAY,SACZ2B,OAAQ,QAEZ6U,YAAa,CACTpZ,SAAU,OACVZ,MAAOqG,EAAMY,QAAQmU,QAAQC,KAC7BhG,OAAQ,UACRoR,aAAc,WACdpY,SAAU,SACV4e,WAAY,SACZ,uBAAwBN,EACxB,wBAAyB44B,GAE7BtqC,aAAc,CACVkW,UAAW,aACX/rB,OAAQ,UAEZynB,QAAS,CACLjsB,SAAU,OACVyN,SAAU,UAEdtJ,YAAa,CACTrE,WAAY,SAEhB,mBAAoB,CAChBV,MAAO,oBAEX,oBAAqB,CACjBwtB,cAAe,OACf,wBAAyBb,GAE7B,qBAAsB44B,M,gNC7C1B,MAAME,EAAkB,IAAgF,IAA/E,KAAC70B,EAAD,kBAAOC,EAAmBH,UAAU,WAAC9W,GAArC,SAAkDkX,GAA6B,EAAhBC,E,kXAAgB,uDACpG,MAAM/vB,EAASpB,IACTgd,GAAYT,EAAAA,EAAAA,KAAavC,GACzB2C,GAAWC,EAAAA,EAAAA,KAAe5C,EAAWC,YAAa2C,EAAAA,EAAAA,KAAe5C,EAAWpR,QAElF,OACI,yBACIzH,UAAWgB,GAAAA,CACP,CACI,CAACf,EAAO,qBAAsB8vB,EAC9B,CAAC9vB,EAAO,sBAAuB4b,EAC/B,CAAC5b,EAAO,wBAAyBub,GAErCvb,EAAO6rB,UAGV+D,EAAK3qB,OAAOqD,KAAI,CAACvD,EAAOirB,IACrB,kBAACH,EAAD,GAAmB5kB,IAAK+kB,EAAOjrB,MAAOA,GAAWgrB,QAMjE00B,EAAgBJ,UAAY,CACxB30B,SAAU40B,IAAAA,OACV10B,KAAM00B,IAAAA,OACNz0B,kBAAmBy0B,IAAAA,YACnBx0B,SAAUw0B,IAAAA,MAGd,U,2DC3BA,MAAMI,EAAwB,IAAmC,IAAjC3/C,OAAO,WAAC+T,EAAD,OAAatR,IAAa,EAC7D,MAAMJ,GAAWC,EAAAA,EAAAA,eACXC,GAAS9G,EAAAA,EAAAA,YAAW+G,EAAAA,GACpBvH,EAASpB,IACToa,GAAcC,EAAAA,EAAAA,KAASzR,EAAOwR,aAC9BE,GAAcC,EAAAA,EAAAA,KAAoB,CAACrS,IAAKU,EAAOuG,UAAWqI,WAAY5O,EAAO4O,aACnF,OACI,yBAAKrW,UAAWC,EAAOwkD,YACnB,kBAAC3nC,EAAA,EAAD,CAAgB9c,UAAWC,EAAOia,aAAcnB,WAAYA,IAC5D,kBAAC2U,EAAA,EAAD,CAAsB1oB,MAAOiU,GACzB,0BACIjZ,UAAWC,EAAOgZ,YAClBhY,SAASoH,EAAAA,EAAAA,OAAK0E,EAAAA,EAAAA,QAAO,CAAChG,IAAKoS,EAAa5R,OAAAA,IAAUsK,EAAAA,GAAAA,QAAAA,WAAuBxK,IAExE4R,MAOrB0rC,EAAsBL,UAAY,CAC9Bt/C,MAAOu/C,IAAAA,MAAgB,CACnB98C,OAAQ88C,IAAAA,MAAgB,CACpBv2C,UAAWu2C,IAAAA,OACXtrC,YAAasrC,IAAAA,SAEjBxrC,WAAY6rC,EAAAA,OAIpB,U,0BClCA,MAYA,GAAel4B,E,SAAAA,IAZWje,IACtB,MAAMxO,EAASpB,KACT,YAACmF,IAAeyK,MAAAA,OAAA,EAAAA,EAAOke,eAAgB,GAE7C,OACI,yBAAK3sB,UAAWC,EAAO4rB,UACnB,kBAACe,EAAA,QAA4Bne,GAC7B,kBAAC1K,EAAA,EAAD,CAAiBC,YAAaA,EAAahE,UAAWC,EAAO+D,kB,eCVzE,MAAM6gD,GAAmBx8C,EAAAA,EAAAA,OACrBE,EAAAA,EAAAA,MAAKu8C,GAAQA,EAAI/9C,KAAO+9C,IACxBC,EAAAA,M,wHCEJ,MAAM72B,GAA0B7lB,EAAAA,EAAAA,OAAK8lB,EAAAA,EAAAA,OAAM,MAAMpd,EAAAA,EAAAA,OAAM,EAAGH,EAAAA,IA2BpDwd,EAA2BC,IAC7B,GAAIA,EAAS22B,WAAW,uBAAwB,CAC5C,MAAMz2B,EAAWL,EAAwBG,GACzC,OAAOE,EAAS5jB,OAAS,EAAI4jB,EAASxd,MAAM,GAAI,GAAK,KAErD,OAAO,MAsBTyd,GAA2BjmB,EAAAA,EAAAA,MATAykB,IAAD,O,8UAAA,IACzBA,EADyB,CAE5ByB,UAAU,EACVC,WAAW,EACXC,WAAYP,EAAwBpB,EAAW1W,IAC/CsY,iBAAkBC,EAClBC,sBAf0BT,EAeiBrB,EAAW1W,GAb7C,iBADD+X,EAEOs2B,EAEA51B,EAAAA,KALWV,IAAAA,KCzCjBxvB,GAAYC,EAAAA,EAAAA,YAAW,CAChCoxB,eAAgB,CACZ5tB,QAAS,OACT6tB,WAAY,SACZlxB,MAAO,oBAGXgmD,UAAW,CACPx/C,aAAc,QAGlB,4BAA6B,CACzB0qB,WAAY,wCAGhB,iCAAkC,CAC9BA,WAAY,wCAEhB,8BAA+B,CAC3B9iB,SAAU,YAEd,4BAA6B,CACzB/K,QAAS,OACThD,YAAa,OACb,aAAc,CACVK,WAAY,QACZywB,UAAW,iB,+CCpBhB,MAAM80B,EAAc,QAAC,UAACvpC,EAAD,UAAYD,EAAZ,mBAAuBW,EAAvB,qBAA2CF,GAA5C,SACvB,oCACKR,GACG,kBAACjD,EAAA,EAAD,CAAS7U,MAAO1B,IAAAA,KAAU,SACtB,kBAACgjD,EAAA,EAAD,CAAYlkD,QAASob,EAAoBrI,KAAK,SAC1C,kBAACoxC,EAAA,EAAD,QAIX1pC,GACG,kBAAChD,EAAA,EAAD,CAAS7U,MAAO1B,IAAAA,KAAU,WACtB,kBAACgjD,EAAA,EAAD,CAAYlkD,QAASkb,EAAsBnI,KAAK,SAC5C,kBAACqxC,EAAA,EAAD,UAMpBH,EAAYZ,UAAY,CACpB3oC,UAAW4oC,IAAAA,KACX7oC,UAAW6oC,IAAAA,KACXloC,mBAAoBkoC,IAAAA,KACpBpoC,qBAAsBooC,IAAAA,MAG1B,U,gNCtBA,MAEM1a,EAAiB,IAajB,IAbkB,KACpB5hC,EADoB,YAEpBsnB,EAFoB,YAGpBjR,EAHoB,SAIpBpP,EAJoB,QAKpB+a,EALoB,OAMpBsG,EANoB,QAOpBvB,EAPoB,SAQpBwB,EARoB,eASpBxV,EAToB,iBAUpBD,EAVoB,cAWpBuqC,EAXoB,mBAYpBxkC,GACE,EACF,MAAM2P,GAAgB3nB,EAAAA,EAAAA,UAClB,IHFsB,EAACwV,EAAaiR,EAAargB,IACrDoP,EAAY/V,KAAKsQ,IACbxQ,EAAAA,EAAAA,OACIqoB,EAAAA,EAAAA,SAAO,CAACC,EAAD,SAAM,GAACra,GAAP,SAAesa,EAAAA,EAAAA,OAAMta,EApBV,EAAC+X,EAAD,EAA+Bnf,KAAa,IAAjC,OAACzH,EAAD,SAASqR,GAAwB,EACtE,OAAQuV,GACJ,IAAK,eACD,MAAO,CAAC5mB,OAAAA,EAAQsR,YAAYC,EAAAA,EAAAA,KAAc9J,EAAUzH,EAAOsR,aAC/D,IAAK,iBACD,OAAOD,EAASO,gBAAiBC,EAAAA,EAAAA,KAAiCpK,EAAU4J,EAASS,cACzF,IAAK,gCACD,OAAOT,EAASmQ,UACpB,IAAK,8BACD,OAAOnQ,EAASoQ,QACpB,QAEI,MDPuB,EAACqF,EAAUzV,KAC1CzQ,EAAAA,EAAAA,OAAKmJ,EAAAA,EAAAA,MAAK,CAAC,SAAU,gBAAgB+zC,EAAAA,EAAAA,KAA2Bh3B,GAAhElmB,CAA2EyQ,GCM5D0sC,CADUt3B,EAAwBG,GACGvV,KAQZiY,CAAsBza,EAAIuC,EAAY3J,GAAWyhB,KAAM,KACvFC,EAAAA,EAAAA,OAAM,aAAc/X,GAFxBxQ,CAGEknB,KGHIyB,CAAsB1S,EAAaiR,EAAargB,IACtD,CAACoP,EAAaiR,EAAargB,IAEzB+hB,GAAmBnoB,EAAAA,EAAAA,UAAQ,IAAM0lB,EAAyBe,IAAc,CAACA,IAEzEtvB,EAASpB,IAETsyB,GAAgBznB,EAAAA,EAAAA,cACjB+E,GACG,kBAAC,EAAD,KACQA,EADR,CAEIshB,WAAY9F,GAAWA,EAAQE,QAAU1b,EAAMue,WAAW1W,OAGlE,CAAC2T,KAGEmH,EAAeC,IAAoB/wB,EAAAA,EAAAA,UAAS,OAC7C,UAACob,EAAD,UAAYC,GC3CU,KAO1B,IAP2B,SAC7BzM,EAD6B,KAE7BjH,EAF6B,WAG7B4Q,EAH6B,iBAI7BkC,EAJ6B,eAK7BC,EAL6B,mBAM7B8F,GACE,EACF,MAAM2kC,GAAQxnC,EAAAA,EAAAA,KAASpF,GAEvB,GADuBjP,EAAAA,GAAAA,KAAAA,UAAAA,kBAAyC3B,IAC1C4Q,KAAgBiI,GAAsB2kC,GAAQ,CAChE,MACI3sC,UAAU,aAACS,IACXV,EACEgD,GAAYT,EAAAA,EAAAA,KAAavC,GACzBiD,GAAuBC,EAAAA,EAAAA,KAAgB7M,EAAUqK,GAGvD,MAAO,CAACmC,UAFUX,IAAqBc,IAAaG,EAAAA,EAAAA,KAAuB/T,EAAM6T,GAE9DH,UADDX,IAAmBa,IAAaI,EAAAA,EAAAA,KAAuBhU,EAAM6T,IAG/E,MAAO,CAACJ,WAAW,EAAOC,WAAW,IDuBVO,CAAwB,CACnDjU,KAAAA,EACA8S,iBAAAA,EACAC,eAAAA,EACA9L,SAAAA,EACA4R,mBAAAA,EACAjI,YAAYrH,EAAAA,EAAAA,MAAK,CAAC4f,EAAe,cAAeX,KAG9Ci1B,GAAmBh8C,EAAAA,EAAAA,cAAai8C,GAAat0B,EAAiBs0B,IAAW,IACzEtpC,GAAqB3S,EAAAA,EAAAA,cACvB,IAAMsR,GAAexJ,EAAAA,EAAAA,MAAK,CAAC4f,EAAe,cAAeX,KACzD,CAACW,EAAepW,EAAgByV,IAE9BtU,GAAuBzS,EAAAA,EAAAA,cACzB,IAAMqR,GAAiBvJ,EAAAA,EAAAA,MAAK,CAAC4f,EAAe,aAAc,WAAY,eAAgBX,KACtF,CAACW,EAAerW,EAAkB0V,IAGhCwB,EACFvW,GAAaC,EACT,kBAAC,EAAD,CACIU,mBAAoBA,EACpBF,qBAAsBA,EACtBT,UAAWA,EACXC,UAAWA,SAEftK,EACR,OACI,yBAAKrR,UAAWC,EAAOiwB,gBACnB,kBAACiC,EAAA,EAAD,CACIC,YAAU,EACV/M,UAnEG,IAoEHkK,YAAa0B,EACboB,SAAU5B,EACVxG,QAASA,EACTsG,OAAQA,EACRvB,QAASA,EACTwB,SAAUA,EACV8B,mBAAmB,EACnBC,mBAAoB,IACpBC,sBAAuB,IACvBC,cAAe,GACftB,cAAeA,EACfwB,WAAY+yB,EACZt0B,cAAeA,EACfa,uBAAwBA,EACxBnxB,QAAS,CACL8xB,8BAA+B3yB,EAAO,6BACtC4yB,gCAAiC5yB,EAAO,gCAE5CY,IAAKykD,EACL5yB,oBAAqB,QAMrCmX,EAAeya,UAAY,CACvBr8C,KAAMs8C,IAAAA,OACNh1B,YAAaq2B,EAAAA,GACbtnC,YAAaimC,IAAAA,QAAkBsB,EAAAA,KAC/B32C,SAAU42C,EAAAA,IACV92B,QAASu1B,IAAAA,SAAmBwB,EAAAA,IAC5Bv1B,SAAU+zB,IAAAA,KACVt6B,QAAS+7B,EAAAA,GACTz1B,OAAQg0B,IAAAA,KACRvpC,eAAgBupC,IAAAA,KAChBxpC,iBAAkBwpC,IAAAA,KAClBe,cAAef,IAAAA,MAAgB,CAACljD,QAASkjD,IAAAA,SACzCzjC,mBAAoByjC,IAAAA,MAGxB,W,oJErHO,MAAM1lD,IAAYC,EAAAA,EAAAA,aAAW,KAAM,CACtCK,aAAc,CACViD,QAAS,aAEbxC,qBAAsB,CAClBC,SAAU,WAEdC,wBAAyB,CACrBC,YAAa,WCuDrB,GAjDmB,IAA4D,IAA3D,UAACC,EAAD,aAAYO,EAAZ,qBAA0B0lD,GAAiC,EAC3E,MAAMhmD,EAASpB,KACTqB,GAAYC,EAAAA,EAAAA,WACXC,EAAQC,IAAaC,EAAAA,EAAAA,WAAS,GAE/BI,EAAc,IAAML,GAAWM,IAAUA,IAE/C,OACI,oCACI,kBAACiT,GAAA,EAAD,CACI5T,UAAWA,EACXa,IAAKX,EACL2T,aAAc1R,IAAAA,KAAU,QACxByD,KAAMgtC,GAAAA,EACN3xC,QAASP,EACTsT,KAAK,MAET,kBAAC9S,GAAA,GAAD,CACIP,KAAMP,EACNU,QAAS,CAACK,MAAOlB,EAAOd,cACxBiC,SAAUlB,EAAUmB,QACpBC,QAASZ,EACTa,aAAc,CACVC,SAAU,SACVC,WAAY,SAEhBC,gBAAiB,CACbF,SAAU,MACVC,WAAY,UAGhB,kBAACE,GAAA,EAAD,CACIb,QAAS,CACLc,MAAO3B,EAAOL,sBAElBiC,QACI,kBAACC,GAAA,EAAD,CACI9B,UAAWC,EAAOH,wBAClBiC,QAASxB,IAAgB,EACzByB,SAAWC,GAAMgkD,EAAqBhkD,EAAEC,OAAOH,WAGvDH,MAAOO,IAAAA,KAAU,oCCxDxBtD,IAAYC,EAAAA,EAAAA,YAAW,CAChCmV,OAAQ,CACJ7R,QAAS,gBAEbM,aAAc,CACVC,WAAY,OACZ9C,SAAU,OACV+C,cAAe,SACf3D,MAAO,kBACP4D,WAAY,EACZ9C,YAAa,MACbyC,eAAgB,aAChBpD,WAAY,OACZC,cAAe,QAEnBkG,WAAY,CACR5F,WAAY,QAEhB0C,eAAgB,CACZC,QAAS,OACTC,KAAM,WACNC,eAAgB,WAChBC,WAAY,YCRdyjD,GAAuB,IAYvB,IAZwB,MAC1BriD,EAD0B,MAE1B6T,EAF0B,YAG1BtU,EAH0B,oBAI1B+iD,EAJ0B,eAK1BC,EAL0B,gBAM1Bn3B,EAN0B,YAO1BM,EAP0B,gBAQ1BC,EAR0B,gBAS1BJ,EAT0B,aAU1B7uB,EAV0B,qBAW1B8lD,GACE,EACF,MAAMpmD,EAASpB,KACf,OACI,kBAAC+E,GAAA,EAAD,CAAiBC,MAAOA,EAAO7D,UAAWC,EAAOgU,QAC7C,kBAAChQ,GAAA,EAAD,CAAcC,YAAa,KACvB,kBAACC,GAAA,EAAD,CAAiBC,OAAQ,GAAIC,OAAQ,KACrC,kBAACC,GAAA,EAAD,CAAYtE,UAAWC,EAAOyC,aAAc6B,QAAQ,WAC/CmT,EAAQ,EACHvV,IAAAA,KAAU,oBAAqB,CAACyM,MAAO8I,IACvCvV,IAAAA,KAAU,kBAAmB,CAACyM,MAAO8I,MAGnD,yBAAK1X,UAAWC,EAAOoC,gBACnB,kBAACsC,GAAA,EAAD,CAAuBC,MAAOxB,EAAapB,SAAUmkD,IACrD,kBAACtzC,GAAA,EAAD,CAAcwc,QAAS+2B,EAAgBnlD,QAASguB,IAChD,kBAAC9qB,GAAA,EAAD,CAAiBC,OAAQ,GAAIC,OAAQ,IACrC,kBAACirB,GAAA,EAAD,CACIC,YAAaA,EACbC,gBAAiBA,EACjBJ,gBAAiBA,IAErB,kBAAC,GAAD,CACIpvB,UAAWC,EAAOsF,WAClBhF,aAAcA,EACd0lD,qBAAsBI,OAO1CH,GAAqB5B,UAAY,CAC7BzgD,MAAO0gD,IAAAA,OACP7sC,MAAO6sC,IAAAA,OACPh1B,YAAaq2B,EAAAA,GACbp2B,gBAAiB+0B,IAAAA,QAAkBA,IAAAA,QACnCn1B,gBAAiBm1B,IAAAA,KACjBnhD,YAAamhD,IAAAA,OACb4B,oBAAqB5B,IAAAA,KACrB6B,eAAgB7B,IAAAA,KAChBt1B,gBAAiBs1B,IAAAA,KACjBhkD,aAAcgkD,IAAAA,KACd8B,qBAAsB9B,IAAAA,MAG1B,Y,ueCvEA,MAAMl5B,GAAsB,sBACtBi7B,GAAuB,uBAEvBh7B,GAAU,MACTC,GAAAA,GAAAA,QADM,CAET5T,mBAAmB6T,EAAAA,GAAAA,IAAqBH,IACxCk7B,oBAAoB/6B,EAAAA,GAAAA,IAAqB86B,MAGvC76B,GAAU,CAAC5jB,EAAO6jB,KACpB,OAAQA,EAAO/kB,MACX,KAAK0kB,GACD,aAAWxjB,EAAX,CAAkBzE,YAAasoB,EAAOC,QAAS9d,KAAM,IACzD,KAAKy4C,GACD,aAAWz+C,EAAX,CAAkBtH,aAAcmrB,EAAOC,UAC3C,QACI,OAAOJ,GAAAA,GAAAA,QAA4B1jB,EAAO6jB,K,gHCbtD,MAAMm2B,GAAwB,CAAC,GAAI,GAAI,GAAI,KAMrC2E,GAAuB,CACzB,CACIlwC,GAAI,eACA1U,YACA,OAAOO,IAAAA,KAAU,iBAErB8qB,mBAAoB,CAChBtmB,KAAM4mB,EAAAA,IAAAA,aAEVk5B,UAAU,GAEd,CACInwC,GAAI,iBACA1U,YACA,OAAOO,IAAAA,KAAU,sBAErB8qB,mBAAoB,CAChBtmB,KAAM4mB,EAAAA,IAAAA,cAGd,CACIjX,GAAI,gCACA1U,YACA,OAAOO,IAAAA,KAAU,eAErB8qB,mBAAoBy5B,EAAAA,IAAAA,WAExB,CACIpwC,GAAI,8BACA1U,YACA,OAAOO,IAAAA,KAAU,aAErB8qB,mBAAoBy5B,EAAAA,IAAAA,UAItBC,IAAyBt+C,EAAAA,EAAAA,MAAK0lB,EAAAA,KAAyBpQ,EAAAA,EAAAA,QAAO,cAE9DipC,IAAuCv+C,EAAAA,EAAAA,OACzCE,EAAAA,EAAAA,MAAKs+C,IAAD,CACAvwC,GAAIqwC,GAAuBE,EAAK9/C,KAChCnF,MAAOilD,EAAKjlD,MACZoC,YAAa6iD,EAAK7iD,YAClBipB,oBAAoBe,EAAAA,EAAAA,KAA0B64B,QAElDxkB,EAAAA,EAAAA,SAAO75B,EAAAA,EAAAA,MAAK,QAGV85B,IAAiBj6B,EAAAA,EAAAA,OXnDoB,CAAC,EAAD,SAAE+E,SAAS,YAACgQ,EAAc,GAAf,aAAmBC,EAAe,KAA7C,GAAmD,cAACwzB,GAApD,SACvCxoC,EAAAA,EAAAA,MACIw8C,GACA1iB,EAAAA,EAAAA,QAAO5oB,IAAiBlR,EAAAA,EAAAA,OAAKsD,EAAAA,EAAAA,OAAKC,EAAAA,EAAAA,QAAO,MAAO2N,IAAgButC,EAAAA,IAAxCz+C,CAAmEwoC,KAF/FxoC,CAGE,IAAI+U,KAAgBC,MWiDtBupC,IACAjpC,EAAAA,EAAAA,QAAO6oC,K,gBC3DJ,MCDM3nD,IAAYC,EAAAA,EAAAA,YAAW,CAChCioD,QAAS,CACLzkD,QAAS,OACTG,WAAY,SACZ2B,OAAQ,OACRghB,aAAc,iCAElBnf,OAAQ,CACJpG,SAAU,OACVP,YAAa,OACbmG,aAAc,OACd/F,UAAW,OACXT,MAAO,sB,yHCwBf,MAEM+nD,IAA0BpjC,EAAAA,EAAAA,OAAM,KAAM4iC,KACrCS,IAAsBD,G,yHCnC7B,MAeME,IAA+BC,EAAAA,EAAAA,cAAY,CAACj4C,EAAUvB,IAAWA,EAAO2I,IAAIktB,EAAAA,KASlF,IAAe4jB,EAAAA,EAAAA,UAxBS,CAACv/C,EAAOw/C,KAC5B,MAAM,OAAC15C,GAAU05C,EAEjB,MAAO,CACH/oC,YAAarQ,EAAAA,GAAAA,UAAAA,iCAA+CpG,EAAO8F,EAAO2I,IAC1EoB,MAAOzJ,EAAAA,GAAAA,UAAAA,iBAA+BpG,EAAO8F,EAAO2I,IACpD7O,OAAQwG,EAAAA,GAAAA,UAAAA,UAAwBpG,GAChCqH,SAAUjB,EAAAA,GAAAA,UAAAA,YAA0BpG,GACpCI,KAAMgG,EAAAA,GAAAA,UAAAA,QAAsBpG,GAC5B6X,cAAezR,EAAAA,GAAAA,UAAAA,yBAAuCpG,EAAO8F,EAAO2I,IACpEqJ,gBAAiB1R,EAAAA,GAAAA,UAAAA,2BAAyCpG,EAAO8F,EAAO2I,IACxEsJ,uBAAwB3R,EAAAA,GAAAA,UAAAA,0BAAwCpG,EAAO8F,EAAOP,iBAa9CiE,GAPrB,CAACi2C,EAAYC,EAAeF,I,+UAA5B,IACZC,EACAC,EACAF,EAHY,CAIf15C,OAAQu5C,GAA6BI,EAAWp4C,SAAUm4C,EAAS15C,WAGvE,ED4B2B,IAad,IAbe,UACxB3N,EADwB,OAExB2N,EAFwB,OAGxBlG,EAHwB,SAIxByH,EAJwB,YAKxBoP,EAAc,GALU,MAMxB5G,EAAQ,EACRzP,KAAMu/C,EAPkB,cAQxB9nC,EARwB,gBASxBC,EAAkB,GATM,uBAUxBC,EACAvY,SAAUogD,EAXc,aAYxBC,GACS,EACT,MAAMnlB,EAAe,CACjBn/B,YAAa,GACb4rB,QAAS,KACTG,eAAgB63B,GAChB/8B,QAAS,CACLC,MAAOvc,EAAOmF,WAtCC,MAuCfqX,MAAOxc,EAAOg6C,YAAcV,IAEhCp5C,KAAM,EACNgB,YAAalB,EAAOC,KA3CE,GA4CtBrN,cAxCsB,GA2CpBN,EAASpB,KAEToJ,GAD2BxH,EAAAA,EAAAA,YAAWs+C,GAAAA,GACJyI,EAAW5rC,EAAAA,IAAAA,SAE5C/T,EAAOR,IAAYm7B,EAAAA,EAAAA,YAAW/W,GAAS8W,GACxC5qB,GAAoBtP,EAAAA,EAAAA,MAAKijB,GAAQ3T,kBAAmBtQ,GACpDk/C,GAAqBl+C,EAAAA,EAAAA,MAAKijB,GAAQi7B,mBAAoBl/C,GAItDs+B,GAAkBllC,EAAAA,EAAAA,YAAW47B,GAAAA,GAC7B8f,GAAkBz0C,EAAAA,EAAAA,aAAYC,EAAAA,GAAAA,UAAAA,6BAC9Bi+B,GAAW98B,EAAAA,EAAAA,UAAQ,I,+UAAM,IAAK68B,EAAX,CAA4BwW,gBAAAA,KAAmB,CAACxW,EAAiBwW,KAC1FnqC,EAAAA,EAAAA,YANyB,KACrB2F,EAAkB,MAKM,CAAClQ,MAAAA,OAAD,EAACA,EAAQV,MAErC,MAAM,eAACooB,EAAD,YAAiB/rB,EAAjB,QAA8B4rB,EAA9B,QAAuC/E,EAAvC,KAAgDpc,EAAhD,YAAsDgB,EAAtD,aAAmEtO,GAAgBsH,EAEnFqnB,GAAiBpmB,EAAAA,EAAAA,UAAQ,IAAMw5B,GAAe30B,EAAQuB,IAAW,CAACvB,EAAQuB,IAE1EwnB,GAAqB5tB,EAAAA,EAAAA,UACvB,IAAMqmB,EAAe5mB,KAAK+N,GAAO4Y,EAAevjB,MAAKC,EAAAA,EAAAA,QAAO,KAAM0K,OAClE,CAAC6Y,EAAgBD,IAGf1lB,GAASV,EAAAA,EAAAA,UACX,IF3G4B,EAAC1F,EAAa4rB,EAASO,KACvD,MAAMnF,EAAcC,EAAAA,IAAAA,UAAgBjnB,GAC/BmF,IAAI+hB,EAAAA,KACJ/hB,KACIgiB,GACI,yCAAwCA,iDAEEA,OAElDC,OAAO,IAENo9B,GAAgBC,EAAAA,GAAAA,IAAmBt4B,EAAaP,GAEtD,OAAO,IAAIvE,EAAAA,KAAgBC,UAAUN,GAAaM,UAAUk9B,GAAej9B,SE8FjEC,CAAqBxnB,EAAa4rB,EAAS0H,IACjD,CAAC1H,EAAS5rB,KAGR,UAAC0K,IAAagd,EAAAA,GAAAA,GAAmB,CACnCb,QAAAA,EACAzgB,OAAAA,EACAqE,KAAAA,EACAgB,YAAAA,EACAlB,OAAAA,EACAlG,OAAAA,EACAiX,uBAAwBne,EAAe2e,EAAAA,IAAAA,IAAqBA,EAAAA,IAAAA,YAC5DjX,KAAMu/C,IAGJ14C,GAAqBhG,EAAAA,EAAAA,UAAQ,KAAMg/C,OHvHdC,EGuHoCxlB,EAAa1zB,YHtH5EgzC,GAAsBr4C,QAAQq6B,GAAWA,IAAWkkB,IAC/CpqC,OAAOoqC,GACP/hC,KAAKgiC,EAAAA,UAHiBD,IAAAA,IGuH+D,KACpF,wBAACE,EAAD,iBAA0BC,IAAoBp/C,EAAAA,EAAAA,UAChD,KAAM,CACFm/C,yBAAyB5/C,EAAAA,EAAAA,MAAKijB,GAAQ68B,kBAAmB9gD,GACzD6gD,kBAAkB7/C,EAAAA,EAAAA,MAAKijB,GAAQwX,WAAYz7B,MAE/C,IAGEwY,GAAgBnW,EAAAA,EAAAA,cAAY,KAC9B,MAAMoW,GAAgBC,EAAAA,EAAAA,KAA2C,CAC7DpS,OAAAA,EACA1F,KAAAA,EACAiH,SAAAA,EACA6O,qBAAiB1M,KAErBhJ,EAAAA,EAAAA,MAAKuB,EAAAA,GAAAA,UAAAA,QAAAA,mBAA6C+D,EAAO2I,IAAKmxC,EAA9Dp/C,CAA6EyX,KAC9E,CAACnS,EAAQ1F,EAAMiH,EAAUu4C,IAEtB1sC,GAAmBrR,EAAAA,EAAAA,cACpB0S,IACGqrC,EAAc79C,EAAAA,GAAAA,UAAAA,QAAAA,oBAA8C+D,EAAO2I,GAAI8F,IACvEqrC,EAAc79C,EAAAA,GAAAA,UAAAA,QAAAA,eAAyC+D,EAAO2I,GAAI8F,IAClE,MAAM4D,EAAqB1B,EAAY3S,MAClCkN,IAAeoH,EAAAA,EAAAA,KAA6BpH,KAAgBuD,IAE3DpO,GAAYkS,EAAAA,EAAAA,IAA2BF,IACzCpX,EAAAA,EAAAA,KAAUoF,IACVy5C,EAAc79C,EAAAA,GAAAA,iBAAAA,QAAAA,cAA+CoE,MAGrE,CAACL,EAAQ2Q,EAAampC,IAGpB/mC,EAAkBjZ,GAAUmY,IAA2B8nC,EACvDU,EAAkB1oC,EAAgB,CAACA,KAAkBC,GAAmBA,GACxE,UAAChE,EAAD,UAAY2V,IAAaC,EAAAA,GAAAA,KACzB82B,EAAmB1sC,EAAUhO,KAAY+5C,EACzCY,EAAqBh3B,EAAU3jB,KAAY+5C,EAC3CpC,GAAgBnlD,EAAAA,EAAAA,QAAO,MAE7B,OADA8qB,EAAAA,GAAAA,GAA0Btd,EAAO2I,IAE7B,kBAAC+lB,GAAA,WAAD,CAA0Br3B,MAAO4gC,GAC7B,kBAACt3B,GAAA,EAAD,CAAWtO,UAAWA,GAClB,kBAAC,GAAD,CACI6D,MAAO8J,EAAO3K,QACd0U,MAAOA,EACP6X,YAAaL,EACbM,gBAAiBL,EACjBC,iBAAiB/mB,EAAAA,EAAAA,MAAKijB,GAAQ4X,cAAe77B,GAC7CjE,YAAaA,EACb+iD,oBAAqBxuC,EACrByuC,iBAAkBp3B,EAClBC,iBAAiB5mB,EAAAA,EAAAA,MAAKijB,GAAQ2X,cAAe57B,GAC7C9G,aAAcA,EACd8lD,qBAAsBE,IAEzB7lC,GACG,yBAAK1gB,UAAWC,EAAO8mD,SACnB,kBAAC,EAAD,CAAmB9lD,QAAS4e,KAGnCuoC,EAAgB7/C,KAAKuQ,GAClB,kBAACkI,GAAA,EAAD,CACI9V,KAAK+U,EAAAA,EAAAA,KAA6BnH,GAClCD,WAAYC,EACZnL,OAAQA,EACR1F,KAAMA,EACNiH,SAAUA,MAGlB,yBAAKhC,MAAO,CAACG,SAAU,aACnB,kBAAC,GAAD,CACIpF,KAAMA,EACNsnB,YAAamH,EACbpY,YAAaA,EACbpP,SAAUA,EACV8f,QAASA,EACTwB,UAAUnoB,EAAAA,EAAAA,MAAKijB,GAAQ0X,aAAc37B,GACrC4iB,QAASA,EACTsG,QAAQloB,EAAAA,EAAAA,MAAKijB,GAAQyX,WAAY17B,GACjC2T,eACIqtC,GACMhgD,EAAAA,EAAAA,MAAKuB,EAAAA,GAAAA,UAAAA,QAAAA,mBAA6C+D,EAAO2I,IAAKmxC,GAC9D,KAEV1sC,iBAAkButC,EAAqBvtC,EAAmB,KAC1DuqC,cAAeA,EACfxkC,mBAAoBnT,EAAOmT,qBAE9BxC,EAAY3T,OACT,kBAACgE,GAAA,EAAD,CACIC,MAAO8I,EACP5I,mBAAoBA,EACpBD,YAAaA,EACby1B,oBAAqB2jB,EACrBp6C,KAAMA,EACNkB,aAAcm5C,EACd5C,cAAeA,IAGnB,kBAAChhD,GAAA,EAAD,CAAYtE,UAAWC,EAAOgG,QAAS9D,IAAAA,KAAU,kBAEpD2L,GAAa,kBAACU,GAAA,EAAD,Y,oDExNlC,MAAM2wC,IAAoBC,EAAAA,GAAAA,GAAwB,CAC9CC,iBAAkB,WAClBC,eAAe,EACfC,KAAM,SAyBV,GAfqC,QAAC,OAAC5xC,EAAD,SAASw3B,EAAWx4B,EAAAA,SAApB,UAA8B3M,EAA9B,aAAyC0nD,GAA1C,SACjC,kBAAClgD,EAAA,WAAD,CAAwBxC,MAAO2I,EAAO2I,IAClC,kBAACmqC,GAAA,GAAD,CAAgBtB,kBAAmBA,IAC/B,kBAACuB,GAAA,EAAD,CAAsBC,YAAaC,EAAAA,GAC/B,kBAAC,IAAD,CACI5a,cAAY,EACZb,SAAU,CAACjmC,EAAOkF,IAAW+gC,EAAS/wB,KAAKysC,MAAM3hD,GAAQkV,KAAKysC,MAAMz8C,MAEvEuJ,GAAU,kBAAC,GAAD,CAAoBA,OAAQA,EAAQ3N,UAAWA,EAAW0nD,aAAcA,IACnF,kBAAC5G,GAAA,EAAD,W","sources":["webpack://@reltio/remotes/../../node_modules/@mui/icons-material/ArrowDownward.js","webpack://@reltio/remotes/../../node_modules/@mui/icons-material/ArrowForwardIosRounded.js","webpack://@reltio/remotes/../../node_modules/@mui/icons-material/ArrowUpward.js","webpack://@reltio/remotes/../../node_modules/@mui/icons-material/Create.js","webpack://@reltio/remotes/../../node_modules/@mui/icons-material/History.js","webpack://@reltio/remotes/../../node_modules/@mui/icons-material/Inbox.js","webpack://@reltio/remotes/../../node_modules/@mui/icons-material/InfoOutlined.js","webpack://@reltio/remotes/../../node_modules/@mui/icons-material/InfoRounded.js","webpack://@reltio/remotes/../../node_modules/@mui/icons-material/ReportProblem.js","webpack://@reltio/remotes/../../node_modules/@mui/icons-material/ThumbDown.js","webpack://@reltio/remotes/../../node_modules/@mui/icons-material/ThumbUp.js","webpack://@reltio/remotes/../profile/src/components/ProfileAttributesView/ProfileAttributesView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/contexts/SingleAttributeContext.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/FilterButton/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/FilterButton/FilterButton.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeHeader/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeHeader/SingleAttributeHeader.tsx","webpack://@reltio/remotes/../profile/src/components/hooks/helpers/index.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeEditableContent/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeEditableContent/SingleAttributeEditableContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeReadableContent/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeReadableContent/SingleAttributeReadableContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/components/SingleAttributeView/SingleAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/hooks/useSingleAttributeLoader.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/contexts/RelationsViewStateContext.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/FilterButton/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/FilterButton/FilterButton.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/contexts/ImportDTContext.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/hooks/useImportFromDTLoader.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/MultipleImportIcon.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/ImportFromDT.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsHeader/RelationsHeader.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationTooltip/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationTooltip/RelationTooltip.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/hooks/useRelationInfo.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/SuggestedButtons/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/SuggestedButtons/SuggestedButtons.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/EditableRelationItem/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/EditableRelationItem/EditableRelationItem.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/helpers/permissions.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/helpers/relation.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationArrowButton/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationArrowButton/RelationArrowButton.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/SecondLevelWrapper/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/SecondLevelWrapper/SecondLevelWrapper.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/hooks/useSecondLevelConnections.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsEditableContent/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsEditableContent/RelationsEditableContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationAttributes/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationAttributes/RelationAttributes.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/ShowDetailsButton/ShowDetailsButton.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationItem/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationItem/RelationItem.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/helpers/ratings.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RatingsPopup/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RatingsPopup/RatingsPopup.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/Ratings/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/Ratings/Ratings.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RatingsButtons/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RatingsButtons/RatingsButtons.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationCompexItem/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationCompexItem/RelationComplexItem.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsList/RelationsList.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/hooks/useSuggestedRelations.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsContent/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsContent/RelationsContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/components/RelationsView/RelationsView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/helpers/filters.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/hooks/useRelationsState.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/contexts/TableAttributeContext.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/hooks/reducer.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/cell-renderers/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/cell-renderers/HeadCellRenderer.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/cell-renderers/BlobRenderer.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/cell-renderers/DefaultCellValueRenderer.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/helpers/tableAttributeHelpers.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTableHeader/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTableHeader/AttributeTableHeader.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/cell-renderers/RowCellRenderer.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/EditButtons.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeTable/AttributeTable.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/TableAttributeContent/hooks/useEditableAttribute.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeEditing/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/AttributeEditing/AttributeEditing.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/TableAttributeEditableContent/hooks/useExpandAttributes.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/TableAttributeEditableContent/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/TableAttributeEditableContent/TableAttributeEditableContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/TableAttributeContent/TableAttributeContent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/TableAttributeView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/components/TableAttributeView/TableAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/hooks/useLoadPaths.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/styles.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/ConfigContext.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/Node.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/helpers.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/theme/styles.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/theme/node-content-renderer.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/theme/index.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/theme/tree-node-data-renderer.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/icons/ShowGraph.svg","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/HierarchyPathsHeader.tsx","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/hooks/useDynamicNodesHeights.ts","webpack://@reltio/remotes/../profile/src/components/HierarchyPathsView/HierarchyPathsView.tsx","webpack://@reltio/remotes/../profile/src/components/Sandbox/styles.ts","webpack://@reltio/remotes/../profile/src/components/Sandbox/CustomView.tsx","webpack://@reltio/remotes/../profile/src/components/views/HOCs/withErrorBoundary.tsx","webpack://@reltio/remotes/../profile/src/components/views/styles.ts","webpack://@reltio/remotes/../profile/src/components/EntityMapView/useMarkers.ts","webpack://@reltio/remotes/../profile/src/components/EntityMapView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/ImageLineCaption/styles.ts","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/ImageLineCaption/ImageLineCaption.tsx","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/ImageAttributeViewEditableContent/ImageAttributeViewEditableContent.tsx","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ImageAttributeView/ImageAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePotentialMatchesView/ActionButtons.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePotentialMatchesView/MatchCard.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePotentialMatchesView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfilePotentialMatchesView/ProfilePotentialMatchesView.tsx","webpack://@reltio/remotes/../profile/src/components/views/ViewsFactory.tsx","webpack://@reltio/remotes/../profile/src/components/views/StubView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/ProfileSingleAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileSingleAttributeView/hooks/useSingleAttribute.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/ProfileTableAttributeView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/hooks/useTableAttribute.ts","webpack://@reltio/remotes/../profile/src/components/ProfileTableAttributeView/hooks/helpers.ts","webpack://@reltio/remotes/../profile/src/components/ProfileRelationsView/ProfileRelationsView.tsx","webpack://@reltio/remotes/../profile/src/components/EntityMapView/EntityMapView.tsx","webpack://@reltio/remotes/../profile/src/components/views/ViewComponent.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileLayoutItem/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileLayoutItem/ProfileLayoutItem.tsx","webpack://@reltio/remotes/../profile/src/components/ProfileLayout/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfileLayout/ProfileLayout.tsx","webpack://@reltio/remotes/../profile/src/components/Notifications/styles.ts","webpack://@reltio/remotes/../profile/src/components/Notifications/Notification.tsx","webpack://@reltio/remotes/../profile/src/components/Notifications/Notifications.tsx","webpack://@reltio/remotes/../profile/src/components/PerspectiveProfileBand/suggest.svg","webpack://@reltio/remotes/../profile/src/components/PerspectiveProfileBand/copy.svg","webpack://@reltio/remotes/../profile/src/components/PerspectiveProfileBand/styles.ts","webpack://@reltio/remotes/../profile/src/components/PerspectiveProfileBand/PerspectiveProfileBand.tsx","webpack://@reltio/remotes/../profile/src/components/PerspectiveProfileBand/hooks/useCloneAction.ts","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/styles.ts","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/RightSidePanel.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/DBConnectorsList/styles.ts","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/DBConnectorsList/DBConnectorsList.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/WorkflowButton/WorkflowButton.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/icons/CollaborationIcon.svg","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/CollaborationButton/CollaborationButton.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/icons/ConnectorsIcon.svg","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/WorkflowList/styles.ts","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/WorkflowList/WorkflowList.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/WorkflowPanelEmptyState/WorkflowPanelEmptyState.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/CollaborationList/styles.ts","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/CollaborationList/CollaborationList.tsx","webpack://@reltio/remotes/../profile/src/components/RightSidePanel/components/CollaborationPanelEmptyState/CollaborationPanelEmptyState.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePerspectiveView/hooks/useProfileRightSidePanelElements.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePerspectiveResizablePanes/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfilePerspectiveResizablePanes/ProfilePerspectiveResizablePanes.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePerspectiveView/hooks/useProfileLayout.ts","webpack://@reltio/remotes/../profile/src/components/BackgroundProcessIndicator/styles.ts","webpack://@reltio/remotes/../profile/src/components/BackgroundProcessIndicator/BackgroundProcessIndicator.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePerspectiveView/hooks/useBackgroundProcessIndicator.ts","webpack://@reltio/remotes/../profile/src/components/ProfilePerspectiveView/styles.ts","webpack://@reltio/remotes/../profile/src/components/ProfilePerspectiveView/ProfilePerspectiveView.tsx","webpack://@reltio/remotes/../profile/src/components/ProfilePerspectiveView/hooks/useWorkflowTasks.ts","webpack://@reltio/remotes/../profile/src/components/ProfilePerspectiveView/hooks/data/backgroundUpdateDalay.ts","webpack://@reltio/remotes/../profile/src/components/hooks/useProfileValidation.ts","webpack://@reltio/remotes/../profile/src/perspectives/helpers.ts","webpack://@reltio/remotes/../profile/src/perspectives/ProfilePerspective.tsx","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/components/TagListHeader/styles.ts","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/components/TagListHeader/TagListHeader.tsx","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/components/TagProfileBand/styles.ts","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/components/TagProfileBand/TagProfileBand.tsx","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/hooks/useTagsProvider.ts","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/styles.ts","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/TagPerspectiveView.tsx","webpack://@reltio/remotes/../profile/src/components/TagPerspectiveView/hooks/useTag.ts","webpack://@reltio/remotes/../profile/src/perspectives/TagPerspective.tsx","webpack://@reltio/remotes/../profile/src/components/DCRReviewPerspectiveView/components/DCRProfileBand/styles.ts","webpack://@reltio/remotes/../profile/src/components/DCRReviewPerspectiveView/components/DCRProfileBand/DCRProfileBand.tsx","webpack://@reltio/remotes/../profile/src/components/DCRReviewPerspectiveView/hooks/useWorkflowTasks.ts","webpack://@reltio/remotes/../profile/src/components/DCRReviewPerspectiveView/styles.ts","webpack://@reltio/remotes/../profile/src/components/DCRReviewPerspectiveView/DCRReviewPerspectiveView.tsx","webpack://@reltio/remotes/../profile/src/perspectives/DCRReviewPerspective.tsx","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/AddRelationButton/styles.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/AddRelationButton/AddRelationButton.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/cell-renderers/styles.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/cell-renderers/RowCellRenderer.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/cell-renderers/EntityProfileRenderer.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/cell-renderers/HeadCellRenderer.js","webpack://@reltio/remotes/../relations-table/src/core/relations.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/helpers/dataHelpers.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/styles.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/EditButtons.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/RelationsTable.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTable/helpers/buttonsHelper.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTableHeader/MoreButton/styles.ts","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTableHeader/MoreButton/MoreButton.tsx","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTableHeader/styles.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTableHeader/RelationsTableHeader.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/stateReducer.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/helpers/tableHelpers.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/helpers/relationsHelpers.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/styles.js","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/RelationsTableView.tsx","webpack://@reltio/remotes/../relations-table/src/RelationsTableView/index.js","webpack://@reltio/remotes/../relations-table/src/index.tsx"],"sourcesContent":["\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"m20 12-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z\"\n}), 'ArrowDownward');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M7.38 21.01c.49.49 1.28.49 1.77 0l8.31-8.31c.39-.39.39-1.02 0-1.41L9.15 2.98c-.49-.49-1.28-.49-1.77 0s-.49 1.28 0 1.77L14.62 12l-7.25 7.25c-.48.48-.48 1.28.01 1.76z\"\n}), 'ArrowForwardIosRounded');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"m4 12 1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z\"\n}), 'ArrowUpward');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.9959.9959 0 0 0-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z\"\n}), 'Create');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z\"\n}), 'History');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M19 3H4.99c-1.11 0-1.98.89-1.98 2L3 19c0 1.1.88 2 1.99 2H19c1.1 0 2-.9 2-2V5c0-1.11-.9-2-2-2zm0 12h-4c0 1.66-1.35 3-3 3s-3-1.34-3-3H4.99V5H19v10z\"\n}), 'Inbox');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M11 7h2v2h-2zm0 4h2v6h-2zm1-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"\n}), 'InfoOutlined');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 15c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1s1 .45 1 1v4c0 .55-.45 1-1 1zm1-8h-2V7h2v2z\"\n}), 'InfoRounded');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z\"\n}), 'ReportProblem');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M15 3H6c-.83 0-1.54.5-1.84 1.22l-3.02 7.05c-.09.23-.14.47-.14.73v2c0 1.1.9 2 2 2h6.31l-.95 4.57-.03.32c0 .41.17.79.44 1.06L9.83 23l6.59-6.59c.36-.36.58-.86.58-1.41V5c0-1.1-.9-2-2-2zm4 0v12h4V3h-4z\"\n}), 'ThumbDown');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-2z\"\n}), 'ThumbUp');\nexports.default = _default;","import React from 'react';\nimport {AttributesView} from '@reltio/components';\nimport {AttributeViewConfig} from '@reltio/mdm-sdk';\n\ntype ProfileAttributesViewProps = {\n config: AttributeViewConfig;\n className?: string;\n};\n\nexport const ProfileAttributesView = ({className, config}: ProfileAttributesViewProps) => {\n return (\n <AttributesView\n className={className}\n caption={config.caption}\n excludeUris={config.excludeUris}\n includeUris={config.includeUris}\n attributesCount={config.attributesCount}\n pinnedAttributes={config.pinnedAttributes}\n />\n );\n};\n","import React from 'react';\nimport {AttributeValue, AttributeType} from '@reltio/mdm-sdk';\n\nexport const SingleAttributeContext = React.createContext<{\n searchQuery: string;\n setSearchQuery: (query: string) => void;\n values: AttributeValue[];\n page: number;\n setPage: (page: number) => void;\n isLoading: boolean;\n showInactive?: boolean;\n toggleShowInactive?: (checked: boolean) => void;\n hasPaging: boolean;\n totalVisibleValues: number;\n attributeType: AttributeType;\n totalNonVisibleValues: number;\n nonVisibleValues: AttributeValue[];\n }>(null);\n\nSingleAttributeContext.displayName = 'SingleAttributeContext';\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n triggerButton: {\n minWidth: 0,\n color: 'rgba(0,0,0,0.54)',\n width: '36px'\n },\n popupContent: {\n paddingTop: '19px',\n paddingBottom: '23px',\n paddingLeft: '23px',\n paddingRight: '23px',\n maxWidth: '180px',\n width: '40%'\n },\n checkboxControlRoot: {\n marginTop: '6px',\n marginLeft: '-12px'\n },\n checkboxControlLabel: {\n fontSize: '0.85rem'\n },\n checkboxControlCheckbox: {\n marginRight: '5px'\n }\n}));\n","import React, {useContext, useRef, useState} from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport Popover from '@mui/material/Popover';\nimport Button from '@mui/material/Button';\nimport FilterIcon from '@mui/icons-material/FilterList';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Checkbox from '@mui/material/Checkbox';\n\nimport {SingleAttributeContext} from '../../contexts/SingleAttributeContext';\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n};\n\nconst FilterButton = ({className}: Props) => {\n const styles = useStyles();\n const buttonRef = useRef();\n const [isOpen, setIsOpen] = useState(false);\n const {showInactive, toggleShowInactive} = useContext(SingleAttributeContext);\n\n const togglePopup = () => setIsOpen((open) => !open);\n\n return (\n <>\n <Button ref={buttonRef} classes={{root: classnames(styles.triggerButton, className)}} onClick={togglePopup}>\n <FilterIcon />\n </Button>\n <Popover\n open={isOpen}\n classes={{paper: styles.popupContent}}\n anchorEl={buttonRef.current}\n onClose={togglePopup}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <FormControlLabel\n classes={{\n root: styles.checkboxControlRoot,\n label: styles.checkboxControlLabel\n }}\n control={\n <Checkbox\n className={styles.checkboxControlCheckbox}\n checked={showInactive}\n onChange={(e) => toggleShowInactive(e.target.checked)}\n />\n }\n label={i18n.text('Show inactive values')}\n />\n </Popover>\n </>\n );\n};\n\nexport default FilterButton;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n padding: '0 4px 0 16px'\n },\n rightMenuItems: {\n display: 'flex',\n flex: '1 0 auto',\n justifyContent: 'flex-end',\n alignItems: 'center'\n },\n totalCaption: {\n lineHeight: '19px',\n fontSize: '14px',\n letterSpacing: '0.24px',\n color: 'rgba(0,0,0,0.6)',\n flexShrink: 0,\n justifyContent: 'flex-start',\n paddingTop: '16px',\n paddingBottom: '13px'\n },\n ovIcon: {\n marginTop: '2px',\n marginLeft: '5px'\n }\n}));\n","import React, {useContext} from 'react';\nimport i18n from 'ui-i18n';\nimport {\n FacetViewHeader,\n HideOnShrink,\n ExpandableSearchInput,\n VerticalDivider,\n OvIcon,\n DescriptionIcon,\n RequiredMark\n} from '@reltio/components';\nimport Typography from '@mui/material/Typography';\nimport {SingleAttributeContext} from '../../contexts/SingleAttributeContext';\nimport FilterButton from '../FilterButton/FilterButton';\nimport {useStyles} from './styles';\n\ntype Props = {\n caption: string;\n totalVisibleValues: number;\n showInactiveValuesMenu: boolean;\n isEditableMode: boolean;\n};\n\nexport const SingleAttributeHeader = ({caption, totalVisibleValues, showInactiveValuesMenu, isEditableMode}: Props) => {\n const styles = useStyles();\n\n const {searchQuery, setSearchQuery, setPage, totalNonVisibleValues, nonVisibleValues, attributeType} =\n useContext(SingleAttributeContext);\n\n const handleChangeSearchQuery = (query: string) => {\n setSearchQuery(query);\n setPage(0);\n };\n const showRequiredMark = isEditableMode && attributeType?.required;\n return (\n <FacetViewHeader title={caption} className={styles.root}>\n {showRequiredMark && <RequiredMark />}\n <DescriptionIcon description={attributeType?.description} />\n <HideOnShrink widthToHide={400}>\n <VerticalDivider height={24} margin={16} />\n <Typography className={styles.totalCaption} variant=\"caption\">\n {i18n.number(totalVisibleValues)}{' '}\n {totalVisibleValues === 1 ? i18n.text('item') : i18n.text('items')}\n </Typography>\n </HideOnShrink>\n {\n <OvIcon\n nonOvTotal={totalNonVisibleValues}\n className={styles.ovIcon}\n nonOvValues={nonVisibleValues}\n attributeType={attributeType}\n />\n }\n <div className={styles.rightMenuItems}>\n <ExpandableSearchInput query={searchQuery} onChange={handleChangeSearchQuery} />\n {showInactiveValuesMenu && <FilterButton />}\n </div>\n </FacetViewHeader>\n );\n};\n","import {equals, filter, identity, is, lensPath, omit, over, pipe, unless} from 'ramda';\nimport {\n AttributeValue,\n cleanAttributesWith,\n Entity,\n findAttributeValuesByTypeUri,\n getAttributeSource,\n getLastUriPart,\n isOv,\n Metadata,\n utils\n} from '@reltio/mdm-sdk';\n\nexport const getAttributeNameFromAttributeUri = getLastUriPart;\n\nexport const search = (value: AttributeValue['value'], searchQuery: string) => {\n switch (typeof value) {\n case 'object':\n return Object.values(value).some((value: AttributeValue[]) => {\n return value.some(({value}) => {\n return search(value, searchQuery);\n });\n });\n default:\n return utils.strings.search(String(value), searchQuery);\n }\n};\n\ntype Config = {\n metadata: Metadata;\n entity: Entity;\n attributeTypeUri: string;\n defaultMaxValues?: number;\n offset?: number;\n searchQuery?: string;\n};\n\nexport const getPagedLocalEntity = async ({\n metadata,\n entity,\n attributeTypeUri,\n defaultMaxValues = Infinity,\n offset = 0,\n searchQuery = ''\n}: Config) => {\n const values = pipe(\n findAttributeValuesByTypeUri,\n filter(({value}) => search(value, searchQuery))\n )(metadata, entity, attributeTypeUri);\n const ovValues = filter(isOv, values);\n\n return {\n [getAttributeSource(attributeTypeUri)]: {\n [getAttributeNameFromAttributeUri(attributeTypeUri)]: ovValues.slice(offset, offset + defaultMaxValues),\n paging: {\n [attributeTypeUri]: {\n totalOvValues: ovValues.length,\n totalValues: values.length\n }\n }\n }\n };\n};\n\nexport const areValuesEqual = (value1: AttributeValue, value2: AttributeValue): boolean => {\n const cleanser =\n is(Object, value1.value) || is(Object, value2.value)\n ? over(\n lensPath(['value']),\n cleanAttributesWith({\n valueTransformer: unless(isOv, omit(['value'])),\n deleteEmptyComplex: true\n })\n )\n : identity;\n return equals(cleanser(value1), cleanser(value2));\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n moreButton: {\n padding: '9px 16px 9px 12px',\n backgroundColor: 'rgba(98, 2, 238, 0)',\n marginBottom: '4px'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n divider: {\n margin: '0 -16px 8px',\n borderColor: 'rgba(0,0,0,0.12)'\n },\n ovFalse: theme.inactive,\n noData: {\n fontSize: '13px',\n color: theme.palette.text.secondary,\n padding: '8px 16px 8px 0'\n }\n}));\n","import React, {useCallback, useContext, useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport {always, cond, isEmpty, map, pathOr, pipe, prop, propEq, omit} from 'ramda';\nimport {useDispatch, useSelector} from 'react-redux';\nimport Button from '@mui/material/Button';\nimport AddIcon from '@mui/icons-material/Add';\nimport Divider from '@mui/material/Divider';\nimport Typography from '@mui/material/Typography';\nimport classnames from 'classnames';\nimport {\n CardinalityMessage,\n EditableAttribute,\n ErrorMessage,\n isHighlightedErrorType,\n ScrollToElementContext,\n useScrollToAttributeError,\n ViewIdContext,\n withContext\n} from '@reltio/components';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {\n AttributeType,\n AttributeValue,\n checkCanCreateAttribute,\n createNewAttribute,\n Entity,\n getAttributeOwnError,\n getAttributePagerActiveTypeErrorMessage,\n getAttributeSource,\n isComplexAttribute,\n isEmptyValue,\n isOv,\n isTempUri,\n AttributeItem,\n isAttributeTypeError,\n AttributeError\n} from '@reltio/mdm-sdk';\nimport {areValuesEqual} from '../../../hooks/helpers';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n values: AttributeValue[];\n attributeType: AttributeType;\n parentUri: string;\n showInactive: boolean;\n noDataText: string;\n highlightedError?: React.ContextType<typeof ScrollToElementContext>;\n};\n\nconst emptyArray = [];\n\nconst SingleAttributeEditableContent = ({\n values,\n attributeType,\n parentUri,\n showInactive,\n noDataText,\n highlightedError\n}: Props) => {\n const styles = useStyles();\n\n const {uri: attributeTypeUri, required: isRequired, cardinality, name} = attributeType;\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n const entity = useSelector(mdmModule.selectors.getEntity);\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entity.uri) || ({} as Entity)\n );\n const errors = useSelector((state) =>\n mdmModule.selectors.getActiveErrorsForAttributesPager(state, parentUri, attributeType)\n );\n const errorMessage = useSelector((state) =>\n getAttributePagerActiveTypeErrorMessage(parentUri, attributeType, mdmModule.selectors.getProfileErrors(state))\n );\n const mode = useSelector(mdmModule.selectors.getMode);\n const attributeSource = getAttributeSource(attributeType);\n const entityValuesUris: string[] = pipe(pathOr(emptyArray, [attributeSource, name]), map(prop('uri')))(entity);\n const modifiedEntityValues: AttributeValue[] = pathOr(emptyArray, [attributeSource, name], modifiedEntity);\n const modifiedEntityValuesUris: string[] = modifiedEntityValues.map(prop('uri'));\n const showEmptyEditors = isTempUri(entity.uri);\n\n const emptyEditorValue: AttributeValue = useMemo(\n () =>\n createNewAttribute({\n parentUri,\n attributeType: omit(['defaultValue'], attributeType)\n }),\n [parentUri, attributeType]\n );\n\n const {ref, errorClassName} = useScrollToAttributeError({highlightedError, isSimple: true});\n\n const isModifiedEntityValuesEmpty = isEmptyValue(modifiedEntityValues);\n const showEmpty = isRequired && isModifiedEntityValuesEmpty;\n\n const newValues = showEmpty ? [emptyEditorValue] : modifiedEntityValues.filter(pipe(prop('uri'), isTempUri));\n\n const onAddAttributes = useCallback(\n (params: AttributeItem[]) =>\n pipe(profile.actions.addAttributes, dispatch)(params.map((param) => ({...param, viewId}))),\n [viewId, dispatch]\n );\n\n const onChangeAttribute = useCallback(\n (params: AttributeItem) => pipe(profile.actions.modifyAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const onDeleteAttribute = useCallback(\n (params: AttributeItem) => pipe(profile.actions.removeAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const onDeactivateError = useCallback(pipe(profile.errors.actions.errorDeactivated, dispatch), [dispatch]);\n\n const onAdd = useCallback(() => {\n const createAttribute = (attributeType: AttributeType): AttributeItem => ({parentUri, attributeType});\n\n if (showEmpty && !isComplexAttribute(attributeType.type)) {\n const attributes = [createAttribute(omit(['defaultValue'], attributeType)), createAttribute(attributeType)];\n return onAddAttributes(attributes);\n }\n\n return onAddAttributes([createAttribute(attributeType)]);\n }, [onAddAttributes, parentUri, attributeType, showEmpty]);\n\n const canCreate = checkCanCreateAttribute({attributeType, mode});\n\n const commonProps = {\n attributeType: attributeType,\n errors,\n crosswalks: modifiedEntity.crosswalks,\n mode,\n onAddAttributes,\n onChangeAttribute,\n onDeactivateError,\n showNonOv: showInactive\n };\n const isEmptyAttributeList = newValues.length === 0 && values.length === 0;\n return (\n !isEmpty(modifiedEntity) && (\n <div ref={ref} className={errorClassName}>\n <CardinalityMessage cardinality={cardinality} />\n <ErrorMessage message={errorMessage} />\n {canCreate && (\n <Button color=\"primary\" onClick={onAdd} className={styles.moreButton}>\n <AddIcon classes={{root: styles.icon}} />\n <div className={styles.buttonLabel}>{i18n.text('Add')}</div>\n </Button>\n )}\n {newValues.map((value, idx) => (\n <EditableAttribute\n key={value.uri}\n {...commonProps}\n attributeValue={value}\n lazy={showEmpty && !isRequired}\n showEmptyEditors={showEmptyEditors}\n ownError={getAttributeOwnError(value, idx, attributeTypeUri, errors)}\n onDeleteAttribute={onDeleteAttribute}\n isEmptyEditor={showEmpty}\n />\n ))}\n {newValues.length > 0 && values.length > 0 && <Divider className={styles.divider} />}\n {values.map((originalValue) => {\n const modifiedEntityValue = modifiedEntityValues.find(propEq('uri', originalValue.uri));\n const value = modifiedEntityValue || originalValue;\n const deleted =\n entityValuesUris.includes(value.uri) && !modifiedEntityValuesUris.includes(value.uri);\n const edited =\n !deleted && modifiedEntityValue && !areValuesEqual(modifiedEntityValue, originalValue);\n const state = cond([\n [always(deleted), always('deleted')],\n [always(edited), always('edited')]\n ])();\n return (\n <div key={value.uri} className={classnames({[styles.ovFalse]: !isOv(value)})}>\n <EditableAttribute\n {...commonProps}\n attributeValue={value}\n ownError={getAttributeOwnError(value, null, attributeTypeUri, errors)}\n onDeleteAttribute={onDeleteAttribute}\n state={state}\n />\n </div>\n );\n })}\n {isEmptyAttributeList && <Typography className={styles.noData}>{noDataText}</Typography>}\n </div>\n )\n );\n};\n\nexport default withContext(\n ScrollToElementContext,\n (contextValue, {parentUri, attributeType}) => {\n const {element, type} = contextValue || {};\n const isHighlighted =\n isHighlightedErrorType(type) &&\n isAttributeTypeError(element as AttributeError, parentUri, attributeType.uri);\n return {highlightedError: isHighlighted ? contextValue : null};\n },\n SingleAttributeEditableContent\n);\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n simpleAttribute: {\n fontSize: '13px',\n lineHeight: '15px',\n marginBottom: '4px'\n }\n}));\n","import React from 'react';\nimport {ReadOnlyAttribute} from '@reltio/components';\nimport {AttributeType, AttributeValue, isComplexAttribute} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n values: AttributeValue[];\n attributeType: AttributeType;\n showInactive: boolean;\n};\n\nexport const SingleAttributeReadableContent = ({values, attributeType, showInactive}: Props) => {\n const style = useStyles();\n const isSimple = !isComplexAttribute(attributeType);\n return (\n <>\n {values.map((value) => {\n return (\n <ReadOnlyAttribute\n key={value.uri}\n attributeValue={value}\n attributeType={attributeType}\n showNonOv={showInactive}\n className={classnames({[style.simpleAttribute]: isSimple})}\n />\n );\n })}\n </>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n flexDirection: 'column'\n },\n content: {\n position: 'relative',\n padding: '4px 16px 9px',\n overflow: 'hidden',\n flexGrow: 1\n },\n noData: {\n fontSize: '13px',\n color: 'rgba(0,0,0,0.54)'\n },\n pagination: {\n flexGrow: 0,\n flexShrink: 0\n }\n}));\n","import React, {useContext} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {PivotingAttribute, SingleAttributeViewConfig} from '@reltio/mdm-sdk';\nimport {BasicView, BasicTablePagination, LinearLoadIndicator, PivotingAttributeContext} from '@reltio/components';\nimport mdm from '@reltio/mdm-module';\nimport Box from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport {SingleAttributeHeader} from '../SingleAttributeHeader/SingleAttributeHeader';\nimport SingleAttributeEditableContent from '../SingleAttributeEditableContent/SingleAttributeEditableContent';\nimport {SingleAttributeContext} from '../../contexts/SingleAttributeContext';\nimport {SingleAttributeReadableContent} from '../SingleAttributeReadableContent/SingleAttributeReadableContent';\nimport {useStyles} from './styles';\n\nconst DEFAULT_ROWS_PER_PAGE = 15;\n\ntype Props = {\n config: SingleAttributeViewConfig;\n className?: string;\n};\n\nexport const SingleAttributeView = ({config, className}: Props) => {\n const {caption, max = DEFAULT_ROWS_PER_PAGE, showInactiveValuesMenu} = config;\n\n const styles = useStyles();\n\n const {values, totalVisibleValues, page, setPage, isLoading, hasPaging, attributeType, showInactive} =\n useContext(SingleAttributeContext);\n\n const entityUri = useSelector(mdm.selectors.getEntityUri);\n const isViewMode = useSelector(mdm.selectors.getIsViewMode);\n const isEditableMode = useSelector(mdm.selectors.getIsEditableMode);\n const pivotingAttributes: PivotingAttribute[] = useSelector(mdm.selectors.getPivotingAttributes);\n\n const hasValues = values.length !== 0;\n const noDataText = config['text-empty'] || i18n.text('No data found');\n\n const renderContent = () => {\n if (isLoading) {\n return <LinearLoadIndicator />;\n }\n\n if (attributeType) {\n if (isViewMode && hasValues) {\n const props = {\n values,\n attributeType,\n showInactive\n };\n return <SingleAttributeReadableContent {...props} />;\n } else if (isEditableMode) {\n const props = {\n values,\n attributeType,\n parentUri: entityUri,\n showInactive,\n noDataText\n };\n return <SingleAttributeEditableContent {...props} />;\n }\n }\n\n return <Typography className={styles.noData}>{noDataText}</Typography>;\n };\n\n return (\n <PivotingAttributeContext.Provider value={pivotingAttributes}>\n <BasicView className={classnames(styles.root, className)}>\n <SingleAttributeHeader\n totalVisibleValues={totalVisibleValues}\n caption={caption}\n showInactiveValuesMenu={showInactiveValuesMenu}\n isEditableMode={isEditableMode}\n />\n <Box className={styles.content}>{renderContent()}</Box>\n {hasPaging && (\n <BasicTablePagination\n count={totalVisibleValues}\n page={page}\n rowsPerPage={max}\n rowsPerPageOptions={[]}\n onChangePage={setPage}\n classes={{root: styles.pagination}}\n />\n )}\n </BasicView>\n </PivotingAttributeContext.Provider>\n );\n};\n","import {useCallback, useState, useEffect, useMemo, useRef} from 'react';\nimport {ifElse, prop, always, has, pathOr, path, partition, propEq} from 'ramda';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {\n isDataTenantEntity,\n getPagedEntity,\n getAttributeSource,\n AttributeValue,\n SearchFilter,\n findAttributeTypeByUri,\n isReadableAttribute,\n isTempUri,\n isOv,\n findAttributeValues,\n isFirstLevelAttributeUri,\n SingleAttributeViewConfig,\n getRequestErrorMessage,\n Paging,\n Order,\n Entity\n} from '@reltio/mdm-sdk';\nimport mdm, {profile, ui} from '@reltio/mdm-module';\nimport {useSafePromise, useDidUpdateEffect} from '@reltio/components';\nimport {getPagedLocalEntity, getAttributeNameFromAttributeUri} from './helpers';\nimport i18n from 'ui-i18n';\n\ntype Params = {\n filters?: SearchFilter[];\n searchQuery?: string;\n sorting?: {\n field: string;\n order: Order;\n };\n page: number;\n showInactive: boolean;\n};\n\nexport const useSingleAttributeLoader = <GenericAttributeValue extends AttributeValue>(\n config: SingleAttributeViewConfig,\n params: Params\n) => {\n const {attributeUri, max = 15} = config;\n const metadata = useSelector(mdm.selectors.getMetadata);\n const [values, setValues] = useState<GenericAttributeValue[]>([]);\n const [paging, setPaging] = useState<Paging>(null);\n const [isLoading, setIsLoading] = useState(false);\n const safePromise = useSafePromise();\n const attributeValuesRef = useRef<AttributeValue[]>(null);\n\n const dispatch = useDispatch();\n const apiPath = useSelector(mdm.selectors.getApiPath);\n const tenant = useSelector(mdm.selectors.getTenant);\n const entity = useSelector(mdm.selectors.getEntityWithDiff);\n\n const isViewMode = useSelector(mdm.selectors.getIsViewMode);\n const isHistoryModeEnabled = useSelector(mdm.selectors.getIsHistoryModeEnabled);\n const diff = useSelector(mdm.selectors.getHistoryDiff);\n\n const parentUri = entity.uri;\n const attributeTypeName = getAttributeNameFromAttributeUri(attributeUri);\n const attributeTypeSource = getAttributeSource(attributeUri);\n attributeValuesRef.current = findAttributeValues(entity, parentUri, attributeTypeName);\n const attributeType = useMemo(() => findAttributeTypeByUri(metadata, attributeUri), [metadata, attributeUri]);\n const {globalFilter} = useSelector(mdm.selectors.getGlobalSearchRequestOptions);\n const {showInactive} = params;\n const loadAttributes = useCallback(() => {\n if (\n attributeType &&\n isReadableAttribute(attributeType) &&\n !isTempUri(parentUri) &&\n isFirstLevelAttributeUri(attributeUri)\n ) {\n setIsLoading(true);\n const {page, showInactive, searchQuery, ...rest} = params;\n\n const getRequest = (): Promise<Pick<Entity, 'attributes' | 'analyticsAttributes'>> => {\n const commonProps = {\n defaultMaxValues: max,\n attributeTypeUri: attributeUri,\n offset: max * page,\n searchQuery\n };\n\n if (isDataTenantEntity(entity) || isHistoryModeEnabled) {\n return getPagedLocalEntity({...commonProps, metadata, entity});\n }\n\n return getPagedEntity({\n ...commonProps,\n ...rest,\n tenant,\n apiPath,\n parentUri,\n options: showInactive ? '' : undefined,\n globalFilter\n });\n };\n\n safePromise(getRequest())\n .then((response) => {\n const attributes = path([attributeTypeSource], response);\n const values: GenericAttributeValue[] = pathOr([], [attributeTypeName], attributes);\n if (!isHistoryModeEnabled) {\n dispatch(\n profile.actions.processNextPageOfAttributeValues({\n parentUri,\n attributeTypeUri: attributeUri,\n attributeTypeName,\n values\n })\n );\n }\n setValues(\n values.map((loadedValue) => {\n const valueFromEntity = attributeValuesRef.current?.find(propEq('uri', loadedValue.uri));\n return (valueFromEntity as GenericAttributeValue) || loadedValue;\n })\n );\n setPaging(path(['paging', attributeUri], attributes));\n })\n .catch((error) => {\n console.error(error);\n setValues([]);\n dispatch(ui.actions.errorSet(getRequestErrorMessage(error, i18n.text('Something went wrong'))));\n })\n .finally(() => {\n setIsLoading(false);\n });\n } else {\n setValues([]);\n setPaging(null);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n apiPath,\n parentUri,\n tenant,\n attributeUri,\n max,\n metadata,\n params,\n globalFilter,\n attributeType,\n isHistoryModeEnabled,\n diff\n ]);\n\n useEffect(() => {\n loadAttributes();\n }, [loadAttributes]);\n\n useDidUpdateEffect(() => {\n if (isViewMode) {\n loadAttributes();\n }\n }, [isViewMode]);\n const partitionByOv = partition(isOv);\n const [, nonOvValues] = partitionByOv(attributeValuesRef.current || []);\n const nonVisibleValues: GenericAttributeValue[] = showInactive ? [] : nonOvValues;\n const totalProp = showInactive ? 'totalValues' : 'totalOvValues';\n const totalVisibleValues: number = ifElse(has(totalProp), prop(totalProp), always(values.length))(paging);\n const hasPaging = max < totalVisibleValues;\n const totalNonVisibleValues = paging?.totalValues\n ? paging.totalValues - totalVisibleValues\n : nonVisibleValues.length;\n return {\n values,\n isLoading,\n hasPaging,\n totalVisibleValues,\n attributeType,\n totalNonVisibleValues,\n nonVisibleValues\n };\n};\n","import React from 'react';\nimport {RelationsViewState} from '../hooks/useRelationsState';\n\nexport const RelationsViewStateContext = React.createContext<RelationsViewState>(null);\n\nRelationsViewStateContext.displayName = 'RelationsViewStateContext';\n","import {makeStyles} from '@mui/styles';\n\nconst popupHorizontalPadding = '23px';\n\nexport const useStyles = makeStyles((theme) => ({\n button: {\n color: theme.palette.text.secondary,\n width: '36px',\n minWidth: '36px'\n },\n popupContent: {\n padding: `19px ${popupHorizontalPadding}`\n },\n checkboxControlLabel: {\n fontSize: '0.85rem'\n },\n checkboxControlCheckbox: {\n marginRight: '5px'\n },\n divider: {\n borderColor: 'rgba(0,0,0,0.1)',\n margin: `19px -${popupHorizontalPadding}`\n },\n title: {\n marginBottom: '30px'\n },\n sortControls: {\n display: 'flex',\n alignItems: 'center'\n },\n sortSelectorRoot: {\n flex: 1,\n padding: '13px 16px',\n fontSize: '0.85rem'\n },\n sortSelectorMenuItem: {\n fontSize: '0.85rem'\n },\n sortOrderButton: {\n flexShrink: 0,\n margin: '0 8px 0 7px'\n }\n}));\n","import React, {useContext, useRef, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {isEmptyValue} from '@reltio/mdm-sdk';\nimport {DropDownEditor, SmallIconButtonWithTooltip} from '@reltio/components';\nimport Popover from '@mui/material/Popover';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Checkbox from '@mui/material/Checkbox';\nimport FilterIcon from '@mui/icons-material/FilterList';\nimport Button from '@mui/material/Button';\nimport Divider from '@mui/material/Divider';\nimport Typography from '@mui/material/Typography';\nimport ArrowUpwardIcon from '@mui/icons-material/ArrowUpward';\nimport ArrowDownwardIcon from '@mui/icons-material/ArrowDownward';\nimport {RelationsViewStateContext} from '../../../contexts/RelationsViewStateContext';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n};\n\nconst FilterButton = ({className}: Props) => {\n const styles = useStyles();\n const buttonRef = useRef();\n const {showInactive, toggleShowInactive, sortOrder, toggleSortOrder, sortOption, changeSortOption, sortOptions} =\n useContext(RelationsViewStateContext);\n const [isOpen, setIsOpen] = useState(false);\n\n const togglePopup = () => setIsOpen((open) => !open);\n\n const hasSortOptions = !isEmptyValue(sortOptions);\n\n const isAsc = sortOrder === 'asc';\n\n return (\n <>\n <Button\n ref={buttonRef}\n classes={{\n root: classnames(styles.button, className)\n }}\n onClick={togglePopup}\n >\n <FilterIcon />\n </Button>\n <Popover\n open={isOpen}\n classes={{paper: styles.popupContent}}\n anchorEl={buttonRef.current}\n onClose={togglePopup}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <FormControlLabel\n classes={{\n label: styles.checkboxControlLabel\n }}\n control={\n <Checkbox\n className={styles.checkboxControlCheckbox}\n checked={showInactive || false}\n onChange={toggleShowInactive}\n />\n }\n label={i18n.text('Show inactive Relationships')}\n />\n {hasSortOptions && (\n <>\n <Divider className={styles.divider} />\n <Typography className={styles.title} variant=\"h6\">\n {i18n.text('Sort by')}\n </Typography>\n <div className={styles.sortControls}>\n <DropDownEditor\n entries={sortOptions}\n TextFieldProps={{variant: 'filled'}}\n classes={{\n root: styles.sortSelectorRoot,\n menuItem: styles.sortSelectorMenuItem\n }}\n fullWidth\n disableUnderline\n value={sortOption}\n onChange={changeSortOption}\n MenuProps={{\n anchorOrigin: {vertical: 'bottom', horizontal: 'left'}\n }}\n />\n <SmallIconButtonWithTooltip\n tooltipTitle={isAsc ? i18n.text('Ascending') : i18n.text('Descending')}\n icon={isAsc ? ArrowUpwardIcon : ArrowDownwardIcon}\n onClick={toggleSortOrder}\n className={styles.sortOrderButton}\n size=\"L\"\n />\n </div>\n </>\n )}\n </Popover>\n </>\n );\n};\n\nFilterButton.displayName = 'FilterButton';\n\nexport default FilterButton;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n header: {\n padding: '0 6px 0 16px'\n },\n rightMenuItems: {\n display: 'flex',\n flex: '1 0 auto',\n justifyContent: 'flex-end',\n alignItems: 'center'\n },\n totalCaption: {\n lineHeight: '19px',\n fontSize: '14px',\n letterSpacing: '0.24px',\n color: 'rgba(0,0,0,0.6)',\n flexShrink: 0,\n marginRight: '5px',\n justifyContent: 'flex-start',\n paddingTop: '16px',\n paddingBottom: '13px'\n }\n});\n","import React from 'react';\nimport {RelationsViewConfig} from '@reltio/mdm-sdk';\n\nexport const ImportDTContext = React.createContext<{\n reloadRelations: () => void;\n config: Pick<RelationsViewConfig, 'content' | 'importFromDT' | 'maxDtssImport'>;\n }>(null);\n","import {useSelector, useDispatch} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {useCallback, useContext, useEffect, useState} from 'react';\nimport {getRequestErrorMessage, hasNonImportedRelations, importDTConnections, isTempUri} from '@reltio/mdm-sdk';\nimport {ui} from '@reltio/mdm-module';\nimport {ImportDTContext} from '../../../../contexts/ImportDTContext';\nimport i18n from 'ui-i18n';\n\nconst MAX = Math.pow(2, 31) - 1;\ntype Tenant = {id: string; label: string};\n\nexport const useImportFromDTLoader = () => {\n const dataTenants: Array<Tenant> = useSelector(mdmModule.selectors.getDataTenants);\n const dispatch = useDispatch();\n const {config, reloadRelations} = useContext(ImportDTContext);\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const [tenants, setTenants] = useState<Array<Tenant>>([]);\n const [selectedTenant, setSelectedTenant] = useState<Tenant>(null);\n const dtssPath = useSelector(mdmModule.selectors.getDtssPath);\n const customerTenant = useSelector(mdmModule.selectors.getTenant);\n const content = [{...config.content, offset: 0, max: config.maxDtssImport ?? MAX}];\n\n const checkHasNonImportedConnections = useCallback(() => {\n setTenants([]);\n if (config.importFromDT && !isTempUri(entityUri)) {\n Promise.all(\n (dataTenants || []).map((tenant) =>\n hasNonImportedRelations({\n entityUri,\n content,\n dtssPath,\n customerTenant,\n dataTenant: tenant.id\n }).then(({hasNonImportedConnections}) => ({\n ...tenant,\n hasNonImportedConnections\n }))\n )\n )\n .then((modifiedTenants) => modifiedTenants.filter((tenant) => tenant.hasNonImportedConnections))\n .then(setTenants);\n }\n }, [entityUri, dtssPath, customerTenant, config, dataTenants]);\n\n const onConfirmImport = useCallback(() => {\n importDTConnections({\n entityUri,\n content,\n dtssPath,\n customerTenant,\n dataTenant: selectedTenant.id\n })\n .then(() => {\n reloadRelations();\n checkHasNonImportedConnections();\n })\n .catch((error) =>\n dispatch(ui.actions.errorSet(getRequestErrorMessage(error, i18n.text('Something went wrong'))))\n );\n setSelectedTenant(null);\n }, [\n entityUri,\n dtssPath,\n customerTenant,\n config,\n checkHasNonImportedConnections,\n reloadRelations,\n selectedTenant,\n setSelectedTenant\n ]);\n\n useEffect(() => {\n checkHasNonImportedConnections();\n }, [checkHasNonImportedConnections]);\n const onCancelConfirmation = useCallback(() => setSelectedTenant(null), []);\n const onImportClick = useCallback((tenant: Tenant) => setSelectedTenant(tenant), []);\n return {\n tenants,\n selectedTenant,\n onConfirmImport,\n onCancelConfirmation,\n onImportClick\n };\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n tenant: {\n backgroundColor: '#0000EE',\n cursor: 'pointer',\n position: 'absolute',\n top: '8px',\n left: '22px',\n width: '10px',\n height: '10px',\n color: 'white',\n fontSize: '10px',\n fontWeight: 'bold',\n userSelect: 'text',\n zIndex: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n },\n button: {\n position: 'relative'\n },\n badge: {\n fontSize: '10px',\n height: '14px',\n minWidth: '14px',\n width: '14px',\n fontWeight: 'bold',\n backgroundColor: '#FF4081',\n color: '#FFF'\n },\n badgePosition: {\n right: '5px',\n top: '4px'\n }\n}));\n","import React from 'react';\nimport CloudDownloadIcon from '@mui/icons-material/CloudDownload';\nimport Badge from '@mui/material/Badge';\nimport {useStyles} from './styles';\n\ninterface Props {\n label: number | string;\n}\n\nexport const MultipleImportIcon = ({label}: Props) => {\n const styles = useStyles();\n return (\n <Badge\n classes={{\n anchorOriginTopRightRectangular: styles.badgePosition,\n badge: styles.badge\n }}\n badgeContent={label}\n >\n <CloudDownloadIcon />\n </Badge>\n );\n};\n","import React from 'react';\nimport CloudDownloadIcon from '@mui/icons-material/CloudDownload';\nimport {DropDownMenuButton, SmallIconButtonWithTooltip} from '@reltio/components';\nimport {useImportFromDTLoader} from './hooks/useImportFromDTLoader';\nimport {useStyles} from './styles';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {ConfirmationDialog} from '@reltio/components';\nimport {MultipleImportIcon} from './MultipleImportIcon';\n\nexport const ImportFromDT = () => {\n const {tenants, selectedTenant, onConfirmImport, onCancelConfirmation, onImportClick} = useImportFromDTLoader();\n const styles = useStyles();\n const oneTenant = tenants.length === 1;\n const labelOnButton = oneTenant\n ? tenants[0].label.indexOf('DT:') === 0\n ? tenants[0].label[3]\n : tenants[0].label[0]\n : tenants.length;\n return (\n <>\n {!!tenants.length && (\n <>\n {oneTenant ? (\n <div className={styles.button}>\n <SmallIconButtonWithTooltip\n size={'L'}\n icon={CloudDownloadIcon}\n tooltipTitle={i18n.text('Import connections from ${label}', {label: tenants[0].label})}\n onClick={() => onImportClick(tenants[0])}\n />\n <div className={classnames(styles.tenant)}>{labelOnButton}</div>\n </div>\n ) : (\n <DropDownMenuButton\n menuId={'importDT-table-actions'}\n buttonComponent={SmallIconButtonWithTooltip}\n buttonProps={{\n tooltipTitle: i18n.text('Import connections'),\n size: 'L',\n // eslint-disable-next-line react/display-name\n icon: () => <MultipleImportIcon label={labelOnButton} />\n }}\n menuItems={tenants.map((tenant) => ({\n onClick: () => {\n onImportClick(tenant);\n },\n text: tenant.label\n }))}\n />\n )}\n <ConfirmationDialog\n open={!!selectedTenant}\n title={i18n.text('Confirmation')}\n content={i18n.text('Import connections from ${label}?', {label: selectedTenant?.label})}\n discardCaption={i18n.text('Cancel')}\n saveCaption={i18n.text('Import')}\n onDiscard={onCancelConfirmation}\n onSave={onConfirmImport}\n />\n </>\n )}\n </>\n );\n};\n","import React, {useContext} from 'react';\nimport i18n from 'ui-i18n';\nimport {ExpandableSearchInput, FacetViewHeader, HideOnShrink, VerticalDivider} from '@reltio/components';\nimport Typography from '@mui/material/Typography';\nimport FilterButton from './FilterButton/FilterButton';\nimport {RelationsViewStateContext} from '../../contexts/RelationsViewStateContext';\nimport {useStyles} from './styles';\nimport {ImportFromDT} from './ImportFromDT/ImportFromDT';\n\ntype Props = {\n title?: string;\n total?: number;\n};\n\nconst RelationsHeader = ({title, total}: Props) => {\n const styles = useStyles();\n\n const {searchQuery, changeSearchQuery} = useContext(RelationsViewStateContext);\n\n return (\n <FacetViewHeader title={title || ''} className={styles.header}>\n {total > 0 && (\n <HideOnShrink widthToHide={400}>\n <VerticalDivider height={24} margin={16} />\n <Typography className={styles.totalCaption} variant=\"caption\">\n {total > 1\n ? i18n.text('${count} items', {count: total})\n : i18n.text('${count} item', {count: total})}\n </Typography>\n </HideOnShrink>\n )}\n <div className={styles.rightMenuItems}>\n <ExpandableSearchInput query={searchQuery} onChange={changeSearchQuery} />\n <ImportFromDT />\n <FilterButton />\n </div>\n </FacetViewHeader>\n );\n};\n\nexport default RelationsHeader;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n tooltip: theme.tooltip,\n tooltipContent: {\n minWidth: '165px',\n padding: '4px 2px 2px'\n },\n label: {\n fontSize: '11px',\n lineHeight: '13px',\n fontWeight: 500,\n margin: 0,\n color: 'white'\n },\n secondaryLabel: {\n color: 'rgba(255, 255, 255, 0.7)',\n fontSize: '10px',\n marginTop: '4px',\n fontWeight: 500,\n lineHeight: '11px'\n },\n progress: {\n marginTop: '4px',\n color: '#FFFFFF'\n }\n}));\n","import React, {useCallback, useEffect, useState} from 'react';\nimport {isNil, ifElse} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {\n ConnectionEntity,\n getDataTenantEntitySecondaryLabel,\n getEntitySecondaryLabel,\n isDataTenantEntity,\n isTempUri\n} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {useSafePromise} from '@reltio/components';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Tooltip from '@mui/material/Tooltip';\nimport {useStyles} from './styles';\n\nconst PROGRESS_ICON_SIZE = 16;\n\ntype Props = {\n label: string;\n entity?: ConnectionEntity;\n children: React.ReactElement;\n};\n\nconst RelationTooltip = ({label, entity, children, ...tooltipProps}: Props) => {\n const styles = useStyles();\n const safePromise = useSafePromise();\n const tenant = useSelector(mdm.selectors.getTenant);\n const dtssPath = useSelector(mdm.selectors.getDtssPath) as string;\n const [isLoading, setIsLoading] = useState(false);\n const [secondaryLabel, setSecondaryLabel] = useState<string>(null);\n\n useEffect(() => {\n setSecondaryLabel(null);\n }, [entity]);\n\n const onOpen = useCallback(() => {\n if (entity?.entityUri && !isTempUri(entity?.entityUri) && isNil(secondaryLabel)) {\n const request = ifElse(\n isDataTenantEntity,\n (entity: ConnectionEntity) =>\n getDataTenantEntitySecondaryLabel({\n entityUri: entity.entityUri,\n dataTenant: entity.dataTenant,\n customerTenant: tenant,\n dtssPath\n }),\n (entity: ConnectionEntity) => getEntitySecondaryLabel(entity.entityUri)\n );\n\n setIsLoading(true);\n safePromise(request(entity))\n .then(({secondaryLabel}) => {\n setSecondaryLabel(secondaryLabel);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }\n }, [dtssPath, entity, tenant, safePromise, secondaryLabel]);\n\n const tooltipContent = (\n <div className={styles.tooltipContent}>\n <div className={styles.label}>{label}</div>\n {isLoading && <CircularProgress size={PROGRESS_ICON_SIZE} classes={{colorPrimary: styles.progress}} />}\n {secondaryLabel && <div className={styles.secondaryLabel}>{secondaryLabel}</div>}\n </div>\n );\n\n return (\n <Tooltip\n onOpen={onOpen}\n title={tooltipContent}\n disableFocusListener\n classes={{tooltip: styles.tooltip}}\n {...tooltipProps}\n >\n {children}\n </Tooltip>\n );\n};\n\nexport default RelationTooltip;\n","import {\n Connection,\n Metadata,\n getEntityType,\n getLabel,\n getEntityUriForLink,\n getRelationTypeLabelFromMetadata,\n TEntityType\n} from '@reltio/mdm-sdk';\n\nexport const useRelationInfo = (connection: Connection, metadata: Metadata) => {\n const {entity, relation} = connection;\n const entityType = getEntityType(metadata, entity?.entityType) as TEntityType;\n const entityLabel = getLabel(entity?.entityLabel) as string;\n const preparedUri = getEntityUriForLink({uri: entity?.entityUri, dataTenant: entity?.dataTenant}) as string;\n const relationLabel =\n relation?.relationLabel || (getRelationTypeLabelFromMetadata(metadata, relation?.relationType) as string);\n\n return {\n entityType,\n entityLabel,\n preparedUri,\n relationLabel\n };\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n container: {\n display: 'flex'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport Button, {ButtonProps} from '@mui/material/Button';\nimport {useStyles} from './styles';\n\ntype Props = {\n acceptRelation: () => void;\n ignoreRelation: () => void;\n};\n\nexport const SuggestedButtons = ({acceptRelation, ignoreRelation, ...props}: Props & ButtonProps) => {\n const styles = useStyles();\n return (\n <div className={styles.container}>\n <Button onClick={acceptRelation} variant=\"text\" color=\"primary\" {...props} style={{alignSelf: 'center'}}>\n {i18n.text('Accept')}\n </Button>\n <Button onClick={ignoreRelation} variant=\"text\" color=\"primary\" {...props} style={{alignSelf: 'center'}}>\n {i18n.text('Ignore')}\n </Button>\n </div>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n container: {\n display: 'flex',\n flexDirection: 'column',\n\n marginBottom: '2px'\n },\n row: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'row',\n minHeight: '24px',\n padding: '0 16px'\n },\n rowInactive: {\n background: theme.inactiveBackground\n },\n entityAvatar: {\n height: '12px',\n width: '12px',\n fontSize: '11px',\n marginRight: '8px'\n },\n entityLabelContainer: {\n textDecoration: 'none',\n cursor: 'pointer',\n paddingRight: '8px'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n relationLabel: {\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n editButtonsContent: {\n marginLeft: 'auto',\n flex: '0 0 40px'\n },\n editButtons: {\n padding: 0\n },\n removed: {\n color: theme.palette.text.secondary,\n textDecoration: 'line-through'\n },\n editedLabel: {\n fontStyle: 'italic',\n color: theme.palette.text.secondary,\n margin: '0 5px'\n }\n}));\n","import React, {memo, useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport mdm from '@reltio/mdm-module';\nimport Typography from '@mui/material/Typography';\nimport EditIcon from '@mui/icons-material/Edit';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport {Connection, Metadata, isActiveObject, checkRemoved, checkEdited, checkIgnored} from '@reltio/mdm-sdk';\nimport {EntityTypeIcon, EntityUriLink, SmallIconButtonWithTooltip} from '@reltio/components';\nimport RelationTooltip from '../RelationTooltip/RelationTooltip';\nimport {useRelationInfo} from '../../hooks/useRelationInfo';\nimport {checkRelationPermission} from '../../helpers/permissions';\nimport {SuggestedButtons} from '../SuggestedButtons/SuggestedButtons';\nimport {useStyles} from './styles';\n\ntype Props = {\n connection: Connection;\n onRemoveRelation: (relationUri: string) => void;\n onEditRelation: (connection: Connection) => void;\n onAcceptRelation?: (connection: Connection) => void;\n onIgnoreRelation?: (connection: Connection) => void;\n metadata: Metadata;\n showControls: boolean;\n renderRelationArrowButton?: () => React.ReactNode;\n};\n\nconst EditableRelationItem = memo(\n ({\n connection,\n metadata,\n showControls,\n onRemoveRelation,\n onEditRelation,\n onAcceptRelation,\n onIgnoreRelation,\n renderRelationArrowButton\n }: Props) => {\n const styles = useStyles();\n\n const {entity, relation} = connection;\n const removed = checkRemoved(connection);\n const edited = checkEdited(connection);\n const ignored = checkIgnored(connection);\n const {entityType, entityLabel, preparedUri, relationLabel} = useRelationInfo(connection, metadata);\n const isActive = isActiveObject(relation) && isActiveObject(entity);\n const mode = useSelector(mdm.selectors.getMode);\n const {canRemove, canUpdate} = checkRelationPermission({\n mode,\n onRemoveRelation,\n onEditRelation,\n metadata,\n connection\n });\n\n const handleRemoveRelation = useCallback(\n () => onRemoveRelation(connection.relation.relationUri),\n [onRemoveRelation, connection]\n );\n\n const handleEditRelation = useCallback(() => onEditRelation(connection), [onEditRelation, connection]);\n\n const handleAcceptRelation = useCallback(() => {\n onAcceptRelation(connection);\n }, [onAcceptRelation, connection]);\n\n const handleIgnoreRelation = useCallback(() => onIgnoreRelation(connection), [onIgnoreRelation, connection]);\n\n const editButtonsContent =\n (canRemove || canUpdate) && showControls && !connection.suggested ? (\n <>\n {canUpdate && (\n <SmallIconButtonWithTooltip\n icon={EditIcon}\n size=\"XS\"\n onClick={handleEditRelation}\n tooltipTitle={i18n.text('Edit')}\n />\n )}\n {canRemove && (\n <SmallIconButtonWithTooltip\n icon={DeleteIcon}\n size=\"XS\"\n onClick={handleRemoveRelation}\n tooltipTitle={i18n.text('Remove')}\n />\n )}\n </>\n ) : undefined;\n\n const suggustedButtonsContent = connection.suggested ? (\n <SuggestedButtons\n acceptRelation={handleAcceptRelation}\n ignoreRelation={handleIgnoreRelation}\n size=\"small\"\n disabled={ignored}\n />\n ) : undefined;\n const captionText = ignored ? i18n.text('ignored') : i18n.text('edited');\n return (\n <div\n className={classnames(\n styles.container,\n {[styles.rowInactive]: !isActive},\n {[styles.removed]: removed || ignored}\n )}\n >\n <div className={styles.row}>\n {renderRelationArrowButton && renderRelationArrowButton()}\n <EntityTypeIcon className={styles.entityAvatar} entityType={entityType} />\n <EntityUriLink value={preparedUri} className={styles.entityLabelContainer}>\n <RelationTooltip label={entityLabel} entity={entity}>\n <span className={styles.entityLabel}>{entityLabel}</span>\n </RelationTooltip>\n {(edited || ignored) && (\n <Typography variant=\"caption\" className={styles.editedLabel}>\n ({captionText})\n </Typography>\n )}\n {relationLabel && <span className={styles.relationLabel}>{`, ${relationLabel}`}</span>}\n </EntityUriLink>\n\n <div className={styles.editButtonsContent}>{editButtonsContent}</div>\n {suggustedButtonsContent}\n </div>\n </div>\n );\n }\n);\n\nEditableRelationItem.displayName = 'EditableRelationItem';\n\nexport default EditableRelationItem;\n","import {checkMetadataForDelete, checkMetadataForUpdate, checkRemoved, getRelationType, Mode} from '@reltio/mdm-sdk';\n\nexport const checkRelationPermission = ({metadata, mode, connection, onRemoveRelation, onEditRelation}) => {\n const isEditableMode = mode === Mode.Editing || mode === Mode.Suggesting;\n if (isEditableMode && connection) {\n const {\n relation: {relationType}\n } = connection;\n const isRemoved = checkRemoved(connection);\n const relationTypeMetadata = getRelationType(metadata, relationType);\n const canRemove = onRemoveRelation && !isRemoved && checkMetadataForDelete(mode, relationTypeMetadata);\n const canUpdate = onEditRelation && !isRemoved && checkMetadataForUpdate(mode, relationTypeMetadata);\n return {canRemove, canUpdate};\n } else {\n return {canRemove: false, canUpdate: false};\n }\n};\n","import {prop, when} from 'ramda';\nimport {Directions, wrapInArrayIfNeeded, InOutRelation, isObject, ComplexInOutRelationItem} from '@reltio/mdm-sdk';\n\nconst getUri: (relation: string | ComplexInOutRelationItem) => string = when(isObject, prop('uri'));\n\nexport const getFirstRelationTypeObject = (inRelations: InOutRelation, outRelations: InOutRelation) => {\n const prepareRelation = (direction: string, relations: InOutRelation) => {\n const relationsArr = relations ? wrapInArrayIfNeeded(relations) : [];\n return relationsArr.map((relation) => ({\n type: getUri(relation),\n direction: direction === Directions.IN ? Directions.IN : Directions.OUT\n }));\n };\n return prepareRelation(Directions.IN, inRelations).concat(prepareRelation(Directions.OUT, outRelations))[0];\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n arrowIcon: {\n fontSize: '16px',\n marginRight: '6px'\n }\n});\n","import React from 'react';\nimport ArrowRightIcon from '@mui/icons-material/ArrowRight';\nimport ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';\nimport {checkNew, Connection, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\ntype Props = {\n onClick: () => void;\n connection: Connection;\n config: RelationsViewConfig;\n showSecondLevel: boolean;\n};\n\nexport const RelationArrowButton = ({onClick, connection, config, showSecondLevel}: Props) => {\n const styles = useStyles();\n const {parentEntityUri} = connection;\n const {contentSecondLevel} = config;\n\n const props = {\n onClick,\n className: styles.arrowIcon\n };\n\n if (parentEntityUri || !contentSecondLevel || checkNew(connection)) {\n return null;\n }\n\n return showSecondLevel ? <ArrowDropDownIcon {...props} /> : <ArrowRightIcon {...props} />;\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n row: {\n display: 'flex',\n alignItems: 'center',\n width: '100%'\n },\n secondLevelContent: {\n paddingLeft: '24px'\n }\n});\n","import React, {useContext, useMemo} from 'react';\nimport {Connection, ActivityFilter, getEntitiesMapForConnections, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {useSecondLevelConnections} from '../../hooks/useSecondLevelConnections';\nimport {RelationArrowButton} from '../RelationArrowButton/RelationArrowButton';\nimport {RelationsContent} from '../RelationsContent/RelationsContent';\nimport {useStyles} from './styles';\nimport {RelationsViewStateContext} from '../../contexts/RelationsViewStateContext';\nimport {EntitiesMapContext} from '@reltio/components';\n\ntype Props = {\n config: RelationsViewConfig;\n connection: Connection;\n children: (render: () => React.ReactNode) => React.ReactNode;\n};\n\nexport const SecondLevelWrapper = ({config, connection, children}: Props) => {\n const styles = useStyles();\n\n const {showInactive} = useContext(RelationsViewStateContext);\n\n const {\n connections,\n showSecondLevel,\n toggleShowSecondLevel,\n loadRelations,\n loading,\n total\n } = useSecondLevelConnections({\n config,\n connection,\n relationActivityFilter: showInactive ? ActivityFilter.ALL : ActivityFilter.ACTIVE_ONLY\n });\n\n const entitiesMap = useMemo(() => getEntitiesMapForConnections(connections), [connections]);\n\n const renderRelationArrowButton = () => {\n return (\n <RelationArrowButton\n onClick={toggleShowSecondLevel}\n connection={connection}\n config={config}\n showSecondLevel={showSecondLevel}\n />\n );\n };\n\n return (\n <>\n {children(renderRelationArrowButton)}\n {showSecondLevel && (\n <EntitiesMapContext.Provider value={entitiesMap}>\n <div className={styles.secondLevelContent}>\n <RelationsContent\n isLoading={loading}\n config={config}\n loadRelations={loadRelations}\n connections={connections}\n total={total}\n parentEntityUri={connection.entity.entityUri}\n />\n </div>\n </EntitiesMapContext.Provider>\n )}\n </>\n );\n};\n","import {useState, useCallback} from 'react';\nimport {useSelector, useDispatch} from 'react-redux';\nimport {\n Connection,\n getRelationsForEntity,\n ActivityFilter,\n GlobalSearchRequestOptions,\n RelationsViewConfig\n} from '@reltio/mdm-sdk';\nimport mdmModule, {profile} from '@reltio/mdm-module';\n\ntype Params = {\n config: RelationsViewConfig;\n connection: Connection;\n relationActivityFilter: ActivityFilter;\n};\n\nexport const useSecondLevelConnections = ({config, connection, relationActivityFilter}: Params) => {\n const dispatch = useDispatch();\n\n const [showSecondLevel, setShowSecondLevel] = useState(false);\n const [loading, setLoading] = useState(false);\n\n const {contentSecondLevel} = config;\n const {entity} = connection;\n\n const connections =\n (useSelector((state) =>\n mdmModule.selectors.getConnectionsWithDraftsByViewId(state, config.id, entity.entityUri)\n ) as Connection[]) || [];\n\n const total = useSelector((state) => mdmModule.selectors.getTotalByViewId(state, config.id, entity.entityUri));\n const {activityFilter}: GlobalSearchRequestOptions =\n useSelector(mdmModule.selectors.getGlobalSearchRequestOptions) || {};\n\n const loadRelations = useCallback(() => {\n const requestConfig = {\n ...contentSecondLevel,\n returnObjects: true,\n returnDates: true,\n activeness: {\n relation: relationActivityFilter || ActivityFilter.ALL,\n entity: activityFilter\n }\n };\n\n setLoading(true);\n\n getRelationsForEntity(entity.entityUri, [requestConfig]).then((response) => {\n const {connections, total} = response[0];\n\n if (connections) {\n dispatch(\n profile.relations.actions.secondLevelRelationsLoaded({\n connections,\n parentEntityUri: entity.entityUri,\n id: config.id,\n total\n })\n );\n }\n\n setLoading(false);\n });\n }, [config.id, contentSecondLevel, dispatch, entity.entityUri, activityFilter, relationActivityFilter]);\n\n const toggleShowSecondLevel = useCallback(() => {\n if (!showSecondLevel && !connection.connections) {\n loadRelations();\n }\n\n setShowSecondLevel((show) => !show);\n }, [loadRelations, connection.connections, showSecondLevel]);\n\n return {connections, showSecondLevel, toggleShowSecondLevel, loadRelations, loading, total};\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n moreButton: {\n padding: '9px 16px 9px 12px',\n backgroundColor: 'rgba(98, 2, 238, 0)',\n marginBottom: '4px',\n marginLeft: '16px'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n divider: {\n margin: '0 0 8px',\n borderColor: 'rgba(0,0,0,0.12)'\n },\n noData: {\n fontSize: '13px',\n color: theme.palette.text.secondary,\n padding: '8px 16px'\n }\n}));\n","import React, {useCallback} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {pipe, partition, evolve, always, omit} from 'ramda';\nimport i18n from 'ui-i18n';\nimport Button from '@mui/material/Button';\nimport AddIcon from '@mui/icons-material/Add';\nimport Divider from '@mui/material/Divider';\nimport Typography from '@mui/material/Typography';\nimport {\n Connection,\n isTempUri,\n Mode,\n createNewConnectionWithDefaultRelationType,\n checkNew,\n RelationsViewConfig,\n getRelationUriFromConnection,\n getEntityUriFromConnection\n} from '@reltio/mdm-sdk';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {RelationEditor} from '@reltio/components';\nimport EditableRelationItem from '../EditableRelationItem/EditableRelationItem';\nimport {getFirstRelationTypeObject} from '../../helpers/relation';\nimport {SecondLevelWrapper} from '../SecondLevelWrapper/SecondLevelWrapper';\nimport {useStyles} from './styles';\n\nexport type Props = {\n className?: string;\n noDataText: string;\n connections: Array<Connection>;\n config: RelationsViewConfig;\n mode: Mode;\n parentEntityUri?: string;\n};\n\nconst RelationsEditableContent = ({className, connections = [], config, mode, noDataText, parentEntityUri}: Props) => {\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const relationToAdd = useSelector((state) => mdmModule.selectors.getRelationToAddByViewId(state, config.id));\n const relationsToEdit = useSelector((state) => mdmModule.selectors.getRelationsToEditByViewId(state, config.id));\n const entity = useSelector(mdmModule.selectors.getEntity);\n const checkIfCanAddRelations = useSelector((state) =>\n mdmModule.selectors.getCheckIfCanAddRelations(state, config.content)\n );\n\n const dispatch = useDispatch();\n const styles = useStyles();\n\n const onAddRelation = useCallback(() => {\n const newConnection = createNewConnectionWithDefaultRelationType({config, mode, metadata, parentEntityUri});\n pipe(profile.relations.actions.openRelationEditor(config.id), dispatch)(newConnection);\n }, [config, mode, metadata, dispatch, parentEntityUri]);\n\n const onRemoveRelation = useCallback(\n (relationUri) => {\n dispatch(profile.relations.actions.closeRelationEditor(config.id, relationUri));\n dispatch(profile.relations.actions.removeRelation(config.id, relationUri));\n const connectionToRemove = connections.find(\n (connection) => getRelationUriFromConnection(connection) === relationUri\n );\n const entityUri = getEntityUriFromConnection(connectionToRemove);\n if (isTempUri(entityUri)) {\n dispatch(profile.modifiedEntities.actions.entityDeleted(entityUri));\n }\n },\n [config, connections, dispatch]\n );\n const content = config.content;\n const defaultRelationTypeObject = getFirstRelationTypeObject(content.inRelations, content.outRelations);\n const onAcceptRelation = useCallback(\n (connection) => {\n const connectionWithDefaultRelationType = pipe(\n omit(['suggested']),\n evolve({\n relation: {\n relationType: always(defaultRelationTypeObject.type),\n object: evolve({type: always(defaultRelationTypeObject.type), attributes: always(null)})\n }\n })\n )(connection);\n dispatch(profile.relations.actions.addRelation(config.id, connectionWithDefaultRelationType));\n },\n [dispatch, config, defaultRelationTypeObject]\n );\n\n const onIgnoreRelation = useCallback(\n (connection) => {\n dispatch(\n profile.relations.actions.ignoreRelation(config.id, {\n relationType: defaultRelationTypeObject.type,\n relationDirection: defaultRelationTypeObject.direction,\n entityUri: connection.entity.entityUri,\n relationUri: connection.relation.relationUri\n })\n );\n },\n [dispatch, config, defaultRelationTypeObject]\n );\n\n const [newConnections, currentConnections] = partition(checkNew, connections);\n const canAddRelations = entity && checkIfCanAddRelations;\n\n const isEmptyRelationList = newConnections.length === 0 && currentConnections.length === 0;\n\n const getRelationEditableContent = (connection: Connection) => {\n const openedRelation = relationsToEdit.find(\n (openedRelation) => openedRelation?.relation?.relationUri === connection?.relation?.relationUri\n );\n const showControls = !config.allowOnlyCreateNew || checkNew(connection);\n const itemKey = `${connection?.relation?.relationUri}-${connection?.relation?.direction}`;\n return (\n <SecondLevelWrapper config={config} connection={connection} key={itemKey}>\n {(renderRelationArrowButton) => {\n return openedRelation ? (\n <RelationEditor connection={openedRelation} config={config} mode={mode} metadata={metadata} />\n ) : (\n <EditableRelationItem\n renderRelationArrowButton={renderRelationArrowButton}\n connection={connection}\n metadata={metadata}\n showControls={showControls}\n onRemoveRelation={onRemoveRelation}\n onEditRelation={pipe(profile.relations.actions.openRelationEditor(config.id), dispatch)}\n onAcceptRelation={onAcceptRelation}\n onIgnoreRelation={onIgnoreRelation}\n />\n );\n }}\n </SecondLevelWrapper>\n );\n };\n\n const shouldShowAddRelationButton =\n canAddRelations && (!relationToAdd || (relationToAdd && relationToAdd.parentEntityUri === parentEntityUri));\n\n const shouldShowRelationEditorToAdd = relationToAdd && relationToAdd.parentEntityUri === parentEntityUri;\n\n return (\n <div className={className}>\n {shouldShowAddRelationButton && (\n <Button color=\"primary\" onClick={onAddRelation} className={styles.moreButton}>\n <AddIcon classes={{root: styles.icon}} />\n <div className={styles.buttonLabel}>{i18n.text('Add')}</div>\n </Button>\n )}\n {shouldShowRelationEditorToAdd && (\n <RelationEditor connection={relationToAdd} config={config} mode={mode} metadata={metadata} />\n )}\n {newConnections.map(getRelationEditableContent)}\n {newConnections.length > 0 && currentConnections.length > 0 && <Divider className={styles.divider} />}\n {currentConnections.map(getRelationEditableContent)}\n {isEmptyRelationList && <Typography className={styles.noData}>{noDataText}</Typography>}\n </div>\n );\n};\n\nexport default RelationsEditableContent;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n attributesList: {\n paddingLeft: '46px',\n paddingRight: '16px',\n marginBottom: '10px',\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0\n }\n}));\n","import React, {useContext, useEffect, useMemo} from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {\n AttributeType,\n CollaborationObjectTypes,\n Connection,\n createRelatedObjectUris,\n Entity,\n getActivenessAttributes,\n getAttributesListForReadMode,\n getAttributeValuesUris,\n getRelationAttributesList,\n isEmptyValue,\n Metadata,\n getRelationAttributesFromConnection\n} from '@reltio/mdm-sdk';\nimport {CollaborationContext, ReadOnlyAttributesList, RelatedObjectUrisContext} from '@reltio/components';\nimport {useStyles} from './styles';\nimport {isEmpty} from 'ramda';\n\ntype Props = {\n connection: Connection;\n className?: string;\n};\n\nexport const RelationAttributes = ({connection, className}: Props) => {\n const styles = useStyles();\n\n const {relation} = connection;\n const currentEntityUri = useSelector(mdmModule.selectors.getEntityUriWithDataTenant);\n\n const metadata = useSelector(mdmModule.selectors.getMetadata) as Metadata;\n\n const firstLevelRelationAttrTypes = useMemo(\n () => getRelationAttributesList(metadata, relation?.relationType) as AttributeType[],\n [relation?.relationType, metadata]\n );\n\n const attributeListEntity = useMemo(\n () => ({\n attributes: {\n ...getRelationAttributesFromConnection(connection)\n },\n ...getActivenessAttributes(connection?.relation || {})\n }),\n [connection]\n );\n\n const attributesList = useMemo(\n () => getAttributesListForReadMode(firstLevelRelationAttrTypes, attributeListEntity as Entity),\n [firstLevelRelationAttrTypes, attributeListEntity]\n );\n\n const showAttributesList = attributesList.filter(({values}) => !isEmptyValue(values)).length > 0;\n\n const objectIds = useMemo(() => getAttributeValuesUris(attributeListEntity.attributes), [attributeListEntity]);\n\n const {getCommentsCount} = useContext(CollaborationContext);\n useEffect(() => {\n !isEmpty(objectIds) && getCommentsCount(objectIds);\n }, [getCommentsCount, objectIds]);\n\n const additionalRelatedObjectUris = useMemo(\n () => createRelatedObjectUris(CollaborationObjectTypes.RELATION, {entityUri: currentEntityUri, connection}),\n [connection, currentEntityUri]\n );\n\n return showAttributesList ? (\n <RelatedObjectUrisContext.Provider value={additionalRelatedObjectUris}>\n <ReadOnlyAttributesList\n className={classnames(styles.attributesList, className)}\n entity={attributeListEntity}\n attrTypes={firstLevelRelationAttrTypes}\n />\n </RelatedObjectUrisContext.Provider>\n ) : (\n <div className={classnames(styles.attributesList, className)}>{i18n.text('No attributes')}</div>\n );\n};\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\nimport InfoIconSelected from '@mui/icons-material/InfoRounded';\nimport InfoIcon from '@mui/icons-material/InfoOutlined';\n\ntype Props = {\n show: boolean;\n onToggle: () => void;\n className?: string;\n};\n\nexport const ShowDetailsButton = ({show, onToggle, className}: Props) => {\n return (\n <SmallIconButtonWithTooltip\n className={className}\n tooltipTitle={\n show\n ? i18n.text('Hide attributes of the relationship')\n : i18n.text('Show attributes of the relationship')\n }\n tooltipPlacement=\"bottom-end\"\n size=\"XXS\"\n icon={show ? InfoIconSelected : InfoIcon}\n onClick={onToggle}\n />\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n container: {\n display: 'flex',\n flexDirection: 'column',\n paddingBottom: '2px'\n },\n row: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'row',\n minHeight: '16px',\n padding: '3px 11px 3px 16px'\n },\n rowInactive: {\n background: theme.inactiveBackground\n },\n entityAvatar: {\n height: '12px',\n width: '12px',\n fontSize: '11px',\n marginRight: '8px'\n },\n entityLabelContainer: {\n textDecoration: 'none',\n cursor: 'pointer',\n wordBreak: 'break-all',\n paddingRight: '8px'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n relationLabel: {\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n showDetails: {\n marginLeft: 'auto',\n paddingRight: '5px'\n },\n attributesList: {\n paddingLeft: '46px',\n marginBottom: '10px',\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0\n },\n suggestedWrapper: {\n backgroundColor: theme.suggested\n },\n commentsContainer: {\n marginLeft: 'auto',\n alignItems: 'center',\n '& + $showDetails': {\n marginLeft: '4px'\n }\n },\n additionalButtonsWrapper: {\n marginLeft: 'auto',\n display: 'flex'\n },\n labelWrapper: {\n display: 'flex',\n alignItems: 'center'\n }\n}));\n","import React, {memo, useState} from 'react';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport {\n Connection,\n Metadata,\n isActiveObject,\n createRelatedObjectUris,\n CollaborationObjectTypes,\n getConnectionRelationUriForLink\n} from '@reltio/mdm-sdk';\nimport {isEmpty} from 'ramda';\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA, CommentsContainer, EntityTypeIcon, EntityUriLink} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport RelationTooltip from '../../RelationTooltip/RelationTooltip';\nimport {RelationAttributes} from '../RelationAttributes/RelationAttributes';\nimport {ShowDetailsButton} from '../ShowDetailsButton/ShowDetailsButton';\nimport {useRelationInfo} from '../../../hooks/useRelationInfo';\nimport {useStyles} from './styles';\nimport {SuggestedButtons} from '../../SuggestedButtons/SuggestedButtons';\n\ntype Props = {\n connection: Connection;\n acceptRelation?: (connection: Connection) => () => void;\n ignoreRelation?: (connection: Connection) => () => void;\n renderRelationArrowButton: () => React.ReactNode;\n};\n\nconst RelationItem = memo(({connection, renderRelationArrowButton, acceptRelation, ignoreRelation}: Props) => {\n const styles = useStyles();\n const isSuggested = connection.suggested;\n const {entity, relation} = connection;\n const [showDetails, setShowDetails] = useState(false);\n\n const metadata = useSelector(mdmModule.selectors.getMetadata) as Metadata;\n const {entityType, entityLabel, preparedUri, relationLabel} = useRelationInfo(connection, metadata);\n const isActive = isActiveObject(relation) && isActiveObject(entity);\n\n const toggleShowDetails = () => {\n setShowDetails((show) => !show);\n };\n const currentEntityUri = useSelector(mdmModule.selectors.getEntityUriWithDataTenant);\n const relatedObjectUris =\n (entity &&\n relation &&\n createRelatedObjectUris(CollaborationObjectTypes.RELATION, {\n entityUri: currentEntityUri,\n connection\n })) ||\n [];\n return (\n <div\n className={classnames(\n styles.container,\n {[styles.rowInactive]: !isActive},\n {[styles.suggestedWrapper]: isSuggested}\n )}\n >\n <div className={classnames(styles.row, COMMENTS_CONTAINER_VISIBILITY_AREA)}>\n {renderRelationArrowButton && renderRelationArrowButton()}\n <div className={styles.labelWrapper}>\n <EntityTypeIcon className={styles.entityAvatar} entityType={entityType} />\n <EntityUriLink value={preparedUri} className={styles.entityLabelContainer}>\n <RelationTooltip label={entityLabel} entity={entity}>\n <span className={styles.entityLabel}>{entityLabel}</span>\n </RelationTooltip>\n {relationLabel && <span className={styles.relationLabel}>{`, ${relationLabel}`}</span>}\n </EntityUriLink>\n </div>\n <div className={styles.additionalButtonsWrapper}>\n {!isEmpty(relatedObjectUris) && (\n <CommentsContainer\n className={styles.commentsContainer}\n uri={getConnectionRelationUriForLink(relation)}\n relatedObjectUris={relatedObjectUris}\n objectType={CollaborationObjectTypes.RELATION}\n allowOnlyOneComment\n />\n )}\n {isSuggested && (\n <SuggestedButtons\n size=\"small\"\n acceptRelation={acceptRelation(connection)}\n ignoreRelation={ignoreRelation(connection)}\n />\n )}\n {!isSuggested && (\n <ShowDetailsButton\n show={showDetails}\n onToggle={toggleShowDetails}\n className={styles.showDetails}\n />\n )}\n </div>\n </div>\n {showDetails && <RelationAttributes connection={connection} />}\n </div>\n );\n});\n\nRelationItem.displayName = 'RelationItem';\n\nexport default RelationItem;\n","import {pluck, mean, pipe, defaultTo} from 'ramda';\nimport {Rating} from '@reltio/mdm-sdk';\n\nexport const sortRatingsByTime = (ratings: Rating[]) => {\n return [...ratings].sort((a, b) => {\n const timestampA = new Date(a.timestamp).getTime();\n const timestampB = new Date(b.timestamp).getTime();\n return timestampB - timestampA;\n });\n};\n\nexport const calcAverageRating = (ratings: Rating[]) => {\n const averageRating: number = pipe(pluck('value'), mean, defaultTo(0))(ratings);\n return averageRating.toFixed(1);\n};\n\nexport const getCountOfLikes = (ratings: Rating[]) => {\n return ratings.filter((rating) => rating.value === 5).length;\n};\n\nexport const getCountOfDislikes = (ratings: Rating[]) => {\n return ratings.filter((rating) => rating.value === 1).length;\n};\n\nexport const calcRatingsScale = (ratings: Rating[]) => {\n if (ratings.length === 0) {\n return {percentOfLikes: 0, percentOfDislikes: 0};\n }\n\n const percentOfLikes = (getCountOfLikes(ratings) / ratings.length) * 100;\n const formattedPercentOfLikes = parseFloat(Number(percentOfLikes).toFixed(1));\n const formattedPercentOfDislikes = parseFloat(Number(100 - formattedPercentOfLikes).toFixed(1));\n\n return {percentOfLikes: formattedPercentOfLikes, percentOfDislikes: formattedPercentOfDislikes};\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n wrapper: {\n display: 'flex',\n flexDirection: 'column',\n padding: 12,\n width: 355,\n gap: 12\n },\n info: {\n background: 'rgba(0, 0, 0, 0.05)',\n display: 'flex',\n padding: '6px 12px',\n fontSize: 13,\n gap: 16\n },\n axis: {\n position: 'relative',\n display: 'flex',\n justifyContent: 'space-between',\n fontSize: 12,\n color: theme.palette.text.secondary,\n paddingTop: 4,\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n left: 0,\n background: theme.palette.divider,\n width: '1px',\n height: '4px'\n },\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n right: 0,\n background: theme.palette.divider,\n width: '1px',\n height: '4px'\n }\n },\n scaleHistory: {\n display: 'flex',\n justifyContent: 'space-between'\n },\n title: {\n fontSize: 13,\n display: 'flex',\n alignItems: 'center',\n color: theme.palette.text.secondary,\n gap: 8,\n '& .value': {\n color: theme.palette.text.primary\n },\n '& .boldValue': {\n color: theme.palette.text.primary,\n fontWeight: 700\n }\n },\n greenBadge: {\n width: 12,\n height: 12,\n background: 'rgb(151, 192, 97)'\n },\n redBadge: {\n width: 12,\n height: 12,\n background: 'rgb(255, 112, 112)'\n },\n scale: {\n width: '100%',\n height: 16,\n background: 'rgba(255, 112, 112)',\n '&.empty': {\n background: '#F9F9F9'\n }\n },\n scaleBar: {\n background: 'rgba(151,192,97)'\n },\n icon: {\n width: '14px',\n height: '14px',\n color: 'rgba(0,0,0,0.54)'\n },\n ratingsList: {\n borderTop: '1px solid #ccc',\n borderBottom: '1px solid #ccc',\n padding: '12px 0',\n maxHeight: 140,\n boxSizing: 'border-box',\n overflow: 'auto'\n },\n rating: {\n display: 'flex',\n padding: '4px 0px',\n alignItems: 'center'\n },\n avatar: {\n width: 24,\n height: 24,\n marginRight: 12,\n '& .icon': {\n fontSize: 18\n }\n },\n userInfo: {\n overflow: 'hidden'\n },\n user: {\n fontSize: 13,\n color: theme.palette.text.primary,\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n ratingDateWrapper: {\n display: 'flex',\n alignSelf: 'start',\n marginLeft: 'auto'\n },\n ratingDate: {\n fontSize: 10,\n color: theme.palette.text.secondary,\n marginRight: 4\n },\n sourcesWrapper: {\n display: 'flex',\n alignItems: 'center',\n gap: 4\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {Crosswalk, Rating} from '@reltio/mdm-sdk';\nimport {ColoredSourceIcon, PopupWithArrow} from '@reltio/components';\nimport PersonIcon from '@mui/icons-material/Person';\nimport ThumbUpIcon from '@mui/icons-material/ThumbUp';\nimport ThumbDownIcon from '@mui/icons-material/ThumbDown';\nimport Avatar from '@mui/material/Avatar';\nimport LinearProgress from '@mui/material/LinearProgress';\nimport {\n calcAverageRating,\n calcRatingsScale,\n getCountOfDislikes,\n getCountOfLikes,\n sortRatingsByTime\n} from '../../../helpers/ratings';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n open: boolean;\n ratings: Rating[];\n crosswalks: Crosswalk[];\n className?: string;\n anchorEl: HTMLElement | null;\n onClose: () => void;\n};\n\nexport const RatingsPopup = ({ratings, crosswalks, open, anchorEl, onClose}: Props) => {\n const styles = useStyles();\n\n const sortedRatings = sortRatingsByTime(ratings);\n const {percentOfLikes, percentOfDislikes} = calcRatingsScale(ratings);\n const agreeCount = `${getCountOfLikes(ratings)} (${percentOfLikes}%)`;\n const disagreeCount = `${getCountOfDislikes(ratings)} (${percentOfDislikes}%)`;\n\n return (\n <PopupWithArrow open={open} anchorEl={anchorEl} onClose={onClose} placement=\"top-start\" transition>\n <div className={styles.wrapper}>\n <div className={styles.info}>\n <span className={styles.title}>\n {i18n.text('Score:')}\n <span className=\"boldValue\">{calcAverageRating(ratings)}</span>\n </span>\n <span className={styles.title}>\n {i18n.text('No. of responses:')}\n <span className=\"value\">{ratings.length}</span>\n </span>\n </div>\n <div>\n <LinearProgress\n variant=\"determinate\"\n value={percentOfLikes}\n classes={{bar: styles.scaleBar}}\n className={classnames(styles.scale, {empty: !ratings.length})}\n />\n <div className={styles.axis}>\n <span>0</span>\n <span>100%</span>\n </div>\n </div>\n <div className={styles.scaleHistory}>\n <span className={styles.title}>\n <div className={styles.greenBadge} />\n <ThumbUpIcon className={styles.icon} />\n {i18n.text('Agree:')}\n <span className=\"value\">{agreeCount}</span>\n </span>\n <span className={styles.title}>\n <div className={styles.redBadge} />\n <ThumbDownIcon className={styles.icon} />\n {i18n.text('Disagree:')}\n <span className=\"value\">{disagreeCount}</span>\n </span>\n </div>\n {!!sortedRatings.length && (\n <div className={styles.ratingsList} data-reltio-id=\"reltio-ratings-list\">\n {sortedRatings.map(({user, comment, timestamp, value}, i) => (\n <div key={i} className={styles.rating} data-reltio-id=\"reltio-rating-item\">\n <Avatar className={styles.avatar}>\n <PersonIcon className=\"icon\" />\n </Avatar>\n <div className={styles.userInfo}>\n <div className={styles.user}>{user}</div>\n <div className={styles.title}>{comment || i18n.text('No comment')}</div>\n </div>\n <div className={styles.ratingDateWrapper}>\n <span className={styles.ratingDate}>{i18n.date(timestamp, 'L LT')}</span>\n {value === 1 ? (\n <ThumbDownIcon className={styles.icon} data-reltio-id=\"reltio-dislike-icon\" />\n ) : (\n <ThumbUpIcon className={styles.icon} data-reltio-id=\"reltio-like-icon\" />\n )}\n </div>\n </div>\n ))}\n </div>\n )}\n <div className={styles.sourcesWrapper}>\n <span className={styles.title}>{i18n.text('Sources:')}</span>\n {crosswalks.map((crosswalk, i) => (\n <ColoredSourceIcon key={i} crosswalk={crosswalk} />\n ))}\n </div>\n </div>\n </PopupWithArrow>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n wrapper: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-end',\n width: 128,\n cursor: 'pointer'\n },\n averageRating: {\n marginBottom: 4,\n fontSize: '16px',\n letterSpacing: '0.15px',\n lineHeight: '24px',\n color: theme.palette.text.primary\n },\n counts: {\n display: 'flex',\n marginTop: 4,\n gap: 32\n },\n count: {\n display: 'flex',\n alignItems: 'center',\n color: theme.palette.text.secondary,\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '15px'\n },\n icon: {\n marginRight: '4px',\n width: '14px',\n height: '14px',\n color: theme.palette.text.secondary\n },\n scale: {\n height: 3,\n width: '100%',\n background: 'rgba(255, 112, 112)',\n '&.empty': {\n background: '#F9F9F9'\n }\n },\n scaleBar: {\n background: 'rgba(151,192,97)'\n }\n}));\n","import React, {useRef, useState} from 'react';\nimport classnames from 'classnames';\nimport {Crosswalk, Rating} from '@reltio/mdm-sdk';\nimport Typography from '@mui/material/Typography';\nimport ThumbUpIcon from '@mui/icons-material/ThumbUp';\nimport ThumbDownIcon from '@mui/icons-material/ThumbDown';\nimport LinearProgress from '@mui/material/LinearProgress';\nimport {RatingsPopup} from '../RatingsPopup/RatingsPopup';\nimport {calcAverageRating, calcRatingsScale, getCountOfDislikes, getCountOfLikes} from '../../../helpers/ratings';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n ratings: Rating[];\n crosswalks: Crosswalk[];\n className?: string;\n};\n\nexport const Ratings = ({ratings, crosswalks, className}: Props) => {\n const styles = useStyles();\n const ratingsRef = useRef();\n const [open, setOpen] = useState(false);\n const {percentOfLikes} = calcRatingsScale(ratings);\n\n return (\n <>\n <div\n data-reltio-id=\"reltio-ratings\"\n className={classnames(styles.wrapper, className)}\n ref={ratingsRef}\n onClick={() => setOpen(true)}\n >\n <Typography className={styles.averageRating}>{calcAverageRating(ratings)}</Typography>\n <LinearProgress\n variant=\"determinate\"\n value={percentOfLikes}\n classes={{bar: styles.scaleBar}}\n className={classnames(styles.scale, {empty: !ratings.length})}\n />\n <div className={styles.counts}>\n <div className={styles.count}>\n <ThumbUpIcon className={styles.icon} />\n {getCountOfLikes(ratings)}\n </div>\n <div className={styles.count}>\n <ThumbDownIcon className={styles.icon} />\n {getCountOfDislikes(ratings)}\n </div>\n </div>\n </div>\n <RatingsPopup\n ratings={ratings}\n open={open}\n crosswalks={crosswalks}\n anchorEl={ratingsRef.current}\n onClose={() => setOpen(false)}\n />\n </>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n wrapper: {\n display: 'flex',\n marginLeft: -8,\n gap: 8\n },\n button: {\n minWidth: 0,\n padding: 8,\n fontSize: '14px',\n lineHeight: '16px',\n textTransform: 'none',\n color: theme.palette.text.secondary\n },\n isActive: {\n color: theme.palette.text.primary\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {Rating} from '@reltio/mdm-sdk';\nimport {DropDownMenuButton} from '@reltio/components';\nimport Button from '@mui/material/Button';\nimport ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';\nimport {useStyles} from './styles';\n\ntype Props = {\n ratings: Rating[];\n onAgree: () => void;\n onDisagree: (comment: string) => void;\n};\n\nexport const RatingsButtons = ({ratings, onAgree, onDisagree}: Props) => {\n const styles = useStyles();\n\n const username = useSelector(mdmModule.selectors.getUserName) as string;\n const ratingOfCurrentUser = ratings.find(({user}) => user === username);\n\n const menuItems = [\n {\n text: i18n.text('Has left the practice'),\n onClick: () => onDisagree(i18n.text('Has left the practice'))\n },\n {\n text: i18n.text('Has moved away'),\n onClick: () => onDisagree(i18n.text('Has moved away'))\n },\n {\n text: i18n.text('Has passed away'),\n onClick: () => onDisagree(i18n.text('Has passed away'))\n },\n {\n text: i18n.text('Has retired'),\n onClick: () => onDisagree(i18n.text('Has retired'))\n },\n {\n text: i18n.text('Other'),\n onClick: () => onDisagree(i18n.text('Other'))\n }\n ];\n\n return (\n <div className={styles.wrapper}>\n <Button\n onClick={onAgree}\n variant=\"text\"\n size=\"small\"\n className={classnames(styles.button, {\n [styles.isActive]: ratingOfCurrentUser?.value === 5\n })}\n >\n Agree\n </Button>\n <DropDownMenuButton\n buttonProps={{\n endIcon: <ArrowDropDownIcon />,\n variant: 'text',\n size: 'small',\n className: classnames(styles.button, {\n [styles.isActive]: ratingOfCurrentUser?.value === 1\n })\n }}\n buttonContent={ratingOfCurrentUser?.value === 1 ? ratingOfCurrentUser.comment : 'Disagree'}\n menuItems={menuItems}\n menuId=\"disagree-dropdown-menu-button\"\n />\n </div>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n wrapper: {\n padding: '3px 16px'\n },\n entityTypeIcon: {\n marginRight: '16px'\n },\n entityLabel: {\n color: theme.palette.primary.main,\n fontSize: '14px',\n lineHeight: '16px'\n },\n entityLabelContainer: {\n display: 'flex',\n wordBreak: 'break-all',\n textDecoration: 'none'\n },\n relationLabel: {\n color: theme.palette.text.secondary,\n fontSize: '14px',\n lineHeight: '16px'\n },\n ratings: {\n marginLeft: 'auto'\n },\n showDetailsButton: {\n marginLeft: '16px',\n marginTop: '8px'\n },\n relationAttributes: {\n paddingLeft: '60px'\n },\n suggestedWrapper: {\n padding: '6px 8px 6px 16px',\n backgroundColor: theme.suggested,\n minWidth: 'fit-content'\n },\n commentsContainer: {\n alignSelf: 'center',\n marginTop: '11px',\n '& + $ratings': {\n marginLeft: '16px'\n }\n },\n additionalButtonsWrapper: {\n marginLeft: 'auto',\n display: 'flex',\n alignItems: 'center'\n }\n}));\n","import React, {useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport {isEmpty} from 'ramda';\nimport {COMMENTS_CONTAINER_VISIBILITY_AREA, CommentsContainer, EntityTypeIcon, EntityUriLink} from '@reltio/components';\nimport {\n Metadata,\n Connection,\n rateRelation,\n createRelatedObjectUris,\n CollaborationObjectTypes,\n getConnectionRelationUriForLink\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport Box from '@mui/material/Box';\nimport RelationTooltip from '../../RelationTooltip/RelationTooltip';\nimport {RelationAttributes} from '../RelationAttributes/RelationAttributes';\nimport {ShowDetailsButton} from '../ShowDetailsButton/ShowDetailsButton';\nimport {Ratings} from '../Ratings/Ratings';\nimport {useRelationInfo} from '../../../hooks/useRelationInfo';\nimport {RatingsButtons} from '../RatingsButtons/RatingsButtons';\nimport {SuggestedButtons} from '../../SuggestedButtons/SuggestedButtons';\nimport {useStyles} from './styles';\n\ntype Props = {\n connection: Connection;\n loadRelations: () => void;\n acceptRelation?: (connection: Connection) => () => void;\n ignoreRelation?: (connection: Connection) => () => void;\n renderRelationArrowButton: () => React.ReactNode;\n showRating?: boolean;\n};\n\nexport const RelationComplexItem = ({\n connection,\n loadRelations,\n renderRelationArrowButton,\n acceptRelation,\n ignoreRelation,\n showRating\n}: Props) => {\n const styles = useStyles();\n const isSuggested = connection.suggested;\n\n const [showDetails, setShowDetails] = useState(false);\n\n const {entity, relation} = connection;\n const metadata = useSelector(mdmModule.selectors.getMetadata) as Metadata;\n const {entityLabel, entityType, preparedUri, relationLabel} = useRelationInfo(connection, metadata);\n const ratings = relation?.ratings || [];\n const crosswalks = relation?.object?.crosswalks || [];\n\n const toggleShowDetails = () => {\n setShowDetails((show) => !show);\n };\n\n const handleAgree = () => {\n rateRelation(relation?.relationUri, {\n comment: '',\n value: 5\n }).then(loadRelations);\n };\n\n const handleDisagree = (comment: string) => {\n rateRelation(relation?.relationUri, {\n comment,\n value: 1\n }).then(loadRelations);\n };\n const currentEntityUri = useSelector(mdmModule.selectors.getEntityUriWithDataTenant);\n const relatedObjectUris =\n (entity &&\n relation &&\n createRelatedObjectUris(CollaborationObjectTypes.RELATION, {\n entityUri: currentEntityUri,\n connection\n })) ||\n [];\n\n return (\n <div className={classnames(styles.wrapper, {[styles.suggestedWrapper]: isSuggested})}>\n <Box display=\"flex\" minHeight=\"44px\" className={COMMENTS_CONTAINER_VISIBILITY_AREA}>\n <Box display=\"flex\" alignItems=\"center\">\n <Box display=\"flex\" alignItems=\"center\">\n {renderRelationArrowButton && renderRelationArrowButton()}\n <EntityTypeIcon entityType={entityType} className={styles.entityTypeIcon} />\n </Box>\n <Box display=\"flex\" flexDirection=\"column\">\n <EntityUriLink value={preparedUri} className={styles.entityLabelContainer}>\n <RelationTooltip label={entityLabel} entity={entity}>\n <span className={styles.entityLabel}>{entityLabel}</span>\n </RelationTooltip>\n </EntityUriLink>\n {relationLabel && <span className={styles.relationLabel}>{relationLabel}</span>}\n {!isSuggested && showRating && (\n <RatingsButtons ratings={ratings} onAgree={handleAgree} onDisagree={handleDisagree} />\n )}\n </Box>\n </Box>\n <div className={styles.additionalButtonsWrapper}>\n {!isEmpty(relatedObjectUris) && (\n <CommentsContainer\n className={styles.commentsContainer}\n uri={getConnectionRelationUriForLink(relation)}\n relatedObjectUris={relatedObjectUris}\n objectType={CollaborationObjectTypes.RELATION}\n allowOnlyOneComment\n />\n )}\n {isSuggested && (\n <SuggestedButtons\n acceptRelation={acceptRelation(connection)}\n ignoreRelation={ignoreRelation(connection)}\n />\n )}\n {!isSuggested && (\n <>\n {showRating && (\n <Ratings ratings={ratings} crosswalks={crosswalks} className={styles.ratings} />\n )}\n <ShowDetailsButton\n show={showDetails}\n onToggle={toggleShowDetails}\n className={styles.showDetailsButton}\n />\n </>\n )}\n </div>\n </Box>\n {showDetails && <RelationAttributes connection={connection} className={styles.relationAttributes} />}\n </div>\n );\n};\n","import React, {useMemo, useContext, useEffect} from 'react';\nimport {Connection, getRelationshipsObjectIdsForCollaboration, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {CollaborationContext} from '@reltio/components';\nimport RelationItem from './RelationItem/RelationItem';\nimport {RelationComplexItem} from './RelationCompexItem/RelationComplexItem';\nimport {useSuggestedRelations} from '../../hooks/useSuggestedRelations';\nimport {SecondLevelWrapper} from '../SecondLevelWrapper/SecondLevelWrapper';\n\ntype Props = {\n className?: string;\n connections: Array<Connection>;\n loadRelations: () => void;\n config?: RelationsViewConfig;\n mainEnityUri?: string;\n};\n\nconst RelationsList = ({className, connections = [], loadRelations, config, mainEnityUri}: Props) => {\n const {isComplex, content, type} = config;\n const {ignoreRelation, acceptRelation} = useSuggestedRelations(content, loadRelations, mainEnityUri);\n\n const objectIds = useMemo(() => {\n return getRelationshipsObjectIdsForCollaboration(connections);\n }, [connections]);\n\n const {getCommentsCount} = useContext(CollaborationContext);\n\n useEffect(() => {\n getCommentsCount(objectIds);\n }, [getCommentsCount, objectIds]);\n\n return (\n <div className={className}>\n {connections.map((connection) => {\n const itemKey = `${connection?.relation?.relationUri}-${connection?.relation?.direction}`;\n\n return (\n <SecondLevelWrapper config={config} connection={connection} key={itemKey}>\n {(renderRelationArrowButton) => {\n if (isComplex) {\n return (\n <RelationComplexItem\n loadRelations={loadRelations}\n connection={connection}\n acceptRelation={acceptRelation}\n ignoreRelation={ignoreRelation}\n renderRelationArrowButton={renderRelationArrowButton}\n showRating={type === 'rating'}\n />\n );\n }\n\n return (\n <RelationItem\n acceptRelation={acceptRelation}\n ignoreRelation={ignoreRelation}\n connection={connection}\n renderRelationArrowButton={renderRelationArrowButton}\n />\n );\n }}\n </SecondLevelWrapper>\n );\n })}\n </div>\n );\n};\n\nRelationsList.displayName = 'RelationsList';\n\nexport default RelationsList;\n","import {useDispatch} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {\n Connection,\n ignoreSuggestedRelation,\n createRelation,\n getRequestErrorMessage,\n Directions,\n RelationsContent\n} from '@reltio/mdm-sdk';\nimport {ui} from '@reltio/mdm-module';\nimport {getFirstRelationTypeObject} from '../helpers/relation';\n\nexport const useSuggestedRelations = (content: RelationsContent, loadRelations: () => void, mainEnityUri: string) => {\n const relationTypeObject = getFirstRelationTypeObject(content.inRelations, content.outRelations);\n const dispatch = useDispatch();\n const ignoreRelation = (connection: Connection) => () => {\n const {entity} = connection;\n ignoreSuggestedRelation(mainEnityUri, {\n relatedEntityUri: entity.entityUri,\n relationType: relationTypeObject.type,\n relationDirection: relationTypeObject.direction\n })\n .then(loadRelations)\n .catch((error) => {\n dispatch(ui.actions.errorSet(getRequestErrorMessage(error, i18n.text('Something went wrong'))));\n });\n };\n\n const acceptRelation = (connection: Connection) => () => {\n const {entity, relation} = connection;\n const {startDate, endDate} = relation;\n const isInDirection = relationTypeObject.direction === Directions.IN;\n const startEntityUri = isInDirection ? entity.entityUri : mainEnityUri;\n const endEntityUri = isInDirection ? mainEnityUri : entity.entityUri;\n createRelation({\n startEntityUri,\n endEntityUri,\n relationType: relationTypeObject.type,\n attributes: null,\n startDate,\n endDate\n })\n .then(loadRelations)\n .catch((error) => {\n dispatch(ui.actions.errorSet(getRequestErrorMessage(error, i18n.text('Something went wrong'))));\n });\n };\n\n return {\n ignoreRelation,\n acceptRelation\n };\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n list: {\n paddingTop: '8px',\n paddingBottom: '10px',\n overflow: 'auto',\n flexGrow: 1\n },\n noData: {\n fontSize: '13px',\n color: theme.palette.text.secondary,\n padding: '8px 16px'\n },\n linearIndicator: {\n top: '52px'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {isEditableMode, Connection, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {LinearLoadIndicator} from '@reltio/components';\nimport Typography from '@mui/material/Typography';\nimport RelationsEditableContent from '../RelationsEditableContent/RelationsEditableContent';\nimport RelationsList from '../RelationsList/RelationsList';\nimport {useStyles} from './styles';\n\ntype Props = {\n isLoading: boolean;\n config: RelationsViewConfig;\n loadRelations: () => void;\n connections: Connection[];\n total: number;\n parentEntityUri?: string;\n};\n\nexport const RelationsContent = ({isLoading, config, loadRelations, connections, total, parentEntityUri}: Props) => {\n const styles = useStyles();\n\n const {selectors} = mdmModule;\n const entity = useSelector(selectors.getEntity);\n const mode = useSelector(selectors.getMode);\n\n const noDataText = config['text-empty'] || i18n.text('No data found');\n\n if (isLoading) {\n return <LinearLoadIndicator className={styles.linearIndicator} />;\n }\n\n if (config.content && isEditableMode(mode)) {\n return (\n <RelationsEditableContent\n connections={connections}\n className={styles.list}\n key={entity?.uri}\n config={config}\n mode={mode}\n noDataText={noDataText}\n parentEntityUri={parentEntityUri}\n />\n );\n }\n\n if (config.content && total > 0) {\n return (\n <RelationsList\n config={config}\n loadRelations={loadRelations}\n connections={connections}\n className={styles.list}\n key={entity?.uri}\n mainEnityUri={entity.uri}\n />\n );\n }\n\n return <Typography className={styles.noData}>{noDataText}</Typography>;\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n container: {\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'column',\n minHeight: 0\n },\n content: {\n display: 'flex',\n flexGrow: 1,\n flexDirection: 'column',\n minHeight: 0\n },\n pagination: {\n height: '52px',\n flexGrow: 0,\n flexShrink: 0\n }\n});\n","import React, {useContext, useEffect, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {ActivityFilter, Connection, getEntitiesMapForConnections, RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {\n BasicTablePagination,\n BasicView,\n EntitiesMapContext,\n useRelationsLoader,\n EntityContext,\n useExpandInvalidRelations\n} from '@reltio/components';\nimport RelationsHeader from '../RelationsHeader/RelationsHeader';\nimport {RelationsViewStateContext} from '../../contexts/RelationsViewStateContext';\nimport {ImportDTContext} from '../../contexts/ImportDTContext';\nimport {buildRelationsFilter} from '../../helpers/filters';\nimport {RelationsContent} from '../RelationsContent/RelationsContent';\nimport {pick} from 'ramda';\nimport {useStyles} from './styles';\n\ntype Props = {\n config: RelationsViewConfig;\n className?: string;\n};\n\nconst RelationsView = ({config, className}: Props) => {\n const styles = useStyles();\n\n const {page, setPage, rowsPerPage, sortOrder, sortOption, showInactive, searchQuery, changeSearchQuery} =\n useContext(RelationsViewStateContext);\n const {selectors} = mdmModule;\n const connections = useSelector((state) =>\n selectors.getConnectionsWithDraftsByViewId(state, config.id)\n ) as Connection[];\n const entity = useSelector(selectors.getEntity);\n const total = useSelector((state) => selectors.getTotalByViewId(state, config.id));\n const mode = useSelector(selectors.getMode);\n const sorting = useMemo(\n () => ({\n order: sortOrder,\n field: sortOption\n }),\n [sortOrder, sortOption]\n );\n\n useEffect(() => {\n changeSearchQuery('');\n }, [entity?.uri]); //eslint-disable-line react-hooks/exhaustive-deps\n\n const filter = useMemo(() => buildRelationsFilter(searchQuery), [searchQuery]);\n\n const {isLoading, reload: loadRelations} = useRelationsLoader({\n sorting,\n filter,\n page,\n rowsPerPage,\n config,\n entity,\n relationActivityFilter: showInactive ? ActivityFilter.ALL : ActivityFilter.ACTIVE_ONLY,\n mode\n });\n\n const entitiesMap = useMemo(() => getEntitiesMapForConnections(connections), [connections]);\n\n const importDTContextValue = useMemo(\n () => ({\n reloadRelations: loadRelations,\n config: pick(['content', 'importFromDT', 'maxDtssImport'], config)\n }),\n [loadRelations, config]\n );\n useExpandInvalidRelations(config.id);\n return (\n <EntityContext.Provider value={entity}>\n <EntitiesMapContext.Provider value={entitiesMap}>\n <BasicView className={className}>\n <div className={styles.container}>\n <ImportDTContext.Provider value={importDTContextValue}>\n <RelationsHeader title={config.caption} total={total} />\n </ImportDTContext.Provider>\n <div className={styles.content}>\n <RelationsContent\n isLoading={isLoading}\n config={config}\n loadRelations={loadRelations}\n connections={connections}\n total={total}\n />\n {total > rowsPerPage && (\n <BasicTablePagination\n classes={{root: styles.pagination}}\n count={total}\n rowsPerPageOptions={[]}\n rowsPerPage={rowsPerPage}\n page={page}\n onChangePage={setPage}\n />\n )}\n </div>\n </div>\n </BasicView>\n </EntitiesMapContext.Provider>\n </EntityContext.Provider>\n );\n};\n\nRelationsView.displayName = 'RelationsView';\n\nexport {RelationsView};\n","import {FilterBuilder, Maybe, filterValueToQueryStringWithQuotes} from '@reltio/mdm-sdk';\n\nconst buildRelationsFilter = (searchQuery) => {\n const queryClause = Maybe.fromFalsy<string>(searchQuery)\n .map(filterValueToQueryStringWithQuotes)\n .map(\n (queryString) =>\n `containsWordStartingWith(entity.label,${queryString})` +\n ' or ' +\n `containsWordStartingWith(relation.label,${queryString})`\n )\n .orSome('');\n\n return new FilterBuilder().addClause(queryClause).build();\n};\n\nexport {buildRelationsFilter};\n","import {useCallback, useMemo, useState} from 'react';\nimport {pipe, map, unless, append, propEq} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {RelationsViewConfig, SortOrder, isEmptyValue} from '@reltio/mdm-sdk';\n\nconst DEFAULT_ROWS_PER_PAGE = 15;\nconst DEFAULT_SORT_ORDER = 'asc';\nconst DEFAULT_SHOW_INACTIVE = false;\n\ntype Option = {\n value: string;\n label: string;\n};\n\nexport type RelationsViewState = {\n searchQuery: string;\n changeSearchQuery: (value: string) => void;\n sortOrder: SortOrder;\n toggleSortOrder: () => void;\n sortOption?: string;\n changeSortOption: (option: string) => void;\n sortOptions: Option[];\n page: number;\n setPage: (page: number) => void;\n rowsPerPage: number;\n showInactive: boolean;\n toggleShowInactive: () => void;\n};\n\nconst useRelationsState = (config: RelationsViewConfig): RelationsViewState => {\n const sortOptions = useMemo(\n () =>\n pipe(\n Object.entries,\n map(([key, value]) => ({\n value: key,\n label: value\n })),\n unless(\n (options) => isEmptyValue(options) || options.some(propEq('value', 'name')),\n append({label: i18n.text('Name'), value: 'name'})\n )\n )(config.sortOptions || {}),\n [config.sortOptions]\n );\n\n const rowsPerPage = Number(config.max) || DEFAULT_ROWS_PER_PAGE;\n const [page, setPage] = useState(0);\n const [sortOrder, setSortOrder] = useState(config.sortOrder || DEFAULT_SORT_ORDER);\n const [sortOption, setSortOption] = useState(sortOptions[0]?.value);\n const [searchQuery, setSearchQuery] = useState('');\n const [showInactive, setShowInactive] = useState(DEFAULT_SHOW_INACTIVE);\n\n const toggleShowInactive = useCallback(() => {\n setPage(0);\n setShowInactive((showInactive) => !showInactive);\n }, []);\n\n const toggleSortOrder = useCallback(() => {\n setPage(0);\n setSortOrder((order) => {\n return order === 'asc' ? 'desc' : 'asc';\n });\n }, []);\n\n const changeSortOption = useCallback((option: string) => {\n setPage(0);\n setSortOption(option);\n }, []);\n\n const changeSearchQuery = useCallback((value: string) => {\n setPage(0);\n setSearchQuery(value);\n }, []);\n\n return {\n searchQuery,\n changeSearchQuery,\n sortOrder,\n toggleSortOrder,\n sortOption,\n changeSortOption,\n sortOptions,\n page,\n setPage,\n rowsPerPage,\n showInactive,\n toggleShowInactive\n };\n};\n\nexport default useRelationsState;\n","import React from 'react';\nimport {AttributeType, ComplexAttributeValue} from '@reltio/mdm-sdk';\nimport {ColumnsDataType} from '../components/types';\n\nexport const TableAttributeContext = React.createContext<{\n searchQuery: string;\n setSearchQuery: (query: string) => void;\n values: ComplexAttributeValue[];\n page: number;\n setPage: (page: number) => void;\n isLoading: boolean;\n visibleColumns: string[];\n onChangeColumns: (cols: string[]) => void;\n onToggleFilters: () => void;\n onSort: (payload) => void;\n onFilter: (payload) => void;\n hasPaging: boolean;\n totalVisibleValues: number;\n showTable: boolean;\n filters: {\n [key: string]: {\n filter: string;\n values: [string];\n };\n };\n sorting: {\n order: 'desc' | 'asc';\n field: string;\n };\n attributeType: AttributeType;\n allColumnsData: ColumnsDataType;\n }>(null);\n\nTableAttributeContext.displayName = 'TableAttributeContext';\n","import {basicTableViewState, createStandardAction} from '@reltio/components';\n\nconst CHANGE_SEARCH_QUERY = 'CHANGE_SEARCH_QUERY';\n\nconst actions = {\n ...basicTableViewState.actions,\n changeSearchQuery: createStandardAction(CHANGE_SEARCH_QUERY)\n};\n\nconst reducer = (state, action) => {\n switch (action.type) {\n case CHANGE_SEARCH_QUERY:\n return {...state, searchQuery: action.payload, page: 0};\n default:\n return basicTableViewState.reducer(state, action);\n }\n};\n\nexport {reducer as default, actions};\n","import {makeStyles} from '@mui/styles';\nimport {HistoryOperations, historyPalettes} from '@reltio/mdm-sdk';\n\nconst BLOB_HEIGHT = 100;\n\nconst removedStyle = {\n textDecoration: 'line-through',\n color: 'rgba(0,0,0,.54)'\n};\n\nexport const useStyles = makeStyles(() => ({\n headCell: {\n display: 'flex',\n alignItems: 'center',\n height: '100%',\n fontSize: '12px'\n },\n rowCell: {\n fontSize: '13px',\n overflow: 'hidden'\n },\n blobWrapper: {\n position: 'relative',\n overflowY: 'auto',\n overflowX: 'hidden',\n whiteSpace: 'pre',\n maxHeight: `${BLOB_HEIGHT}px`,\n boxSizing: 'border-box',\n padding: '15px 25px 0 25px'\n },\n defaultWrapper: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n padding: '15px 25px 0 25px'\n },\n updateAttribute: {\n padding: '0 4px',\n marginLeft: '-4px',\n ...historyPalettes[HistoryOperations.updateAttribute]\n },\n insertAttribute: {\n ...historyPalettes[HistoryOperations.insertAttribute]\n },\n deleteAttribute: {\n padding: '0 4px',\n marginLeft: '-4px',\n textDecoration: 'line-through',\n ...historyPalettes[HistoryOperations.deleteAttribute]\n },\n description: {\n marginLeft: '-22px'\n },\n 'row-cell--sorted': {\n color: 'rgba(0,0,0,0.87)'\n },\n 'row-cell--removed': {\n pointerEvents: 'none',\n '& > div': removedStyle\n }\n}));\n","import React from 'react';\n\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport {withFilterAtBottom, DescriptionIcon} from '@reltio/components';\nimport {useStyles} from './styles';\n\nconst HeadCellRenderer = (props) => {\n const styles = useStyles();\n const {description} = props?.headCellData || {};\n\n return (\n <div className={styles.headCell}>\n <DefaultHeadCellRenderer {...props} />\n <DescriptionIcon description={description} className={styles.description} />\n </div>\n );\n};\n\nexport default withFilterAtBottom(HeadCellRenderer);\n","import React from 'react';\nimport {stopPropagation} from '@reltio/components';\nimport {PrimitiveValue} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: PrimitiveValue;\n historyClassName?: string;\n};\n\nconst BlobRenderer = ({value, historyClassName}: Props) => {\n const styles = useStyles();\n return (\n <div className={styles.blobWrapper} onScroll={stopPropagation}>\n <span className={styles[historyClassName]}>{value}</span>\n </div>\n );\n};\n\nexport default BlobRenderer;\n","import React, {useContext} from 'react';\nimport {pipe} from 'ramda';\nimport {DataTypes, getHistoryAppearanceByUri, getHistoryAttributeClassName, PrimitiveValue} from '@reltio/mdm-sdk';\nimport {DataTypeValue, ExpandedValueTooltip, HistoryDiffContext} from '@reltio/components';\nimport BlobRenderer from './BlobRenderer';\nimport {useStyles} from './styles';\n\ntype Props = {\n value: {\n value: PrimitiveValue;\n uri: string;\n };\n columnData: {\n dataTypeDefinition: {\n type: DataTypes;\n };\n };\n};\n\nconst DefaultCellValueRenderer = ({value, columnData: {dataTypeDefinition}}: Props) => {\n const styles = useStyles();\n\n const {value: simpleValue, uri} = value;\n const {appearance} = useContext(HistoryDiffContext);\n const historyClassName = pipe(getHistoryAppearanceByUri, getHistoryAttributeClassName)(uri, appearance);\n\n switch (dataTypeDefinition.type) {\n case DataTypes.TYPE_BLOB:\n return <BlobRenderer value={simpleValue} historyClassName={historyClassName} />;\n default: {\n const dataTypeValue = <DataTypeValue value={simpleValue} dataTypeDefinition={dataTypeDefinition} />;\n return (\n <ExpandedValueTooltip value={dataTypeValue}>\n <div className={styles.defaultWrapper}>\n <span className={styles[historyClassName]}>{dataTypeValue}</span>\n </div>\n </ExpandedValueTooltip>\n );\n }\n }\n};\n\nexport default DefaultCellValueRenderer;\n","import {assoc, chain, isNil, map, path, pipe, prop, reduce, reject, slice, split, uniqBy} from 'ramda';\nimport {\n AttributeNode,\n AttributeType,\n attributeUriToSearchUri,\n flatAttributeTreeNode,\n getAttrDataTypeDefinition,\n getAttributeTypesTree,\n getOvAttributeValuesByPathWithUri,\n isAttributeSearchUri,\n Metadata,\n SearchParent\n} from '@reltio/mdm-sdk';\nimport HeadCellRenderer from '../components/AttributeTable/cell-renderers/HeadCellRenderer';\nimport DefaultCellValueRenderer from '../components/AttributeTable/cell-renderers/DefaultCellValueRenderer';\n\nexport const getColumnsDataFromAttributeNode = (attrNode: AttributeNode, parents: SearchParent[]) => {\n const {uri, label, children, name, description} = attrNode;\n return reject(isNil, {\n id: attributeUriToSearchUri(uri, parents),\n label,\n description,\n dataTypeDefinition: getAttrDataTypeDefinition(attrNode),\n children: children?.map((childNode) => getColumnsDataFromAttributeNode(childNode, parents.concat({name})))\n });\n};\n\nexport const getColumnsData = (metadata: Metadata, attributeType: AttributeType) =>\n pipe(\n (metadata: Metadata, attributeType: AttributeType) => getAttributeTypesTree(metadata, attributeType),\n map((attrNode: AttributeNode) => getColumnsDataFromAttributeNode(attrNode, [attributeType])),\n chain(flatAttributeTreeNode),\n uniqBy(prop('id'))\n )(metadata, attributeType);\n\nconst getAttrPathFromColumnId = pipe(split('.'), slice(2, Infinity));\n\nconst getAttributeValues = (attrPath, value) =>\n pipe(path(['value']), getOvAttributeValuesByPathWithUri(attrPath))(value);\n\nconst getRowValueByColumnId = (columnId, value) => {\n const attrPath = getAttrPathFromColumnId(columnId);\n return getAttributeValues(attrPath, value);\n};\n\nexport const getBasicTableRowsData = (values, columnsData) =>\n values.map((value) =>\n pipe(\n reduce((acc, {id}) => assoc(id, getRowValueByColumnId(id, value), acc), {}),\n assoc('value', value)\n )(columnsData)\n );\n\nconst getNestedPathByColumnId = (columnId) => {\n if (isAttributeSearchUri(columnId)) {\n const attrPath = getAttrPathFromColumnId(columnId);\n return attrPath.length > 1 ? attrPath.slice(0, -1) : null;\n } else {\n return null;\n }\n};\n\nconst getColumnDataByColumnId = (columnData) => ({\n ...columnData,\n sortable: true,\n resizable: true,\n nestedPath: getNestedPathByColumnId(columnData.id),\n headCellRenderer: HeadCellRenderer,\n rowCellValueRenderer: DefaultCellValueRenderer\n});\n\nexport const getBasicTableColumnsData = map(getColumnDataByColumnId);\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n header: {\n padding: '0 12px 0 16px'\n },\n rightMenuItems: {\n display: 'flex',\n flex: '1 0 auto',\n justifyContent: 'flex-end',\n alignItems: 'center'\n }\n}));\n","import React, {useContext} from 'react';\nimport {useSelector} from 'react-redux';\nimport {\n FacetViewHeader,\n ColumnsSettings,\n FilterButton,\n VerticalDivider,\n ExpandableSearchInput,\n DescriptionIcon,\n RequiredMark\n} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {TableAttributeContext} from '../../contexts/TableAttributeContext';\nimport {useStyles} from './styles';\n\ntype Props = {\n title: string;\n};\n\nconst AttributeTableHeader = ({title}: Props) => {\n const styles = useStyles();\n const isEditableMode = useSelector(mdmModule.selectors.getIsEditableMode);\n\n const {\n attributeType,\n searchQuery,\n setSearchQuery,\n filters,\n onToggleFilters,\n allColumnsData,\n visibleColumns,\n onChangeColumns\n } = useContext(TableAttributeContext);\n\n const showRequiredMark = isEditableMode && attributeType?.required;\n\n return (\n <FacetViewHeader title={title} className={styles.header}>\n {showRequiredMark && <RequiredMark />}\n <DescriptionIcon description={attributeType?.description} />\n <div className={styles.rightMenuItems}>\n <ExpandableSearchInput query={searchQuery} onChange={setSearchQuery} />\n <FilterButton enabled={!!filters} onClick={onToggleFilters} />\n <VerticalDivider height={24} margin={4} />\n <ColumnsSettings\n columnsData={allColumnsData}\n selectedColumns={visibleColumns}\n onChangeColumns={onChangeColumns}\n />\n </div>\n </FacetViewHeader>\n );\n};\n\nexport default AttributeTableHeader;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\nimport {withTableContext} from '@reltio/components';\n\ntype Props = {\n cell: {values: string[]};\n isSorted: boolean;\n CellValueRenderer: React.ElementType;\n isRemoved: boolean;\n};\nconst RowCellRenderer = ({cell, CellValueRenderer, isRemoved, isSorted, ...otherProps}: Props) => {\n const styles = useStyles();\n return (\n <div\n className={classnames(\n {\n [styles['row-cell--sorted']]: isSorted,\n [styles['row-cell--removed']]: isRemoved\n },\n styles.rowCell\n )}\n >\n {cell.values.map((value, index) => (\n <CellValueRenderer key={index} value={value} {...otherProps} />\n ))}\n </div>\n );\n};\n\nexport default withTableContext(({deletedUris}, {rowValue: {value}}) => ({\n isRemoved: Boolean(deletedUris.find((uri) => value.uri === uri))\n}))(RowCellRenderer);\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n tableContainer: {\n display: 'flex',\n fontFamily: 'Roboto',\n color: 'rgba(0,0,0,0.54)',\n marginBottom: '15px'\n },\n 'row-cell__buttons-container': {\n position: 'absolute'\n },\n 'row-cell__buttons-wrapper': {\n display: 'flex',\n paddingLeft: '10px',\n '& > button': {\n marginLeft: '-10px',\n transform: 'scale(0.9)'\n }\n }\n}));\n","import React from 'react';\nimport EditIcon from '@mui/icons-material/Edit';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport i18n from 'ui-i18n';\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\n\ntype Props = {\n onEdit?: () => void;\n onRemove?: () => void;\n};\n\nexport const EditButtons = ({onEdit, onRemove}: Props) => (\n <>\n {onEdit && (\n <SmallIconButtonWithTooltip tooltipTitle={i18n.text('Edit')} icon={EditIcon} size=\"L\" onClick={onEdit} />\n )}\n {onRemove && (\n <SmallIconButtonWithTooltip\n tooltipTitle={i18n.text('Remove')}\n icon={DeleteIcon}\n size=\"L\"\n onClick={onRemove}\n />\n )}\n </>\n);\n\nexport default EditButtons;\n","import React, {useCallback, useContext, useMemo, useState} from 'react';\nimport RowCellRenderer from './cell-renderers/RowCellRenderer';\nimport {BasicTable, useConfigPermissions} from '@reltio/components';\nimport {getBasicTableColumnsData, getBasicTableRowsData} from '../../helpers/tableAttributeHelpers';\nimport {useStyles} from './styles';\nimport {\n checkCanEditAttribute,\n checkCanDeleteAttribute,\n SearchFilter,\n isReltioCrosswalk,\n Entity,\n isEditableMode as checkIsEditableMode,\n AttributeItem,\n TableAttributeViewConfig,\n ComplexAttributeValue\n} from '@reltio/mdm-sdk';\nimport {ColumnsDataType} from '../types';\nimport EditButtons from './EditButtons';\nimport {useSelector} from 'react-redux';\nimport {path, prop, pipe} from 'ramda';\nimport {TableAttributeContext} from '../../contexts/TableAttributeContext';\nimport mdmModule from '@reltio/mdm-module';\n\nconst MAX_HEIGHT = 477;\n\ntype Props = {\n columnsData: ColumnsDataType;\n values: ComplexAttributeValue[];\n filters?: {\n [key: string]: SearchFilter;\n };\n onFilter?: (payload) => void;\n sorting?:\n | {\n field: string;\n order: string;\n }\n | undefined;\n onSort?: (payload) => void;\n config: TableAttributeViewConfig;\n onEdit: React.Dispatch<ComplexAttributeValue>;\n onDeleteAttribute: (attribute: AttributeItem) => void;\n deletedUris: string[];\n};\n\nconst AttributeTable = ({\n columnsData,\n values,\n sorting,\n onSort,\n filters,\n onFilter,\n config,\n onEdit,\n onDeleteAttribute,\n deletedUris\n}: Props) => {\n const tableRowsData = useMemo(() => getBasicTableRowsData(values, columnsData), [values, columnsData]);\n const tableColumnsData = useMemo(() => getBasicTableColumnsData(columnsData), [columnsData]);\n\n const styles = useStyles();\n const mode = useSelector(mdmModule.selectors.getMode);\n const isEditableMode = checkIsEditableMode(mode);\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entityUri) || ({} as Entity)\n );\n const {attributeType} = useContext(TableAttributeContext);\n\n const renderRowCell = useCallback(\n (props) => (\n <RowCellRenderer\n {...props}\n isSorted={!!sorting && sorting.field === props.columnData.id} /* eslint-disable-line react/prop-types */\n />\n ),\n [sorting]\n );\n\n const [hoverRowIndex, setHoverRowIndex] = useState(null);\n\n const {canUpdate, canDelete} = useConfigPermissions();\n\n const checkCanEdit = (attributeValue: ComplexAttributeValue) =>\n canUpdate(config) &&\n checkCanEditAttribute({\n attributeType,\n mode,\n attributeValue,\n isReltioCrosswalk: isReltioCrosswalk(modifiedEntity.crosswalks, attributeValue)\n });\n const checkCanRemove = (attributeValue: ComplexAttributeValue) =>\n canDelete(config) &&\n checkCanDeleteAttribute({\n attributeType,\n mode,\n attributeValue,\n metadata,\n isReltioCrosswalk: isReltioCrosswalk(modifiedEntity.crosswalks, attributeValue)\n });\n\n const hideRightContent = useMemo(\n () =>\n typeof hoverRowIndex === 'number' && isEditableMode\n ? deletedUris.includes(pipe(path([hoverRowIndex]), prop('uri'))(values))\n : true,\n [hoverRowIndex, deletedUris, values, isEditableMode]\n );\n const canRemove = typeof hoverRowIndex === 'number' && checkCanRemove(path([hoverRowIndex], values));\n const canEdit = typeof hoverRowIndex === 'number' && checkCanEdit(path([hoverRowIndex], values));\n\n const handleEditAttribute = useCallback(() => {\n const attributeValue = path([hoverRowIndex], values);\n if (!canEdit) return;\n onEdit(attributeValue);\n }, [onEdit, hoverRowIndex, values, canEdit]);\n\n const handleRemoveAttribute = useCallback(() => {\n const attributeValue = path([hoverRowIndex], values);\n if (!canRemove) return;\n const attribute: AttributeItem = {\n parentUri: entityUri,\n attributeType,\n uri: attributeValue.uri,\n value: attributeValue\n };\n onDeleteAttribute(attribute);\n setHoverRowIndex(null);\n }, [hoverRowIndex, values, onDeleteAttribute, canRemove, attributeType, entityUri]);\n\n const hoveredRowRightContent =\n !hideRightContent && (canRemove || canEdit) ? (\n <EditButtons\n onEdit={canEdit ? handleEditAttribute : undefined}\n onRemove={canRemove ? handleRemoveAttribute : undefined}\n />\n ) : undefined;\n const context = useMemo(() => ({deletedUris}), [deletedUris]);\n return (\n <div className={styles.tableContainer}>\n <BasicTable\n autosizing\n maxHeight={MAX_HEIGHT}\n columnsData={tableColumnsData}\n rowsData={tableRowsData}\n sorting={sorting}\n onSort={onSort}\n filters={filters}\n onFilter={onFilter}\n hoverStateEnabled={true}\n defaultColumnWidth={250}\n defaultColumnMinWidth={200}\n headRowHeight={56}\n resizeDebounceDelay={150}\n renderRowCell={renderRowCell}\n onRowHover={setHoverRowIndex}\n hoverRowIndex={hoverRowIndex}\n hoveredRowRightContent={hoveredRowRightContent}\n context={context}\n classes={{\n hoveredRowRightContentWrapper: styles['row-cell__buttons-wrapper'],\n hoveredRowRightContentContainer: styles['row-cell__buttons-container']\n }}\n />\n </div>\n );\n};\n\nexport default AttributeTable;\n","import {useCallback, useContext, useState, useMemo} from 'react';\nimport {\n createNewAttribute,\n Entity,\n getAttributeSource,\n isEditableMode as checkIsEditableMode,\n NestedAttributeValue,\n AttributeItem,\n isEmptyValue,\n validateComplexAttribute,\n ComplexAttributeValue,\n EntitiesMap,\n evaluateErrorPath,\n getSingleAttributeEntity,\n getEditableAttributeTypeSubAttributes\n} from '@reltio/mdm-sdk';\nimport {ViewIdContext} from '@reltio/components';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {propEq, pathOr, pipe, map, prop, equals, both, not, without, filter} from 'ramda';\nimport {TableAttributeContext} from '../../../contexts/TableAttributeContext';\nimport {isTempUri, createDefaultValues} from '@reltio/mdm-sdk';\n\nconst emptyArray = [];\n\nexport const useEditableAttribute = () => {\n const [newAttributeUri, setNewAttributeUri] = useState<string>();\n const [originalValues, setOriginalValues] = useState<ComplexAttributeValue[]>([]);\n\n const dispatch = useDispatch();\n const mode = useSelector(mdmModule.selectors.getMode);\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entityUri) || ({} as Entity)\n );\n\n const viewId = useContext(ViewIdContext);\n const {attributeType, values} = useContext(TableAttributeContext);\n\n const isEditableMode = checkIsEditableMode(mode);\n const attributeSource = getAttributeSource(attributeType);\n const modifiedEntityValues: NestedAttributeValue[] = pathOr(\n emptyArray,\n [attributeSource, attributeType?.name],\n modifiedEntity\n );\n\n const emptyEditorValue: ComplexAttributeValue = useMemo(\n () =>\n createNewAttribute({\n parentUri: entityUri,\n attributeType\n }),\n [entityUri, attributeType]\n );\n\n const isModifiedEntityValuesEmpty = isEmptyValue(modifiedEntityValues);\n const showEmpty = attributeType.required && isModifiedEntityValuesEmpty;\n const actualValues = useMemo(\n () => (showEmpty ? [emptyEditorValue] : modifiedEntityValues),\n [emptyEditorValue, modifiedEntityValues, showEmpty]\n );\n\n const modifiedValues = useMemo(() => {\n const newValues = actualValues.filter(pipe(prop('uri'), both(isTempUri, pipe(equals(newAttributeUri), not))));\n\n const oldValues = map((originalValue) => actualValues.find(propEq('uri', originalValue.uri)) || originalValue)(\n values\n );\n\n return [...newValues, ...oldValues].map((value) => originalValues.find(propEq('uri', value.uri)) ?? value);\n }, [actualValues, originalValues, newAttributeUri, values]);\n\n const deletedUris = useMemo(\n () =>\n pipe(\n map(prop('uri')),\n filter((uri) => !actualValues.find(propEq('uri', uri)))\n )(isEditableMode ? values : []),\n [actualValues, values, isEditableMode]\n );\n\n const editingValues = actualValues.filter(\n ({uri}) => uri === newAttributeUri || originalValues.find(propEq('uri', uri))\n );\n\n const onChangeAttribute = useCallback(\n (params: AttributeItem) => pipe(profile.actions.modifyAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const onDeleteAttribute = useCallback(\n (params: AttributeItem) => pipe(profile.actions.removeAttribute, dispatch)({...params, viewId}),\n [viewId, dispatch]\n );\n\n const onAdd = useCallback(() => {\n const newAttribute = createNewAttribute({\n parentUri: entityUri,\n attributeType\n });\n setNewAttributeUri(newAttribute.uri);\n onChangeAttribute({\n value: {\n ...newAttribute,\n value: createDefaultValues({\n attributeTypes: getEditableAttributeTypeSubAttributes(metadata, attributeType),\n parentUri: newAttribute.uri,\n mode,\n metadata\n })\n },\n uri: newAttribute.uri,\n attributeType\n });\n }, [entityUri, attributeType, metadata, mode, onChangeAttribute]);\n\n const onStartEditing = useCallback(\n (attributeValue: ComplexAttributeValue) => {\n setOriginalValues((prev) => {\n if (!prev.find(propEq('uri', attributeValue.uri))) {\n return [...prev, attributeValue];\n }\n return prev;\n });\n },\n [setOriginalValues]\n );\n\n const onCancel = useCallback(\n (attributeValue: ComplexAttributeValue) => {\n const editingValueOriginal = originalValues.find(propEq('uri', attributeValue.uri));\n if (editingValueOriginal) {\n const attributeItem = {attributeType, value: editingValueOriginal, uri: attributeValue.uri};\n setOriginalValues((prev) => without([editingValueOriginal], prev));\n if (!isModifiedEntityValuesEmpty) onChangeAttribute(attributeItem);\n } else {\n const attributeItem = {value: attributeValue, attributeType, uri: attributeValue.uri};\n setNewAttributeUri(null);\n onDeleteAttribute(attributeItem);\n }\n dispatch(profile.errors.actions.errorsSet([]));\n },\n [\n onDeleteAttribute,\n onChangeAttribute,\n setOriginalValues,\n isModifiedEntityValuesEmpty,\n originalValues,\n attributeType,\n dispatch\n ]\n );\n\n const validate = useCallback(\n (attributeValue: ComplexAttributeValue, tempEntitiesMap: EntitiesMap) => {\n const errors = validateComplexAttribute(metadata, attributeType, attributeValue, tempEntitiesMap).map(\n (error) => ({\n ...error,\n path: evaluateErrorPath(\n {\n entityUri,\n metadata,\n entitiesMap: tempEntitiesMap || {\n [entityUri]: getSingleAttributeEntity(attributeType, attributeValue)\n }\n },\n error.uri || error.parentUri\n )\n })\n );\n dispatch(profile.errors.actions.errorsSet(errors));\n return errors.length === 0;\n },\n [dispatch, entityUri, attributeType, metadata]\n );\n\n const onApply = useCallback(\n (attributeValue: ComplexAttributeValue, tempEntitiesMap?: EntitiesMap) => {\n if (validate(attributeValue, tempEntitiesMap)) {\n setNewAttributeUri(null);\n setOriginalValues((prev) => {\n const original = prev.find(propEq('uri', attributeValue.uri));\n return original ? without([original], prev) : prev;\n });\n }\n },\n [setOriginalValues, setNewAttributeUri, validate]\n );\n\n const onReset = useCallback(() => {\n setOriginalValues([]);\n setNewAttributeUri(null);\n }, []);\n\n const checkHasChanges = (value: ComplexAttributeValue) => originalValues.find(propEq('uri', value.uri)) !== value;\n\n return {\n checkHasChanges,\n onChangeAttribute,\n onDeleteAttribute,\n onAdd,\n onCancel,\n onApply,\n onStartEditing,\n onReset,\n modifiedValues,\n editingValues,\n deletedUris\n };\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n actionButtons: {\n display: 'flex',\n justifyContent: 'flex-end',\n margin: '0 8px 10px',\n\n '& > button': {\n fontSize: '14px',\n lineHeight: '16px',\n marginLeft: '8px',\n padding: '10px 8px',\n backgroundColor: 'rgba(98, 2, 238, 0)'\n }\n }\n}));\n","import React, {useCallback, useContext} from 'react';\nimport i18n from 'ui-i18n';\nimport {pipe} from 'ramda';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {EditableAttribute, ViewIdContext} from '@reltio/components';\nimport {\n Entity,\n isReference,\n isTempUri,\n getAttributeOwnError,\n getReferencedEntityUriFromAttrValue,\n AttributeItem,\n ComplexAttributeValue,\n EntitiesMap\n} from '@reltio/mdm-sdk';\nimport Button from '@mui/material/Button';\nimport {TableAttributeContext} from '../../contexts/TableAttributeContext';\nimport {useStyles} from './styles';\n\ntype Props = {\n hasChanges: boolean;\n onChangeAttribute: (attribute: AttributeItem) => void;\n onDeleteAttribute: (attribute: AttributeItem) => void;\n onCancel: (attributeValue: ComplexAttributeValue) => void;\n onApply: (attributeValue: ComplexAttributeValue, tempEntitiesMap?: EntitiesMap) => void;\n attributeValue: ComplexAttributeValue;\n};\n\nexport const AttributeEditing = ({\n onChangeAttribute,\n onCancel,\n onApply,\n onDeleteAttribute,\n hasChanges,\n attributeValue\n}: Props) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n\n const viewId = useContext(ViewIdContext);\n const {attributeType} = useContext(TableAttributeContext);\n\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const mode = useSelector(mdmModule.selectors.getMode);\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entityUri) || ({} as Entity)\n );\n const shouldConnectAllModifiedEntities =\n isReference(attributeType) && isTempUri(getReferencedEntityUriFromAttrValue(attributeValue));\n const allModifiedEntities = useSelector((state) =>\n shouldConnectAllModifiedEntities ? mdmModule.selectors.getModifiedEntities(state) : undefined\n );\n const errors = useSelector((state) =>\n mdmModule.selectors.getActiveErrorsForAttributesPager(state, entityUri, attributeType)\n );\n\n const showEmptyEditors = isTempUri(entityUri);\n\n const onAddAttributes = useCallback(\n (params: AttributeItem[]) =>\n pipe(profile.actions.addAttributes, dispatch)(params.map((param) => ({...param, viewId}))),\n [viewId, dispatch]\n );\n\n const onDeactivateError = useCallback(pipe(profile.errors.actions.errorDeactivated, dispatch), [dispatch]);\n\n return (\n <>\n <EditableAttribute\n expanded\n attributeValue={attributeValue}\n showEmptyEditors={showEmptyEditors}\n onDeleteAttribute={onDeleteAttribute}\n onDeactivateError={onDeactivateError}\n onChangeAttribute={onChangeAttribute}\n onAddAttributes={onAddAttributes}\n mode={mode}\n crosswalks={modifiedEntity.crosswalks}\n errors={errors}\n attributeType={attributeType}\n ownError={getAttributeOwnError(attributeValue, null, attributeType.uri, errors)}\n />\n <div className={styles.actionButtons}>\n <Button onClick={() => onCancel(attributeValue)}>{i18n.text('Cancel')}</Button>\n <Button\n color=\"primary\"\n disabled={!hasChanges}\n onClick={() => onApply(attributeValue, allModifiedEntities)}\n data-reltio-id=\"table-attribute-view-apply-button\"\n >\n {i18n.text('Apply')}\n </Button>\n </div>\n </>\n );\n};\n","import {useEffect, useContext, useMemo, useRef} from 'react';\nimport {pipe, prop, curry, both, map, reject, isNil, forEach, either, equals} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {\n areOneHierarchyUris,\n AttributeError,\n ComplexAttributeValue,\n ErrorType,\n isAttributeTypeError,\n isTempUri\n} from '@reltio/mdm-sdk';\nimport {useActionsHook} from '@reltio/components';\nimport {TableAttributeContext} from '../../../contexts/TableAttributeContext';\n\ntype Props = {\n onStartEditing: (value: ComplexAttributeValue) => void;\n modifiedValues: ComplexAttributeValue[];\n highlightedError: AttributeError;\n highlightedAttributeError: AttributeError;\n};\n\nconst isMissedTypeError = (error: AttributeError) => error?.type === ErrorType.missed;\n\nconst findAttributeValueByError = curry((values: ComplexAttributeValue[], error: AttributeError) =>\n values.find(pipe(prop('uri'), either(areOneHierarchyUris(error.parentUri), equals(error.uri))))\n);\n\nexport const useExpandAttributes = ({\n onStartEditing,\n modifiedValues,\n highlightedError,\n highlightedAttributeError\n}: Props) => {\n const {attributeType} = useContext(TableAttributeContext);\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const errors = useSelector((state) =>\n mdmModule.selectors.getActiveErrorsForAttributesPager(state, entityUri, attributeType)\n );\n\n const shouldOpenInvalidEditors = useRef(true);\n const listenToActions = useActionsHook();\n\n const missedAttributeError = useMemo(\n () =>\n errors.find(both(isMissedTypeError, (error) => isAttributeTypeError(error, entityUri, attributeType.uri))),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [errors, entityUri, attributeType.uri]\n );\n\n useEffect(() => {\n if (attributeType?.required && modifiedValues.length === 1 && isTempUri(modifiedValues[0].uri)) {\n return onStartEditing(modifiedValues[0]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [attributeType]);\n\n useEffect(() => {\n if (missedAttributeError && modifiedValues.length === 1) {\n onStartEditing(modifiedValues[0]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [missedAttributeError]);\n\n useEffect(() => {\n if (shouldOpenInvalidEditors.current && errors.length) {\n pipe(map(findAttributeValueByError(modifiedValues)), reject(isNil), forEach(onStartEditing))(errors);\n shouldOpenInvalidEditors.current = false;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [errors]);\n\n useEffect(() => {\n if (isMissedTypeError(highlightedError) && modifiedValues.length === 1) {\n onStartEditing(modifiedValues[0]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [highlightedError]);\n\n useEffect(() => {\n if (highlightedAttributeError) {\n const attributeValue = findAttributeValueByError(modifiedValues, highlightedAttributeError);\n if (attributeValue) onStartEditing(attributeValue);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [highlightedAttributeError]);\n\n useEffect(() => {\n const stopListeningActions = listenToActions((action) => {\n if (action.type === profile.constants.ProfileActions.SAVE_PROFILE) {\n shouldOpenInvalidEditors.current = true;\n }\n });\n return () => stopListeningActions();\n }, [listenToActions]);\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n addButton: {\n padding: '9px 16px 9px 12px',\n backgroundColor: 'rgba(98, 2, 238, 0)',\n marginBottom: '4px'\n },\n buttonLabel: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n editor: {\n padding: '4px 16px'\n }\n}));\n","import React, {useContext, useEffect} from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {\n AttributeError,\n AttributeItem,\n checkCanCreateAttribute,\n ComplexAttributeValue,\n EntitiesMap,\n TableAttributeViewConfig\n} from '@reltio/mdm-sdk';\nimport {useConfigPermissions} from '@reltio/components';\nimport Button from '@mui/material/Button';\nimport AddIcon from '@mui/icons-material/Add';\nimport {TableAttributeContext} from '../../contexts/TableAttributeContext';\nimport {AttributeEditing} from '../AttributeEditing/AttributeEditing';\nimport {useExpandAttributes} from './hooks/useExpandAttributes';\nimport {useStyles} from './styles';\n\ntype Props = {\n config: TableAttributeViewConfig;\n editingValues: ComplexAttributeValue[];\n modifiedValues: ComplexAttributeValue[];\n onChangeAttribute: (item: AttributeItem) => void;\n onDeleteAttribute: (item: AttributeItem) => void;\n onAdd: () => void;\n onCancel: (value: ComplexAttributeValue) => void;\n onApply: (value: ComplexAttributeValue, tempEntitiesMap?: EntitiesMap) => void;\n onReset: () => void;\n onStartEditing: (value: ComplexAttributeValue) => void;\n checkHasChanges: (value: ComplexAttributeValue) => boolean;\n highlightedError: AttributeError;\n highlightedAttributeError: AttributeError;\n};\n\nexport const TableAttributeEditableContent = ({\n config,\n editingValues,\n modifiedValues,\n onChangeAttribute,\n onDeleteAttribute,\n onAdd,\n onCancel,\n onApply,\n onStartEditing,\n onReset,\n checkHasChanges,\n highlightedError,\n highlightedAttributeError\n}: Props) => {\n const styles = useStyles();\n\n const {attributeType} = useContext(TableAttributeContext);\n const mode = useSelector(mdmModule.selectors.getMode);\n\n const {canCreate: hasConfigToCreate} = useConfigPermissions();\n useExpandAttributes({onStartEditing, modifiedValues, highlightedError, highlightedAttributeError});\n\n const canCreate =\n hasConfigToCreate(config) &&\n attributeType &&\n checkCanCreateAttribute({attributeType, mode}) &&\n !editingValues.length;\n\n useEffect(() => {\n return () => onReset();\n }, [onReset]);\n\n return (\n <div className={styles.editor}>\n {canCreate && (\n <Button\n color=\"primary\"\n onClick={onAdd}\n className={styles.addButton}\n data-reltio-id=\"table-attribute-view-add-button\"\n >\n <AddIcon classes={{root: styles.icon}} />\n <div className={styles.buttonLabel}>{i18n.text('Add')}</div>\n </Button>\n )}\n {editingValues.map((value) => (\n <AttributeEditing\n key={value.uri}\n attributeValue={value}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n onCancel={onCancel}\n onApply={onApply}\n hasChanges={checkHasChanges(value)}\n />\n ))}\n </div>\n );\n};\n","import React, {useContext, useMemo} from 'react';\nimport {isEmpty, propEq} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {\n AttributeError,\n AttributeType,\n isAttributeTypeError as checkIsAttributeTypeError,\n Entity,\n isPartOfErrorAttributeTypeUri,\n isPartOfErrorParentUri,\n TableAttributeViewConfig\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {\n isHighlightedErrorType,\n ScrollToElementContext,\n useScrollToAttributeError,\n withContext\n} from '@reltio/components';\nimport AttributeTable from '../AttributeTable/AttributeTable';\nimport {useEditableAttribute} from './hooks/useEditableAttribute';\nimport {TableAttributeContext} from '../../contexts/TableAttributeContext';\nimport {TableAttributeEditableContent} from '../TableAttributeEditableContent/TableAttributeEditableContent';\n\ntype HighlightedElement = React.ContextType<typeof ScrollToElementContext>;\n\ntype Props = {\n config: TableAttributeViewConfig;\n entityUri: string;\n attributeType: AttributeType;\n highlightedError?: HighlightedElement;\n highlightedAttributeError?: HighlightedElement;\n};\n\nexport const TableAttributeContent = ({config, entityUri, highlightedError, highlightedAttributeError}: Props) => {\n const isEditableMode = useSelector(mdmModule.selectors.getIsEditableMode);\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entityUri) || ({} as Entity)\n );\n\n const {values, visibleColumns, onFilter, onSort, filters, sorting, allColumnsData} =\n useContext(TableAttributeContext);\n\n const {\n onDeleteAttribute,\n onStartEditing,\n onChangeAttribute,\n onAdd,\n onCancel,\n onApply,\n onReset,\n checkHasChanges,\n modifiedValues,\n editingValues,\n deletedUris\n } = useEditableAttribute();\n const {ref, errorClassName} = useScrollToAttributeError({highlightedError, isSimple: true});\n\n const preparedValues = isEditableMode ? modifiedValues : values;\n\n const visibleColumnsData = useMemo(\n () => visibleColumns.map((id) => allColumnsData.find(propEq('id', id))),\n [visibleColumns, allColumnsData]\n );\n\n return (\n <div ref={ref} className={errorClassName}>\n {isEditableMode && !isEmpty(modifiedEntity) && (\n <TableAttributeEditableContent\n config={config}\n editingValues={editingValues}\n modifiedValues={modifiedValues}\n onChangeAttribute={onChangeAttribute}\n onDeleteAttribute={onDeleteAttribute}\n onAdd={onAdd}\n onReset={onReset}\n onCancel={onCancel}\n onApply={onApply}\n onStartEditing={onStartEditing}\n checkHasChanges={checkHasChanges}\n highlightedError={highlightedError?.element as AttributeError}\n highlightedAttributeError={highlightedAttributeError?.element as AttributeError}\n />\n )}\n {visibleColumnsData.length > 0 && (\n <AttributeTable\n columnsData={visibleColumnsData}\n config={config}\n values={preparedValues}\n filters={filters}\n onFilter={onFilter}\n sorting={sorting}\n onSort={onSort}\n onEdit={onStartEditing}\n onDeleteAttribute={onDeleteAttribute}\n deletedUris={deletedUris}\n />\n )}\n </div>\n );\n};\n\nexport default withContext(\n ScrollToElementContext,\n (contextValue, {entityUri, attributeType}) => {\n const {element, type} = contextValue || {};\n const isError = isHighlightedErrorType(type);\n\n const isAttributeTypeError =\n isError && checkIsAttributeTypeError(element as AttributeError, entityUri, attributeType.uri);\n const isAttributeError =\n element &&\n isError &&\n !isAttributeTypeError &&\n isPartOfErrorAttributeTypeUri(attributeType, element) &&\n isPartOfErrorParentUri(entityUri, element);\n\n const highlightedError = isAttributeTypeError ? contextValue : null;\n const highlightedAttributeError = isAttributeError ? contextValue : null;\n return {highlightedError, highlightedAttributeError};\n },\n TableAttributeContent\n);\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n flexDirection: 'column'\n },\n content: {\n position: 'relative',\n overflow: 'hidden'\n },\n noData: {\n fontSize: '13px',\n paddingLeft: '20px',\n color: 'rgba(0,0,0,0.54)'\n },\n header: {\n padding: '0 4px 0 16px'\n }\n}));\n","import React, {useContext} from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport {\n BasicView,\n FacetViewHeader,\n DescriptionIcon,\n LinearLoadIndicator,\n BasicTablePagination\n} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {TableAttributeViewConfig} from '@reltio/mdm-sdk';\nimport Typography from '@mui/material/Typography';\nimport {TableAttributeContext} from '../../contexts/TableAttributeContext';\nimport AttributeTableHeader from '../AttributeTableHeader/AttributeTableHeader';\nimport TableAttributeContent from '../TableAttributeContent/TableAttributeContent';\nimport {useStyles} from './styles';\n\nconst DEFAULT_ROWS_PER_PAGE = 15;\n\ntype Props = {\n config: TableAttributeViewConfig;\n className?: string;\n};\n\nexport const TableAttributeView = ({config, className}: Props) => {\n const {caption, max = DEFAULT_ROWS_PER_PAGE} = config;\n\n const styles = useStyles();\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n const {totalVisibleValues, attributeType, showTable, hasPaging, isLoading, page, setPage} =\n useContext(TableAttributeContext);\n\n return (\n <BasicView className={classnames(styles.root, className)}>\n {showTable ? (\n <>\n <AttributeTableHeader title={caption} />\n <div className={styles.content}>\n <TableAttributeContent config={config} attributeType={attributeType} entityUri={entityUri} />\n {hasPaging && (\n <BasicTablePagination\n count={totalVisibleValues}\n rowsPerPageOptions={[]}\n rowsPerPage={max}\n page={page}\n onChangePage={setPage}\n />\n )}\n {isLoading && <LinearLoadIndicator />}\n </div>\n </>\n ) : (\n <>\n <FacetViewHeader title={caption} className={styles.header}>\n <DescriptionIcon description={attributeType?.description} />\n </FacetViewHeader>\n <Typography className={styles.noData}>{i18n.text('No data')}</Typography>\n </>\n )}\n </BasicView>\n );\n};\n","import {useEffect, useState, useCallback} from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {pick, prop} from 'ramda';\nimport {Entity, getPathsTree, getRequestErrorMessage, isTempUri, updateTreesWithNewEntity} from '@reltio/mdm-sdk';\nimport {useDidUpdateEffect, useSafePromise} from '@reltio/components';\nimport {Response, Node} from '../types';\n\nlet nodeCounter = 0;\nexport const generateId = () => nodeCounter++;\n\nconst processResponse = (response: Response) => {\n const fakeRoot = {\n children: [] as Node[],\n nodeId: generateId()\n };\n if (response.parentPaths) {\n for (let i = 0; i < response.parentPaths.length; i++) {\n const path = response.parentPaths[i];\n let nextRoot = fakeRoot;\n for (let j = path.length - 1; j >= 0; j--) {\n const nextParent = path[j];\n const entity = response.entities[nextParent.entityUri];\n const isRoot = j === path.length - 1;\n const node: Node = {\n entity,\n children: [],\n nodeId: generateId(),\n expanded: true,\n rootIndex: isRoot ? i + 1 : undefined\n };\n if (isRoot) {\n node.root = isRoot;\n }\n nextRoot.children.push(node);\n nextRoot = node;\n }\n }\n }\n return fakeRoot.children;\n};\nexport const useLoadPaths = (entityUri: string, graphUri: string) => {\n const safePromise = useSafePromise();\n const [isLoading, setIsLoading] = useState(false);\n const [treeData, setTreeData] = useState<Node[]>([]);\n const [errorMessage, setErrorMessage] = useState<string>(null);\n const [rowsPerPage, setRowsPerPage] = useState(25);\n const [pagedData, setPagedData] = useState<Node[]>([]);\n const [page, setPage] = useState(0);\n useEffect(() => {\n setPagedData(treeData.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage));\n }, [page, rowsPerPage, treeData]);\n\n useEffect(() => {\n setPage(0);\n setRowsPerPage(25);\n }, [treeData]);\n const onChangeRowsPerPage = useCallback(\n (rowsPerPage) => {\n setRowsPerPage(rowsPerPage);\n setPage(0);\n },\n [setRowsPerPage]\n );\n\n const entity: Entity = useSelector(mdmModule.selectors.getEntity);\n useDidUpdateEffect(() => {\n const forest = treeData\n .map((tree, index) => ({tree, index}))\n .reduce((acc, tree) => ({...acc, [tree.index]: {root: tree.tree}}), {});\n const newTrees = updateTreesWithNewEntity(pick(['uri', 'label', 'secondaryLabel', 'type'], entity), forest);\n setTreeData(newTrees.map(prop('root')));\n }, [entity?.updatedTime]);\n useEffect(() => {\n if (!isTempUri(entityUri)) {\n setErrorMessage(null);\n setIsLoading(true);\n safePromise(getPathsTree({uri: entityUri, graphUri}))\n .then(processResponse)\n .then(setTreeData)\n .catch((e) => {\n console.warn(e);\n setErrorMessage(getRequestErrorMessage(e, i18n.text('Something went wrong')));\n })\n .finally(() => {\n setIsLoading(false);\n });\n }\n return () => {\n setTreeData([]);\n };\n }, [entityUri, graphUri, safePromise]);\n\n return {\n isLoading,\n treeData: pagedData,\n setTreeData,\n errorMessage,\n rowsPerPage,\n count: treeData.length,\n onChangePage: setPage,\n onChangeRowsPerPage,\n page\n };\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n container: {\n fontSize: '13px',\n display: 'flex',\n paddingTop: '6px',\n position: 'relative'\n },\n title: {\n flexGrow: 1,\n minHeight: '15px',\n color: theme.palette.primary.main,\n lineHeight: '15px'\n },\n wrapper: {\n width: '100%'\n },\n hidePageSelectorWhenSmall: {\n '@media (min-width: 450px)': {\n '& .MuiInputBase-root': {\n display: 'none'\n },\n '& .MuiTablePagination-selectLabel': {\n display: 'none'\n }\n }\n },\n avatar: {\n height: '16px',\n width: '16px',\n marginRight: '8px',\n marginLeft: '8px'\n },\n header: {\n padding: '0 4px 0 16px'\n },\n treeContainer: {\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n minHeight: '372px',\n maxHeight: '507px',\n overflow: 'auto'\n },\n tree: {\n flexGrow: 1,\n height: 0\n },\n buttonsContainer: {\n flexShrink: 0,\n marginLeft: 'auto',\n '& > * + *': {\n marginLeft: '-4px'\n }\n },\n button: {\n padding: '8px'\n },\n errorMessage: {\n fontSize: '13px',\n margin: '0 16px 0',\n lineHeight: '1.4',\n color: theme.palette.text.secondary\n },\n linearIndicator: {\n top: '42px'\n }\n}));\n","import React from 'react';\nimport {HierarchyPathsViewConfig} from '@reltio/mdm-sdk';\n\nexport const ConfigContext = React.createContext<HierarchyPathsViewConfig>(null);\n","import React, {memo, useContext, useState} from 'react';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport {HierarchyNodeTitle} from '@reltio/components';\nimport {getAbsoluteImageUrl, getEntityType, getPropWithInheritance, getLabel} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport Avatar from '@mui/material/Avatar';\nimport {useStyles} from './styles';\nimport DEFAULT_ICON from './defaultTypeIcon.png';\nimport {ConfigContext} from './ConfigContext';\nimport {Node as NodeType} from './types';\n\nconst onImageLoadFail = (e) => {\n e.target.src = DEFAULT_ICON;\n};\n\ntype Props = {\n node?: NodeType;\n};\n\nexport const Node = ({node}: Props) => {\n const {\n entity: {uri},\n nodeId\n } = node;\n const title = getLabel(node.entity.label);\n\n const styles = useStyles();\n const absoluteImagePath = useSelector(mdm.selectors.getAbsoluteImagePath);\n const metadata = useSelector(mdm.selectors.getMetadata);\n const {uri: currentEntityUri} = useSelector(mdm.selectors.getEntity);\n\n const [popperAnchor, setPopperAnchor] = useState<HTMLElement>();\n const config = useContext(ConfigContext);\n\n const isSelected = uri === currentEntityUri;\n const entityType = getEntityType(metadata, node.entity.type);\n const entityTypeGraphIcon = entityType ? getPropWithInheritance(metadata, entityType, 'typeGraphIcon') : null;\n const icon = entityTypeGraphIcon && getAbsoluteImageUrl(absoluteImagePath, entityTypeGraphIcon);\n\n return (\n <div className={styles.wrapper} data-node-id={nodeId}>\n <div ref={setPopperAnchor} className={styles.container}>\n <Avatar\n alt=\"Node icon\"\n className={classnames(styles.avatar)}\n src={icon || DEFAULT_ICON}\n onError={onImageLoadFail}\n />\n <HierarchyNodeTitle\n isSelected={isSelected}\n title={title}\n entityUri={uri}\n viewId={config.id}\n anchorEl={popperAnchor}\n />\n </div>\n </div>\n );\n};\n\nexport default memo(Node);\n","import {Node} from './types';\n\nexport const getNodeKey = ({node}: {node: Node}) => node.nodeId;\n","import {makeStyles} from '@mui/styles';\nimport {theme as treeTheme} from '../theme';\n\nexport const useStyles = makeStyles(() => ({\n lineBlock: {\n height: '100%',\n position: 'relative',\n display: 'inline-block'\n },\n lineChildren: {\n height: '100%',\n position: 'absolute',\n display: 'inline-block',\n '&:after': {\n content: \"''\",\n position: 'absolute',\n backgroundColor: 'rgba(0,122,193,0.3)',\n width: '1px',\n left: '50%',\n bottom: '0',\n height: `calc(100% - ${treeTheme.rowHeight}px)`\n }\n },\n rootIndex: {\n display: 'flex',\n alignItems: 'center',\n color: 'rgba(0,0,0,0.54)',\n height: '100%'\n },\n verticalLine: {\n width: '1px',\n left: 'calc(50% - 1px)',\n top: 0,\n height: `${treeTheme.rowHeight / 2}px`,\n position: 'absolute',\n backgroundColor: 'rgba(0,122,193,0.3)'\n },\n horizontalLineRight: {\n height: '1px',\n top: `${treeTheme.rowHeight / 2}px`,\n left: 'calc(50% - 1px)',\n width: '24%',\n position: 'absolute',\n backgroundColor: 'rgba(0,122,193,0.3)'\n },\n node: {\n minWidth: '100%',\n position: 'relative',\n textAlign: 'left',\n padding: '0 24px 0 18px',\n boxSizing: 'border-box',\n whiteSpace: 'normal',\n '&:hover': {\n backgroundColor: 'rgba(0,0,0,0.06)'\n }\n },\n rootNode: {\n padding: '0 24px 0 13px'\n },\n\n longRootNode: {\n padding: '0 24px 0 5px'\n },\n\n nodeContent: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n paddingLeft: '18px',\n boxSizing: 'border-box'\n },\n nodeRootLongContent: {\n paddingLeft: '20px'\n },\n row: {\n display: 'flex'\n },\n rowContents: {\n position: 'relative',\n borderLeft: 'none',\n paddingLeft: '4px',\n flex: '1 1 auto',\n width: 0,\n display: 'flex',\n verticalAlign: 'middle',\n boxSizing: 'border-box'\n },\n buttonWrapper: {\n display: 'flex',\n paddingTop: '13px',\n width: '12px',\n cursor: 'pointer'\n },\n collapsedButton: {\n transform: 'rotate(-90deg)'\n },\n expandedButton: {\n transform: 'rotate(0deg)'\n },\n button: {\n transition: 'transform .15s ease',\n width: 0,\n height: 0,\n borderLeft: '4px solid transparent',\n borderRight: '4px solid transparent',\n borderTop: '4px solid rgba(0, 0, 0, 0.54)'\n },\n rowTitle: {\n flex: '1 1 auto',\n width: 0,\n paddingRight: '11px'\n }\n}));\n","import React from 'react';\nimport {useStyles} from './styles';\nimport classnames from 'classnames';\nimport {omit} from 'ramda';\nimport {Node} from '../types';\n\ntype Props = {\n treeIndex: number;\n scaffoldBlockPxWidth: number;\n node: Node;\n path: Array<string | number>;\n style?: Record<string, unknown>;\n title: React.ReactElement;\n toggleChildrenVisibility: (props) => void;\n};\n\nconst NodeRendererDefault = (props: Props) => {\n const {scaffoldBlockPxWidth, toggleChildrenVisibility, node, title, path, treeIndex, style, ...otherProps} = omit(\n [\n 'connectDragPreview',\n 'connectDragSource',\n 'isDragging',\n 'canDrop',\n 'canDrag',\n 'draggedNode',\n 'isSearchMatch',\n 'isSearchFocus',\n 'buttons',\n 'didDrop',\n 'children',\n 'treeId',\n 'isOver',\n 'parentNode',\n 'rowDirection'\n ],\n props\n );\n const nodeTitle = title;\n\n const showToggleChildrenButton =\n toggleChildrenVisibility && !node.root && node.children && node.children.length > 0;\n\n const onToggle = () => {\n toggleChildrenVisibility({\n node,\n path,\n treeIndex\n });\n };\n const styles = useStyles();\n return (\n <div style={{height: '100%'}} {...otherProps} key={node.nodeId}>\n {showToggleChildrenButton && node.expanded && (\n <div style={{width: scaffoldBlockPxWidth - 2}} className={styles.lineChildren} />\n )}\n <div className={styles.row} style={style}>\n <div className={styles.rowContents}>\n {showToggleChildrenButton && (\n <div className={styles.buttonWrapper} onClick={onToggle}>\n <div\n aria-label={node.expanded ? 'Collapse' : 'Expand'}\n className={classnames(\n styles.button,\n node.expanded ? styles.expandedButton : styles.collapsedButton\n )}\n />\n </div>\n )}\n <div className={styles.rowTitle}>\n {typeof nodeTitle === 'function'\n ? nodeTitle({\n node,\n path,\n treeIndex\n })\n : nodeTitle}\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default NodeRendererDefault;\n","import treeNodeRenderer from './tree-node-data-renderer';\nimport nodeContentRenderer from './node-content-renderer';\n\nconst scaffoldBlockPxWidth = 16;\nconst rowHeight = 28;\nconst slideRegionSize = 50;\n\nexport const theme = {nodeContentRenderer, treeNodeRenderer, scaffoldBlockPxWidth, rowHeight, slideRegionSize};\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\nimport {omit} from 'ramda';\nimport {Node} from '../types';\n\nconst MIN_NODE_CONTENT_WIDTH = 250;\n\ntype Props = {\n scaffoldBlockPxWidth: number;\n lowerSiblingCounts: number[];\n\n node: Node;\n children: React.ReactElement;\n style?: Record<string, unknown>;\n};\n\nconst TreeNode = (props: Props) => {\n const {children, scaffoldBlockPxWidth, lowerSiblingCounts, node, ...otherProps} = omit(\n [\n 'listIndex',\n 'swapFrom',\n 'swapLength',\n 'swapDepth',\n 'draggedNode',\n 'getPrevRow',\n 'connectDropTarget',\n 'isOver',\n 'canDrop',\n 'treeIndex',\n 'treeId',\n 'path',\n 'rowDirection'\n ],\n props\n );\n const styles = useStyles();\n // Construct the scaffold representing the structure of the tree\n const scaffoldBlockCount = lowerSiblingCounts.length;\n const scaffold = [];\n lowerSiblingCounts.forEach((lowerSiblingCount, i) => {\n scaffold.push(\n <div key={`pre_${1 + i}`} style={{width: scaffoldBlockPxWidth}} className={styles.lineBlock}>\n {node.root && <div className={styles.rootIndex}>{node.rootIndex}.</div>}\n {i === scaffoldBlockCount - 1 && i !== 0 && (\n <>\n <div className={styles.verticalLine} />\n <div className={styles.horizontalLineRight} />\n </>\n )}\n </div>\n );\n });\n\n const shift = node.root ? scaffoldBlockPxWidth - 4 : 0; //4px - shifting for rootIndex\n const scaffoldWidth = scaffoldBlockPxWidth * scaffoldBlockCount - shift;\n const style = {left: scaffoldWidth, width: `calc(100% - ${scaffoldWidth}px`};\n const width = `${scaffoldWidth + MIN_NODE_CONTENT_WIDTH}px`;\n const nodeStyle = {...otherProps.style, width};\n const longRootNode = node?.rootIndex > 99 && node.root;\n return (\n <div\n {...otherProps}\n className={classnames(styles.node, {\n [styles.longRootNode]: longRootNode,\n [styles.rootNode]: node.root && !longRootNode\n })}\n style={nodeStyle}\n >\n {scaffold}\n\n <div className={classnames(styles.nodeContent, {[styles.nodeRootLongContent]: longRootNode})} style={style}>\n {children}\n </div>\n </div>\n );\n};\n\nexport default TreeNode;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"20\",\n height: \"20\",\n viewBox: \"0 0 20 20\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\",\n fillOpacity: \".54\"\n}, React.createElement(\"path\", {\n d: \"M14.5 5a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm4 5a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm-17 1a1.5 1.5 0 110-3 1.5 1.5 0 010 3zM4 4a2 2 0 110-4 2 2 0 010 4zm1 16a2 2 0 110-4 2 2 0 010 4zm4.5-6a4.5 4.5 0 110-9 4.5 4.5 0 010 9zm0-2a2.5 2.5 0 100-5 2.5 2.5 0 000 5zm6 5a1.5 1.5 0 110-3 1.5 1.5 0 010 3z\",\n fill: \"#000\"\n}))));","import React, {useContext} from 'react';\nimport i18n from 'ui-i18n';\nimport {FacetViewHeader, FeaturesContext, SmallIconButtonWithTooltip} from '@reltio/components';\nimport ShowGraphIcon from './icons/ShowGraph.svg';\nimport {useStyles} from './styles';\n\ntype Props = {\n title?: string;\n onGraphOpen: () => void;\n};\n\nconst HierarchyPathsHeader = ({title, onGraphOpen}: Props) => {\n const styles = useStyles();\n const {showNavigateToGraph} = useContext(FeaturesContext);\n return (\n <FacetViewHeader title={title} className={styles.header}>\n {showNavigateToGraph && (\n <div className={styles.buttonsContainer}>\n <SmallIconButtonWithTooltip\n className={styles.button}\n tooltipTitle={i18n.text('Show Graph')}\n icon={ShowGraphIcon}\n onClick={onGraphOpen}\n size=\"L\"\n />\n </div>\n )}\n </FacetViewHeader>\n );\n};\n\nexport default HierarchyPathsHeader;\n","import {useCallback, useState} from 'react';\nimport {assoc} from 'ramda';\n\nimport {theme} from '../theme';\nimport {Node} from '../types';\nimport {getNodeKey} from '../helpers';\n\ntype HeightsCache = {[nodeId: Node['nodeId']]: number};\n\nconst getCacheKey = (node: Node) => getNodeKey({node});\n\nexport const useDynamicNodesHeights = () => {\n const [heightsCache, setHeightsCache] = useState<HeightsCache>({});\n const clearHeightsCache = useCallback(() => {\n setHeightsCache({});\n }, []);\n const onResize = useCallback(\n (node: Node) => (_, height) => {\n setHeightsCache((prevCache) =>\n prevCache[getCacheKey(node)] !== height ? assoc(getCacheKey(node), height, prevCache) : prevCache\n );\n },\n []\n );\n const getRowHeight = useCallback(\n ({node}: {node: Node}): number =>\n heightsCache[getCacheKey(node)]\n ? Math.max(heightsCache[getCacheKey(node)], theme.rowHeight)\n : theme.rowHeight,\n [heightsCache]\n );\n return {onResize, getRowHeight, clearHeightsCache};\n};\n","import React, {useCallback, useContext, useEffect, useMemo} from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {\n BasicTablePagination,\n BasicView,\n FeaturesContext,\n LinearLoadIndicator,\n ReactSortableTree\n} from '@reltio/components';\nimport mdmModule, {ui} from '@reltio/mdm-module';\nimport Typography from '@mui/material/Typography';\nimport {useLoadPaths} from './hooks/useLoadPaths';\nimport {Node} from './Node';\nimport {useStyles} from './styles';\nimport {ConfigContext} from './ConfigContext';\nimport {HierarchyPathsViewConfig} from '@reltio/mdm-sdk';\nimport {getNodeKey} from './helpers';\nimport {theme} from './theme';\nimport HierarchyPathsHeader from './HierarchyPathsHeader';\nimport {useDynamicNodesHeights} from './hooks/useDynamicNodesHeights';\nimport i18n from 'ui-i18n';\n\ntype Props = {\n className?: string;\n config: HierarchyPathsViewConfig;\n};\nconst ROOTS_PER_PAGE_OPTIONS = [10, 25];\n\nexport const HierarchyPathsView = ({config, className}: Props) => {\n const {id, caption, graph, _showNavigateToGraph} = config;\n const graphType = graph?.type;\n\n const styles = useStyles();\n const dispatch = useDispatch();\n const entityUri = useSelector(mdmModule.selectors.getEntityUri);\n\n const {\n treeData,\n setTreeData,\n errorMessage,\n isLoading,\n rowsPerPage,\n count,\n onChangePage,\n onChangeRowsPerPage,\n page\n } = useLoadPaths(entityUri, graphType);\n const {onResize, getRowHeight, clearHeightsCache} = useDynamicNodesHeights();\n\n const featuresContext = useContext(FeaturesContext);\n const showNavigateToGraph =\n _showNavigateToGraph !== undefined ? _showNavigateToGraph : featuresContext.showNavigateToGraph;\n const features = useMemo(() => ({...featuresContext, showNavigateToGraph}), [showNavigateToGraph, featuresContext]);\n\n const openGraph = useCallback(() => {\n dispatch(ui.actions.openGraph({viewId: id, graphType, entityUri}));\n }, [dispatch, id, graphType, entityUri]);\n\n const generateNodeProps = useCallback(\n (rowInfo) => ({\n title: (\n <ReactResizeDetector\n handleHeight\n refreshMode=\"debounce\"\n refreshRate={100}\n onResize={onResize(rowInfo.node)}\n >\n <Node node={rowInfo.node} />\n </ReactResizeDetector>\n )\n }),\n [onResize]\n );\n\n useEffect(() => {\n clearHeightsCache();\n }, [clearHeightsCache, entityUri]);\n\n return (\n <FeaturesContext.Provider value={features}>\n <BasicView className={className}>\n <HierarchyPathsHeader onGraphOpen={openGraph} title={caption} />\n {isLoading && <LinearLoadIndicator className={styles.linearIndicator} />}\n <ConfigContext.Provider value={config}>\n <div className={styles.treeContainer}>\n <div className={styles.tree}>\n {!errorMessage ? (\n <>\n <ReactSortableTree\n isVirtualized={false}\n treeData={treeData}\n canDrag={false}\n theme={theme}\n generateNodeProps={generateNodeProps}\n onChange={setTreeData}\n getNodeKey={getNodeKey}\n rowHeight={getRowHeight}\n />\n </>\n ) : (\n <Typography className={styles.errorMessage}>{errorMessage}</Typography>\n )}\n </div>\n </div>\n {count > ROOTS_PER_PAGE_OPTIONS[1] ? (\n <BasicTablePagination\n classes={{root: styles.hidePageSelectorWhenSmall}}\n count={count}\n onChangePage={onChangePage}\n page={page}\n rowsPerPage={rowsPerPage}\n onChangeRowsPerPage={onChangeRowsPerPage}\n rowsPerPageOptions={ROOTS_PER_PAGE_OPTIONS}\n labelRowsPerPage={i18n.text('Roots per page:')}\n />\n ) : null}\n </ConfigContext.Provider>\n </BasicView>\n </FeaturesContext.Provider>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n position: 'relative'\n },\n bodyWrapper: {\n paddingTop: '21px'\n }\n}));\n","import React, {useRef, useEffect, useState} from 'react';\nimport {useAPI} from '@reltio/components';\nimport {CustomActionViewConfig} from '@reltio/mdm-sdk';\nimport Tooltip from '@mui/material/Tooltip';\nimport Dialog from '@mui/material/Dialog';\nimport {isNil, reject} from 'ramda';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n config: CustomActionViewConfig;\n className?: string;\n};\n\nexport const CustomView = ({config, className}: Props) => {\n const basicViewRef = useRef<HTMLDivElement>();\n const dialogRef = useRef<HTMLDivElement>();\n const [showModal, setShowModal] = useState<boolean>(false);\n const {height, width, tooltip: defaultTooltip} = config;\n const {html, visible, tooltip: updatedTooltip, customStyles, popup} = useAPI(config);\n const styles = useStyles();\n const tooltip = updatedTooltip || defaultTooltip;\n useEffect(() => {\n if (basicViewRef.current && html) {\n basicViewRef.current.innerHTML = '';\n Array.from(html.childNodes).forEach((child) => {\n basicViewRef.current.appendChild(child);\n });\n }\n }, [html]);\n useEffect(() => {\n setShowModal(!!popup);\n }, [popup]);\n\n useEffect(() => {\n if (showModal && dialogRef.current) {\n dialogRef.current.innerHTML = '';\n if (popup) {\n Array.from(popup.childNodes).forEach((child) => {\n dialogRef.current.appendChild(child);\n });\n }\n }\n }, [showModal, popup]);\n\n const style: {width?: number; height?: number} = reject(isNil, {width, height});\n return visible ? (\n <div className={styles.bodyWrapper}>\n <Dialog ref={dialogRef} open={!!popup} />\n <Tooltip title={tooltip || ''}>\n <div\n ref={basicViewRef}\n style={{...style, ...customStyles}}\n className={classnames(styles.root, className)}\n />\n </Tooltip>\n </div>\n ) : null;\n};\n","import React, {ComponentType} from 'react';\nimport i18n from 'ui-i18n';\nimport {EMPTY_STATE_ICONS, EMPTY_STATE_VARIANTS, EmptyState, ErrorBoundary} from '@reltio/components';\n\nconst withErrorBoundary = <P extends Record<string, unknown>>(Component: ComponentType<P>) => {\n const WithErrorBoundary = (props: P) => {\n return (\n <ErrorBoundary\n error={\n <EmptyState\n LogoRenderer={EMPTY_STATE_ICONS.ERROR}\n text=\"\"\n secondaryText={i18n.text('Something went wrong')}\n variant={EMPTY_STATE_VARIANTS.small}\n />\n }\n >\n <Component {...props} />\n </ErrorBoundary>\n );\n };\n\n WithErrorBoundary.displayName = 'WithErrorBoundary';\n return WithErrorBoundary;\n};\n\nexport default withErrorBoundary;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n stubView: {\n padding: '20px'\n },\n fullHeight: {\n height: '100%'\n },\n component: {\n boxSizing: 'border-box',\n overflow: 'auto',\n boxShadow: 'none',\n borderRadius: 'unset'\n }\n});\n","import {useEffect, useState} from 'react';\nimport {both, gt, lt, path, pipe} from 'ramda';\nimport {Entity, GeoPoint, Metadata, resolve} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '@reltio/components';\n\nconst filterWrongLat = pipe(path(['point', 'lat']), both(gt(90), lt(-90)));\n\nexport const useMarkers = (entity: Entity, metadata: Metadata, mapKey: string) => {\n const [markers, setMarkers] = useState<GeoPoint[]>([]);\n const [loading, setLoading] = useState(true);\n const safePromise = useSafePromise();\n useEffect(() => {\n setLoading(true);\n safePromise(resolve(metadata, [entity], mapKey))\n .then((markers) => {\n setMarkers(markers.filter(filterWrongLat));\n })\n .catch(() => {\n setMarkers([]);\n })\n .finally(() => {\n setLoading(false);\n });\n }, [entity, metadata, mapKey, safePromise]);\n\n return {markers, loading};\n};\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles(() => ({\n root: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column'\n },\n fullHeight: {\n height: '100%'\n },\n fullscreenBtn: {\n position: 'absolute',\n right: '5px',\n top: '5px',\n zIndex: 100\n }\n}));\n\nexport default useStyles;\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles((theme) => ({\n caption: {\n color: theme.palette.text.secondary,\n fontSize: '13px'\n }\n}));\n\nexport default useStyles;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport Typography from '@mui/material/Typography';\nimport useStyles from './styles';\n\ntype ImageLineCaptionProps = {\n totalImages: number;\n};\n\nexport const ImageLineCaption = ({totalImages}: ImageLineCaptionProps) => {\n const styles = useStyles();\n const photoWord = totalImages > 1 ? i18n.text('photos') : i18n.text('photo');\n return (\n <Typography variant=\"caption\" className={styles.caption}>\n {`${totalImages} ${photoWord}`}\n </Typography>\n );\n};\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {pipe, pathOr} from 'ramda';\nimport {EditableImageAttributesLine} from '@reltio/components';\nimport {\n AttributeType,\n Entity,\n Paging,\n AttributeItem,\n ImageAttributeViewConfig,\n RequestNextPageOfAttributeValuesPayload\n} from '@reltio/mdm-sdk';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {IMAGE_SIZE} from '../ImageAttributeView';\nimport {ImageLineCaption} from '../ImageLineCaption/ImageLineCaption';\n\ntype ImageAttributeViewEditableContentProps = {\n config: ImageAttributeViewConfig;\n attributeType: AttributeType;\n paging?: Paging;\n requestNextPageOfAttributeValues?: (payload: RequestNextPageOfAttributeValuesPayload) => void;\n};\n\nexport const ImageAttributeViewEditableContent = ({\n config,\n attributeType,\n paging,\n requestNextPageOfAttributeValues\n}: ImageAttributeViewEditableContentProps) => {\n const dispatch = useDispatch();\n const entity = useSelector(mdmModule.selectors.getEntity);\n const modifiedEntity = useSelector(\n (state) => mdmModule.selectors.getModifiedEntity(state, entity.uri) || ({} as Entity)\n );\n const modifiedEntityValues = pathOr([], ['attributes', attributeType.name], modifiedEntity);\n const viewId = config.id;\n\n const onChangeAttribute = (params: AttributeItem) =>\n pipe(profile.actions.modifyAttribute, dispatch)({...params, viewId});\n\n const onDeleteAttribute = (params: AttributeItem) =>\n pipe(profile.actions.removeAttribute, dispatch)({...params, viewId});\n\n return (\n <>\n <EditableImageAttributesLine\n attributeValues={modifiedEntityValues}\n attributeType={attributeType}\n onDeleteAttribute={onDeleteAttribute}\n parentUri={modifiedEntity.uri}\n onChangeAttribute={onChangeAttribute}\n imageSize={IMAGE_SIZE}\n paging={paging}\n requestNextPageOfAttributeValues={requestNextPageOfAttributeValues}\n />\n <ImageLineCaption totalImages={modifiedEntityValues.length} />\n </>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: '8px 16px'\n },\n noData: {\n fontSize: '13px',\n color: theme.palette.text.secondary\n }\n}));\n\nexport default useStyles;\n","import React, {useCallback} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {pathOr, path} from 'ramda';\nimport i18n from 'ui-i18n';\nimport Typography from '@mui/material/Typography';\nimport {BasicView, DescriptionIcon, FacetViewHeader, ImageAttributesLine} from '@reltio/components';\nimport {\n findAttributeTypeByUri,\n isEditableMode,\n ImageAttributeViewConfig,\n RequestNextPageOfAttributeValuesPayload\n} from '@reltio/mdm-sdk';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {ImageAttributeViewEditableContent} from './ImageAttributeViewEditableContent/ImageAttributeViewEditableContent';\nimport {ImageLineCaption} from './ImageLineCaption/ImageLineCaption';\nimport useStyles from './styles';\n\ntype ImageAttributeViewProps = {\n config: ImageAttributeViewConfig;\n className?: string;\n};\n\nexport const IMAGE_SIZE = {\n imageMargin: 4,\n imageWidth: 162,\n imageHeight: 162\n};\n\nexport const ImageAttributeView = ({config, className}: ImageAttributeViewProps) => {\n const {attributeUri} = config;\n const styles = useStyles();\n const dispatch = useDispatch();\n\n const mode = useSelector(mdmModule.selectors.getMode);\n const entity = useSelector(mdmModule.selectors.getEntityWithDiff);\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n\n const attributeType = attributeUri ? findAttributeTypeByUri(metadata, attributeUri) : null;\n const noDataText = config['text-empty'] || i18n.text('No data found');\n\n const requestNextPageOfAttributeValues = useCallback(\n (payload: RequestNextPageOfAttributeValuesPayload) =>\n dispatch(profile.actions.requestNextPageOfAttributeValues(payload)),\n [dispatch]\n );\n\n const renderContent = () => {\n if (attributeType) {\n const entityValues = pathOr([], ['attributes', attributeType.name], entity);\n const paging = path(['attributes', 'paging', attributeUri], entity);\n const totalValues = entityValues.length;\n\n if (isEditableMode(mode)) {\n const props = {\n attributeType,\n config,\n paging,\n requestNextPageOfAttributeValues\n };\n return <ImageAttributeViewEditableContent {...props} />;\n }\n\n if (totalValues > 0) {\n const props = {\n attributeValues: entityValues,\n attributeType,\n imageSize: IMAGE_SIZE,\n paging,\n parentUri: entity.uri,\n requestNextPageOfAttributeValues\n };\n return (\n <>\n <ImageAttributesLine {...props} />\n <ImageLineCaption totalImages={totalValues} />\n </>\n );\n }\n }\n\n return <Typography className={styles.noData}>{noDataText}</Typography>;\n };\n\n return (\n <BasicView className={className}>\n <FacetViewHeader title={config.caption}>\n <DescriptionIcon description={attributeType?.description} />\n </FacetViewHeader>\n <div className={styles.container}>{renderContent()}</div>\n </BasicView>\n );\n};\n","import {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {getActionPermissionForMatch, Match, ProfilePotentialMatchesViewConfig} from '@reltio/mdm-sdk';\nimport React, {useCallback, useContext, useMemo} from 'react';\nimport {ActionButtonMode, MergeButton, NotMatchButton, ViewIdContext} from '@reltio/components';\n\ntype Props = {\n config: ProfilePotentialMatchesViewConfig;\n match: Match;\n onStartRequest: () => void;\n onFinishRequest: () => void;\n};\nexport const ActionButtons = ({config, match, onStartRequest, onFinishRequest}: Props) => {\n const dispatch = useDispatch();\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const entity = useSelector(mdmModule.selectors.getEntity);\n const {canMerge, canMark} = getActionPermissionForMatch(metadata, config, match.object, entity, match.matchRules);\n const entities = useMemo(() => {\n return [match.object];\n }, [match.object]);\n\n const actionButtonProps = {\n entity,\n entities,\n mode: ActionButtonMode.iconButton,\n onStartRequest\n };\n const viewId = useContext(ViewIdContext);\n const onMergeFinish = useCallback(() => {\n onFinishRequest();\n dispatch(profile.entity.actions.loadEntity({viewId, uri: entity.uri}));\n }, [dispatch, entity.uri, onFinishRequest, viewId]);\n return (\n <>\n {canMerge && <MergeButton {...actionButtonProps} onFinishRequest={onMergeFinish} />}\n {canMark && <NotMatchButton {...actionButtonProps} onFinishRequest={onFinishRequest} />}\n </>\n );\n};\n","import {\n COMMENTS_CONTAINER_VISIBILITY_AREA,\n CommentsContainer,\n ProfileMatchCard,\n useMatchesLoader\n} from '@reltio/components';\nimport {\n CollaborationObjectTypes,\n createObjectIdForPM,\n createRelatedObjectUris,\n Match,\n ProfilePotentialMatchesViewConfig\n} from '@reltio/mdm-sdk';\nimport {ActionButtons} from './ActionButtons';\nimport React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\n\ntype Props = Pick<ReturnType<typeof useMatchesLoader>, 'entitiesMap'> & {\n config: ProfilePotentialMatchesViewConfig;\n match: Match;\n onFinishRequest: () => void;\n onStartRequest: () => void;\n};\n\nexport const MatchCard = ({config, entitiesMap, match, onFinishRequest, onStartRequest}: Props) => {\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const entity = useSelector(mdmModule.selectors.getEntity);\n return (\n <ProfileMatchCard\n match={match}\n entity={entity}\n entitiesMap={entitiesMap}\n metadata={metadata}\n className={COMMENTS_CONTAINER_VISIBILITY_AREA}\n >\n <CommentsContainer\n uri={createObjectIdForPM(entity.uri, match.object.uri)}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.POTENTIAL_MATCH, {\n entityUri: entity.uri,\n matchEntityUri: match.object.uri\n })}\n objectType={CollaborationObjectTypes.POTENTIAL_MATCH}\n />\n <ActionButtons\n match={match}\n config={config}\n onStartRequest={onStartRequest}\n onFinishRequest={onFinishRequest}\n />\n </ProfileMatchCard>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n flexDirection: 'column',\n minHeight: '52px'\n },\n matchesContainer: {\n position: 'relative'\n },\n footer: {\n display: 'flex',\n alignItems: 'end',\n flexGrow: 1,\n justifyContent: 'flex-start',\n borderTop: '1px solid rgba(0,0,0, 0.12)',\n padding: '8px 16px',\n color: theme.palette.primary.main,\n fontSize: '13px',\n letterSpacing: '0',\n lineHeight: '15px'\n },\n noData: {\n paddingLeft: '16px',\n paddingBottom: '16px',\n fontSize: '13px',\n color: 'rgba(0,0,0,0.54)'\n }\n}));\n","import React, {useCallback, useContext, useEffect, useMemo, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {isEmpty, map} from 'ramda';\nimport Link from '@mui/material/Link';\nimport Typography from '@mui/material/Typography';\nimport {\n BasicView,\n CollaborationContext,\n EntitiesMapContext,\n FacetViewHeader,\n LinearLoadIndicator,\n useMatchesLoader,\n ViewIdContext\n} from '@reltio/components';\nimport mdmModule, {ui as mdmModuleUi} from '@reltio/mdm-module';\nimport {\n getEntityUriForLink,\n getEntityUriFromMatchObject,\n getPotentialMatchesObjectIdsForCollaboration,\n Order,\n ProfilePotentialMatchesViewConfig\n} from '@reltio/mdm-sdk';\nimport {MatchCard} from './MatchCard';\nimport {useStyles} from './styles';\n\ntype Props = {\n config: ProfilePotentialMatchesViewConfig;\n className?: string;\n};\n\nexport const DEFAULT_MATCHES_LIMIT = 3;\nexport const DEFAULT_OPTIONS = {\n showTransitiveMatches: true,\n showInactiveEntities: false\n};\nexport const DEFAULT_SORTING = {order: Order.asc, field: 'score'};\nenum ComponentStates {\n Loading,\n NoData,\n Loaded\n}\nexport const ProfilePotentialMatchesView = ({config, className}: Props) => {\n const styles = useStyles();\n const entity = useSelector(mdmModule.selectors.getEntity);\n const entityUri = getEntityUriForLink(entity);\n\n const [isLoading, setIsLoading] = useState(false);\n const turnOnDisableSpinner = useCallback(() => {\n setIsLoading(true);\n }, []);\n const turnOffDisableSpinner = useCallback(() => {\n setIsLoading(false);\n }, []);\n\n const {matches, entitiesMap, loadMatches} = useMatchesLoader({\n enabled: !!entityUri,\n entity,\n options: DEFAULT_OPTIONS,\n filter: '',\n page: 0,\n sorting: DEFAULT_SORTING,\n rowsPerPage: DEFAULT_MATCHES_LIMIT,\n onStartLoading: turnOnDisableSpinner,\n onFinishLoading: turnOffDisableSpinner\n });\n const onFinishMatchAction = useCallback(() => {\n loadMatches();\n }, [loadMatches]);\n\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n const openPotentialMatchPerspective = useCallback(() => {\n dispatch(mdmModuleUi.actions.openPerspective({perspectiveId: 'potentialMatches', viewId}));\n }, [dispatch, viewId]);\n\n const objectIds = useMemo(\n () => getPotentialMatchesObjectIdsForCollaboration(entityUri, map(getEntityUriFromMatchObject, matches)),\n [entityUri, matches]\n );\n\n const {getCommentsCount} = useContext(CollaborationContext);\n useEffect(() => {\n getCommentsCount(objectIds);\n }, [getCommentsCount, objectIds]);\n\n const showSeeAll = !isEmpty(matches);\n const getComponentState = () => {\n if (isLoading) {\n return ComponentStates.Loading;\n }\n if (isEmpty(matches)) {\n return ComponentStates.NoData;\n }\n return ComponentStates.Loaded;\n };\n const state = getComponentState();\n return (\n <EntitiesMapContext.Provider value={entitiesMap}>\n <BasicView className={classnames(styles.root, className)}>\n <FacetViewHeader title={config.caption} />\n <div className={styles.matchesContainer}>\n {state === ComponentStates.Loading && <LinearLoadIndicator />}\n {state === ComponentStates.NoData && (\n <Typography className={styles.noData}>{i18n.text('No matches found')}</Typography>\n )}\n {state === ComponentStates.Loaded &&\n matches.map((match) => (\n <MatchCard\n config={config}\n entitiesMap={entitiesMap}\n match={match}\n onFinishRequest={onFinishMatchAction}\n onStartRequest={turnOnDisableSpinner}\n key={match.object.uri}\n />\n ))}\n </div>\n {showSeeAll && (\n <>\n <div className={styles.footer}>\n <Link\n component=\"button\"\n variant=\"caption\"\n onClick={openPotentialMatchPerspective}\n underline=\"none\"\n >\n {i18n.text('See all')}\n </Link>\n </div>\n </>\n )}\n </BasicView>\n </EntitiesMapContext.Provider>\n );\n};\n","import React, {lazy} from 'react';\nimport {\n ProfileViewConfig,\n ProfileViewTypes,\n AttributeViewConfig,\n EntityMapViewConfig,\n ProfilePotentialMatchesViewConfig,\n RelationsViewConfig,\n ImageAttributeViewConfig,\n SingleAttributeViewConfig,\n HierarchyPathsViewConfig,\n HierarchyTreeViewConfig,\n CustomActionViewConfig\n} from '@reltio/mdm-sdk';\nimport {pipe} from 'ramda';\nimport {withDragHandle} from '@reltio/components';\nimport {ProfileAttributesView} from '../ProfileAttributesView/ProfileAttributesView';\nimport {ProfileSingleAttributeView} from '../ProfileSingleAttributeView/ProfileSingleAttributeView';\nimport {ProfileRelationsView} from '../ProfileRelationsView/ProfileRelationsView';\nimport {ProfileTableAttributeView} from '../ProfileTableAttributeView/ProfileTableAttributeView';\nimport {HierarchyPathsView} from '../HierarchyPathsView';\nimport {CustomView} from '../Sandbox/CustomView';\nimport withErrorBoundary from './HOCs/withErrorBoundary';\nimport {StubView} from './StubView';\nimport EntityMapView from '../EntityMapView/EntityMapView';\nimport {ImageAttributeView} from '../ImageAttributeView/ImageAttributeView';\nimport {ProfilePotentialMatchesView} from '../ProfilePotentialMatchesView/ProfilePotentialMatchesView';\n\nconst wrapView = <P extends unknown>(component: P): P => pipe(withErrorBoundary, withDragHandle)(component);\n\nconst WrappedStubView = wrapView(StubView);\nexport const WrappedProfileAttributesView = wrapView(ProfileAttributesView);\nexport const WrappedProfileSingleAttributeView = wrapView(ProfileSingleAttributeView);\nexport const WrappedProfileTableAttributeView = wrapView(ProfileTableAttributeView);\nexport const WrappedProfileRelationsView = wrapView(ProfileRelationsView);\nexport const WrappedCustomView = wrapView(CustomView);\nexport const WrappedHierarchyPathView = wrapView(HierarchyPathsView);\nexport const WrappedProfilePotentialMatchesView = wrapView(ProfilePotentialMatchesView);\n\nexport const WrappedHierarchyTreeView = lazy(() =>\n import(/* webpackMode: \"eager\" */ '@reltio/hierarchy-tree').then((importedModule) => ({\n default: wrapView(importedModule.HierarchyTreeView)\n }))\n);\n\nexport const WrappedRelationshipsTableView = lazy(() =>\n import(/* webpackMode: \"eager\" */ '@reltio/relations-table').then((importedModule) => ({\n default: wrapView(importedModule.RelationshipsTableView)\n }))\n);\nexport const WrappedEntityMapView = wrapView(EntityMapView);\nexport const WrappedImageAttributeView = wrapView(ImageAttributeView);\n\nexport type ViewComponentProps = {\n config:\n | ProfileViewConfig\n | AttributeViewConfig\n | SingleAttributeViewConfig\n | RelationsViewConfig\n | EntityMapViewConfig\n | ImageAttributeViewConfig;\n className?: string;\n isFullscreen: boolean;\n isAutosize?: boolean;\n onToggleFullscreen: (id: string) => void;\n};\n\nclass ViewsFactory {\n static ViewTypes = ProfileViewTypes;\n static getComponentBy = (\n propName: string,\n {config, className, isFullscreen, onToggleFullscreen}: ViewComponentProps\n ) => {\n switch (config[propName]) {\n case ViewsFactory.ViewTypes.HierarchyTree:\n return <WrappedHierarchyTreeView config={config as HierarchyTreeViewConfig} className={className} />;\n case ViewsFactory.ViewTypes.HierarchyPaths:\n return <WrappedHierarchyPathView config={config as HierarchyPathsViewConfig} className={className} />;\n case ViewsFactory.ViewTypes.RelationsTable:\n return <WrappedRelationshipsTableView config={config as RelationsViewConfig} className={className} />;\n case ViewsFactory.ViewTypes.Relations:\n return <WrappedProfileRelationsView config={config as RelationsViewConfig} className={className} />;\n case ViewsFactory.ViewTypes.Attributes:\n return <WrappedProfileAttributesView className={className} config={config as AttributeViewConfig} />;\n case ViewsFactory.ViewTypes.SingleAttribute:\n return (\n <WrappedProfileSingleAttributeView\n config={config as SingleAttributeViewConfig}\n className={className}\n />\n );\n case ViewsFactory.ViewTypes.AttributeTable:\n return (\n <WrappedProfileTableAttributeView\n config={config as SingleAttributeViewConfig}\n className={className}\n />\n );\n case ViewsFactory.ViewTypes.Map:\n return (\n <WrappedEntityMapView\n config={config as EntityMapViewConfig}\n isFullscreen={isFullscreen}\n onToggleFullscreen={onToggleFullscreen}\n className={className}\n />\n );\n case ViewsFactory.ViewTypes.Custom:\n return <WrappedCustomView config={config as CustomActionViewConfig} className={className} />;\n case ViewsFactory.ViewTypes.ImageAttribute:\n return <WrappedImageAttributeView config={config as ImageAttributeViewConfig} className={className} />;\n case ViewsFactory.ViewTypes.PotentialMatches:\n return (\n <WrappedProfilePotentialMatchesView\n config={config as ProfilePotentialMatchesViewConfig}\n className={className}\n />\n );\n }\n };\n static getComponent = (props: ViewComponentProps) => {\n return (\n ViewsFactory.getComponentBy('class', props) ||\n ViewsFactory.getComponentBy('react-class', props) || <WrappedStubView className={props.className} />\n );\n };\n}\n\nexport default ViewsFactory;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {BasicView} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n};\n\nconst StubView = ({className}: Props) => {\n const styles = useStyles();\n return (\n <BasicView className={classnames(styles.stubView, 'viewDraggableHandle', className)}>NOT IMPLEMENTED</BasicView>\n );\n};\n\nexport {StubView};\n","import React from 'react';\nimport {SingleAttributeViewConfig} from '@reltio/mdm-sdk';\nimport {SingleAttributeContext} from './contexts/SingleAttributeContext';\nimport {SingleAttributeView} from './components/SingleAttributeView/SingleAttributeView';\nimport {useSingleAttribute} from './hooks/useSingleAttribute';\n\ntype Props = {\n config: SingleAttributeViewConfig;\n className?: string;\n};\n\nexport const ProfileSingleAttributeView = ({className, config}: Props) => {\n const singleAttribute = useSingleAttribute(config);\n\n return (\n <SingleAttributeContext.Provider value={singleAttribute}>\n <SingleAttributeView config={config} className={className} />\n </SingleAttributeContext.Provider>\n );\n};\n","import {useState, useMemo, useCallback} from 'react';\nimport {SingleAttributeViewConfig} from '@reltio/mdm-sdk';\nimport {useSingleAttributeLoader} from '../../hooks/useSingleAttributeLoader';\n\nexport const useSingleAttribute = (config: SingleAttributeViewConfig) => {\n const [searchQuery, setSearchQuery] = useState('');\n const [page, setPage] = useState(0);\n const [showInactive, setShowInactive] = useState(false);\n const params = useMemo(() => ({page, searchQuery, showInactive}), [page, searchQuery, showInactive]);\n const attribute = useSingleAttributeLoader(config, params);\n const toggleShowInactive = useCallback(() => {\n setPage(0);\n setShowInactive((showInactive) => !showInactive);\n }, []);\n\n return {\n setSearchQuery,\n searchQuery,\n setPage,\n page,\n toggleShowInactive,\n showInactive,\n ...attribute\n };\n};\n","import React from 'react';\nimport {TableAttributeViewConfig} from '@reltio/mdm-sdk';\nimport {TableAttributeContext} from './contexts/TableAttributeContext';\nimport {useTableAttribute} from './hooks/useTableAttribute';\nimport {TableAttributeView} from './components/TableAttributeView/TableAttributeView';\n\ntype Props = {\n config: TableAttributeViewConfig;\n className?: string;\n};\n\nexport const ProfileTableAttributeView = ({config, className}: Props) => {\n const tableAttribute = useTableAttribute(config);\n\n return (\n <TableAttributeContext.Provider value={tableAttribute}>\n {config && <TableAttributeView config={config} className={className} />}\n </TableAttributeContext.Provider>\n );\n};\n","import {useMemo, useReducer} from 'react';\nimport {reject, isNil, pipe, not, prop} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {\n ComplexAttributeValue,\n findAttributeTypeByUri,\n isComplexAttribute,\n SingleAttributeViewConfig\n} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {useActions} from '@reltio/components';\nimport reducer, {actions} from './reducer';\nimport {getColumnsData} from '../helpers/tableAttributeHelpers';\nimport {useSingleAttributeLoader} from '../../hooks/useSingleAttributeLoader';\nimport {buildMDMFilters} from './helpers';\n\nconst DEFAULT_COUNT_COLUMN = 5;\n\nexport const useTableAttribute = (config: SingleAttributeViewConfig) => {\n const {attributeUri} = config;\n const metadata = useSelector(mdm.selectors.getMetadata);\n const attributeType = useMemo(() => findAttributeTypeByUri(metadata, attributeUri), [metadata, attributeUri]);\n const allColumnsData = useMemo(\n () => (attributeType ? getColumnsData(metadata, attributeType) : []),\n [metadata, attributeType]\n );\n const initialState = useMemo(\n () => ({\n searchQuery: '',\n filters: null,\n sorting: undefined,\n visibleColumns: allColumnsData\n .filter(pipe(prop('dataTypeDefinition'), isComplexAttribute, not))\n .map(({id}) => id)\n .slice(0, DEFAULT_COUNT_COLUMN),\n page: 0\n }),\n [allColumnsData]\n );\n\n const [state, dispatch] = useReducer(reducer, initialState);\n\n const {searchQuery, filters, sorting, page} = state;\n const isEditableMode = useSelector(mdm.selectors.getIsEditableMode);\n\n const requestFilters = useMemo(() => {\n const mdmFilters = buildMDMFilters(allColumnsData, filters);\n return mdmFilters.length ? mdmFilters : null;\n }, [filters, allColumnsData]);\n\n const params = useMemo(\n () => reject(isNil, {filters: requestFilters, page, sorting, searchQuery}),\n [requestFilters, page, sorting, searchQuery]\n );\n const {changeSearchQuery, changePage, toggleSort, changeFilter, toggleFilters, changeColumns} = useActions({\n actions,\n dispatch\n });\n const attribute = useSingleAttributeLoader<ComplexAttributeValue>(config, params);\n const showTable = Boolean(\n (attribute?.values?.length || requestFilters || searchQuery || isEditableMode) &&\n attributeType &&\n !attributeType.hidden\n );\n return {\n ...state,\n setSearchQuery: changeSearchQuery,\n setPage: changePage,\n onSort: toggleSort,\n onFilter: changeFilter,\n onToggleFilters: toggleFilters,\n onChangeColumns: changeColumns,\n showTable,\n allColumnsData,\n ...attribute\n };\n};\n","import {propEq} from 'ramda';\nimport {Maybe} from '@reltio/mdm-sdk';\nimport {ColumnData, ColumnFilter, columnFilterToMdmFilter} from '@reltio/components';\n\nexport const buildMDMFilters = (columnsData: ColumnData[], filters: Record<string, ColumnFilter>) =>\n Maybe.fromNull<Record<string, ColumnFilter>>(filters)\n .map<ReturnType<typeof columnFilterToMdmFilter>[]>((filters) =>\n Object.entries(filters).map(([columnId, columnFilter]) => {\n const columnData = columnsData.find(propEq('id', columnId));\n return columnFilterToMdmFilter(columnData, columnFilter);\n })\n )\n .orSome([]);\n","import React, {useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {RelationsViewConfig, parseRelationsConfig, Metadata} from '@reltio/mdm-sdk';\nimport RelationsView from './components/RelationsView';\nimport {RelationsViewStateContext} from './contexts/RelationsViewStateContext';\nimport useRelationsState from './hooks/useRelationsState';\n\ntype Props = {\n config: RelationsViewConfig;\n onResize?: (width: number, height: number) => void;\n className?: string;\n};\n\nexport const ProfileRelationsView = ({config, className}: Props) => {\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const parsedConfig = useMemo(() => parseRelationsConfig(metadata, config), [metadata, config]);\n const relationsState = useRelationsState(parsedConfig);\n return (\n <RelationsViewStateContext.Provider value={relationsState}>\n <RelationsView config={parsedConfig} className={className} />\n </RelationsViewStateContext.Provider>\n );\n};\n","import React, {useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport mdm from '@reltio/mdm-module';\nimport FullscreenIcon from '@mui/icons-material/Fullscreen';\nimport FullscreenExitIcon from '@mui/icons-material/FullscreenExit';\nimport {BasicView, LinearLoadIndicator, ReltioMap} from '@reltio/components';\nimport {SmallIconButton} from '@reltio/components';\n\nimport {AttributeViewConfig} from '@reltio/mdm-sdk';\nimport {useMarkers} from './useMarkers';\nimport useStyles from './styles';\n\ntype EntityMapViewProps = {\n config: AttributeViewConfig;\n className?: string;\n isFullscreen: boolean;\n onToggleFullscreen: (id: string) => void;\n};\n\nexport const EntityMapView = ({config, isFullscreen, onToggleFullscreen, className}: EntityMapViewProps) => {\n const styles = useStyles();\n const metadata = useSelector(mdm.selectors.getMetadata);\n const entity = useSelector(mdm.selectors.getEntity);\n const mapKey = useSelector(mdm.selectors.getGoogleMapKey);\n const {markers, loading} = useMarkers(entity, metadata, mapKey);\n const loadingElement = useMemo(\n () => (\n <div className={styles.fullHeight}>\n <LinearLoadIndicator />\n </div>\n ),\n [styles]\n );\n\n const defaultCenter = useMemo(() => ({lat: 0, lng: 0}), []);\n const mapOptions = useMemo(() => ({mapTypeControl: true}), []);\n\n return (\n mapKey && (\n <BasicView className={classnames(styles.root, className)}>\n {loading && <LinearLoadIndicator />}\n <SmallIconButton\n size=\"S\"\n icon={isFullscreen ? FullscreenExitIcon : FullscreenIcon}\n onClick={() => onToggleFullscreen(config.id)}\n className={styles.fullscreenBtn}\n />\n\n <ReltioMap\n loadingElement={loadingElement}\n defaultZoom={1}\n defaultCenter={defaultCenter}\n markers={markers}\n mapContainerClassName={styles.fullHeight}\n mapKey={mapKey}\n mapOptions={mapOptions}\n />\n </BasicView>\n )\n );\n};\n\nexport default EntityMapView;\n","import React, {memo, Suspense} from 'react';\nimport classnames from 'classnames';\nimport ViewsFactory, {ViewComponentProps} from './ViewsFactory';\nimport {useStyles} from './styles';\n\nconst Fallback = () => null;\n\nconst ViewComponent = memo(({config, isFullscreen, isAutosize, onToggleFullscreen}: ViewComponentProps) => {\n const styles = useStyles();\n return (\n <Suspense fallback={<Fallback />}>\n {ViewsFactory.getComponent({\n config,\n className: classnames(styles.component, {[styles.fullHeight]: !isAutosize}),\n isFullscreen,\n onToggleFullscreen\n })}\n </Suspense>\n );\n});\n\nViewComponent.displayName = 'ViewComponent';\n\nexport {ViewComponent};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n item: theme.basicView,\n fixedSizeContainer: {\n height: '100%'\n },\n overflowContainer: {\n width: '100%',\n height: '100%',\n overflow: 'hidden'\n }\n}));\n","import React, {ReactChildren, ReactNode} from 'react';\nimport {omit} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {ReactGridLayoutItem} from '@reltio/components';\nimport {CustomScript, CustomScriptPlatform, ProfileViewConfig, ProfileViewTypes} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {ViewComponent} from '../views/ViewComponent';\nimport ViewsFactory from '../views/ViewsFactory';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n layoutItemConfig: ReactGridLayoutItem;\n views: ProfileViewConfig[];\n className?: string;\n children?: ReactChildren;\n style?: Record<string, unknown>;\n isFullscreen: boolean;\n onToggleFullscreen: (id: string) => void;\n AutosizeComponent?: ReactNode;\n};\n\nconst omittingProps = ['onConfigChanged', 'onRemove'];\n\nconst getViewTypeByClass = (className: string) =>\n Object.entries(ProfileViewTypes).find(([_, value]) => className === value)?.[0];\n\nconst ProfileLayoutItem = ({\n layoutItemConfig,\n views,\n className,\n children: ResizeComponent,\n style,\n isFullscreen,\n onToggleFullscreen,\n AutosizeComponent,\n ...props\n}: Props) => {\n const config = views.find(({id}) => layoutItemConfig.i === id);\n const styles = useStyles();\n const mapKey = useSelector(mdm.selectors.getGoogleMapKey);\n\n if (!config) {\n return null;\n }\n const isCustomView = config.class === ViewsFactory.ViewTypes.Custom;\n if (isCustomView && (config?.action as CustomScript)?.platform === CustomScriptPlatform.CLASSIC) {\n return null;\n }\n\n const isMapView = config.class === ViewsFactory.ViewTypes.Map;\n if (isMapView && !mapKey) {\n return null;\n }\n\n const reltioClass = getViewTypeByClass(config.class);\n return (\n <div\n {...omit(omittingProps, props)}\n data-reltio-id={config.id}\n data-reltio-class={reltioClass || ''}\n style={style}\n className={classnames(className, {\n [styles.item]: !isCustomView,\n customView: isCustomView\n })}\n >\n <div className={styles.overflowContainer}>\n <div\n data-reltio-id=\"profile-view-container\"\n className={classnames({[styles.fixedSizeContainer]: !AutosizeComponent})}\n >\n {AutosizeComponent}\n <ViewComponent\n config={config}\n isFullscreen={isFullscreen}\n onToggleFullscreen={onToggleFullscreen}\n isAutosize={Boolean(AutosizeComponent)}\n />\n </div>\n {ResizeComponent}\n </div>\n </div>\n );\n};\n\nexport {ProfileLayoutItem};\n","import {makeStyles} from '@mui/styles';\n\nconst DEFAULT_MIN_WIDTH = 1024;\n\ntype Props = {\n maxWidth?: number;\n minWidth?: number;\n scrollbarWidth?: number;\n};\n\nexport const useStyles = makeStyles({\n scrollWrapper: {\n flexGrow: 1,\n overflow: 'auto'\n },\n scrollableContent: ({maxWidth, minWidth = DEFAULT_MIN_WIDTH, scrollbarWidth}: Props) => ({\n minWidth: maxWidth && maxWidth < minWidth ? maxWidth - scrollbarWidth : minWidth,\n height: '100%'\n })\n});\n","import React, {useEffect, useMemo, useRef} from 'react';\nimport {PopupBoundariesContext, ReltioGridLayout} from '@reltio/components';\nimport {ProfileViewConfig} from '@reltio/mdm-sdk';\nimport {ProfileLayoutItem} from '../ProfileLayoutItem';\nimport {Layout} from '../../types';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n views: ProfileViewConfig[];\n layout?: Layout;\n frozen?: boolean;\n entityUri?: string;\n maxWidth?: number;\n minWidth?: number;\n onLayoutChanged: (layout: Layout) => void;\n};\n\nconst calcScrollbarWidth = (element: HTMLDivElement) => (element ? element.offsetWidth - element.clientWidth : 0);\n\nconst ProfileLayout = ({views, layout, frozen, entityUri, maxWidth, minWidth, onLayoutChanged}: Props) => {\n const scrollWrapperRef = useRef<HTMLDivElement>();\n const scrollbarWidth = calcScrollbarWidth(scrollWrapperRef.current);\n const boundariesElement = scrollWrapperRef.current;\n\n const styles = useStyles({maxWidth, minWidth, scrollbarWidth});\n\n const popupBoundariesValue = useMemo(\n () => ({element: boundariesElement, priority: ['left', 'right', 'top', 'bottom']}),\n [boundariesElement]\n );\n\n useEffect(() => {\n if (scrollWrapperRef.current) {\n scrollWrapperRef.current.scrollTop = 0;\n }\n }, [entityUri]);\n\n return (\n <div ref={scrollWrapperRef} className={styles.scrollWrapper}>\n <div className={styles.scrollableContent} data-reltio-id=\"reltio-profile-grid\">\n <PopupBoundariesContext.Provider value={popupBoundariesValue}>\n <ReltioGridLayout\n LayoutItem={ProfileLayoutItem}\n views={views}\n layout={layout}\n onLayoutChanged={onLayoutChanged}\n draggableHandle=\".viewDraggableHandle\"\n isStatic={frozen}\n />\n </PopupBoundariesContext.Provider>\n </div>\n </div>\n );\n};\n\nexport {ProfileLayout};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n closeIcon: {\n paddingRight: '12px',\n boxSizing: 'content-box',\n '& path': {\n fill: '#fff'\n }\n },\n snackbar: {\n '& > div': {\n flexWrap: 'nowrap',\n alignItems: 'baseline'\n }\n }\n}));\n","import Snackbar from '@mui/material/Snackbar';\nimport Portal from '@mui/material/Portal';\nimport React, {useCallback, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport Button from '@mui/material/Button';\nimport CloseIcon from '@mui/icons-material/Close';\nimport {ConfirmationDialog, SmallIconButton} from '@reltio/components';\nimport {NotificationItem, Action} from './types';\nimport {useStyles} from './styles';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {ui as mdmModuleUi} from '@reltio/mdm-module';\n\ntype Props = {\n notification: NotificationItem;\n};\n\nconst AUTO_HIDE_DURATION = 5000;\n\nexport const Notification = ({notification}: Props) => {\n const styles = useStyles({});\n const dispatch = useDispatch();\n const autoCloseInterval: number = useSelector(mdmModule.selectors.getAutoCloseInterval);\n const autoHideDuration =\n notification.autoHideDuration || (autoCloseInterval && autoCloseInterval * 1000) || AUTO_HIDE_DURATION;\n const [action, setAction] = useState<Action>();\n const [show, setShow] = useState(true);\n const closeSnackbar = useCallback(\n (_e?: unknown, reason?: string) => {\n if (reason !== 'clickaway') {\n dispatch(mdmModuleUi.actions.closeNotification(notification.id));\n setShow(false);\n }\n },\n [notification]\n );\n const onDiscard = useCallback(() => {\n action.cancelAction && dispatch(action.cancelAction);\n setAction(undefined);\n }, [action]);\n const onConfirm = useCallback(() => {\n dispatch(action.applyAction);\n setAction(undefined);\n dispatch(mdmModuleUi.actions.closeNotification(notification.id));\n }, [action, notification]);\n\n const actions = (\n <>\n {notification.actions.map((action) => (\n <Button\n key={action.label}\n color=\"primary\"\n size=\"small\"\n onClick={() => {\n if (action.needConfirmation) {\n setAction(action);\n } else {\n dispatch(action.applyAction);\n }\n setShow(false);\n }}\n >\n {action.label}\n </Button>\n ))}\n </>\n );\n const message = (\n <>\n <SmallIconButton className={styles.closeIcon} size=\"S\" icon={CloseIcon} onClick={closeSnackbar} />\n {notification.text}\n </>\n );\n\n return (\n <>\n <Portal container={document.body}>\n <Snackbar\n autoHideDuration={autoHideDuration}\n open={show}\n classes={{root: styles.snackbar}}\n action={actions}\n onClose={closeSnackbar}\n anchorOrigin={{vertical: 'bottom', horizontal: 'center'}}\n message={message}\n />\n </Portal>\n <ConfirmationDialog\n open={!!action}\n title={action?.confirmationText}\n content={action?.confirmationDescription}\n onSave={onConfirm}\n onDiscard={onDiscard}\n saveCaption={i18n.text('Proceed')}\n discardCaption={i18n.text('Cancel')}\n />\n </>\n );\n};\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {NotificationItem} from './types';\nimport {Notification} from './Notification';\n\nexport const Notifications = () => {\n const notifications: NotificationItem[] = useSelector(mdm.selectors.getNotifications);\n if (!notifications) return null;\n return (\n <>\n {notifications.slice(-1).map((n) => (\n <Notification key={n.id} notification={n} />\n ))}\n </>\n );\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"19\",\n height: \"17\",\n viewBox: \"0 0 19 17\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n}, props), React.createElement(\"defs\", null, React.createElement(\"path\", {\n d: \"M14 17v2H4v-2h10zm6-4v2H4v-2l12.884.001H17l.116-.002L20 13zm-8.457-2H4V9h5.82a8.465 8.465 0 001.723 2zM9.139 6.178l-.289.733.035.088L4 7V5l5.713-.002c-.22.375-.412.768-.574 1.18zM17 2.82a6.451 6.451 0 00-6 4.09 6.451 6.451 0 006 4.092 6.451 6.451 0 006-4.091 6.451 6.451 0 00-6-4.091zm0 6.815a2.728 2.728 0 010-5.455 2.728 2.728 0 010 5.455zm0-4.365c-.905 0-1.636.73-1.636 1.636 0 .906.73 1.637 1.636 1.637.905 0 1.636-.731 1.636-1.637 0-.905-.73-1.636-1.636-1.636z\",\n id: \"svg1467685497a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"g\", {\n transform: \"translate(-4 -2.5)\"\n}, React.createElement(\"mask\", {\n id: \"svg1467685497b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg1467685497a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg1467685497b)\",\n d: \"M0 0h24v24H0z\"\n})))));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n}, props), React.createElement(\"defs\", null, React.createElement(\"path\", {\n d: \"M20.222 6C21.21 6 22 6.8 22 7.778v12.444C22 21.2 21.209 22 20.222 22H7.778C6.79 22 6 21.2 6 20.222V7.778C6 6.8 6.791 6 7.778 6h12.444zM20 8H8v12h12V8zM4 18H2V4c0-1.1.9-2 2-2h14v2H4v14z\",\n id: \"svg2383396984a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"mask\", {\n id: \"svg2383396984b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg2383396984a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg2383396984b)\",\n d: \"M0 0h24v24H0z\"\n}))));","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n editingButtons: {\n display: 'flex',\n '& button + button': {\n minWidth: '88px',\n marginLeft: '8px'\n }\n },\n searchResults: {\n width: '150px',\n height: '25px',\n backgroundColor: '#ccc'\n },\n comments: {\n display: 'flex',\n justifyContent: 'flex-end',\n marginTop: '10px'\n },\n menuButton: {\n marginLeft: 8\n },\n cancelButton: {\n border: '1px solid rgba(0, 0, 0, 0.23)'\n }\n});\n","import React, {useCallback, useMemo, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {useSelector, useDispatch} from 'react-redux';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport SvgIcon from '@mui/material/SvgIcon';\nimport VisibilityIcon from '@mui/icons-material/Visibility';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport CreateIcon from '@mui/icons-material/Create';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\n\nimport {\n getEntityType,\n Entity,\n checkMetadataPermission,\n isDataTenantEntity,\n isTempUri,\n MetadataPermissions,\n Mode,\n isSuggestMode,\n isEditableMode,\n CollaborationObjectTypes,\n createRelatedObjectUris,\n Operation,\n ProfileBandConfig\n} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {\n ProfileBand,\n ModeSwitcherSelect,\n CommentsContainer,\n COMMENTS_CONTAINER_VISIBILITY_AREA,\n ProfileBandNavigation,\n ProfileBandHistory,\n ConfirmationDialog,\n DropDownMenuButton,\n MultilineMenuItem,\n SmallIconButton\n} from '@reltio/components';\nimport {useCloneAction} from './hooks/useCloneAction';\n\nimport SuggestSvg from './suggest.svg';\nimport CopySvg from './copy.svg';\n\nimport {useStyles} from './styles';\n\ntype MultilineMenuItemProps = React.ComponentProps<typeof MultilineMenuItem>;\ntype Props = {\n className?: string;\n showMenu?: boolean;\n profileBandConfig?: ProfileBandConfig;\n menuItems: MultilineMenuItemProps['item'][];\n};\n\nconst SuggestIcon = (props) => (\n <SvgIcon {...props}>\n <SuggestSvg />\n </SvgIcon>\n);\n\nconst CopyIcon = (props) => (\n <SvgIcon {...props}>\n <CopySvg />\n </SvgIcon>\n);\n\ntype Group = {\n label: string;\n value: string;\n description: string;\n icon: React.ElementType;\n permission: string;\n onClick?: (value: string) => void;\n};\n\nconst filterGroupByPermissions = <T extends Group>(\n group: T[],\n entityType,\n isTempEntity: boolean,\n isWorkflowEnabled?: boolean,\n canStartProcessInstanceSearchQuery?: boolean\n): T[] =>\n group.filter(({value, permission}) => {\n if (isTempEntity && !isEditableMode(value)) return false;\n if ((!isWorkflowEnabled || !canStartProcessInstanceSearchQuery) && isSuggestMode(value)) return false;\n return checkMetadataPermission(permission, entityType);\n });\n\nconst hasOnlyReadPermission = (entityType) => {\n return (\n checkMetadataPermission(MetadataPermissions.READ, entityType) &&\n !checkMetadataPermission(MetadataPermissions.UPDATE, entityType) &&\n !checkMetadataPermission(MetadataPermissions.DELETE, entityType) &&\n !checkMetadataPermission(MetadataPermissions.INITIATE_CHANGE_REQUEST, entityType)\n );\n};\n\nexport const PerspectiveProfileBand = ({className, profileBandConfig, menuItems, showMenu = true}: Props) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n const canStartProcessInstanceSearchQuery = useSelector(mdm.selectors.getCanUserStartProcessFromQuery);\n const entity = useSelector(mdm.selectors.getEntityWithoutDiff) as Entity;\n const modifiedEntity = useSelector((state) => mdm.selectors.getModifiedEntity(state, entity.uri));\n const metadata = useSelector(mdm.selectors.getMetadata);\n const isWorkflowEnabled = useSelector(mdm.selectors.isWorkflowEnabled) as boolean;\n const mode = useSelector(mdm.selectors.getMode) as Mode;\n const isEditableMode = useSelector(mdm.selectors.getIsEditableMode) as boolean;\n const isViewMode = useSelector(mdm.selectors.getIsViewMode) as boolean;\n const isHistoryModeEnabled = useSelector(mdm.selectors.getIsHistoryModeEnabled);\n const profileOperation = useSelector(mdm.selectors.getProfileOperation);\n const entityTypeUri = entity?.type;\n const entityType = useMemo(() => getEntityType(metadata, entityTypeUri), [entityTypeUri, metadata]);\n const isOperationSaving = profileOperation === Operation.Saving;\n const isOperationCloning = profileOperation === Operation.Cloning;\n const isDisabledButtons = isOperationCloning || isOperationSaving;\n const [openCloneConfirmationDialog, setOpenCloneConfirmationDialog] = useState(false);\n const onCloneDiscard = useCallback(() => {\n setOpenCloneConfirmationDialog(false);\n }, []);\n const onClone = useCloneAction({cloneAction: profileBandConfig?.cloneAction, onCloneDiscard});\n const OPTIONS_GROUP = useMemo(\n () => [\n {\n label: i18n.text('Editing'),\n value: Mode.Editing,\n description: i18n.text('Edit profile directly'),\n icon: CreateIcon,\n permission: 'UPDATE'\n },\n {\n label: i18n.text('Suggesting'),\n value: Mode.Suggesting,\n description: i18n.text('Suggest changes and initiate a workflow review'),\n icon: SuggestIcon,\n permission: 'INITIATE_CHANGE_REQUEST'\n },\n {\n label: i18n.text('Viewing'),\n value: Mode.Viewing,\n description: i18n.text('Read or print profile'),\n icon: VisibilityIcon,\n permission: 'READ'\n }\n ],\n []\n );\n\n const BUTTONS_GROUP = useMemo(\n () => [\n ...(onClone\n ? [\n {\n label: i18n.text('Clone'),\n value: 'Clone',\n description: i18n.text('Create a copy of the profile'),\n icon: CopyIcon,\n onClick: () => setOpenCloneConfirmationDialog(true),\n permission: 'CREATE'\n }\n ]\n : []),\n {\n label: i18n.text('Delete'),\n value: 'Delete',\n description: i18n.text('Permanently delete profile'),\n icon: DeleteIcon,\n onClick: () => {\n const conf = window.confirm(i18n.text('Are you sure you want to delete this?'));\n if (conf) {\n dispatch(profile.entity.actions.entityRemoveRequested({entityUri: entity.uri}));\n }\n },\n permission: 'DELETE'\n }\n ],\n [dispatch, entity.uri, onClone]\n );\n\n const shouldShowSelect = !isHistoryModeEnabled && !isDataTenantEntity(entity) && !hasOnlyReadPermission(entityType);\n\n const isTempEntity = isTempUri(entity?.uri);\n\n const accessibleOptionsGroup = useMemo(() => {\n return filterGroupByPermissions(\n OPTIONS_GROUP,\n entityType,\n isTempEntity,\n isWorkflowEnabled,\n canStartProcessInstanceSearchQuery\n );\n }, [OPTIONS_GROUP, entityType, isWorkflowEnabled, canStartProcessInstanceSearchQuery, isTempEntity]);\n const accessibleButtonsGroup = useMemo(() => {\n return filterGroupByPermissions(\n BUTTONS_GROUP,\n entityType,\n isTempEntity,\n isWorkflowEnabled,\n canStartProcessInstanceSearchQuery\n );\n }, [BUTTONS_GROUP, entityType, isWorkflowEnabled, canStartProcessInstanceSearchQuery, isTempEntity]);\n\n const handleChange = useCallback(\n (value: Mode) => {\n dispatch(profile.mode.actions.modeUpdated(value));\n },\n [dispatch]\n );\n\n const onCancel = useCallback(() => {\n dispatch(profile.mode.actions.modeCancelEditing());\n }, [dispatch]);\n\n const handleSave = useCallback(() => {\n dispatch(profile.actions.saveProfile());\n }, [dispatch]);\n\n return (\n <>\n <ProfileBand\n className={classnames(className, COMMENTS_CONTAINER_VISIBILITY_AREA)}\n entity={isEditableMode && modifiedEntity ? modifiedEntity : entity}\n >\n <Box display=\"flex\" alignItems=\"center\">\n <Box mr={3}>\n {isEditableMode && (\n <Box className={styles.editingButtons}>\n <Button\n variant=\"outlined\"\n className={styles.cancelButton}\n onClick={onCancel}\n data-reltio-id=\"reltio-profile-cancel-editing\"\n disabled={isDisabledButtons}\n >\n {i18n.text('Cancel')}\n </Button>\n <Button\n variant=\"contained\"\n color=\"primary\"\n data-reltio-id=\"reltio-profile-save-profile\"\n onClick={handleSave}\n disabled={isDisabledButtons}\n >\n {isSuggestMode(mode) ? i18n.text('Suggest') : i18n.text('Save')}\n </Button>\n </Box>\n )}\n {isHistoryModeEnabled && isViewMode ? (\n <ProfileBandHistory />\n ) : (\n isViewMode && <ProfileBandNavigation />\n )}\n </Box>\n {shouldShowSelect && (\n <ModeSwitcherSelect\n optionsGroup={accessibleOptionsGroup}\n buttonsGroup={accessibleButtonsGroup}\n value={mode}\n onChange={handleChange}\n disabled={isDisabledButtons}\n />\n )}\n {showMenu && (\n <DropDownMenuButton\n menuId=\"profile-header-menu\"\n buttonComponent={SmallIconButton}\n buttonProps={{\n icon: MoreVertIcon,\n size: 'L',\n 'data-reltio-id': 'reltio-profile-header-menu',\n className: styles.menuButton\n }}\n menuItems={menuItems}\n MenuItemRenderer={MultilineMenuItem}\n />\n )}\n </Box>\n <Box className={styles.comments}>\n <CommentsContainer\n uri={entity.uri}\n relatedObjectUris={createRelatedObjectUris(CollaborationObjectTypes.ENTITY, {\n entityUri: entity.uri\n })}\n objectType={CollaborationObjectTypes.ENTITY}\n />\n </Box>\n </ProfileBand>\n {!!onClone && (\n <ConfirmationDialog\n open={openCloneConfirmationDialog}\n title={i18n.text('Do you want to create a clone of the profile?')}\n content={i18n.text(\n 'Cloning will create a copy of the current profile. You can modify the cloned profile in the next step. Are you sure you want to proceed?'\n )}\n onSave={onClone}\n onDiscard={onCloneDiscard}\n saveCaption={i18n.text('Proceed')}\n discardCaption={i18n.text('Cancel')}\n />\n )}\n </>\n );\n};\n","import {useCallback, useMemo} from 'react';\nimport {\n includes,\n pipe,\n isNil,\n propOr,\n filter,\n map,\n prop,\n cond,\n identity,\n omit,\n find,\n complement,\n when,\n either,\n pick,\n always,\n T\n} from 'ramda';\nimport {\n BaseCloneAction,\n CloneAction,\n Entity,\n getEntityType,\n isReference,\n isRelationWithEntityType,\n getRelationTypeUriFromAttrType\n} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {useDispatch, useSelector} from 'react-redux';\n\ntype Props = {\n cloneAction?: CloneAction[];\n onCloneDiscard: () => void;\n};\n\nexport const useCloneAction = ({cloneAction: cloneActionProp, onCloneDiscard}: Props) => {\n const entity: Entity = useSelector(mdm.selectors.getEntityWithoutDiff);\n const metadata = useSelector(mdm.selectors.getMetadata);\n const dispatch = useDispatch();\n const entityTypeUri = entity?.type;\n const relationTypes = metadata.relationTypes;\n const isRelationSuitableForEntityType = useCallback(isRelationWithEntityType(metadata, entityTypeUri), [\n metadata,\n entityTypeUri\n ]);\n const entityType = getEntityType(metadata, entityTypeUri);\n const cloneAction = useMemo<BaseCloneAction>(\n () =>\n when(\n complement(isNil),\n pipe(\n find(pipe(propOr([], 'entityTypeUris'), either(includes(entityTypeUri), includes('*')))),\n when(complement(isNil), omit(['entityTypeUris']))\n )\n )(cloneActionProp),\n [cloneActionProp, entityTypeUri]\n );\n const onClone = useCallback(() => {\n if (cloneAction) {\n const modifiedRelationTypes: string[] = pipe(\n prop('relationshipTypesToCopy'),\n cond([\n [\n isNil,\n pipe(\n always(entityType),\n propOr([], 'attributes'),\n filter(isReference),\n map(getRelationTypeUriFromAttrType)\n )\n ],\n [\n includes('*'),\n pipe(always(relationTypes || []), map(prop('uri')), filter(isRelationSuitableForEntityType))\n ],\n [T, identity]\n ])\n )(cloneAction);\n dispatch(\n profile.entity.actions.entityCloneRequested({\n data: {\n ...pick(['attributeReplacementMapping'], cloneAction),\n relationshipTypesToCopy: modifiedRelationTypes\n },\n entityUri: entity.uri\n })\n );\n }\n onCloneDiscard();\n }, [cloneAction, onCloneDiscard, entityType, relationTypes, entity.uri, isRelationSuitableForEntityType]);\n return cloneAction ? onClone : undefined;\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n display: 'flex',\n overflow: 'hidden',\n flexShrink: 0,\n marginLeft: '3px',\n height: '100%'\n },\n badge: {\n fontSize: '12px',\n height: '18px',\n minWidth: '18px',\n backgroundColor: '#FF4081',\n color: '#FFF'\n },\n badgePosition: {\n right: '5px'\n }\n});\n","import React, {useEffect} from 'react';\nimport {SidePanelContentHeader, SidePanel, RightPanelTab} from '@reltio/components';\nimport {isNil} from 'ramda';\n\nimport {useStyles} from './styles';\n\nexport enum ActivePanel {\n Workflow,\n Collaboration,\n History,\n DBConnector\n}\n\ntype Props = {\n active?: ActivePanel;\n tabs: Array<RightPanelTab>;\n onClose?: () => void;\n};\n\nexport const RightSidePanel = ({active, tabs, onClose}: Props) => {\n const styles = useStyles();\n const isOpen = !isNil(active);\n const {content, headerProps, hidden} = tabs[active] || {};\n\n useEffect(() => {\n if (hidden) {\n onClose();\n }\n }, [active, hidden, onClose]);\n\n return (\n <div className={styles.wrapper}>\n <SidePanel open={isOpen}>\n {!hidden && (\n <>\n <SidePanelContentHeader {...headerProps} onClose={onClose} />\n {content}\n </>\n )}\n </SidePanel>\n </div>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n display: 'flex',\n flexDirection: 'column'\n },\n itemWrapper: {\n paddingLeft: '19px',\n paddingRight: '19px'\n }\n});\n","import React from 'react';\nimport {CustomActionViewConfig} from '@reltio/mdm-sdk';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {CustomView} from '../../../Sandbox/CustomView';\nimport {useStyles} from './styles';\n\nexport const DBConnectorsList = () => {\n const styles = useStyles();\n const dBConnectorSideViews = useSelector(mdm.selectors.getDBConnectorSideViews) as CustomActionViewConfig[];\n\n return (\n <div className={styles.wrapper}>\n {dBConnectorSideViews.map((sideView) => (\n <CustomView key={sideView.id} config={sideView} className={styles.itemWrapper} />\n ))}\n </div>\n );\n};\n","import React, {useContext, VFC} from 'react';\nimport Badge from '@mui/material/Badge';\nimport {WorkflowTasksContext} from '@reltio/components';\nimport InboxIcon from '@mui/icons-material/Inbox';\nimport {useStyles} from '../../styles';\n\nexport const WorkflowButton: VFC = () => {\n const {total} = useContext(WorkflowTasksContext);\n const styles = useStyles();\n return (\n <Badge\n badgeContent={total}\n classes={{\n anchorOriginTopRightRectangular: styles.badgePosition,\n badge: styles.badge\n }}\n >\n <InboxIcon />\n </Badge>\n );\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"20\",\n height: \"20\",\n viewBox: \"0 0 20 20\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n}, props), React.createElement(\"defs\", null, React.createElement(\"path\", {\n d: \"M4 17.17L5.17 16H20V4H4v13.17zM20 2c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H6l-4 4V4c0-1.1.9-2 2-2h16zm-3 9H7v2h10v-2zm0-4H7v2h10V7z\",\n id: \"svg2697213709a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"g\", null, React.createElement(\"g\", {\n transform: \"translate(-2 -2)\"\n}, React.createElement(\"mask\", {\n id: \"svg2697213709b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg2697213709a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg2697213709b)\",\n d: \"M0 0h24v24H0z\"\n}))))));","import React, {useContext, VFC} from 'react';\nimport Badge from '@mui/material/Badge';\nimport CollaborationIcon from '../../icons/CollaborationIcon.svg';\nimport {CollaborationContext} from '@reltio/components';\nimport {calcTotalCommentItems} from '@reltio/mdm-sdk';\nimport {useStyles} from '../../styles';\n\nexport const CollaborationButton: VFC = () => {\n const {commentsMap} = useContext(CollaborationContext);\n const styles = useStyles();\n return (\n <Badge\n badgeContent={calcTotalCommentItems(commentsMap)}\n classes={{\n anchorOriginTopRightRectangular: styles.badgePosition,\n badge: styles.badge\n }}\n >\n <CollaborationIcon />\n </Badge>\n );\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"path\", {\n d: \"M14.101 16A5.003 5.003 0 0016 18.987V20H2v-4h12.101zM22 18.987V20v-1.013zM4 17v2h2v-2H4zM16 4v1.013A5.004 5.004 0 0014.101 8H2V4h14zm6 0v1.013V4zM6 7V5H4v2h2zm8 3v4H2v-4h12zM4 11v2h2v-2H4zm12 4v-2h6v2c0 1.3-.84 2.4-2 2.82V22h-2v-4.18c-1.16-.42-2-1.52-2-2.82zm0-6c0-1.3.84-2.4 2-2.82V2h2v4.18c1.16.42 2 1.52 2 2.82v2h-6V9z\",\n fill: \"#000\",\n fillOpacity: \".54\"\n})));","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n overflow: 'auto',\n position: 'relative',\n height: '100%'\n }\n});\n","import React, {useContext} from 'react';\nimport {LinearLoadIndicator, WorkflowTaskCard, WorkflowTasksContext} from '@reltio/components';\nimport {useStyles} from './styles';\n\nexport const WorkflowList = () => {\n const styles = useStyles();\n const {tasks, loading} = useContext(WorkflowTasksContext);\n\n return (\n <div className={styles.wrapper}>\n {loading && <LinearLoadIndicator />}\n {tasks &&\n tasks.map((task) => {\n return <WorkflowTaskCard key={task.taskId} task={task} />;\n })}\n </div>\n );\n};\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {SidePanelEmptyState} from '@reltio/components';\n\nconst WorkflowPanelEmptyState = () => (\n <SidePanelEmptyState\n text={i18n.text('Ready to go with the flow?')}\n secondaryText={i18n.text(\n 'Suggest a change or submit a match review, and we’ll kick off a workflow task to get things going.'\n )}\n />\n);\n\nexport default WorkflowPanelEmptyState;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n wrapper: {\n overflow: 'auto',\n paddingRight: '12px'\n },\n showMoreLink: {\n display: 'flex',\n margin: '16px'\n },\n showMoreIcon: {\n fontSize: '1rem'\n }\n});\n","import React, {useContext, useEffect} from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {CollaborationContext, CollaborationItem, EntitiesMapContext, useCommentsEntitiesMap} from '@reltio/components';\nimport Box from '@mui/material/Box';\nimport Link from '@mui/material/Link';\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\nimport {useStyles} from './styles';\n\nexport const CollaborationList = () => {\n const styles = useStyles();\n const {getComments, comments, pageToken} = useContext(CollaborationContext);\n const entityUri = useSelector(mdm.selectors.getEntityUriWithDataTenant);\n\n useEffect(() => {\n getComments(entityUri);\n }, [getComments, entityUri]);\n\n const handleShowMoreComments = () => {\n getComments(entityUri, pageToken);\n };\n\n const entitiesMap = useCommentsEntitiesMap(comments);\n\n return (\n <EntitiesMapContext.Provider value={entitiesMap}>\n <Box className={styles.wrapper}>\n {comments.map((comment) => {\n const {objectId, relatedObjectUris, objectType, commentId} = comment;\n return (\n <CollaborationItem\n key={commentId}\n uri={objectId}\n relatedObjectUris={relatedObjectUris}\n objectType={objectType}\n comment={comment}\n />\n );\n })}\n {pageToken && (\n <Link\n component=\"button\"\n variant=\"caption\"\n className={styles.showMoreLink}\n onClick={handleShowMoreComments}\n underline=\"none\"\n >\n <KeyboardArrowDownIcon className={styles.showMoreIcon} />\n {i18n.text('Show more')}\n </Link>\n )}\n </Box>\n </EntitiesMapContext.Provider>\n );\n};\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {SidePanelEmptyState} from '@reltio/components';\n\nconst CollaborationPanelEmptyState = () => (\n <SidePanelEmptyState\n text={i18n.text('Care to join the conversation?')}\n secondaryText={i18n.text(\n 'Leave comments for team members anywhere in the Profile page, and we’ll record it here.'\n )}\n />\n);\n\nexport default CollaborationPanelEmptyState;\n","import React, {useContext, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {isTempUri, getEntityType, Metadata, Entity, calcTotalCommentItems, HistoryEvent} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {CollaborationContext, RightPanelTab, WorkflowTasksContext} from '@reltio/components';\nimport {\n AddWorkflowButton,\n HistoryHeader,\n HistoryPanelEmptyState,\n HistoryView,\n useHistory,\n useHistoryEnabled\n} from '@reltio/components';\nimport i18n from 'ui-i18n';\nimport HistoryIcon from '@mui/icons-material/History';\nimport {ActivePanel} from '../../RightSidePanel/RightSidePanel';\nimport {DBConnectorsList} from '../../RightSidePanel/components/DBConnectorsList/DBConnectorsList';\nimport {WorkflowButton} from '../../RightSidePanel/components/WorkflowButton/WorkflowButton';\nimport {CollaborationButton} from '../../RightSidePanel/components/CollaborationButton/CollaborationButton';\nimport ConnectorsIcon from '../../RightSidePanel/icons/ConnectorsIcon.svg';\n\nimport {WorkflowList} from '../../RightSidePanel/components/WorkflowList/WorkflowList';\nimport WorkflowPanelEmptyState from '../../RightSidePanel/components/WorkflowPanelEmptyState/WorkflowPanelEmptyState';\nimport {CollaborationList} from '../../RightSidePanel/components/CollaborationList/CollaborationList';\nimport CollaborationPanelEmptyState from '../../RightSidePanel/components/CollaborationPanelEmptyState/CollaborationPanelEmptyState';\n\nconst getSecondTitle = (total: number): string => {\n if (total) {\n return total === 1 ? i18n.text('${total} item', {total}) : i18n.text('${total} items', {total});\n }\n};\n\ntype Props = {\n perspectiveId: string;\n commentId?: string;\n hideHistory?: boolean;\n};\n\nexport const useProfileRightSidePanelElements = ({\n commentId,\n hideHistory,\n perspectiveId\n}: Props): {tabs: Array<RightPanelTab>; defaultTab?: number} => {\n const isWorkflowSideViewEnabled = useSelector(mdm.selectors.isWorkflowSideViewEnabled) as boolean;\n const isWorkflowEnabled = useSelector(mdm.selectors.isWorkflowEnabled) as boolean;\n const isCollaborationSideViewEnabled = useSelector(mdm.selectors.isCollaborationSideViewEnabled) as boolean;\n const isDBConnectorSideViewEnabled = useSelector(mdm.selectors.isDBConnectorSideViewEnabled) as boolean;\n const isCollaborationEnabled = useSelector(mdm.selectors.isCollaborationEnabled) as boolean;\n\n const defaultTab = commentId ? ActivePanel.Collaboration : undefined;\n\n const historyEvent: HistoryEvent = useSelector(mdm.selectors.getHistoryEvent);\n const metadata: Metadata = useSelector(mdm.selectors.getMetadata);\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n\n const workflowTasksContext = useContext(WorkflowTasksContext);\n const collaborationContext = useContext(CollaborationContext);\n\n const {isHistoryEnabled, isProfilePersisted} = useHistoryEnabled({\n perspectiveId,\n entity,\n historyButtonId: ActivePanel.History\n });\n\n const {historyFilter, onApplyFilter, isLoading, historicUris, historyWithTotal, canLoadMore, onLoadMore} =\n useHistory({entity, enabled: isHistoryEnabled});\n\n const enabledWorkflowButton = isWorkflowSideViewEnabled && isWorkflowEnabled && !isTempUri(entity?.uri);\n const enabledCollaborationButton = isCollaborationSideViewEnabled && isCollaborationEnabled;\n const collaborationTotal = calcTotalCommentItems(collaborationContext?.commentsMap);\n\n const tabs = useMemo(\n () => [\n {\n buttonProps: {\n id: ActivePanel.Workflow,\n icon: WorkflowButton,\n tooltipTitle: i18n.text('Workflow')\n },\n content: workflowTasksContext?.total ? <WorkflowList /> : <WorkflowPanelEmptyState />,\n headerProps: {\n mainTitle: i18n.text('Workflow'),\n secondTitle: getSecondTitle(workflowTasksContext?.total),\n rightContent: <AddWorkflowButton />\n },\n hidden: !enabledWorkflowButton\n },\n {\n buttonProps: {\n id: ActivePanel.Collaboration,\n icon: CollaborationButton,\n tooltipTitle: i18n.text('Collaboration')\n },\n content: collaborationTotal ? <CollaborationList /> : <CollaborationPanelEmptyState />,\n headerProps: {\n mainTitle: i18n.text('Collaboration'),\n secondTitle: getSecondTitle(collaborationTotal)\n },\n hidden: !enabledCollaborationButton\n },\n {\n buttonProps: {\n id: ActivePanel.History,\n icon: HistoryIcon,\n tooltipTitle: i18n.text('History')\n },\n content: isProfilePersisted ? (\n <HistoryView\n isLoading={isLoading}\n historyWithTotal={historyWithTotal}\n contributorsUris={historicUris}\n entityUri={entity?.uri}\n historyEvent={historyEvent}\n onLoadMore={onLoadMore}\n canLoadMore={canLoadMore}\n />\n ) : (\n <HistoryPanelEmptyState />\n ),\n headerProps: {\n content: (\n <HistoryHeader\n total={isProfilePersisted ? (historicUris?.length || 0) + 1 : undefined}\n entityType={getEntityType(metadata, entity?.type)}\n filter={historyFilter}\n onApplyFilter={onApplyFilter}\n />\n )\n },\n hidden: hideHistory\n },\n {\n buttonProps: {\n id: ActivePanel.DBConnector,\n icon: ConnectorsIcon,\n tooltipTitle: i18n.text('D&B Connector')\n },\n content: <DBConnectorsList />,\n headerProps: {\n mainTitle: i18n.text('D&B Connector')\n },\n hidden: !isDBConnectorSideViewEnabled\n }\n ],\n [\n workflowTasksContext?.total,\n enabledWorkflowButton,\n collaborationTotal,\n enabledCollaborationButton,\n isProfilePersisted,\n isLoading,\n historyWithTotal,\n historicUris,\n entity?.uri,\n entity?.type,\n historyEvent,\n onLoadMore,\n canLoadMore,\n metadata,\n historyFilter,\n onApplyFilter,\n isDBConnectorSideViewEnabled\n ]\n );\n\n return {tabs, defaultTab};\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n profileContainer: {\n display: 'flex',\n overflow: 'hidden',\n flexGrow: 1\n }\n}));\n","import React, {memo} from 'react';\nimport {pipe, pluck, propEq, reject} from 'ramda';\nimport {ProfileResizablePanes} from '@reltio/components';\nimport {RightSidePanel} from '../RightSidePanel/RightSidePanel';\nimport {useProfileRightSidePanelElements} from '../ProfilePerspectiveView/hooks/useProfileRightSidePanelElements';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n perspectiveId: string;\n commentId?: string;\n hideHistory?: boolean;\n children: React.ReactElement;\n};\n\nexport const ProfilePerspectiveResizablePanes = memo(({perspectiveId, commentId, hideHistory, children}: Props) => {\n const styles = useStyles();\n const {defaultTab, tabs} = useProfileRightSidePanelElements({commentId, hideHistory, perspectiveId});\n\n return (\n <div className={styles.profileContainer}>\n <ProfileResizablePanes\n defaultTab={defaultTab}\n perspectiveId={perspectiveId}\n buttonsProps={pipe(reject(propEq('hidden', true)), pluck('buttonProps'))(tabs)}\n >\n {children}\n <RightSidePanel tabs={tabs} />\n </ProfileResizablePanes>\n </div>\n );\n});\n\nProfilePerspectiveResizablePanes.displayName = 'ProfilePerspectiveView';\n","import {useCallback, useEffect, useMemo, useRef, useState} from 'react';\nimport hash from 'object-hash';\nimport {useSavedStateForEntityType, useConfigPermissions} from '@reltio/components';\nimport {\n debounce,\n fixNonUniqViewsIds,\n ProfilePerspectiveConfig,\n ProfileViewConfig,\n ReltioGridLayoutItem,\n removeUnsupportedLayoutItems\n} from '@reltio/mdm-sdk';\nimport {ProfileSavedState, Layout} from '../../../types';\n\ntype Props = {\n config: ProfilePerspectiveConfig;\n entityTypeUri?: string;\n saveState: (state: Record<string, ProfileSavedState>) => void;\n getSavedState: () => Promise<Record<string, ProfileSavedState>>;\n};\n\nconst SAVE_STATE_DEBOUNCE_DELAY = 1000;\nconst emptyState = {} as ProfileSavedState;\nexport const useProfileLayout = ({config: profileConfig, entityTypeUri, saveState, getSavedState}: Props) => {\n const [layout, setLayout] = useState<Layout>([]);\n const [views, setViews] = useState<ProfilePerspectiveConfig['views']>([]);\n\n const {canRead} = useConfigPermissions();\n const config: ProfilePerspectiveConfig = useMemo(() => {\n const validatedViews = profileConfig.views.filter(canRead);\n const validatedLayout = removeUnsupportedLayoutItems(profileConfig.layout, validatedViews);\n return {...profileConfig, views: validatedViews, layout: validatedLayout};\n }, [profileConfig, canRead]);\n\n const configHash = useMemo(() => hash(config), [config]);\n const nestedRoute = config?.nestedRoute ? `/${config.nestedRoute}` : '';\n const savedStateKey = entityTypeUri && config ? entityTypeUri + nestedRoute : null;\n\n const getSavedStateAndFix = useCallback(() => {\n return getSavedState().then((state) => (state.layout ? {} : state));\n }, [getSavedState]);\n const debouncedSaveState = useCallback(debounce(saveState, SAVE_STATE_DEBOUNCE_DELAY), [saveState]) as (\n state: Record<string, ProfileSavedState>\n ) => void;\n const {\n isLoaded,\n savedState = emptyState,\n updateSavedState\n } = useSavedStateForEntityType<ProfileSavedState>({\n getSavedState: getSavedStateAndFix,\n saveState: debouncedSaveState,\n entityTypeUri: savedStateKey\n });\n\n const handleLayoutChange = useCallback(\n (layout: Layout) => {\n updateSavedState({layout, views, configHash});\n setLayout(layout);\n },\n [updateSavedState, configHash, views]\n );\n\n const tempConfig = useRef<{views: ProfilePerspectiveConfig['views']; layout: Layout}>();\n const handleResetUndo = useCallback(() => {\n setViews(tempConfig.current.views);\n handleLayoutChange(tempConfig.current.layout);\n }, [handleLayoutChange]);\n\n const handleLayoutReset = useCallback(() => {\n tempConfig.current = {views, layout};\n const {views: fixedViews, layout: fixedLayout} = fixNonUniqViewsIds<ProfileViewConfig, ReltioGridLayoutItem>({\n views: config.views,\n layout: config.layout\n });\n setViews(fixedViews);\n handleLayoutChange(fixedLayout);\n }, [config, layout, views, handleLayoutChange]);\n\n useEffect(() => {\n if (isLoaded) {\n const isConfigChanged = configHash !== savedState.configHash;\n const {views: fixedViews, layout: fixedLayout} = fixNonUniqViewsIds<\n ProfileViewConfig,\n ReltioGridLayoutItem\n >({\n views: isConfigChanged || !savedState.views ? config.views : savedState.views,\n layout: isConfigChanged ? config.layout : savedState.layout\n });\n setViews(fixedViews);\n setLayout(fixedLayout);\n }\n }, [isLoaded, savedState, savedStateKey]); // eslint-disable-line\n\n return {\n views,\n layout,\n isLoaded,\n onLayoutReset: handleLayoutReset,\n onResetUndo: handleResetUndo,\n handleLayoutChange\n };\n};\n","import {makeStyles} from '@mui/styles';\n\nconst useStyles = makeStyles((theme) => ({\n wrapper: {\n alignItems: 'center',\n display: 'flex',\n padding: '12px 16px',\n fontSize: '13px',\n lineHeight: '15px',\n fontWeight: theme.typography.fontWeightRegular,\n color: theme.palette.text.secondary\n },\n loadingWrapper: {\n display: 'flex',\n backgroundColor: 'rgba(238, 238, 238, 1)',\n color: theme.palette.text.secondary,\n boxShadow: 'inset 0px -1px 0px rgba(0, 0, 0, 0.12)'\n },\n errorWrapper: {\n display: 'flex',\n backgroundColor: 'rgba(255, 235, 238, 1)',\n color: theme.palette.error.main\n },\n successWrapper: {\n display: 'flex',\n backgroundColor: 'rgba(239, 253, 227, 1)',\n color: theme.palette.success.main,\n '& span, & b': {\n paddingRight: '4px'\n }\n },\n closeIcon: {\n color: theme.palette.text.secondary,\n cursor: 'pointer',\n '&:hover': {\n background: 'none'\n }\n },\n indicatorIcon: {\n padding: '0 14px'\n },\n link: {\n color: theme.palette.primary.main,\n fontSize: theme.typography.pxToRem(13),\n fontWeight: theme.typography.fontWeightRegular,\n cursor: 'pointer'\n }\n}));\n\nexport default useStyles;\n","import React from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\n\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\nimport {getLabel} from '@reltio/mdm-sdk';\n\nimport Typography from '@mui/material/Typography';\nimport CloseIcon from '@mui/icons-material/Close';\nimport InfoIcon from '@mui/icons-material/InfoRounded';\nimport SuccessIcon from '@mui/icons-material/CheckCircle';\nimport ErrorIcon from '@mui/icons-material/ReportProblem';\n\nimport useStyles from './styles';\n\nexport enum BackgroundUpdateStatus {\n loading = 'loading',\n success = 'success',\n error = 'error'\n}\n\ntype Props = {\n label?: string;\n onClose: () => void;\n onRefresh?: () => void;\n status?: BackgroundUpdateStatus;\n};\n\nconst CloseIconButton = ({onClose}: {onClose: () => void}) => {\n const styles = useStyles();\n return (\n <SmallIconButtonWithTooltip\n tooltipTitle={i18n.text('Close')}\n onClick={onClose}\n size={'S'}\n className={styles.closeIcon}\n icon={CloseIcon}\n />\n );\n};\n\nconst ProcessLoading = ({onClose}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={classnames(styles.wrapper, styles.loadingWrapper)}>\n <CloseIconButton onClose={onClose} />\n <InfoIcon className={classnames(styles.indicatorIcon)} />\n <Typography>{i18n.text('Loading background process...')}</Typography>\n </div>\n );\n};\n\nconst ProcessSuccess = ({label, onClose, onRefresh}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={classnames(styles.wrapper, styles.successWrapper)}>\n <CloseIconButton onClose={onClose} />\n <SuccessIcon className={classnames(styles.indicatorIcon)} />\n <div data-reltio-id=\"background-update-success\">\n <span>{i18n.text('This Profile')}</span>\n <b>{getLabel(label)}</b>\n <span>{i18n.text('has been updated.')}</span>\n <span onClick={onRefresh} className={styles.link}>\n {i18n.text('Click Here to Refresh the page')}\n </span>\n <span>{i18n.text(' to retrieve the latest profile data.')}</span>\n </div>\n </div>\n );\n};\n\nconst ProcessError = ({onClose}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={classnames(styles.wrapper, styles.errorWrapper)}>\n <CloseIconButton onClose={onClose} />\n <ErrorIcon className={classnames(styles.indicatorIcon)} />\n <Typography>\n {i18n.text(\n 'UI attempted to check for updates but no update received in the last 30 seconds. Try refreshing the page manually.'\n )}\n </Typography>\n </div>\n );\n};\n\nexport const BackgroundProcessIndicator = ({label, onClose, onRefresh, status}: Props) => {\n switch (status) {\n case BackgroundUpdateStatus.loading:\n return <ProcessLoading onClose={onClose} />;\n case BackgroundUpdateStatus.success:\n return <ProcessSuccess label={label} onClose={onClose} onRefresh={onRefresh} />;\n case BackgroundUpdateStatus.error:\n return <ProcessError onClose={onClose} />;\n default:\n return null;\n }\n};\n","import {useCallback, useContext, useEffect, useRef, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {isNil} from 'ramda';\nimport {useActionsHook, useSafePromise, ViewIdContext} from '@reltio/components';\nimport {getEntityUpdatedTime, ProfileCheckUpdate} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {BackgroundUpdateStatus} from '../../BackgroundProcessIndicator/BackgroundProcessIndicator';\nimport {getBackgroundUpdateDelay} from './data/backgroundUpdateDalay';\n\nconst NUMBER_OF_RETRY = 5;\n\nconst isEntityTypeInBackgroundProcess = (entityTypeList?: string[], entityType?: string) => {\n if (entityTypeList?.[0] === '*') {\n return true;\n }\n if (isNil(entityTypeList)) {\n return false;\n }\n return entityTypeList.includes(entityType);\n};\n\nconst checkEntityTypeInList = (entityTypeList: string[], entityType: string) =>\n isEntityTypeInBackgroundProcess(entityTypeList, entityType);\n\ntype Props = {\n entityUri: string;\n entityTypeUri: string;\n entityUpdatedTime: number;\n};\n\nexport const useBackgroundProcessIndicator = ({entityUri, entityTypeUri, entityUpdatedTime}: Props) => {\n const dispatch = useDispatch();\n const {autoUpdateInReadMode, entityTypes: entityTypesForUpdate}: ProfileCheckUpdate =\n useSelector(mdm.selectors.getProfileCheckUpdate) || {};\n\n const needBackgroundProcess = checkEntityTypeInList(entityTypesForUpdate, entityTypeUri);\n const isAutoUpdated = checkEntityTypeInList(autoUpdateInReadMode, entityTypeUri);\n\n const timerId = useRef(null);\n const safePromise = useSafePromise();\n const listenToActions = useActionsHook();\n const viewId = useContext(ViewIdContext);\n\n const [isOpenBackgroundProcessIndicator, setIsOpenBackgroundProcessIndicator] = useState(false);\n const [backgroundUpdateStatus, setBackgroundUpdateStatus] = useState(BackgroundUpdateStatus.loading);\n const backgroundUpdateDelay = getBackgroundUpdateDelay();\n\n const onRefreshProfile = useCallback(() => {\n // entity refreshing\n dispatch(profile.entity.actions.loadEntity({viewId, uri: entityUri}));\n setIsOpenBackgroundProcessIndicator(false);\n }, [dispatch, entityUri, viewId]);\n\n const onCloseBackgroundProcessIndicator = useCallback(() => {\n setIsOpenBackgroundProcessIndicator(false);\n }, []);\n\n const cancelUpdateProcess = useCallback(() => {\n clearTimeout(timerId.current);\n setIsOpenBackgroundProcessIndicator(false);\n safePromise(Promise.resolve());\n }, [safePromise]);\n\n const getUpdatedTime = useCallback(\n (numberOfRetry) => {\n safePromise(getEntityUpdatedTime(entityUri))\n .then((result) => {\n if (result.updatedTime > entityUpdatedTime) {\n setBackgroundUpdateStatus(BackgroundUpdateStatus.success);\n if (isAutoUpdated) {\n onRefreshProfile();\n } else {\n setIsOpenBackgroundProcessIndicator(true);\n }\n numberOfRetry = -1;\n }\n })\n .catch(() => {})\n .finally(() => {\n if (numberOfRetry < 0) {\n return;\n }\n if (!numberOfRetry) {\n setBackgroundUpdateStatus(BackgroundUpdateStatus.error);\n setIsOpenBackgroundProcessIndicator(true);\n } else {\n numberOfRetry = numberOfRetry - 1;\n timerId.current = setTimeout(getUpdatedTime, backgroundUpdateDelay, numberOfRetry);\n }\n });\n },\n [entityUpdatedTime, entityUri, isAutoUpdated, onRefreshProfile, safePromise, backgroundUpdateDelay]\n );\n\n const runBackgroundUpdate = useCallback(() => {\n if (needBackgroundProcess) {\n setBackgroundUpdateStatus(BackgroundUpdateStatus.loading);\n setIsOpenBackgroundProcessIndicator(true);\n timerId.current = setTimeout(getUpdatedTime, backgroundUpdateDelay, NUMBER_OF_RETRY - 1);\n }\n }, [getUpdatedTime, needBackgroundProcess]);\n\n useEffect(() => {\n const stopListeningActions = listenToActions((action) => {\n if (action.type === profile.constants.ProfileActions.PROFILE_SAVED) {\n runBackgroundUpdate();\n }\n });\n return () => {\n stopListeningActions();\n };\n }, [listenToActions, safePromise, runBackgroundUpdate]);\n\n return {\n onRefreshProfile,\n onCloseBackgroundProcessIndicator,\n cancelUpdateProcess,\n isOpenBackgroundProcessIndicator,\n backgroundUpdateStatus\n };\n};\n","import {makeStyles} from '@mui/styles';\n\ntype Props = {\n maxWidth?: number;\n};\n\nexport const useStyles = makeStyles((theme) => ({\n perspectiveView: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\n overflowX: 'hidden',\n overflowY: 'auto',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: theme.palette.background.default\n },\n emptyState: {\n backgroundColor: '#FAFAFA',\n height: '100%'\n },\n profileWrapper: ({maxWidth}: Props) => ({\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n flexGrow: 1,\n maxWidth: maxWidth ? `${maxWidth}px` : '100%'\n }),\n '@global div[role=tooltip]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n },\n '@global div[role=presentation]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n }\n}));\n","import React, {memo, useContext, useMemo, useEffect} from 'react';\nimport i18n from 'ui-i18n';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {\n Entity,\n getProfileObjectIdsForCollaboration,\n Mode,\n ProfilePerspectiveConfig,\n isTempUri,\n HistoryEvent,\n AttributeError\n} from '@reltio/mdm-sdk';\nimport {\n CollaborationContext,\n WorkflowTasksContext,\n EMPTY_STATE_ICONS,\n EMPTY_STATE_VARIANTS,\n AttributesErrorsPanel,\n EmptyState,\n LinearLoadIndicator,\n ProfilePerspectiveViewContext,\n SearchValueContext,\n useCollaboration,\n HistoryDiffContext,\n useHistoryDiff,\n useHistorySlice,\n useEntityLoadingIndication,\n ScrollToElementProvider,\n CollaborationContextProvider,\n useLayoutResetter,\n FeaturesContext\n} from '@reltio/components';\nimport {ProfileSavedState} from '../../types';\n\nimport {ProfileLayout} from '../ProfileLayout';\nimport {Notifications} from '../Notifications';\nimport {PerspectiveProfileBand} from '../PerspectiveProfileBand';\nimport {ProfilePerspectiveResizablePanes} from '../ProfilePerspectiveResizablePanes/ProfilePerspectiveResizablePanes';\nimport {useProfileValidation} from '../hooks/useProfileValidation';\nimport {useProfileLayout} from './hooks/useProfileLayout';\nimport {useWorkflowTasks} from './hooks/useWorkflowTasks';\nimport {BackgroundProcessIndicator} from '../BackgroundProcessIndicator/BackgroundProcessIndicator';\nimport {useBackgroundProcessIndicator} from './hooks/useBackgroundProcessIndicator';\n\nimport {useStyles} from './styles';\nimport mdmModule from '@reltio/mdm-module';\n\ntype Props = {\n config: ProfilePerspectiveConfig;\n saveState: (state: Record<string, ProfileSavedState>) => void;\n getSavedState: () => Promise<Record<string, ProfileSavedState>>;\n commentId?: string;\n};\n\nconst perspectiveId = 'profile';\n\nconst ProfilePerspectiveView = memo(({config, saveState, getSavedState, commentId}: Props) => {\n const {maxWidth, profileBand, workflow, frozen} = config || {};\n const styles = useStyles({maxWidth});\n\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n const historyEvent: HistoryEvent = useSelector(mdm.selectors.getHistoryEvent);\n const isHistoryActive = useSelector(mdm.selectors.getIsHistoryModeEnabled);\n const keywordValue = useSelector(mdm.selectors.getSearchKeyword)?.value || '';\n const mode = useSelector(mdm.selectors.getMode);\n const allErrors: AttributeError[] = useSelector(mdm.selectors.getProfileErrors);\n\n const dispatch = useDispatch();\n const historyDiff = useHistoryDiff();\n const workflowTasks = useWorkflowTasks(workflow);\n const {isEmptyState} = useEntityLoadingIndication();\n\n const {type: entityTypeUri, uri: entityUri, updatedTime: entityUpdatedTime} = entity || {};\n const {\n onRefreshProfile,\n onCloseBackgroundProcessIndicator,\n cancelUpdateProcess,\n isOpenBackgroundProcessIndicator,\n backgroundUpdateStatus\n } = useBackgroundProcessIndicator({entityUri, entityTypeUri, entityUpdatedTime});\n const objectIds = useMemo(() => getProfileObjectIdsForCollaboration(entity), [entity]);\n const emptyCollaboration = useContext(CollaborationContext);\n const collaboration = useCollaboration({objectIds});\n\n const featuresContext = useContext(FeaturesContext);\n const showDescription = useSelector(mdmModule.selectors.getShowAttributeDescription);\n const features = useMemo(() => ({...featuresContext, showDescription}), [featuresContext, showDescription]);\n\n const {\n views,\n layout,\n isLoaded: isLayoutLoaded,\n onLayoutReset,\n onResetUndo,\n handleLayoutChange\n } = useProfileLayout({\n config,\n entityTypeUri,\n saveState,\n getSavedState\n });\n useHistorySlice({entity, historyEvent});\n useProfileValidation();\n\n useEffect(() => {\n dispatch(profile.views.actions.profileViewsSet(views));\n }, [dispatch, views]);\n\n useEffect(() => {\n if (config.sidePanelViews) {\n dispatch(profile.sidePanelViews.actions.sidePanelViewsLoaded(config.sidePanelViews));\n }\n }, [config]); // eslint-disable-line\n\n useEffect(() => {\n return () => cancelUpdateProcess();\n }, [entityUri, mode]);\n\n // possible for a short time during createProfile saga execution\n const hideLayout = mode === Mode.Viewing && isTempUri(entityUri);\n\n const renderEmptyState = (text: string) => (\n <div className={styles.emptyState}>\n <EmptyState LogoRenderer={EMPTY_STATE_ICONS.NO_DATA} text={text} variant={EMPTY_STATE_VARIANTS.embedded} />\n </div>\n );\n\n const {SnackbarRenderer, resetLayout} = useLayoutResetter({onLayoutReset, onResetUndo});\n const menuItems = useMemo(\n () => [\n {\n primary: i18n.text('Reset layout'),\n secondary: i18n.text('Restore the default layout without saving any changes'),\n onClick: resetLayout\n }\n ],\n [resetLayout]\n );\n\n return (\n <FeaturesContext.Provider value={features}>\n <ProfilePerspectiveViewContext.Provider value={true}>\n <CollaborationContextProvider collaboration={isHistoryActive ? emptyCollaboration : collaboration}>\n <WorkflowTasksContext.Provider value={workflowTasks}>\n <HistoryDiffContext.Provider value={historyDiff}>\n <SearchValueContext.Provider value={keywordValue}>\n <ScrollToElementProvider>\n <div className={styles.perspectiveView}>\n {isLayoutLoaded && entityUri ? (\n <ProfilePerspectiveResizablePanes\n commentId={commentId}\n perspectiveId={perspectiveId}\n >\n <div className={styles.profileWrapper}>\n <PerspectiveProfileBand\n profileBandConfig={profileBand}\n showMenu={!frozen}\n menuItems={menuItems}\n />\n {isEmptyState ? (\n renderEmptyState(i18n.text('Loading'))\n ) : (\n <>\n {isOpenBackgroundProcessIndicator && (\n <BackgroundProcessIndicator\n label={entity.label}\n onClose={onCloseBackgroundProcessIndicator}\n onRefresh={onRefreshProfile}\n status={backgroundUpdateStatus}\n />\n )}\n {!isHistoryActive && (\n <AttributesErrorsPanel\n attributesWithErrors={allErrors}\n />\n )}\n {!hideLayout && (\n <ProfileLayout\n maxWidth={maxWidth}\n views={views}\n layout={layout}\n frozen={frozen}\n entityUri={entityUri}\n onLayoutChanged={handleLayoutChange}\n />\n )}\n </>\n )}\n </div>\n </ProfilePerspectiveResizablePanes>\n ) : (\n <>\n <LinearLoadIndicator />\n {renderEmptyState(i18n.text('No data to display.'))}\n </>\n )}\n <Notifications />\n <SnackbarRenderer />\n </div>\n </ScrollToElementProvider>\n </SearchValueContext.Provider>\n </HistoryDiffContext.Provider>\n </WorkflowTasksContext.Provider>\n </CollaborationContextProvider>\n </ProfilePerspectiveViewContext.Provider>\n </FeaturesContext.Provider>\n );\n});\n\nProfilePerspectiveView.displayName = 'ProfilePerspectiveView';\n\nexport {ProfilePerspectiveView};\n","import {useWorkflowDefaultActionSuccessHandler, useWorkflowTasks as useCommonWorkflowTasks} from '@reltio/components';\nimport {useMemo} from 'react';\n\nexport const useWorkflowTasks = (workflowConfig: Parameters<typeof useCommonWorkflowTasks>[0]) => {\n const commonWorkflowTasks = useCommonWorkflowTasks(workflowConfig);\n const defaultActionSuccessHandler = useWorkflowDefaultActionSuccessHandler();\n\n return useMemo(\n () => ({\n ...commonWorkflowTasks,\n onActionSuccess: defaultActionSuccessHandler\n }),\n [commonWorkflowTasks, defaultActionSuccessHandler]\n );\n};\n","const BACKGROUND_UPDATE_DELAY = 6000;\nexport const getBackgroundUpdateDelay = (delay?: number) => delay || BACKGROUND_UPDATE_DELAY;\n","import {useCallback, useEffect} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {debounce, Entity, isDataTenantEntity, isTempUri, Mode} from '@reltio/mdm-sdk';\n\nexport const useProfileValidation = () => {\n const dispatch = useDispatch();\n const isValidateReadMode: boolean = useSelector(mdmModule.selectors.getValidateReadMode);\n const entity: Entity = useSelector(mdmModule.selectors.getEntity) || ({} as Entity);\n const {uri, updatedTime} = entity;\n const isDTEntity = isDataTenantEntity(entity);\n const mode: Mode = useSelector(mdmModule.selectors.getMode);\n const profileViews = useSelector(mdmModule.selectors.getProfileViews);\n const hasProfileViews = profileViews && profileViews.length > 0;\n\n const validate = useCallback(\n debounce((needDispatch: boolean) => {\n if (needDispatch) {\n dispatch(profile.actions.validateProfile());\n }\n }, 500),\n [dispatch]\n );\n\n useEffect(() => {\n const needDispatch =\n isValidateReadMode && !isDTEntity && uri && !isTempUri(uri) && mode === Mode.Viewing && hasProfileViews;\n validate(needDispatch);\n }, [validate, isDTEntity, isValidateReadMode, updatedTime, uri, mode, hasProfileViews]);\n};\n","import {evolve, ifElse, map, omit, pipe, propEq, sort} from 'ramda';\nimport {looseEquals} from '@reltio/mdm-sdk';\nimport {Layout, ProfileSavedState} from '../types';\n\nexport const equalsState = (\n newState: Record<string, ProfileSavedState>,\n savedState: Record<string, ProfileSavedState> | null\n) => {\n const sortLayoutItems = (layout: Layout) =>\n sort((a, b) => (a.x > b.x || (a.x === b.x && a.y > b.y) ? 1 : -1), layout);\n const prepareState = map((item: ProfileSavedState) =>\n evolve(\n {\n layout: pipe(\n sortLayoutItems,\n map(\n ifElse(\n propEq('autosizing', true),\n omit(['y', 'height', 'minHeight', 'maxHeight']),\n omit(['y', 'minHeight', 'maxHeight'])\n )\n )\n )\n },\n item\n )\n );\n return looseEquals(prepareState(newState), prepareState(savedState));\n};\n","import React, {useCallback, useMemo} from 'react';\nimport {AdapterMoment} from '@mui/x-date-pickers/AdapterMoment';\nimport {identity} from 'ramda';\nimport createGenerateClassName from '@mui/styles/createGenerateClassName';\nimport StylesProvider from '@mui/styles/StylesProvider';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {LocalizationProvider} from '@mui/x-date-pickers/LocalizationProvider';\nimport {ErrorPopup, SandboxAPIContext, SnackbarContext, useSnackbar, ViewIdContext} from '@reltio/components';\nimport {\n convertOldProfileConfig,\n ProfilePerspectiveConfig,\n promisifyCallback,\n QxSandboxApi,\n userPreferencesComparator\n} from '@reltio/mdm-sdk';\nimport {ProfileSavedState} from '../types';\nimport ProfilePerspectiveView from '../components/ProfilePerspectiveView';\nimport {equalsState} from './helpers';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'profilePerspective',\n disableGlobal: true,\n seed: 'prfl'\n});\n\nuserPreferencesComparator.register('profile', equalsState);\n\ntype Props = {\n config: ProfilePerspectiveConfig;\n onResize?: (width: number, height: number) => void;\n saveState: (state: Record<string, ProfileSavedState>) => void;\n getSavedState: (clb: (state: Record<string, ProfileSavedState>) => void) => void;\n qxSandboxApi?: QxSandboxApi;\n commentId?: string;\n};\n\nconst ProfilePerspective = ({\n config,\n onResize = identity,\n saveState,\n getSavedState,\n qxSandboxApi,\n commentId\n}: Props) => {\n const getSavedStatePromisified: () => Promise<Record<string, ProfileSavedState>> = useCallback(\n promisifyCallback(getSavedState),\n [getSavedState]\n );\n const {SnackbarRenderer, showSnackbarMessage} = useSnackbar();\n const processedConfig = useMemo(() => config && convertOldProfileConfig(config), [config]);\n\n return (\n <ViewIdContext.Provider value={processedConfig?.id}>\n <SnackbarContext.Provider value={showSnackbarMessage}>\n <SandboxAPIContext.Provider value={qxSandboxApi}>\n <StylesProvider generateClassName={generateClassName}>\n <LocalizationProvider dateAdapter={AdapterMoment}>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize(Math.floor(width), Math.floor(height))}\n />\n {processedConfig && (\n <ProfilePerspectiveView\n config={processedConfig}\n saveState={saveState}\n getSavedState={getSavedStatePromisified}\n commentId={commentId}\n />\n )}\n <ErrorPopup showErrorFromStore={true} />\n <SnackbarRenderer />\n </LocalizationProvider>\n </StylesProvider>\n </SandboxAPIContext.Provider>\n </SnackbarContext.Provider>\n </ViewIdContext.Provider>\n );\n};\n\nexport default ProfilePerspective;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n titleContainer: {\n overflow: 'hidden',\n fontSize: '16px',\n fontWeight: 'normal',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n alignItems: 'center',\n display: 'flex',\n minHeight: '48px',\n color: theme.palette.text.secondary\n },\n link: {\n fontSize: '16px',\n fontWeight: 'normal'\n },\n icon: {\n height: '18px',\n color: theme.palette.text.secondary\n },\n totalCaption: {\n lineHeight: 'inherit',\n fontSize: '14px',\n color: 'rgba(0,0,0,0.6)',\n flexShrink: 0,\n marginRight: '5px'\n },\n totalNumber: {\n fontSize: '16px',\n color: 'rgba(0,0,0,0.87)',\n marginRight: '5px',\n fontWeight: 500\n }\n}));\n","import React, {useCallback, useContext} from 'react';\nimport {useDispatch} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {ui as mdmModuleUi} from '@reltio/mdm-module';\nimport {FacetViewHeader, Spacer, ViewIdContext} from '@reltio/components';\nimport Link from '@mui/material/Link';\nimport ArrowForwardIosRoundedIcon from '@mui/icons-material/ArrowForwardIosRounded';\nimport Typography from '@mui/material/Typography';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n total?: number;\n};\n\nexport const TagListHeader = ({total = 0}: Props) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n\n const viewId = useContext(ViewIdContext);\n\n const switchToProfile = useCallback(() => {\n dispatch(mdmModuleUi.actions.openPerspective({perspectiveId: 'profile', viewId}));\n }, [dispatch, viewId]);\n\n return (\n <FacetViewHeader title=\"\">\n <div className={styles.titleContainer}>\n <Link\n component=\"button\"\n variant=\"caption\"\n className={styles.link}\n onClick={switchToProfile}\n underline=\"none\"\n >\n {i18n.text('Profile')}\n </Link>\n <ArrowForwardIosRoundedIcon className={styles.icon} />\n {i18n.text('Tags')}\n </div>\n <Spacer />\n <Typography className={styles.totalCaption} variant=\"caption\">\n <span className={styles.totalNumber}>{i18n.number(total, '0,0')}</span>\n {i18n.text('total profiles')}\n </Typography>\n </FacetViewHeader>\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n toolbar: {\n display: 'flex',\n flexShrink: 0,\n background: 'white',\n borderBottom: '1px solid rgba(0,0,0,0.1)',\n boxSizing: 'border-box',\n paddingLeft: '16px'\n },\n avatar: {\n color: 'rgba(0, 0, 0, 0.38)',\n marginRight: '12px'\n },\n label: {\n fontSize: '20px',\n letterSpacing: '0.25px',\n lineHeight: '1.2',\n fontWeight: 500,\n color: theme.palette.text.primary,\n wordBreak: 'break-word'\n }\n}));\n","import React from 'react';\nimport TagIcon from '@mui/icons-material/LocalOffer';\nimport Toolbar from '@mui/material/Toolbar';\nimport Typography from '@mui/material/Typography';\nimport {useStyles} from './styles';\n\ntype Props = {\n label: string;\n};\n\nexport const TagProfileBand = ({label}: Props) => {\n const styles = useStyles();\n return (\n <Toolbar className={styles.toolbar}>\n <TagIcon className={styles.avatar} />\n <Typography variant=\"h6\" className={styles.label}>\n {label}\n </Typography>\n </Toolbar>\n );\n};\n","import {useCallback, useMemo} from 'react';\nimport {map} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {\n Entity,\n getFilteredEntities,\n getFilteredEntitiesFromDataTenant,\n getTotals,\n getTotalFromDataTenant,\n TotalResponse,\n SearchFilter,\n GlobalSearchRequestOptions,\n getDataTenantFromEntityUri,\n enrichEntityWithDataTenant\n} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\n\ntype Props = {\n entityUri: string;\n tag: string;\n};\n\nexport const useTagsProvider = ({entityUri, tag}: Props) => {\n const globalSearchRequestOptions: GlobalSearchRequestOptions = useSelector(\n mdmModule.selectors.getGlobalSearchRequestOptions\n );\n const tenant: string = useSelector(mdmModule.selectors.getTenant);\n const dtssPath: string = useSelector(mdmModule.selectors.getDtssPath);\n const dataTenant = useMemo(() => getDataTenantFromEntityUri(entityUri), [entityUri]);\n const filters: SearchFilter[] = useMemo(() => {\n return [\n {\n filter: 'equals',\n fieldName: 'tags',\n values: [tag]\n }\n ];\n }, [tag]);\n\n const isDT = !!dataTenant;\n\n const getEntities = useCallback(\n (filters: SearchFilter[] = [], options = {}): Promise<Entity[]> => {\n const requestOptions = {\n select: 'uri,label,type,secondaryLabel,defaultProfilePicValue,startDate,endDate',\n ...options\n };\n return isDT\n ? getFilteredEntitiesFromDataTenant({\n filters,\n options: requestOptions,\n customerTenant: tenant,\n dataTenant,\n dtssPath\n }).then(map(enrichEntityWithDataTenant(dataTenant)))\n : getFilteredEntities(filters, requestOptions);\n },\n [isDT, dataTenant, tenant, dtssPath]\n );\n\n const requestEntities = useCallback(\n (max, offset): Promise<Entity[]> => {\n return getEntities(filters, {offset, max, ...globalSearchRequestOptions});\n },\n [filters, globalSearchRequestOptions, getEntities]\n );\n\n const requestTotal = useCallback((): Promise<number> => {\n const options = globalSearchRequestOptions;\n return (isDT\n ? getTotalFromDataTenant({\n filters,\n options,\n customerTenant: tenant,\n dataTenant,\n dtssPath\n })\n : getTotals(filters, options)\n ).then((json) => (json as TotalResponse).total);\n }, [filters, globalSearchRequestOptions, isDT, dataTenant, tenant, dtssPath]);\n\n return {requestEntities, requestTotal};\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n perspectiveView: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: theme.palette.background.default\n },\n tagsContainer: {\n display: 'flex'\n },\n fullHeight: {\n flexGrow: 1,\n height: 0\n },\n tagsView: {\n margin: '16px',\n width: '100%',\n paddingTop: '4px'\n },\n listContainer: {\n flex: 1,\n display: 'flex',\n overflow: 'hidden',\n position: 'relative',\n flexDirection: 'column',\n minHeight: '4px'\n },\n entitiesList: {\n overflowY: 'auto',\n flexGrow: 1\n },\n pagination: {\n flexGrow: 0\n }\n}));\n","import React, {memo, useEffect, useRef, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport mdmModule from '@reltio/mdm-module';\nimport {GlobalSearchRequestOptions} from '@reltio/mdm-sdk';\nimport {BasicTablePagination, BasicView, LinearLoadIndicator, ProfilesList} from '@reltio/components';\nimport {TagListHeader} from './components/TagListHeader';\nimport {TagProfileBand} from './components/TagProfileBand';\nimport {useTag} from './hooks/useTag';\n\nimport {useStyles} from './styles';\n\nconst ROWS_PER_PAGE_OPTIONS = [25, 50, 100];\n\ntype Props = {\n tag?: string;\n entityUri?: string;\n};\n\nconst TagPerspectiveView = memo(({tag, entityUri}: Props) => {\n const styles = useStyles();\n\n const [rowsPerPage, setRowsPerPage] = useState(ROWS_PER_PAGE_OPTIONS[0]);\n const [page, setPage] = useState(0);\n\n const globalSearchRequestOptions: GlobalSearchRequestOptions = useSelector(\n mdmModule.selectors.getGlobalSearchRequestOptions\n );\n\n useEffect(() => {\n setPage(0);\n }, [tag, entityUri, globalSearchRequestOptions]);\n\n const {isLoading, total, entities} = useTag({tag, entityUri, page, rowsPerPage});\n const refScrollBlock = useRef(null);\n\n useEffect(() => {\n if (refScrollBlock.current) {\n refScrollBlock.current.scrollTop = 0;\n }\n }, [entities]);\n\n const hasPagination = total > ROWS_PER_PAGE_OPTIONS[0];\n\n return (\n <div className={styles.perspectiveView}>\n <TagProfileBand label={tag} />\n <div className={classnames(styles.tagsContainer, {[styles.fullHeight]: hasPagination})}>\n <BasicView className={styles.tagsView}>\n <TagListHeader total={total} />\n <div className={styles.listContainer}>\n {isLoading && <LinearLoadIndicator />}\n {total > 0 && (\n <div className={styles.entitiesList} ref={refScrollBlock}>\n <ProfilesList entities={entities} />\n </div>\n )}\n {hasPagination && (\n <div className={styles.pagination}>\n <BasicTablePagination\n count={total}\n rowsPerPageOptions={ROWS_PER_PAGE_OPTIONS}\n rowsPerPage={rowsPerPage}\n page={page}\n onChangePage={setPage}\n onChangeRowsPerPage={setRowsPerPage}\n />\n </div>\n )}\n </div>\n </BasicView>\n </div>\n </div>\n );\n});\n\nTagPerspectiveView.displayName = 'TagPerspectiveView';\n\nexport {TagPerspectiveView};\n","import {useCallback, useEffect, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {useDispatch} from 'react-redux';\nimport {useSafePromise} from '@reltio/components';\nimport {ui} from '@reltio/mdm-module';\nimport {Entity, getRequestErrorMessage} from '@reltio/mdm-sdk';\nimport {useTagsProvider} from './useTagsProvider';\n\ntype Props = {\n tag: string;\n entityUri: string;\n page: number;\n rowsPerPage: number;\n};\n\nexport const useTag = ({tag, entityUri, page = 0, rowsPerPage = 50}: Props) => {\n const dispatch = useDispatch();\n\n const safeRequestTotalPromise = useSafePromise();\n const safeRequestEntitiesPromise = useSafePromise();\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [total, setTotal] = useState<number>(0);\n const [entities, setEntities] = useState<Entity[]>([]);\n\n const {requestEntities, requestTotal} = useTagsProvider({entityUri, tag});\n\n const onError = useCallback(\n (e) => {\n dispatch(ui.actions.errorSet(getRequestErrorMessage(e, i18n.text('Something went wrong'))));\n setTotal(0);\n },\n [dispatch]\n );\n\n useEffect(() => {\n safeRequestTotalPromise(requestTotal()).then(setTotal).catch(onError);\n }, [requestTotal, safeRequestTotalPromise, onError]);\n\n useEffect(() => {\n setIsLoading(true);\n safeRequestEntitiesPromise(requestEntities(rowsPerPage, page * rowsPerPage))\n .then(setEntities)\n .catch(onError)\n .finally(() => setIsLoading(false));\n }, [page, rowsPerPage, requestEntities, safeRequestEntitiesPromise, onError]);\n\n return {isLoading, total, entities};\n};\n","import React from 'react';\nimport {identity} from 'ramda';\nimport createGenerateClassName from '@mui/styles/createGenerateClassName';\nimport StylesProvider from '@mui/styles/StylesProvider';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {ErrorPopup, ViewIdContext} from '@reltio/components';\nimport {TagPerspectiveConfig} from '@reltio/mdm-sdk';\nimport TagPerspectiveView from '../components/TagPerspectiveView';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'tagPerspective',\n disableGlobal: true\n});\n\ntype Props = {\n config: TagPerspectiveConfig;\n tag?: string;\n entityUri?: string;\n onResize?: (width: number, height: number) => void;\n};\n\nconst TagPerspective = ({config, tag, entityUri, onResize = identity}: Props) => {\n return (\n <ViewIdContext.Provider value={config.id}>\n <StylesProvider generateClassName={generateClassName}>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize(Math.floor(width), Math.floor(height))}\n />\n {config && <TagPerspectiveView tag={tag} entityUri={entityUri} />}\n <ErrorPopup showErrorFromStore={true} />\n </StylesProvider>\n </ViewIdContext.Provider>\n );\n};\n\nexport default TagPerspective;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n actionsWrapper: {\n display: 'flex',\n '& button + button': {\n width: '88px',\n marginLeft: '8px'\n }\n }\n}));\n","import React, {useContext, useMemo} from 'react';\nimport {ProfileBand, TaskActionButtons, WorkflowTasksContext} from '@reltio/components';\nimport {useSelector} from 'react-redux';\nimport {Entity, getEntityUriFromDCRUri} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\nimport {useStyles} from './styles';\n\nexport const DCRProfileBand = () => {\n const styles = useStyles();\n\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n const {tasks} = useContext(WorkflowTasksContext);\n const entityTask = useMemo(() => {\n return tasks?.find((task) => task.objectURIs.includes(getEntityUriFromDCRUri(entity.uri)));\n }, [entity.uri, tasks]);\n\n return (\n <ProfileBand entity={entity}>\n <div className={styles.actionsWrapper}>{entityTask && <TaskActionButtons task={entityTask} />}</div>\n </ProfileBand>\n );\n};\n","import {useWorkflowTasks as useCommonWorkflowTasks} from '@reltio/components';\nimport mdmModule, {ui} from '@reltio/mdm-module';\nimport {getEntityUriFromDCRUri} from '@reltio/mdm-sdk';\nimport {useCallback, useMemo} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nexport const useWorkflowTasks = (workflowConfig: Parameters<typeof useCommonWorkflowTasks>[0]) => {\n const dispatch = useDispatch();\n const entityUri: string = useSelector(mdmModule.selectors.getEntityUri);\n const commonWorkflowTasks = useCommonWorkflowTasks(workflowConfig);\n\n const actionSuccessHandler = useCallback(\n (action: string) => {\n if (action === 'Reject') {\n dispatch(ui.actions.openPerspective({perspectiveId: null, viewId: null}));\n }\n if (action === 'Approve') {\n dispatch(ui.actions.openEntity({uri: getEntityUriFromDCRUri(entityUri), viewId: null}));\n }\n },\n [dispatch, entityUri]\n );\n\n return useMemo(\n () => ({\n ...commonWorkflowTasks,\n onActionSuccess: actionSuccessHandler\n }),\n [commonWorkflowTasks, actionSuccessHandler]\n );\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n perspectiveView: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: theme.palette.background.default\n },\n perspectiveContainer: {\n display: 'flex',\n flexGrow: 1,\n overflow: 'hidden'\n },\n attributesWrapper: {\n margin: '15px',\n flexGrow: 1,\n overflowY: 'auto',\n backgroundColor: '#FAFAFA'\n },\n contentWrapper: {\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n flexGrow: 1\n }\n}));\n","import React, {memo, useContext, useEffect, useMemo} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {Entity} from '@reltio/mdm-sdk';\nimport mdm, {profile} from '@reltio/mdm-module';\nimport {\n AttributesView,\n EMPTY_STATE_ICONS,\n EMPTY_STATE_VARIANTS,\n EmptyState,\n FeaturesContext,\n LinearLoadIndicator,\n WorkflowTasksContext\n} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {DCRProfileBand} from './components/DCRProfileBand/DCRProfileBand';\nimport {useWorkflowTasks} from './hooks/useWorkflowTasks';\nimport {ProfilePerspectiveResizablePanes} from '../ProfilePerspectiveResizablePanes/ProfilePerspectiveResizablePanes';\n\nimport {useStyles} from './styles';\n\nconst workflowConfig = {processTypes: ['dataChangeRequestReview']};\nconst perspectiveId = 'dcrCard';\n\nexport const DCRReviewPerspectiveView = memo(() => {\n const styles = useStyles();\n const dispatch = useDispatch();\n\n const workflowTasks = useWorkflowTasks(workflowConfig);\n const entity: Entity = useSelector(mdm.selectors.getEntity);\n\n const featuresContext = useContext(FeaturesContext);\n const showDescription = useSelector(mdmModule.selectors.getShowAttributeDescription);\n const features = useMemo(() => ({...featuresContext, showDescription}), [featuresContext, showDescription]);\n\n useEffect(() => {\n dispatch(\n profile.sidePanelViews.actions.sidePanelViewsLoaded([\n {\n id: 'common',\n views: [\n {\n point: 'com.reltio.plugins.ui.view',\n id: 'com.reltio.plugins.entity.side.WorkflowsView',\n class: 'com.reltio.plugins.entity.side.WorkflowsView'\n }\n ]\n }\n ])\n );\n }, [dispatch]);\n\n const isLoaded = !workflowTasks.loading && !!entity.uri;\n\n return (\n <FeaturesContext.Provider value={features}>\n <WorkflowTasksContext.Provider value={workflowTasks}>\n <div className={styles.perspectiveView}>\n {!isLoaded && <LinearLoadIndicator />}\n <div className={styles.perspectiveContainer}>\n {isLoaded ? (\n <ProfilePerspectiveResizablePanes hideHistory={true} perspectiveId={perspectiveId}>\n <div className={styles.contentWrapper}>\n <DCRProfileBand />\n <div className={styles.attributesWrapper}>\n <AttributesView />\n </div>\n </div>\n </ProfilePerspectiveResizablePanes>\n ) : (\n <EmptyState\n LogoRenderer={EMPTY_STATE_ICONS.NO_DATA}\n text={i18n.text('No data to display.')}\n variant={EMPTY_STATE_VARIANTS.embedded}\n />\n )}\n </div>\n </div>\n </WorkflowTasksContext.Provider>\n </FeaturesContext.Provider>\n );\n});\n\nDCRReviewPerspectiveView.displayName = 'DCRReviewPerspectiveView';\n","import React from 'react';\nimport {identity} from 'ramda';\nimport createGenerateClassName from '@mui/styles/createGenerateClassName';\nimport StylesProvider from '@mui/styles/StylesProvider';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {ErrorPopup, ViewIdContext} from '@reltio/components';\nimport {DCRReviewPerspectiveConfig} from '@reltio/mdm-sdk';\nimport {AdapterMoment} from '@mui/x-date-pickers/AdapterMoment';\nimport {LocalizationProvider} from '@mui/x-date-pickers/LocalizationProvider';\nimport DCRReviewPerspectiveView from '../components/DCRReviewPerspectiveView';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'dcrReviewPerspective',\n disableGlobal: true,\n seed: 'dcr'\n});\n\ntype Props = {\n config: DCRReviewPerspectiveConfig;\n onResize?: (width: number, height: number) => void;\n};\n\nconst DCRReviewPerspective = ({config, onResize = identity}: Props) => {\n return (\n <ViewIdContext.Provider value={config.id}>\n <StylesProvider generateClassName={generateClassName}>\n <LocalizationProvider dateAdapter={AdapterMoment}>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize(Math.floor(width), Math.floor(height))}\n />\n <DCRReviewPerspectiveView />\n <ErrorPopup showErrorFromStore={true} />\n </LocalizationProvider>\n </StylesProvider>\n </ViewIdContext.Provider>\n );\n};\n\nexport default DCRReviewPerspective;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n addButton: {\n marginLeft: '12px',\n padding: '9px 16px 9px 12px',\n backgroundColor: 'rgba(98, 2, 238, 0)'\n },\n label: {\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px'\n },\n icon: {\n fontSize: '18px',\n marginRight: '8px'\n }\n});\n","import AddIcon from '@mui/icons-material/Add';\nimport Button from '@mui/material/Button';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport i18n from 'ui-i18n';\nimport {useStyles} from './styles';\n\nconst AddRelationButton = ({onClick}) => {\n const styles = useStyles();\n return (\n <Button color=\"primary\" className={styles.addButton} onClick={onClick}>\n <AddIcon classes={{root: styles.icon}} />\n <div className={styles.label}>{i18n.text('Add')}</div>\n </Button>\n );\n};\n\nAddRelationButton.propTypes = {\n onClick: PropTypes.func\n};\n\nexport default AddRelationButton;\n","import {makeStyles} from '@mui/styles';\n\nconst removedStyle = {\n textDecoration: 'line-through',\n color: 'rgba(0,0,0,.54)'\n};\n\nconst inactiveStyle = {\n color: 'rgba(0,0,0,.54)'\n};\n\nexport const useStyles = makeStyles((theme) => ({\n headCell: {\n display: 'flex',\n alignItems: 'center',\n height: '100%',\n fontSize: '12px'\n },\n entityCell: {\n display: 'flex',\n alignItems: 'center',\n height: '100%'\n },\n entityLabel: {\n fontSize: '15px',\n color: theme.palette.primary.main,\n cursor: 'pointer',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n '$row-cell--removed &': removedStyle,\n '$row-cell--inactive &': inactiveStyle\n },\n entityAvatar: {\n transform: 'scale(0.7)',\n margin: '0 10px'\n },\n rowCell: {\n fontSize: '13px',\n overflow: 'hidden'\n },\n description: {\n marginLeft: '-22px'\n },\n 'row-cell--sorted': {\n color: 'rgba(0,0,0,0.87)'\n },\n 'row-cell--removed': {\n pointerEvents: 'none',\n '& > :not($entityCell)': removedStyle\n },\n 'row-cell--inactive': inactiveStyle\n}));\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classnames from 'classnames';\nimport {checkRemoved, isActiveObject} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\nconst RowCellRenderer = ({cell, CellValueRenderer, rowValue: {connection}, isSorted, ...otherProps}) => {\n const styles = useStyles();\n const isRemoved = checkRemoved(connection);\n const isActive = isActiveObject(connection.relation) && isActiveObject(connection.entity);\n\n return (\n <div\n className={classnames(\n {\n [styles['row-cell--sorted']]: isSorted,\n [styles['row-cell--removed']]: isRemoved,\n [styles['row-cell--inactive']]: !isActive\n },\n styles.rowCell\n )}\n >\n {cell.values.map((value, index) => (\n <CellValueRenderer key={index} value={value} {...otherProps} />\n ))}\n </div>\n );\n};\n\nRowCellRenderer.propTypes = {\n rowValue: PropTypes.object,\n cell: PropTypes.object,\n CellValueRenderer: PropTypes.elementType,\n isSorted: PropTypes.bool\n};\n\nexport default RowCellRenderer;\n","import PropTypes from 'prop-types';\nimport React, {useContext} from 'react';\nimport {ui} from '@reltio/mdm-module';\nimport {always, pipe} from 'ramda';\nimport {useDispatch} from 'react-redux';\nimport {useStyles} from './styles';\nimport {EntityTypeType, getEntityUriForLink, getLabel} from '@reltio/mdm-sdk';\nimport {EntityTypeIcon, ExpandedValueTooltip, ViewIdContext} from '@reltio/components';\n\nconst EntityProfileRenderer = ({value: {entityType, entity}}) => {\n const dispatch = useDispatch();\n const viewId = useContext(ViewIdContext);\n const styles = useStyles();\n const entityLabel = getLabel(entity.entityLabel);\n const preparedUri = getEntityUriForLink({uri: entity.entityUri, dataTenant: entity.dataTenant});\n return (\n <div className={styles.entityCell}>\n <EntityTypeIcon className={styles.entityAvatar} entityType={entityType} />\n <ExpandedValueTooltip value={entityLabel}>\n <span\n className={styles.entityLabel}\n onClick={pipe(always({uri: preparedUri, viewId}), ui.actions.openEntity, dispatch)}\n >\n {entityLabel}\n </span>\n </ExpandedValueTooltip>\n </div>\n );\n};\n\nEntityProfileRenderer.propTypes = {\n value: PropTypes.shape({\n entity: PropTypes.shape({\n entityUri: PropTypes.string,\n entityLabel: PropTypes.string\n }),\n entityType: EntityTypeType\n })\n};\n\nexport default EntityProfileRenderer;\n","import React from 'react';\n\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport {withFilterAtBottom, DescriptionIcon} from '@reltio/components';\nimport {useStyles} from './styles';\n\nconst HeadCellRenderer = (props) => {\n const styles = useStyles();\n const {description} = props?.headCellData || {};\n\n return (\n <div className={styles.headCell}>\n <DefaultHeadCellRenderer {...props} />\n <DescriptionIcon description={description} className={styles.description} />\n </div>\n );\n};\n\nexport default withFilterAtBottom(HeadCellRenderer);\n","import {getOvAttributeValuesByPath, getReadableAttributesList} from '@reltio/mdm-sdk';\nimport {chain, find, map, path, pipe, propEq, uniq} from 'ramda';\n\nconst getRelationTypes = pipe(\n map((rel) => rel.uri || rel),\n uniq\n);\n\nconst getRelationsAttributesFromMetadata = ({content: {inRelations = [], outRelations = []}}, {relationTypes}) =>\n pipe(\n getRelationTypes,\n chain((relationType) => pipe(find(propEq('uri', relationType)), getReadableAttributesList)(relationTypes))\n )([...inRelations, ...outRelations]);\n\nconst getRelationAttributeValues = (attrPath, relation) =>\n pipe(path(['object', 'attributes']), getOvAttributeValuesByPath(attrPath))(relation);\n\nexport {getRelationsAttributesFromMetadata, getRelationAttributeValues};\n","import EntityProfileRenderer from '../cell-renderers/EntityProfileRenderer';\nimport HeadCellRenderer from '../cell-renderers/HeadCellRenderer';\nimport {DefaultCellValueRenderer} from '@reltio/components';\nimport {assoc, map, pipe, reduce, slice, split} from 'ramda';\nimport {getEntityType, getRelationTypeLabelFromMetadata} from '@reltio/mdm-sdk';\nimport {getRelationAttributeValues} from '../../../core/relations';\n\nconst getAttrPathFromColumnId = pipe(split('.'), slice(2, Infinity));\n\nconst getRowValueByColumnId = (columnId, {entity, relation}, metadata) => {\n switch (columnId) {\n case 'entity.label':\n return {entity, entityType: getEntityType(metadata, entity.entityType)};\n case 'relation.label':\n return relation.relationLabel || getRelationTypeLabelFromMetadata(metadata, relation.relationType);\n case 'relation.activeness.startDate':\n return relation.startDate;\n case 'relation.activeness.endDate':\n return relation.endDate;\n default: {\n const attrPath = getAttrPathFromColumnId(columnId);\n return getRelationAttributeValues(attrPath, relation);\n }\n }\n};\n\nconst getBasicTableRowsData = (connections, columnsData, metadata) =>\n connections.map((connection) =>\n pipe(\n reduce((acc, {id}) => assoc(id, getRowValueByColumnId(id, connection, metadata), acc), {}),\n assoc('connection', connection)\n )(columnsData)\n );\n\nconst getNestedPathByColumnId = (columnId) => {\n if (columnId.startsWith('relation.attributes')) {\n const attrPath = getAttrPathFromColumnId(columnId);\n return attrPath.length > 1 ? attrPath.slice(0, -1) : null;\n } else {\n return null;\n }\n};\n\nconst getCellValueRenderer = (columnId) => {\n switch (columnId) {\n case 'entity.label':\n return EntityProfileRenderer;\n default:\n return DefaultCellValueRenderer;\n }\n};\n\nconst getColumnDataByColumnId = (columnData) => ({\n ...columnData,\n sortable: true,\n resizable: true,\n nestedPath: getNestedPathByColumnId(columnData.id),\n headCellRenderer: HeadCellRenderer,\n rowCellValueRenderer: getCellValueRenderer(columnData.id)\n});\n\nconst getBasicTableColumnsData = map(getColumnDataByColumnId);\n\nexport {getBasicTableRowsData, getBasicTableColumnsData};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n tableContainer: {\n display: 'flex',\n fontFamily: 'Roboto',\n color: 'rgba(0,0,0,0.54)'\n },\n\n emptyData: {\n marginBottom: '30px'\n },\n\n '@global div[role=tooltip]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n },\n\n '@global div[role=presentation]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n },\n 'row-cell__buttons-container': {\n position: 'absolute'\n },\n 'row-cell__buttons-wrapper': {\n display: 'flex',\n paddingLeft: '10px',\n '& > button': {\n marginLeft: '-10px',\n transform: 'scale(0.9)'\n }\n }\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Tooltip from '@mui/material/Tooltip';\nimport IconButton from '@mui/material/IconButton';\nimport EditIcon from '@mui/icons-material/Edit';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport i18n from 'ui-i18n';\n\nexport const EditButtons = ({canUpdate, canRemove, handleEditRelation, handleRemoveRelation}) => (\n <>\n {canUpdate && (\n <Tooltip title={i18n.text('Edit')}>\n <IconButton onClick={handleEditRelation} size=\"large\">\n <EditIcon />\n </IconButton>\n </Tooltip>\n )}\n {canRemove && (\n <Tooltip title={i18n.text('Remove')}>\n <IconButton onClick={handleRemoveRelation} size=\"large\">\n <DeleteIcon />\n </IconButton>\n </Tooltip>\n )}\n </>\n);\nEditButtons.propTypes = {\n canUpdate: PropTypes.bool,\n canRemove: PropTypes.bool,\n handleEditRelation: PropTypes.func,\n handleRemoveRelation: PropTypes.func\n};\n\nexport default EditButtons;\n","import PropTypes from 'prop-types';\nimport React, {useCallback, useMemo, useState} from 'react';\nimport RowCellRenderer from './cell-renderers/RowCellRenderer';\nimport {BasicTable, ColumnFilterType, ColumnsDataType, SortingType} from '@reltio/components';\nimport {getBasicTableColumnsData, getBasicTableRowsData} from './helpers/dataHelpers';\nimport {useStyles} from './styles';\nimport {ConnectionType, MetadataType} from '@reltio/mdm-sdk';\nimport {path} from 'ramda';\nimport {checkRelationPermission} from './helpers/buttonsHelper';\nimport EditButtons from './EditButtons';\n\nconst MAX_HEIGHT = 477;\n\nconst RelationsTable = ({\n mode,\n columnsData,\n connections,\n metadata,\n sorting,\n onSort,\n filters,\n onFilter,\n onEditRelation,\n onRemoveRelation,\n basicTableRef,\n allowOnlyCreateNew\n}) => {\n const tableRowsData = useMemo(\n () => getBasicTableRowsData(connections, columnsData, metadata),\n [connections, columnsData, metadata]\n );\n const tableColumnsData = useMemo(() => getBasicTableColumnsData(columnsData), [columnsData]);\n\n const styles = useStyles();\n\n const renderRowCell = useCallback(\n (props) => (\n <RowCellRenderer\n {...props}\n isSorted={!!sorting && sorting.field === props.columnData.id} /* eslint-disable-line react/prop-types */\n />\n ),\n [sorting]\n );\n\n const [hoverRowIndex, setHoverRowIndex] = useState(null);\n const {canRemove, canUpdate} = checkRelationPermission({\n mode,\n onRemoveRelation,\n onEditRelation,\n metadata,\n allowOnlyCreateNew,\n connection: path([hoverRowIndex, 'connection'], tableRowsData)\n });\n\n const handleOnRowHover = useCallback((rowIndex) => setHoverRowIndex(rowIndex), []);\n const handleEditRelation = useCallback(\n () => onEditRelation(path([hoverRowIndex, 'connection'], tableRowsData)),\n [hoverRowIndex, onEditRelation, tableRowsData]\n );\n const handleRemoveRelation = useCallback(\n () => onRemoveRelation(path([hoverRowIndex, 'connection', 'relation', 'relationUri'], tableRowsData)),\n [hoverRowIndex, onRemoveRelation, tableRowsData]\n );\n\n const hoveredRowRightContent =\n canRemove || canUpdate ? (\n <EditButtons\n handleEditRelation={handleEditRelation}\n handleRemoveRelation={handleRemoveRelation}\n canRemove={canRemove}\n canUpdate={canUpdate}\n />\n ) : undefined;\n return (\n <div className={styles.tableContainer}>\n <BasicTable\n autosizing\n maxHeight={MAX_HEIGHT}\n columnsData={tableColumnsData}\n rowsData={tableRowsData}\n sorting={sorting}\n onSort={onSort}\n filters={filters}\n onFilter={onFilter}\n hoverStateEnabled={true}\n defaultColumnWidth={250}\n defaultColumnMinWidth={200}\n headRowHeight={56}\n renderRowCell={renderRowCell}\n onRowHover={handleOnRowHover}\n hoverRowIndex={hoverRowIndex}\n hoveredRowRightContent={hoveredRowRightContent}\n classes={{\n hoveredRowRightContentWrapper: styles['row-cell__buttons-wrapper'],\n hoveredRowRightContentContainer: styles['row-cell__buttons-container']\n }}\n ref={basicTableRef}\n resizeDebounceDelay={150}\n />\n </div>\n );\n};\n\nRelationsTable.propTypes = {\n mode: PropTypes.string,\n columnsData: ColumnsDataType,\n connections: PropTypes.arrayOf(ConnectionType),\n metadata: MetadataType,\n filters: PropTypes.objectOf(ColumnFilterType),\n onFilter: PropTypes.func,\n sorting: SortingType,\n onSort: PropTypes.func,\n onEditRelation: PropTypes.func,\n onRemoveRelation: PropTypes.func,\n basicTableRef: PropTypes.shape({current: PropTypes.object}),\n allowOnlyCreateNew: PropTypes.bool\n};\n\nexport default RelationsTable;\n","import {profile} from '@reltio/mdm-module';\nimport {checkMetadataForDelete, checkMetadataForUpdate, checkNew, checkRemoved, getRelationType} from '@reltio/mdm-sdk';\n\nconst checkRelationPermission = ({\n metadata,\n mode,\n connection,\n onRemoveRelation,\n onEditRelation,\n allowOnlyCreateNew\n}) => {\n const isNew = checkNew(connection);\n const isEditableMode = profile.mode.selectors.getIsEditableMode(mode);\n if (isEditableMode && connection && (!allowOnlyCreateNew || isNew)) {\n const {\n relation: {relationType}\n } = connection;\n const isRemoved = checkRemoved(connection);\n const relationTypeMetadata = getRelationType(metadata, relationType);\n const canRemove = onRemoveRelation && !isRemoved && checkMetadataForDelete(mode, relationTypeMetadata);\n const canUpdate = onEditRelation && !isRemoved && checkMetadataForUpdate(mode, relationTypeMetadata);\n return {canRemove, canUpdate};\n } else {\n return {canRemove: false, canUpdate: false};\n }\n};\n\nexport {checkRelationPermission};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles(() => ({\n popupContent: {\n padding: '19px 23px'\n },\n checkboxControlLabel: {\n fontSize: '0.85rem'\n },\n checkboxControlCheckbox: {\n marginRight: '5px'\n }\n}));\n","import React, {useRef, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport Popover from '@mui/material/Popover';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Checkbox from '@mui/material/Checkbox';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n showInactive: boolean;\n onShowInactiveChange: (value: boolean) => void;\n};\n\nconst MoreButton = ({className, showInactive, onShowInactiveChange}: Props) => {\n const styles = useStyles();\n const buttonRef = useRef();\n const [isOpen, setIsOpen] = useState(false);\n\n const togglePopup = () => setIsOpen((open) => !open);\n\n return (\n <>\n <SmallIconButtonWithTooltip\n className={className}\n ref={buttonRef}\n tooltipTitle={i18n.text('More')}\n icon={MoreVertIcon}\n onClick={togglePopup}\n size=\"L\"\n />\n <Popover\n open={isOpen}\n classes={{paper: styles.popupContent}}\n anchorEl={buttonRef.current}\n onClose={togglePopup}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <FormControlLabel\n classes={{\n label: styles.checkboxControlLabel\n }}\n control={\n <Checkbox\n className={styles.checkboxControlCheckbox}\n checked={showInactive || false}\n onChange={(e) => onShowInactiveChange(e.target.checked)}\n />\n }\n label={i18n.text('Show inactive Relationships')}\n />\n </Popover>\n </>\n );\n};\n\nexport default MoreButton;\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n header: {\n padding: '0 4px 0 16px'\n },\n totalCaption: {\n lineHeight: '19px',\n fontSize: '14px',\n letterSpacing: '0.24px',\n color: 'rgba(0,0,0,0.6)',\n flexShrink: 0,\n marginRight: '5px',\n justifyContent: 'flex-start',\n paddingTop: '16px',\n paddingBottom: '13px'\n },\n moreButton: {\n marginLeft: '-6px'\n },\n rightMenuItems: {\n display: 'flex',\n flex: '1 0 auto',\n justifyContent: 'flex-end',\n alignItems: 'center'\n }\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'ui-i18n';\nimport Typography from '@mui/material/Typography';\nimport {\n FacetViewHeader,\n ColumnsDataType,\n ColumnsSettings,\n FilterButton,\n HideOnShrink,\n VerticalDivider,\n ExpandableSearchInput\n} from '@reltio/components';\nimport MoreButton from './MoreButton/MoreButton';\nimport {useStyles} from './styles';\n\nconst RelationsTableHeader = ({\n title,\n total,\n searchQuery,\n onChangeSearchQuery,\n filtersEnabled,\n onToggleFilters,\n columnsData,\n selectedColumns,\n onChangeColumns,\n showInactive,\n onChangeShowInactive\n}) => {\n const styles = useStyles();\n return (\n <FacetViewHeader title={title} className={styles.header}>\n <HideOnShrink widthToHide={500}>\n <VerticalDivider height={24} margin={16} />\n <Typography className={styles.totalCaption} variant=\"caption\">\n {total > 1\n ? i18n.text('${count} entities', {count: total})\n : i18n.text('${count} entity', {count: total})}\n </Typography>\n </HideOnShrink>\n <div className={styles.rightMenuItems}>\n <ExpandableSearchInput query={searchQuery} onChange={onChangeSearchQuery} />\n <FilterButton enabled={filtersEnabled} onClick={onToggleFilters} />\n <VerticalDivider height={24} margin={4} />\n <ColumnsSettings\n columnsData={columnsData}\n selectedColumns={selectedColumns}\n onChangeColumns={onChangeColumns}\n />\n <MoreButton\n className={styles.moreButton}\n showInactive={showInactive}\n onShowInactiveChange={onChangeShowInactive}\n />\n </div>\n </FacetViewHeader>\n );\n};\n\nRelationsTableHeader.propTypes = {\n title: PropTypes.string,\n total: PropTypes.number,\n columnsData: ColumnsDataType,\n selectedColumns: PropTypes.arrayOf(PropTypes.string),\n onChangeColumns: PropTypes.func,\n searchQuery: PropTypes.string,\n onChangeSearchQuery: PropTypes.func,\n filtersEnabled: PropTypes.bool,\n onToggleFilters: PropTypes.func,\n showInactive: PropTypes.bool,\n onChangeShowInactive: PropTypes.func\n};\n\nexport default RelationsTableHeader;\n","import {basicTableViewState, createStandardAction} from '@reltio/components';\n\nconst CHANGE_SEARCH_QUERY = 'CHANGE_SEARCH_QUERY';\nconst CHANGE_SHOW_INACTIVE = 'CHANGE_SHOW_INACTIVE';\n\nconst actions = {\n ...basicTableViewState.actions,\n changeSearchQuery: createStandardAction(CHANGE_SEARCH_QUERY),\n changeShowInactive: createStandardAction(CHANGE_SHOW_INACTIVE)\n};\n\nconst reducer = (state, action) => {\n switch (action.type) {\n case CHANGE_SEARCH_QUERY:\n return {...state, searchQuery: action.payload, page: 0};\n case CHANGE_SHOW_INACTIVE:\n return {...state, showInactive: action.payload};\n default:\n return basicTableViewState.reducer(state, action);\n }\n};\n\nexport {reducer as default, actions};\n","import {ActivenessAttrTypes, attributeUriToSearchUri, DataTypes, getAttrDataTypeDefinition} from '@reltio/mdm-sdk';\nimport {concat, map, pipe, prop, subtract, uniqBy} from 'ramda';\nimport {getRelationsAttributesFromMetadata} from '../../core/relations';\nimport i18n from 'ui-i18n';\n\nconst ROWS_PER_PAGE_OPTIONS = [10, 25, 50, 100];\nconst getRowsPerPageOptions = (defaultRowsPerPage) =>\n ROWS_PER_PAGE_OPTIONS.filter((option) => option !== defaultRowsPerPage)\n .concat(defaultRowsPerPage)\n .sort(subtract);\n\nconst DEFAULT_COLUMNS_DATA = [\n {\n id: 'entity.label',\n get label() {\n return i18n.text('Entity label');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_STRING\n },\n hideable: false\n },\n {\n id: 'relation.label',\n get label() {\n return i18n.text('Directional label');\n },\n dataTypeDefinition: {\n type: DataTypes.TYPE_STRING\n }\n },\n {\n id: 'relation.activeness.startDate',\n get label() {\n return i18n.text('Start date');\n },\n dataTypeDefinition: ActivenessAttrTypes.startDate\n },\n {\n id: 'relation.activeness.endDate',\n get label() {\n return i18n.text('End date');\n },\n dataTypeDefinition: ActivenessAttrTypes.endDate\n }\n];\n\nconst getColumnIdFromAttrUri = pipe(attributeUriToSearchUri, concat('relation.'));\n\nconst getColumnsDataFromRelationAttributes = pipe(\n map((attr) => ({\n id: getColumnIdFromAttrUri(attr.uri),\n label: attr.label,\n description: attr.description,\n dataTypeDefinition: getAttrDataTypeDefinition(attr)\n })),\n uniqBy(prop('id'))\n);\n\nconst getColumnsData = pipe(\n getRelationsAttributesFromMetadata,\n getColumnsDataFromRelationAttributes,\n concat(DEFAULT_COLUMNS_DATA)\n);\n\nexport {getRowsPerPageOptions, DEFAULT_COLUMNS_DATA, getColumnsData};\n","import {buildColumnsFilter} from '@reltio/components';\nimport {FilterBuilder, filterValueToQueryStringWithQuotes, Maybe} from '@reltio/mdm-sdk';\n\nexport const buildRelationsFilter = (searchQuery, filters, columnsData) => {\n const queryClause = Maybe.fromFalsy(searchQuery)\n .map(filterValueToQueryStringWithQuotes)\n .map(\n (queryString) =>\n `containsWordStartingWith(entity.label,${queryString})` +\n ' or ' +\n `containsWordStartingWith(relation.label,${queryString})`\n )\n .orSome('');\n\n const filtersClause = buildColumnsFilter(columnsData, filters);\n\n return new FilterBuilder().addClause(queryClause).addClause(filtersClause).build();\n};\n","import {makeStyles} from '@mui/styles';\n\nexport const useStyles = makeStyles({\n addArea: {\n display: 'flex',\n alignItems: 'center',\n height: '48px',\n borderBottom: '1px solid rgba(0, 0, 0, 0.12)'\n },\n noData: {\n fontSize: '13px',\n paddingLeft: '20px',\n marginBottom: '20px',\n marginTop: '10px',\n color: 'rgba(0,0,0,0.54)'\n }\n});\n","import React, {useCallback, useContext, useEffect, useMemo, useReducer, useRef} from 'react';\nimport AddRelationButton from './AddRelationButton/AddRelationButton';\nimport RelationsTable from './RelationsTable/RelationsTable';\nimport RelationsTableHeader from './RelationsTableHeader/RelationsTableHeader';\nimport reducer, {actions} from './stateReducer';\nimport {\n BasicTablePagination,\n BasicView,\n LinearLoadIndicator,\n ProfilePerspectiveViewContext,\n useConfigPermissions,\n useRelationsLoader,\n RelationEditor,\n FeaturesContext,\n useExpandInvalidRelations\n} from '@reltio/components';\nimport {DEFAULT_COLUMNS_DATA, getColumnsData, getRowsPerPageOptions} from './helpers/tableHelpers';\nimport {pipe, pluck, propEq} from 'ramda';\nimport {buildRelationsFilter} from './helpers/relationsHelpers';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {\n isTempUri,\n createNewConnectionWithDefaultRelationType,\n RelationsViewConfig,\n Entity,\n Metadata,\n Connection,\n Mode,\n ActivityFilter,\n getRelationUriFromConnection,\n getEntityUriFromConnection\n} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\nimport Typography from '@mui/material/Typography';\nimport i18n from 'ui-i18n';\nimport {Dispatch} from 'redux';\nimport {useSelector} from 'react-redux';\n\nconst DEFAULT_ROWS_PER_PAGE = 15;\nconst DEFAULT_SORT_ORDER = 'asc';\nconst DEFAULT_COLUMNS_TO_SHOW = pluck('id', DEFAULT_COLUMNS_DATA);\nconst [DEFAULT_SORT_FIELD] = DEFAULT_COLUMNS_TO_SHOW;\nconst DEFAULT_SHOW_INACTIVE = false;\n\ntype Props = {\n config: RelationsViewConfig;\n entity: Entity;\n metadata: Metadata;\n connections: Connection[];\n total: number;\n mode: Mode;\n className?: string;\n relationToAdd: Connection;\n relationsToEdit: Connection[];\n checkIfCanAddRelations: boolean;\n dispatch: Dispatch;\n readOnlyMode?: boolean;\n};\nconst RelationsTableView = ({\n className,\n config,\n entity,\n metadata,\n connections = [],\n total = 0,\n mode: modeProp,\n relationToAdd,\n relationsToEdit = [],\n checkIfCanAddRelations,\n dispatch: reduxDispatch,\n readOnlyMode\n}: Props) => {\n const initialState = {\n searchQuery: '',\n filters: null,\n visibleColumns: DEFAULT_COLUMNS_TO_SHOW,\n sorting: {\n order: config.sortOrder || DEFAULT_SORT_ORDER,\n field: config.sortColumn || DEFAULT_SORT_FIELD\n },\n page: 0,\n rowsPerPage: config.max || DEFAULT_ROWS_PER_PAGE,\n showInactive: DEFAULT_SHOW_INACTIVE\n };\n\n const styles = useStyles();\n const isProfilePerspectiveView = useContext(ProfilePerspectiveViewContext);\n const mode = isProfilePerspectiveView ? modeProp : Mode.Viewing;\n\n const [state, dispatch] = useReducer(reducer, initialState);\n const changeSearchQuery = pipe(actions.changeSearchQuery, dispatch);\n const changeShowInactive = pipe(actions.changeShowInactive, dispatch);\n const clearSearchQuery = () => {\n changeSearchQuery('');\n };\n const featuresContext = useContext(FeaturesContext);\n const showDescription = useSelector(mdmModule.selectors.getShowAttributeDescription);\n const features = useMemo(() => ({...featuresContext, showDescription}), [featuresContext, showDescription]);\n useEffect(clearSearchQuery, [entity?.uri]); //eslint-disable-line react-hooks/exhaustive-deps\n\n const {visibleColumns, searchQuery, filters, sorting, page, rowsPerPage, showInactive} = state;\n\n const allColumnsData = useMemo(() => getColumnsData(config, metadata), [config, metadata]);\n\n const visibleColumnsData = useMemo(\n () => visibleColumns.map((id) => allColumnsData.find(propEq('id', id))),\n [visibleColumns, allColumnsData]\n );\n\n const filter = useMemo(\n () => buildRelationsFilter(searchQuery, filters, visibleColumnsData),\n [filters, searchQuery] // eslint-disable-line\n );\n\n const {isLoading} = useRelationsLoader({\n sorting,\n filter,\n page,\n rowsPerPage,\n config,\n entity,\n relationActivityFilter: showInactive ? ActivityFilter.ALL : ActivityFilter.ACTIVE_ONLY,\n mode: modeProp\n });\n\n const rowsPerPageOptions = useMemo(() => getRowsPerPageOptions(initialState.rowsPerPage), []); // eslint-disable-line\n const {handleRowsPerPageChange, handlePageChange} = useMemo(\n () => ({\n handleRowsPerPageChange: pipe(actions.changeRowsPerPage, dispatch),\n handlePageChange: pipe(actions.changePage, dispatch)\n }),\n []\n );\n\n const onAddRelation = useCallback(() => {\n const newConnection = createNewConnectionWithDefaultRelationType({\n config,\n mode,\n metadata,\n parentEntityUri: undefined\n });\n pipe(profile.relations.actions.openRelationEditor(config.id), reduxDispatch)(newConnection);\n }, [config, mode, metadata, reduxDispatch]);\n\n const onRemoveRelation = useCallback(\n (relationUri) => {\n reduxDispatch(profile.relations.actions.closeRelationEditor(config.id, relationUri));\n reduxDispatch(profile.relations.actions.removeRelation(config.id, relationUri));\n const connectionToRemove = connections.find(\n (connection) => getRelationUriFromConnection(connection) === relationUri\n );\n const entityUri = getEntityUriFromConnection(connectionToRemove);\n if (isTempUri(entityUri)) {\n reduxDispatch(profile.modifiedEntities.actions.entityDeleted(entityUri));\n }\n },\n [config, connections, reduxDispatch]\n );\n\n const canAddRelations = entity && checkIfCanAddRelations && !readOnlyMode;\n const openedRelations = relationToAdd ? [relationToAdd, ...relationsToEdit] : relationsToEdit;\n const {canUpdate, canDelete} = useConfigPermissions();\n const canEditRelations = canUpdate(config) && !readOnlyMode;\n const canRemoveRelations = canDelete(config) && !readOnlyMode;\n const basicTableRef = useRef(null);\n useExpandInvalidRelations(config.id);\n return (\n <FeaturesContext.Provider value={features}>\n <BasicView className={className}>\n <RelationsTableHeader\n title={config.caption}\n total={total}\n columnsData={allColumnsData}\n selectedColumns={visibleColumns}\n onChangeColumns={pipe(actions.changeColumns, dispatch)}\n searchQuery={searchQuery}\n onChangeSearchQuery={changeSearchQuery}\n filtersEnabled={!!filters}\n onToggleFilters={pipe(actions.toggleFilters, dispatch)}\n showInactive={showInactive}\n onChangeShowInactive={changeShowInactive}\n />\n {canAddRelations && (\n <div className={styles.addArea}>\n <AddRelationButton onClick={onAddRelation} />\n </div>\n )}\n {openedRelations.map((relation) => (\n <RelationEditor\n key={getRelationUriFromConnection(relation)}\n connection={relation}\n config={config}\n mode={mode}\n metadata={metadata}\n />\n ))}\n <div style={{position: 'relative'}}>\n <RelationsTable\n mode={mode}\n columnsData={visibleColumnsData}\n connections={connections}\n metadata={metadata}\n filters={filters}\n onFilter={pipe(actions.changeFilter, dispatch)}\n sorting={sorting}\n onSort={pipe(actions.toggleSort, dispatch)}\n onEditRelation={\n canEditRelations\n ? pipe(profile.relations.actions.openRelationEditor(config.id), reduxDispatch)\n : null\n }\n onRemoveRelation={canRemoveRelations ? onRemoveRelation : null}\n basicTableRef={basicTableRef}\n allowOnlyCreateNew={config.allowOnlyCreateNew}\n />\n {connections.length ? (\n <BasicTablePagination\n count={total}\n rowsPerPageOptions={rowsPerPageOptions}\n rowsPerPage={rowsPerPage}\n onChangeRowsPerPage={handleRowsPerPageChange}\n page={page}\n onChangePage={handlePageChange}\n basicTableRef={basicTableRef}\n />\n ) : (\n <Typography className={styles.noData}>{i18n.text('No data found')}</Typography>\n )}\n {isLoading && <LinearLoadIndicator />}\n </div>\n </BasicView>\n </FeaturesContext.Provider>\n );\n};\n\nexport default RelationsTableView;\n","import {memoizeWith} from 'ramda';\nimport {connect} from 'react-redux';\nimport mdm from '@reltio/mdm-module';\nimport {parseRelationsConfig} from '@reltio/mdm-sdk';\nimport RelationsTableView from './RelationsTableView';\n\nconst mapStateToProps = (state, ownProps) => {\n const {config} = ownProps;\n\n return {\n connections: mdm.selectors.getConnectionsWithDraftsByViewId(state, config.id),\n total: mdm.selectors.getTotalByViewId(state, config.id),\n entity: mdm.selectors.getEntity(state),\n metadata: mdm.selectors.getMetadata(state),\n mode: mdm.selectors.getMode(state),\n relationToAdd: mdm.selectors.getRelationToAddByViewId(state, config.id),\n relationsToEdit: mdm.selectors.getRelationsToEditByViewId(state, config.id),\n checkIfCanAddRelations: mdm.selectors.getCheckIfCanAddRelations(state, config.content)\n };\n};\n\nconst memoizedParseRelationsConfig = memoizeWith((metadata, config) => config.id, parseRelationsConfig);\n\nconst mergeProps = (stateProps, dispatchProps, ownProps) => ({\n ...stateProps,\n ...dispatchProps,\n ...ownProps,\n config: memoizedParseRelationsConfig(stateProps.metadata, ownProps.config)\n});\n\nexport default connect(mapStateToProps, undefined, mergeProps)(RelationsTableView);\n","import {AdapterMoment} from '@mui/x-date-pickers/AdapterMoment';\nimport React from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport RelationsTableView from './RelationsTableView';\nimport StylesProvider from '@mui/styles/StylesProvider';\nimport createGenerateClassName from '@mui/styles/createGenerateClassName';\n\nimport {LocalizationProvider} from '@mui/x-date-pickers/LocalizationProvider';\nimport {RelationsViewConfig} from '@reltio/mdm-sdk';\nimport {identity} from 'ramda';\nimport {ErrorPopup, ViewIdContext} from '@reltio/components';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'relTable',\n disableGlobal: true,\n seed: 'relT'\n});\n\ntype Props = {\n config: RelationsViewConfig;\n onResize?: (width: number, height: number) => void;\n className?: string;\n readOnlyMode?: boolean;\n};\n\nconst StandaloneRelationsTableView = ({config, onResize = identity, className, readOnlyMode}: Props) => (\n <ViewIdContext.Provider value={config.id}>\n <StylesProvider generateClassName={generateClassName}>\n <LocalizationProvider dateAdapter={AdapterMoment}>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize(Math.floor(width), Math.floor(height))}\n />\n {config && <RelationsTableView config={config} className={className} readOnlyMode={readOnlyMode} />}\n <ErrorPopup />\n </LocalizationProvider>\n </StylesProvider>\n </ViewIdContext.Provider>\n);\n\nexport default StandaloneRelationsTableView;\n"],"names":["_interopRequireDefault","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","SingleAttributeContext","React","displayName","useStyles","makeStyles","triggerButton","minWidth","color","width","popupContent","paddingTop","paddingBottom","paddingLeft","paddingRight","maxWidth","checkboxControlRoot","marginTop","marginLeft","checkboxControlLabel","fontSize","checkboxControlCheckbox","marginRight","className","styles","buttonRef","useRef","isOpen","setIsOpen","useState","showInactive","toggleShowInactive","useContext","togglePopup","open","Button","ref","classes","root","classnames","onClick","Popover","paper","anchorEl","current","onClose","anchorOrigin","vertical","horizontal","transformOrigin","FormControlLabel","label","control","Checkbox","checked","onChange","e","target","i18n","padding","rightMenuItems","display","flex","justifyContent","alignItems","totalCaption","lineHeight","letterSpacing","flexShrink","ovIcon","SingleAttributeHeader","caption","totalVisibleValues","showInactiveValuesMenu","isEditableMode","searchQuery","setSearchQuery","setPage","totalNonVisibleValues","nonVisibleValues","attributeType","showRequiredMark","required","FacetViewHeader","title","RequiredMark","DescriptionIcon","description","HideOnShrink","widthToHide","VerticalDivider","height","margin","Typography","variant","OvIcon","nonOvTotal","nonOvValues","ExpandableSearchInput","query","getAttributeNameFromAttributeUri","getLastUriPart","search","value","Object","values","some","utils","String","theme","moreButton","backgroundColor","marginBottom","buttonLabel","fontWeight","icon","divider","borderColor","ovFalse","inactive","noData","palette","text","secondary","emptyArray","withContext","ScrollToElementContext","contextValue","parentUri","element","type","highlightedError","isHighlightedErrorType","isAttributeTypeError","uri","noDataText","attributeTypeUri","isRequired","cardinality","name","dispatch","useDispatch","viewId","ViewIdContext","entity","useSelector","mdmModule","modifiedEntity","state","errors","errorMessage","getAttributePagerActiveTypeErrorMessage","mode","attributeSource","getAttributeSource","entityValuesUris","pipe","pathOr","map","prop","modifiedEntityValues","modifiedEntityValuesUris","showEmptyEditors","isTempUri","emptyEditorValue","useMemo","createNewAttribute","omit","errorClassName","useScrollToAttributeError","isSimple","isModifiedEntityValuesEmpty","isEmptyValue","showEmpty","newValues","filter","onAddAttributes","useCallback","params","profile","param","onChangeAttribute","onDeleteAttribute","onDeactivateError","onAdd","createAttribute","isComplexAttribute","attributes","canCreate","checkCanCreateAttribute","commonProps","crosswalks","showNonOv","isEmptyAttributeList","length","isEmpty","CardinalityMessage","ErrorMessage","message","Add","idx","key","attributeValue","lazy","ownError","getAttributeOwnError","isEmptyEditor","Divider","originalValue","modifiedEntityValue","find","propEq","deleted","includes","edited","value1","value2","cleanser","is","over","lensPath","cleanAttributesWith","valueTransformer","unless","isOv","deleteEmptyComplex","identity","equals","areValuesEqual","cond","always","simpleAttribute","SingleAttributeReadableContent","style","flexDirection","content","position","overflow","flexGrow","pagination","DEFAULT_ROWS_PER_PAGE","SingleAttributeView","config","max","page","isLoading","hasPaging","entityUri","mdm","isViewMode","pivotingAttributes","hasValues","PivotingAttributeContext","BasicView","Box","LinearLoadIndicator","props","renderContent","BasicTablePagination","count","rowsPerPage","rowsPerPageOptions","onChangePage","useSingleAttributeLoader","attributeUri","metadata","setValues","paging","setPaging","setIsLoading","safePromise","useSafePromise","attributeValuesRef","apiPath","tenant","isHistoryModeEnabled","diff","attributeTypeName","attributeTypeSource","findAttributeValues","findAttributeTypeByUri","globalFilter","loadAttributes","isReadableAttribute","isFirstLevelAttributeUri","rest","getRequest","defaultMaxValues","offset","isDataTenantEntity","async","Infinity","findAttributeValuesByTypeUri","ovValues","slice","totalOvValues","totalValues","getPagedLocalEntity","getPagedEntity","options","undefined","then","response","path","loadedValue","catch","error","console","ui","getRequestErrorMessage","finally","useEffect","useDidUpdateEffect","partitionByOv","partition","totalProp","ifElse","has","RelationsViewStateContext","button","sortControls","sortSelectorRoot","sortSelectorMenuItem","sortOrderButton","FilterButton","sortOrder","toggleSortOrder","sortOption","changeSortOption","sortOptions","hasSortOptions","isAsc","DropDownEditor","entries","TextFieldProps","menuItem","fullWidth","disableUnderline","MenuProps","SmallIconButton","tooltipTitle","ArrowUpwardIcon","ArrowDownwardIcon","size","header","ImportDTContext","MAX","Math","pow","cursor","top","left","userSelect","zIndex","badge","badgePosition","right","MultipleImportIcon","Badge","anchorOriginTopRightRectangular","badgeContent","CloudDownload","ImportFromDT","tenants","selectedTenant","onConfirmImport","onCancelConfirmation","onImportClick","dataTenants","reloadRelations","setTenants","setSelectedTenant","dtssPath","customerTenant","maxDtssImport","checkHasNonImportedConnections","importFromDT","Promise","all","hasNonImportedRelations","dataTenant","id","hasNonImportedConnections","modifiedTenants","importDTConnections","useImportFromDTLoader","oneTenant","labelOnButton","indexOf","CloudDownloadIcon","DropDownMenuButton","menuId","buttonComponent","SmallIconButtonWithTooltip","buttonProps","menuItems","ConfirmationDialog","discardCaption","saveCaption","onDiscard","onSave","total","changeSearchQuery","tooltip","tooltipContent","secondaryLabel","progress","children","tooltipProps","setSecondaryLabel","onOpen","isNil","request","getDataTenantEntitySecondaryLabel","getEntitySecondaryLabel","CircularProgress","colorPrimary","Tooltip","disableFocusListener","useRelationInfo","connection","relation","entityType","getEntityType","entityLabel","getLabel","preparedUri","getEntityUriForLink","relationLabel","getRelationTypeLabelFromMetadata","relationType","container","SuggestedButtons","acceptRelation","ignoreRelation","alignSelf","row","minHeight","rowInactive","background","inactiveBackground","entityAvatar","entityLabelContainer","textDecoration","primary","main","editButtonsContent","editButtons","removed","editedLabel","fontStyle","EditableRelationItem","memo","showControls","onRemoveRelation","onEditRelation","onAcceptRelation","onIgnoreRelation","renderRelationArrowButton","checkRemoved","checkEdited","ignored","checkIgnored","isActive","isActiveObject","canRemove","canUpdate","Mode","isRemoved","relationTypeMetadata","getRelationType","checkMetadataForDelete","checkMetadataForUpdate","checkRelationPermission","handleRemoveRelation","relationUri","handleEditRelation","handleAcceptRelation","handleIgnoreRelation","suggested","EditIcon","DeleteIcon","suggustedButtonsContent","disabled","captionText","EntityTypeIcon","EntityUriLink","getUri","when","isObject","getFirstRelationTypeObject","inRelations","outRelations","prepareRelation","direction","relations","wrapInArrayIfNeeded","Directions","concat","arrowIcon","RelationArrowButton","showSecondLevel","parentEntityUri","contentSecondLevel","checkNew","ArrowDropDown","ArrowRight","secondLevelContent","SecondLevelWrapper","connections","toggleShowSecondLevel","loadRelations","loading","relationActivityFilter","setShowSecondLevel","setLoading","activityFilter","requestConfig","returnObjects","returnDates","activeness","ActivityFilter","getRelationsForEntity","show","useSecondLevelConnections","entitiesMap","getEntitiesMapForConnections","EntitiesMapContext","RelationsContent","relationToAdd","relationsToEdit","checkIfCanAddRelations","onAddRelation","newConnection","createNewConnectionWithDefaultRelationType","connectionToRemove","getRelationUriFromConnection","getEntityUriFromConnection","defaultRelationTypeObject","connectionWithDefaultRelationType","evolve","object","relationDirection","newConnections","currentConnections","canAddRelations","isEmptyRelationList","getRelationEditableContent","openedRelation","allowOnlyCreateNew","itemKey","RelationEditor","shouldShowAddRelationButton","shouldShowRelationEditorToAdd","attributesList","RelationAttributes","currentEntityUri","firstLevelRelationAttrTypes","getRelationAttributesList","attributeListEntity","getRelationAttributesFromConnection","getActivenessAttributes","showAttributesList","getAttributesListForReadMode","objectIds","getAttributeValuesUris","getCommentsCount","CollaborationContext","additionalRelatedObjectUris","createRelatedObjectUris","CollaborationObjectTypes","RelatedObjectUrisContext","attrTypes","ShowDetailsButton","onToggle","tooltipPlacement","InfoIconSelected","InfoIcon","wordBreak","showDetails","suggestedWrapper","commentsContainer","additionalButtonsWrapper","labelWrapper","RelationItem","isSuggested","setShowDetails","relatedObjectUris","COMMENTS_CONTAINER_VISIBILITY_AREA","CommentsContainer","getConnectionRelationUriForLink","objectType","allowOnlyOneComment","calcAverageRating","ratings","pluck","mean","defaultTo","toFixed","getCountOfLikes","rating","getCountOfDislikes","calcRatingsScale","percentOfLikes","percentOfDislikes","formattedPercentOfLikes","parseFloat","Number","wrapper","gap","info","axis","scaleHistory","greenBadge","redBadge","scale","scaleBar","ratingsList","borderTop","borderBottom","maxHeight","boxSizing","avatar","userInfo","user","textOverflow","ratingDateWrapper","ratingDate","sourcesWrapper","RatingsPopup","sortedRatings","sort","a","b","timestampA","Date","timestamp","getTime","sortRatingsByTime","agreeCount","disagreeCount","PopupWithArrow","placement","transition","LinearProgress","bar","empty","ThumbUp","ThumbDown","i","comment","Avatar","Person","crosswalk","ColoredSourceIcon","averageRating","counts","Ratings","ratingsRef","setOpen","textTransform","RatingsButtons","onAgree","onDisagree","username","ratingOfCurrentUser","endIcon","buttonContent","entityTypeIcon","showDetailsButton","relationAttributes","RelationComplexItem","showRating","rateRelation","RelationsList","mainEnityUri","isComplex","relationTypeObject","ignoreSuggestedRelation","relatedEntityUri","startDate","endDate","isInDirection","startEntityUri","endEntityUri","createRelation","useSuggestedRelations","getRelationshipsObjectIdsForCollaboration","list","linearIndicator","selectors","getEntity","getMode","RelationsView","getConnectionsWithDraftsByViewId","getTotalByViewId","sorting","order","field","queryClause","Maybe","filterValueToQueryStringWithQuotes","queryString","orSome","FilterBuilder","addClause","build","buildRelationsFilter","reload","useRelationsLoader","importDTContextValue","pick","useExpandInvalidRelations","EntityContext","Provider","TableAttributeContext","CHANGE_SEARCH_QUERY","actions","basicTableViewState","createStandardAction","reducer","action","payload","removedStyle","headCell","rowCell","blobWrapper","overflowY","overflowX","whiteSpace","defaultWrapper","updateAttribute","historyPalettes","HistoryOperations","insertAttribute","deleteAttribute","pointerEvents","withFilterAtBottom","headCellData","DefaultHeadCellRenderer","historyClassName","onScroll","stopPropagation","columnData","dataTypeDefinition","simpleValue","appearance","HistoryDiffContext","getHistoryAppearanceByUri","getHistoryAttributeClassName","DataTypes","dataTypeValue","DataTypeValue","ExpandedValueTooltip","getColumnsDataFromAttributeNode","attrNode","parents","reject","attributeUriToSearchUri","getAttrDataTypeDefinition","childNode","getAttrPathFromColumnId","split","getNestedPathByColumnId","columnId","isAttributeSearchUri","attrPath","getBasicTableColumnsData","sortable","resizable","nestedPath","headCellRenderer","HeadCellRenderer","rowCellValueRenderer","DefaultCellValueRenderer","filters","onToggleFilters","allColumnsData","visibleColumns","onChangeColumns","enabled","ColumnsSettings","columnsData","selectedColumns","withTableContext","deletedUris","rowValue","Boolean","cell","CellValueRenderer","isSorted","otherProps","index","tableContainer","fontFamily","transform","onEdit","onRemove","onSort","onFilter","tableRowsData","reduce","acc","assoc","getOvAttributeValuesByPathWithUri","getAttributeValues","getRowValueByColumnId","getBasicTableRowsData","tableColumnsData","checkIsEditableMode","renderRowCell","hoverRowIndex","setHoverRowIndex","canDelete","useConfigPermissions","hideRightContent","checkCanDeleteAttribute","isReltioCrosswalk","canEdit","checkCanEditAttribute","checkCanEdit","handleEditAttribute","handleRemoveAttribute","attribute","hoveredRowRightContent","context","BasicTable","autosizing","rowsData","hoverStateEnabled","defaultColumnWidth","defaultColumnMinWidth","headRowHeight","resizeDebounceDelay","onRowHover","hoveredRowRightContentWrapper","hoveredRowRightContentContainer","actionButtons","AttributeEditing","onCancel","onApply","hasChanges","shouldConnectAllModifiedEntities","isReference","getReferencedEntityUriFromAttrValue","allModifiedEntities","expanded","isMissedTypeError","ErrorType","findAttributeValueByError","curry","either","areOneHierarchyUris","addButton","editor","TableAttributeEditableContent","editingValues","modifiedValues","onStartEditing","onReset","checkHasChanges","highlightedAttributeError","hasConfigToCreate","shouldOpenInvalidEditors","listenToActions","useActionsHook","missedAttributeError","both","forEach","stopListeningActions","useExpandAttributes","isError","checkIsAttributeTypeError","isPartOfErrorAttributeTypeUri","isPartOfErrorParentUri","newAttributeUri","setNewAttributeUri","originalValues","setOriginalValues","actualValues","not","newAttribute","createDefaultValues","attributeTypes","getEditableAttributeTypeSubAttributes","prev","editingValueOriginal","attributeItem","without","validate","tempEntitiesMap","validateComplexAttribute","evaluateErrorPath","getSingleAttributeEntity","original","useEditableAttribute","preparedValues","visibleColumnsData","TableAttributeView","showTable","nodeCounter","generateId","processResponse","fakeRoot","nodeId","parentPaths","nextRoot","j","nextParent","entities","isRoot","node","rootIndex","push","hidePageSelectorWhenSmall","treeContainer","tree","buttonsContainer","ConfigContext","onImageLoadFail","src","DEFAULT_ICON","Node","absoluteImagePath","popperAnchor","setPopperAnchor","isSelected","entityTypeGraphIcon","getPropWithInheritance","getAbsoluteImageUrl","alt","onError","HierarchyNodeTitle","getNodeKey","lineBlock","lineChildren","bottom","treeTheme","verticalLine","horizontalLineRight","textAlign","rootNode","longRootNode","nodeContent","nodeRootLongContent","rowContents","borderLeft","verticalAlign","buttonWrapper","collapsedButton","expandedButton","borderRight","rowTitle","nodeContentRenderer","scaffoldBlockPxWidth","toggleChildrenVisibility","treeIndex","nodeTitle","showToggleChildrenButton","treeNodeRenderer","lowerSiblingCounts","scaffoldBlockCount","scaffold","lowerSiblingCount","shift","scaffoldWidth","nodeStyle","rowHeight","slideRegionSize","_extends","assign","arguments","source","prototype","hasOwnProperty","call","apply","this","viewBox","version","xmlns","stroke","strokeWidth","fill","fillRule","fillOpacity","onGraphOpen","showNavigateToGraph","FeaturesContext","ShowGraphIcon","getCacheKey","ROOTS_PER_PAGE_OPTIONS","bodyWrapper","CustomView","basicViewRef","dialogRef","showModal","setShowModal","defaultTooltip","html","visible","updatedTooltip","customStyles","popup","useAPI","innerHTML","Array","from","childNodes","child","appendChild","Dialog","Component","WithErrorBoundary","ErrorBoundary","EmptyState","LogoRenderer","EMPTY_STATE_ICONS","secondaryText","EMPTY_STATE_VARIANTS","stubView","fullHeight","component","boxShadow","borderRadius","filterWrongLat","gt","lt","fullscreenBtn","ImageLineCaption","totalImages","photoWord","ImageAttributeViewEditableContent","requestNextPageOfAttributeValues","attributeValues","imageSize","IMAGE_SIZE","imageMargin","imageWidth","imageHeight","ActionButtons","match","onStartRequest","onFinishRequest","canMerge","canMark","getActionPermissionForMatch","matchRules","actionButtonProps","ActionButtonMode","onMergeFinish","MergeButton","NotMatchButton","MatchCard","ProfileMatchCard","createObjectIdForPM","matchEntityUri","matchesContainer","footer","DEFAULT_OPTIONS","showTransitiveMatches","showInactiveEntities","DEFAULT_SORTING","Order","ComponentStates","wrapView","withErrorBoundary","withDragHandle","WrappedStubView","WrappedProfileAttributesView","AttributesView","excludeUris","includeUris","attributesCount","pinnedAttributes","WrappedProfileSingleAttributeView","singleAttribute","setShowInactive","useSingleAttribute","WrappedProfileTableAttributeView","tableAttribute","getAttributeTypesTree","chain","flatAttributeTreeNode","uniqBy","getColumnsData","initialState","useReducer","requestFilters","mdmFilters","columnFilter","columnFilterToMdmFilter","buildMDMFilters","changePage","toggleSort","changeFilter","toggleFilters","changeColumns","useActions","hidden","useTableAttribute","WrappedProfileRelationsView","parsedConfig","parseRelationsConfig","relationsState","append","setSortOrder","setSortOption","option","useRelationsState","WrappedCustomView","WrappedHierarchyPathView","graph","_showNavigateToGraph","graphType","treeData","setTreeData","onChangeRowsPerPage","graphUri","setErrorMessage","setRowsPerPage","pagedData","setPagedData","forest","newTrees","updateTreesWithNewEntity","updatedTime","getPathsTree","warn","useLoadPaths","onResize","getRowHeight","clearHeightsCache","heightsCache","setHeightsCache","_","prevCache","useDynamicNodesHeights","featuresContext","features","openGraph","generateNodeProps","rowInfo","handleHeight","refreshMode","refreshRate","ReactSortableTree","isVirtualized","canDrag","labelRowsPerPage","WrappedProfilePotentialMatchesView","turnOnDisableSpinner","turnOffDisableSpinner","matches","loadMatches","useMatchesLoader","onStartLoading","onFinishLoading","onFinishMatchAction","openPotentialMatchPerspective","mdmModuleUi","perspectiveId","getPotentialMatchesObjectIdsForCollaboration","getEntityUriFromMatchObject","showSeeAll","Loading","NoData","Loaded","Link","underline","WrappedHierarchyTreeView","importedModule","HierarchyTreeView","WrappedRelationshipsTableView","RelationshipsTableView","WrappedEntityMapView","isFullscreen","onToggleFullscreen","mapKey","markers","setMarkers","resolve","useMarkers","loadingElement","defaultCenter","lat","lng","mapOptions","mapTypeControl","FullscreenExitIcon","FullscreenIcon","ReltioMap","defaultZoom","mapContainerClassName","WrappedImageAttributeView","entityValues","ImageAttributesLine","ViewsFactory","ViewTypes","ProfileViewTypes","getComponentBy","propName","HierarchyTree","HierarchyPaths","RelationsTable","Relations","Attributes","SingleAttribute","AttributeTable","Map","Custom","ImageAttribute","PotentialMatches","getComponent","Fallback","ViewComponent","isAutosize","Suspense","fallback","item","basicView","fixedSizeContainer","overflowContainer","omittingProps","ProfileLayoutItem","layoutItemConfig","views","ResizeComponent","AutosizeComponent","isCustomView","class","platform","CustomScriptPlatform","reltioClass","getViewTypeByClass","customView","DEFAULT_MIN_WIDTH","scrollWrapper","scrollableContent","scrollbarWidth","ProfileLayout","layout","frozen","onLayoutChanged","scrollWrapperRef","offsetWidth","clientWidth","boundariesElement","popupBoundariesValue","priority","scrollTop","PopupBoundariesContext","ReltioGridLayout","LayoutItem","draggableHandle","isStatic","closeIcon","snackbar","flexWrap","Notification","notification","autoCloseInterval","autoHideDuration","setAction","setShow","closeSnackbar","_e","reason","cancelAction","onConfirm","applyAction","needConfirmation","CloseIcon","Portal","document","body","Snackbar","confirmationText","confirmationDescription","Notifications","notifications","n","xmlnsXlink","xlinkHref","mask","editingButtons","searchResults","comments","menuButton","cancelButton","border","SuggestIcon","SvgIcon","CopyIcon","filterGroupByPermissions","group","isTempEntity","isWorkflowEnabled","canStartProcessInstanceSearchQuery","permission","isSuggestMode","checkMetadataPermission","PerspectiveProfileBand","profileBandConfig","showMenu","profileOperation","entityTypeUri","isOperationSaving","Operation","isDisabledButtons","openCloneConfirmationDialog","setOpenCloneConfirmationDialog","onCloneDiscard","onClone","cloneAction","cloneActionProp","relationTypes","isRelationSuitableForEntityType","isRelationWithEntityType","complement","propOr","modifiedRelationTypes","getRelationTypeUriFromAttrType","T","data","relationshipTypesToCopy","useCloneAction","OPTIONS_GROUP","CreateIcon","VisibilityIcon","BUTTONS_GROUP","window","confirm","shouldShowSelect","MetadataPermissions","hasOnlyReadPermission","accessibleOptionsGroup","accessibleButtonsGroup","handleChange","handleSave","ProfileBand","mr","ProfileBandHistory","ProfileBandNavigation","ModeSwitcherSelect","optionsGroup","buttonsGroup","MoreVertIcon","MenuItemRenderer","MultilineMenuItem","ActivePanel","RightSidePanel","active","tabs","headerProps","SidePanel","SidePanelContentHeader","itemWrapper","DBConnectorsList","dBConnectorSideViews","sideView","WorkflowButton","WorkflowTasksContext","Inbox","CollaborationButton","commentsMap","calcTotalCommentItems","CollaborationIcon","WorkflowList","tasks","task","WorkflowTaskCard","taskId","SidePanelEmptyState","showMoreLink","showMoreIcon","CollaborationList","getComments","pageToken","useCommentsEntitiesMap","objectId","commentId","CollaborationItem","KeyboardArrowDown","getSecondTitle","profileContainer","ProfilePerspectiveResizablePanes","hideHistory","defaultTab","isWorkflowSideViewEnabled","isCollaborationSideViewEnabled","isDBConnectorSideViewEnabled","isCollaborationEnabled","Collaboration","historyEvent","workflowTasksContext","collaborationContext","isHistoryEnabled","isProfilePersisted","useHistoryEnabled","historyButtonId","History","historyFilter","onApplyFilter","historicUris","historyWithTotal","canLoadMore","onLoadMore","useHistory","enabledWorkflowButton","enabledCollaborationButton","collaborationTotal","Workflow","mainTitle","secondTitle","rightContent","AddWorkflowButton","HistoryIcon","HistoryView","contributorsUris","HistoryPanelEmptyState","HistoryHeader","DBConnector","ConnectorsIcon","useProfileRightSidePanelElements","ProfileResizablePanes","buttonsProps","emptyState","typography","fontWeightRegular","loadingWrapper","errorWrapper","successWrapper","success","indicatorIcon","link","pxToRem","BackgroundUpdateStatus","CloseIconButton","ProcessLoading","ProcessSuccess","onRefresh","ProcessError","BackgroundProcessIndicator","status","checkEntityTypeInList","entityTypeList","isEntityTypeInBackgroundProcess","perspectiveView","profileWrapper","ProfilePerspectiveView","saveState","getSavedState","profileBand","workflow","isHistoryActive","keywordValue","allErrors","historyDiff","useHistoryDiff","workflowTasks","workflowConfig","commonWorkflowTasks","useCommonWorkflowTasks","defaultActionSuccessHandler","useWorkflowDefaultActionSuccessHandler","onActionSuccess","useWorkflowTasks","isEmptyState","useEntityLoadingIndication","entityUpdatedTime","onRefreshProfile","onCloseBackgroundProcessIndicator","cancelUpdateProcess","isOpenBackgroundProcessIndicator","backgroundUpdateStatus","autoUpdateInReadMode","entityTypes","entityTypesForUpdate","needBackgroundProcess","isAutoUpdated","timerId","setIsOpenBackgroundProcessIndicator","setBackgroundUpdateStatus","backgroundUpdateDelay","clearTimeout","getUpdatedTime","numberOfRetry","getEntityUpdatedTime","result","setTimeout","runBackgroundUpdate","NUMBER_OF_RETRY","useBackgroundProcessIndicator","getProfileObjectIdsForCollaboration","emptyCollaboration","collaboration","useCollaboration","showDescription","isLoaded","isLayoutLoaded","onLayoutReset","onResetUndo","handleLayoutChange","profileConfig","setLayout","setViews","canRead","validatedViews","validatedLayout","removeUnsupportedLayoutItems","configHash","hash","nestedRoute","savedStateKey","getSavedStateAndFix","debouncedSaveState","debounce","savedState","updateSavedState","useSavedStateForEntityType","tempConfig","handleResetUndo","handleLayoutReset","fixedViews","fixedLayout","fixNonUniqViewsIds","isConfigChanged","useProfileLayout","useHistorySlice","isValidateReadMode","isDTEntity","profileViews","hasProfileViews","needDispatch","useProfileValidation","sidePanelViews","hideLayout","renderEmptyState","SnackbarRenderer","resetLayout","useLayoutResetter","ProfilePerspectiveViewContext","SearchValueContext","AttributesErrorsPanel","attributesWithErrors","generateClassName","createGenerateClassName","productionPrefix","disableGlobal","seed","userPreferencesComparator","newState","sortLayoutItems","x","y","prepareState","looseEquals","qxSandboxApi","getSavedStatePromisified","promisifyCallback","showSnackbarMessage","useSnackbar","processedConfig","convertOldProfileConfig","SnackbarContext","S","SandboxAPIContext","StylesProvider","LocalizationProvider","dateAdapter","AdapterMoment","floor","ErrorPopup","showErrorFromStore","titleContainer","totalNumber","TagListHeader","switchToProfile","ArrowForwardIosRounded","Spacer","toolbar","TagProfileBand","Toolbar","tagsContainer","tagsView","listContainer","entitiesList","ROWS_PER_PAGE_OPTIONS","TagPerspectiveView","tag","globalSearchRequestOptions","safeRequestTotalPromise","safeRequestEntitiesPromise","setTotal","setEntities","requestEntities","requestTotal","getDataTenantFromEntityUri","fieldName","isDT","getEntities","requestOptions","select","getFilteredEntitiesFromDataTenant","enrichEntityWithDataTenant","getFilteredEntities","getTotalFromDataTenant","getTotals","json","useTagsProvider","useTag","refScrollBlock","hasPagination","ProfilesList","actionsWrapper","DCRProfileBand","entityTask","objectURIs","getEntityUriFromDCRUri","TaskActionButtons","perspectiveContainer","attributesWrapper","contentWrapper","processTypes","DCRReviewPerspectiveView","actionSuccessHandler","point","AddRelationButton","propTypes","PropTypes","inactiveStyle","entityCell","RowCellRenderer","EntityProfileRenderer","EntityTypeType","getRelationTypes","rel","uniq","startsWith","emptyData","EditButtons","IconButton","Edit","Delete","basicTableRef","getOvAttributeValuesByPath","getRelationAttributeValues","isNew","handleOnRowHover","rowIndex","ColumnsDataType","ConnectionType","MetadataType","ColumnFilterType","SortingType","onShowInactiveChange","RelationsTableHeader","onChangeSearchQuery","filtersEnabled","onChangeShowInactive","CHANGE_SHOW_INACTIVE","changeShowInactive","DEFAULT_COLUMNS_DATA","hideable","ActivenessAttrTypes","getColumnIdFromAttrUri","getColumnsDataFromRelationAttributes","attr","getReadableAttributesList","addArea","DEFAULT_COLUMNS_TO_SHOW","DEFAULT_SORT_FIELD","memoizedParseRelationsConfig","memoizeWith","connect","ownProps","stateProps","dispatchProps","modeProp","reduxDispatch","readOnlyMode","sortColumn","filtersClause","buildColumnsFilter","getRowsPerPageOptions","defaultRowsPerPage","subtract","handleRowsPerPageChange","handlePageChange","changeRowsPerPage","openedRelations","canEditRelations","canRemoveRelations"],"sourceRoot":""}
|