@reltio/remotes 1.4.1521 → 1.4.1523

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.
Files changed (87) hide show
  1. package/1032.js +1 -1
  2. package/1032.js.map +1 -1
  3. package/1268.js +1 -1
  4. package/1396.js +1 -1
  5. package/1396.js.map +1 -1
  6. package/1901.js +3 -0
  7. package/1901.js.map +1 -0
  8. package/233.js +2 -0
  9. package/233.js.map +1 -0
  10. package/316.js +2 -0
  11. package/316.js.map +1 -0
  12. package/3164.js +2 -0
  13. package/3164.js.map +1 -0
  14. package/3396.js +1 -1
  15. package/3396.js.map +1 -1
  16. package/3758.js +2 -0
  17. package/3758.js.map +1 -0
  18. package/385.js +2 -0
  19. package/385.js.map +1 -0
  20. package/4120.js +2 -0
  21. package/4120.js.map +1 -0
  22. package/4183.js +1 -1
  23. package/4183.js.map +1 -1
  24. package/4571.js +1 -1
  25. package/545.js +2 -0
  26. package/545.js.map +1 -0
  27. package/5605.js.map +1 -1
  28. package/566.js +2 -0
  29. package/566.js.map +1 -0
  30. package/{4407.css → 574.css} +1 -1
  31. package/574.css.map +1 -0
  32. package/574.js +2 -0
  33. package/574.js.map +1 -0
  34. package/{6046.js → 6211.js} +2 -2
  35. package/6211.js.map +1 -0
  36. package/6233.js +1 -1
  37. package/6233.js.map +1 -1
  38. package/6299.js.map +1 -1
  39. package/{5285.js → 6578.js} +2 -2
  40. package/6578.js.map +1 -0
  41. package/7198.js +2 -0
  42. package/7198.js.map +1 -0
  43. package/769.js +2 -0
  44. package/769.js.map +1 -0
  45. package/8594.js +2 -0
  46. package/8594.js.map +1 -0
  47. package/8684.js +1 -1
  48. package/{3294.js → 8768.js} +2 -2
  49. package/8768.js.map +1 -0
  50. package/9835.js +2 -0
  51. package/9835.js.map +1 -0
  52. package/package.json +1 -1
  53. package/remoteEntry.js +1 -1
  54. package/remoteEntry.js.map +1 -1
  55. package/3270.js +0 -2
  56. package/3270.js.map +0 -1
  57. package/3294.js.map +0 -1
  58. package/4407.css.map +0 -1
  59. package/4407.js +0 -2
  60. package/4407.js.map +0 -1
  61. package/5285.js.map +0 -1
  62. package/6046.js.map +0 -1
  63. package/6103.js +0 -2
  64. package/6103.js.map +0 -1
  65. package/6244.js +0 -2
  66. package/6244.js.map +0 -1
  67. package/6413.js +0 -3
  68. package/6413.js.map +0 -1
  69. package/6669.js +0 -2
  70. package/6669.js.map +0 -1
  71. package/6719.js +0 -2
  72. package/6719.js.map +0 -1
  73. package/6880.js +0 -2
  74. package/6880.js.map +0 -1
  75. package/8443.js +0 -2
  76. package/8443.js.map +0 -1
  77. package/8932.js +0 -2
  78. package/8932.js.map +0 -1
  79. package/929.js +0 -2
  80. package/929.js.map +0 -1
  81. package/9481.js +0 -2
  82. package/9481.js.map +0 -1
  83. package/9561.js +0 -2
  84. package/9561.js.map +0 -1
  85. package/9852.js +0 -2
  86. package/9852.js.map +0 -1
  87. /package/{6413.js.LICENSE.txt → 1901.js.LICENSE.txt} +0 -0
package/6233.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"6233.js","mappings":"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","sources":["webpack://@reltio/remotes/../components/src/components/AttributeSelector/styles.ts","webpack://@reltio/remotes/../components/src/components/AttributeSelector/AttributeSelector.tsx","webpack://@reltio/remotes/../components/src/icons/Table.tsx","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTableHeader/ColumnsSettings/ColumnsSettings.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTableHeader/ColumnsSettings/styles.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTableHeader/ColumnsSettings/ColumnListItem.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTableHeader/ColumnsSettings/ColumnsSettingsPopup.tsx","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTableHeader/ColumnsSettings/columnHelpers.js","webpack://@reltio/remotes/../components/src/components/DateIntervalSelector/styles.ts","webpack://@reltio/remotes/../components/src/components/DateIntervalSelector/DateIntervalSelector.tsx","webpack://@reltio/remotes/../components/src/components/ReactSelect/CreatableSelect.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/components/Option.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/components/index.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/MultiSelect.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/index.js","webpack://@reltio/remotes/../components/src/icons/AttributesList.tsx","webpack://@reltio/remotes/../components/src/components/SidePanelEmptyState/styles.ts","webpack://@reltio/remotes/../components/src/components/SidePanelEmptyState/SidePanelEmptyState.tsx","webpack://@reltio/remotes/../components/src/components/Spacer/Spacer.js","webpack://@reltio/remotes/../components/src/components/UserSelector/styles.ts","webpack://@reltio/remotes/../components/src/components/UserSelector/UserSelector.tsx","webpack://@reltio/remotes/../components/src/components/activityLog/types/ActivityTypes.ts","webpack://@reltio/remotes/../components/src/components/activityLog/utils/activities.ts","webpack://@reltio/remotes/../components/src/components/editors/CustomDateRangeEditor/styles.ts","webpack://@reltio/remotes/../components/src/components/editors/CustomDateRangeEditor/CustomDateRangeEditor.tsx","webpack://@reltio/remotes/../components/src/components/history/DateRangeSelector/utils.ts","webpack://@reltio/remotes/../components/src/components/history/DateRangeSelector/styles.ts","webpack://@reltio/remotes/../components/src/components/history/DateRangeSelector/DateRangeSelector.tsx","webpack://@reltio/remotes/../components/src/components/history/HistoryActivitySelector/utils.ts","webpack://@reltio/remotes/../components/src/components/history/HistoryActivitySelector/styles.ts","webpack://@reltio/remotes/../components/src/components/history/HistoryActivitySelector/HistoryActivitySelector.tsx","webpack://@reltio/remotes/../components/src/components/history/HistoryFilterButton/styles.ts","webpack://@reltio/remotes/../components/src/components/history/HistoryFilterButton/HistoryFilterButton.tsx","webpack://@reltio/remotes/../components/src/components/history/HistoryMenuButton/styles.ts","webpack://@reltio/remotes/../components/src/components/history/HistoryMenuButton/MenuItemRenderer.tsx","webpack://@reltio/remotes/../components/src/components/history/HistoryMenuButton/HistoryMenuButton.tsx","webpack://@reltio/remotes/../components/src/components/history/HistoryHeader/styles.ts","webpack://@reltio/remotes/../components/src/components/history/HistoryHeader/HistoryHeader.tsx","webpack://@reltio/remotes/../components/src/components/history/HistoryPanelEmptyState/HistoryPanelEmptyState.tsx","webpack://@reltio/remotes/../components/src/components/history/HistoryRow/styles.ts","webpack://@reltio/remotes/../components/src/components/history/HistoryRow/HistoryRow.tsx","webpack://@reltio/remotes/../components/src/components/history/HistoryGraph/helpers.ts","webpack://@reltio/remotes/../components/src/components/history/HistoryGraph/HistoryLink.tsx","webpack://@reltio/remotes/../components/src/components/history/HistoryGraph/HistoryCircle.tsx","webpack://@reltio/remotes/../components/src/components/history/HistoryGraph/HistoryGraph.tsx","webpack://@reltio/remotes/../components/src/components/history/HistoryTree/styles.ts","webpack://@reltio/remotes/../components/src/components/history/HistoryTree/HistoryTree.tsx","webpack://@reltio/remotes/../components/src/components/history/ContributorsPanel/styles.ts","webpack://@reltio/remotes/../components/src/components/history/ContributorsPanel/ContributorItem.tsx","webpack://@reltio/remotes/../components/src/components/history/ContributorsPanel/ContributorsPanel.tsx","webpack://@reltio/remotes/../components/src/components/history/hooks/useHistoryTree.ts","webpack://@reltio/remotes/../components/src/components/history/HistoryView/styles.ts","webpack://@reltio/remotes/../components/src/components/history/HistoryView/HistoryView.tsx","webpack://@reltio/remotes/../components/src/components/history/utils/filters.ts","webpack://@reltio/remotes/../components/src/components/history/hooks/useHistory.ts","webpack://@reltio/remotes/../components/src/components/history/hooks/useHistoryEnabled.ts","webpack://@reltio/remotes/../components/src/components/history/hooks/useHistorySlice.ts","webpack://@reltio/remotes/../components/src/components/history/types/HistoryChangeTypes.ts","webpack://@reltio/remotes/../components/src/components/history/types/HistoryFilter.ts","webpack://@reltio/remotes/../components/src/hooks/useSnackbar.tsx"],"sourcesContent":["import {makeStyles} from '@material-ui/core/styles';\n\nexport const customStyles = {\n input: (currentStyles) => ({...currentStyles, fontSize: '14px'}),\n menuPortal: (currentStyles) => ({...currentStyles, zIndex: 1300})\n};\n\nexport const useStyles = makeStyles({\n root: {\n flex: 1\n },\n title: {\n paddingBottom: '10px',\n paddingLeft: '5px',\n fontSize: '14px'\n },\n dropDownInput: {\n width: '100%',\n justifyContent: 'center',\n backgroundColor: 'rgba(0, 0, 0, 0.03)',\n borderTop: '4px'\n },\n option: {\n fontSize: '14px',\n height: '32px'\n },\n noOptionsMessage: {\n fontSize: '14px'\n }\n});\n","import React, {useCallback, useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {pipe, defaultTo} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {AttributeOption} from '../../types';\nimport mdmModule from '@reltio/mdm-module';\nimport {MultiValueProps, OptionProps} from 'react-select';\nimport {AttributeType, getAttributeTypeSubAttributes, Metadata, TEntityType} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport MultiSelect from '../ReactSelect/MultiSelect';\nimport MultiValue from '../ReactSelect/commonComponents/MultiValue';\nimport DropdownIndicatorWithIconButton from '../commonReactSelectComponents/DropdownIndicatorWithIconButton';\nimport AttributeListItem from '../AttributeListItem/AttributeListItem';\nimport {customStyles, useStyles} from './styles';\n\ntype Props = {\n entityType: TEntityType;\n selectedAttributes: AttributeOption[];\n className?: string;\n onChange?: (attributes: AttributeOption[]) => void;\n title?: string;\n disableUnderline?: boolean;\n menuPlacement?: string;\n};\n\nconst AttributeSelector = ({\n entityType,\n selectedAttributes,\n className,\n onChange,\n title,\n disableUnderline,\n menuPlacement = 'bottom'\n}: Props) => {\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const styles = useStyles();\n\n const prepareItems = useCallback(\n (data: AttributeType[], level = 0, prevLabel = ''): AttributeOption[] => {\n return data.reduce((acc, item) => {\n if (item.hidden) return acc;\n const chipLabel = `${prevLabel && prevLabel + ' / '}${item.label}`;\n acc.push({\n label: item.label,\n value: item.uri,\n attrType: item,\n chipLabel,\n level\n });\n const subAttributes = getAttributeTypeSubAttributes(metadata, item);\n return acc.concat(subAttributes ? prepareItems(subAttributes, level + 1, chipLabel) : []);\n }, []);\n },\n [metadata]\n );\n\n const options = useMemo(() => prepareItems(entityType?.attributes || []), [entityType, prepareItems]);\n\n const CustomOption = ({isFocused, isSelected, data, label, innerProps}: OptionProps<AttributeOption, true>) => (\n <div {...innerProps}>\n <AttributeListItem\n checked={isSelected}\n level={data.level}\n data={data}\n label={label}\n labelInText={label}\n isFocused={isFocused}\n />\n </div>\n );\n\n const CustomMultiValue = ({data, ...props}: MultiValueProps<AttributeOption>) => (\n <MultiValue {...props}>{data.chipLabel}</MultiValue>\n );\n\n return (\n <div className={classnames(styles.root, className)}>\n <Typography className={styles.title} variant={'subtitle1'}>\n {title || i18n.text('Attribute')}\n </Typography>\n <MultiSelect\n value={selectedAttributes}\n options={options}\n TextFieldProps={{\n InputProps: {disableUnderline},\n classes: {root: styles.dropDownInput}\n }}\n components={{\n DropdownIndicator: DropdownIndicatorWithIconButton,\n MultiValue: CustomMultiValue,\n Option: CustomOption\n }}\n onChange={pipe(defaultTo([]), onChange)}\n styles={customStyles}\n classes={styles}\n menuPlacement={menuPlacement}\n menuPortalTarget={document.body}\n />\n </div>\n );\n};\n\nexport default AttributeSelector;\n","import React from 'react';\n\nconst SvgTable: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={20} height={18} viewBox=\"0 0 20 18\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"M16 7.24V6h-4v1.24a8.417 8.417 0 00-2 .768V6H6v6h.29a8.497 8.497 0 00-.15.358l-.29.733.29.733.07.176H2c-1.1 0-2-.9-2-2V2C0 .9.9 0 2 0h14c1.1 0 2 .9 2 2v6.008a8.417 8.417 0 00-2-.768zM4 12V6H2v6h2zm0-8V2H2v2h2zm6 0V2H6v2h4zm6 0V2h-4v2h4zm-2 5a6.451 6.451 0 00-6 4.09 6.451 6.451 0 006 4.092 6.451 6.451 0 006-4.091A6.451 6.451 0 0014 9zm0 6.818a2.728 2.728 0 010-5.454 2.728 2.728 0 010 5.454zm0-4.363c-.905 0-1.636.73-1.636 1.636 0 .905.73 1.636 1.636 1.636.905 0 1.636-.73 1.636-1.636 0-.906-.73-1.636-1.636-1.636z\"\n fill=\"#000\"\n fillRule=\"nonzero\"\n stroke=\"none\"\n strokeWidth={1}\n opacity={0.54}\n />\n </svg>\n );\n};\n\nexport default SvgTable;\n","import React, {useCallback, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {ColumnsDataType} from '../../../../constants';\nimport TableIcon from '../../../../icons/Table';\nimport {SmallIconButtonWithTooltip} from '../../../SmallIconButton';\nimport {pipe, uniq, pluck, difference, concat} from 'ramda';\n\nimport {ColumnsSettingsPopup} from './ColumnsSettingsPopup';\n\nimport i18n from 'ui-i18n';\nimport {getChildColumns, isColumnSelected} from './columnHelpers';\n\nconst ColumnsSettings = ({columnsData, selectedColumns, onChangeColumns, title, tooltipTitle}) => {\n const [anchorEl, setAnchorEl] = useState(null);\n const openPopup = (event) => setAnchorEl(event.currentTarget);\n const closePopup = () => setAnchorEl(null);\n const handleColumnClick = useCallback(\n (column) => {\n const changedColumns = pipe(getChildColumns, pluck('id'))(column);\n const wasSelected = isColumnSelected(selectedColumns, column);\n onChangeColumns(\n wasSelected\n ? difference(selectedColumns, changedColumns)\n : uniq(concat(selectedColumns, changedColumns))\n );\n },\n [selectedColumns, onChangeColumns]\n );\n return (\n <>\n <SmallIconButtonWithTooltip\n tooltipTitle={tooltipTitle || i18n.text('Show/hide columns')}\n size=\"L\"\n icon={TableIcon}\n onClick={openPopup}\n />\n <ColumnsSettingsPopup\n onColumnClick={handleColumnClick}\n anchorEl={anchorEl}\n columnsData={columnsData}\n onClose={closePopup}\n title={title}\n selectedColumns={selectedColumns}\n />\n </>\n );\n};\n\nColumnsSettings.propTypes = {\n columnsData: ColumnsDataType,\n selectedColumns: PropTypes.arrayOf(PropTypes.string),\n onChangeColumns: PropTypes.func,\n title: PropTypes.string,\n tooltipTitle: PropTypes.string\n};\n\nexport default ColumnsSettings;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n popup: {\n minWidth: '200px'\n },\n groupItem: {\n backgroundColor: 'rgba(0,0,0,0.04)'\n }\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport AttributeListItem from '../../../AttributeListItem/AttributeListItem';\nimport Highlighter from '../../../Highlighter/Highlighter';\n\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\nconst ColumnListItem = ({item, onClick, checked, level, style, isFocused, isGroupItem, hideCheckBox}) => {\n const styles = useStyles();\n return (\n <AttributeListItem\n hideCheckBox={hideCheckBox}\n key={item.id}\n onClick={onClick}\n checked={checked}\n level={level}\n data={item}\n label={<Highlighter text={item.label} highlight={item.filterText} />}\n labelInText={item.label}\n style={style}\n isFocused={isFocused}\n hideIcon={isGroupItem}\n className={classnames({[styles.groupItem]: isGroupItem})}\n />\n );\n};\n\nColumnListItem.propTypes = {\n item: PropTypes.shape({\n label: PropTypes.string,\n filterText: PropTypes.string\n }),\n level: PropTypes.number,\n onClick: PropTypes.func,\n checked: PropTypes.bool,\n style: PropTypes.object,\n isGroupItem: PropTypes.bool,\n isFocused: PropTypes.bool,\n hideCheckBox: PropTypes.bool\n};\n\nexport default ColumnListItem;\n","import React, {useState, useMemo, useCallback} from 'react';\nimport i18n from 'ui-i18n';\nimport {pipe} from 'ramda';\n\nimport {getMaxItemWidth, DataTypeDefinition} from '@reltio/mdm-sdk';\n\nimport VirtualGroupedList from '../../../VirtualGroupedList/VirtualGroupedList';\nimport SelectionPopup from '../../../SelectionPopup/SelectionPopup';\nimport {buildColumnItems, isColumnSelected, isGroupColumn} from './columnHelpers';\nimport {flattenGroupedItemsData} from '../../../VirtualGroupedList/helpers';\nimport {useKeyboardNavigation} from '../../../SelectionPopup/helpers';\nimport ColumnListItem from './ColumnListItem';\n\nimport {useStyles} from './styles';\nimport {ListItemProps} from '@material-ui/core/ListItem';\n\ntype Column = {\n id: string;\n label: string;\n};\n\ntype GroupedColumnData =\n | {\n id: string;\n label: string;\n columns: Column[];\n }\n | Column;\n\ntype GroupedColumnList = {\n id: string;\n groupId: string;\n label: string;\n attrType: DataTypeDefinition;\n};\n\ntype Props = {\n anchorEl: HTMLElement;\n onClose: () => void;\n title?: string;\n columnsData: GroupedColumnData[];\n onColumnClick: (column: {id: string}) => void;\n selectedColumns: string[];\n hideCheckBox?: boolean;\n};\n\nconst ITEM_HEIGHT = 32;\nconst MAX_LIST_CONTAINER_HEIGHT = 300;\nconst DEFAULT_MIN_CONTAINER_WIDTH = 308;\nconst CONTAINER_HEADER_HEIGHT = 108;\nconst MIN_CONTAINER_HEIGHT = 140;\n\nexport const ColumnsSettingsPopup = ({\n anchorEl,\n onClose,\n title,\n columnsData,\n onColumnClick,\n selectedColumns,\n hideCheckBox\n}: Props) => {\n const styles = useStyles();\n const [filterText, setFilterText] = useState('');\n const clearFilter = () => setFilterText('');\n const groupedItems = useMemo(() => buildColumnItems(columnsData, filterText), [columnsData, filterText]);\n\n const items = useMemo(() => flattenGroupedItemsData(groupedItems), [groupedItems]);\n const containerWidth: number = getMaxItemWidth('label')(groupedItems) || DEFAULT_MIN_CONTAINER_WIDTH;\n\n const handleSearchOnEnter = useCallback(\n ({item}: {item: {id: string}; groupData: {item: {id: string}}}) => onColumnClick(item),\n [onColumnClick]\n );\n\n const {focusIndex, handleKeyDown} = useKeyboardNavigation({\n items,\n open: true,\n onSelectFocusedItem: handleSearchOnEnter,\n selectedItems: selectedColumns,\n onClose\n });\n const handleClose = useCallback(pipe(onClose, clearFilter), [onClose]);\n\n const renderColumnItem = (\n style: ListItemProps['style'],\n {item, level = 0}: {item: GroupedColumnList; level?: number},\n index: number\n ) => {\n return (\n <ColumnListItem\n hideCheckBox={hideCheckBox}\n style={style}\n item={item}\n level={level}\n isFocused={focusIndex === index}\n checked={isColumnSelected(selectedColumns, item)}\n isGroupItem={isGroupColumn(item)}\n onClick={hideCheckBox ? pipe(onColumnClick, handleClose) : onColumnClick}\n />\n );\n };\n\n const listHeight = Math.min(MAX_LIST_CONTAINER_HEIGHT, ITEM_HEIGHT * items.length);\n const containerHeight = Math.max(MIN_CONTAINER_HEIGHT, listHeight + CONTAINER_HEADER_HEIGHT);\n\n return (\n <SelectionPopup\n className={styles.popup}\n open={!!anchorEl}\n anchorEl={anchorEl}\n onClose={handleClose}\n onSearch={setFilterText}\n title={title || i18n.text('Show/hide columns')}\n containerWidth={containerWidth}\n containerHeight={containerHeight}\n searchInputOnKeyDown={handleKeyDown}\n >\n <VirtualGroupedList\n fixedTitle={false}\n height={listHeight}\n renderItem={renderColumnItem}\n items={items}\n getItemSize={() => ITEM_HEIGHT}\n focusIndex={focusIndex}\n />\n </SelectionPopup>\n );\n};\n","import {assoc, chain, curry, either, filter, has, pipe, propOr, reduce, when} from 'ramda';\nimport {utils} from '@reltio/mdm-sdk';\n\nconst isGroupColumn = (column) => column.id === column.groupId;\nconst isParentToColumn = curry(\n ({id, groupId}, parent) => parent.groupId === groupId && (id === parent.id || id.startsWith(`${parent.id}.`))\n);\nconst isGroupToColumn = curry(({groupId}, group) => groupId === group.id);\nconst isHideableColumn = propOr(true, 'hideable');\n\nconst getColumnRoot = (columns, column) => columns.find(either(isGroupToColumn(column), isParentToColumn(column)));\n\nconst addColumn = (columns, column) => {\n const root = getColumnRoot(columns, column);\n if (root) {\n root.children = addColumn(root.children || [], column);\n return columns;\n } else {\n return columns.concat(column);\n }\n};\n\nconst filterColumnsByLabel = curry(\n (filterText, column) =>\n utils.strings.search(column.label, filterText) || (column.children || []).some(filterColumnsByLabel(filterText))\n);\n\nconst buildColumnsTrees = reduce(\n (acc, columnData) =>\n addColumn(acc, {\n id: columnData.id,\n groupId: columnData.groupId,\n label: columnData.label,\n attrType: columnData.dataTypeDefinition\n }),\n []\n);\n\nconst buildFilteredColumnItems = curry((filterText, columns, level = 0) =>\n pipe(\n filter(filterColumnsByLabel(filterText)),\n chain((column) => {\n const item = {\n item: {...column, filterText},\n level\n };\n const childrenItems = column.children\n ? buildFilteredColumnItems(filterText, column.children, level + 1)\n : [];\n return [item, ...childrenItems];\n })\n )(columns)\n);\n\nconst isGroupedColumnsData = has('columns');\nconst flattenGroupedColumnsData = ({id, label, columns}) => [\n {id, groupId: id, label},\n ...columns.map(assoc('groupId', id))\n];\n\nconst buildColumnItems = (columnsData, filterText) => {\n return pipe(\n chain(when(isGroupedColumnsData, flattenGroupedColumnsData)),\n filter(either(isGroupColumn, isHideableColumn)),\n buildColumnsTrees,\n buildFilteredColumnItems(filterText)\n )(columnsData);\n};\n\nconst getChildColumns = (column) => (column.children ? chain(getChildColumns, column.children) : [column]);\n\nconst isColumnSelected = (selectedColumns, column) => {\n const childColumns = getChildColumns(column);\n const isColumnSelected = (column) => selectedColumns.includes(column.id);\n return isGroupColumn(column) ? childColumns.every(isColumnSelected) : childColumns.some(isColumnSelected);\n};\n\nexport {buildColumnItems, getChildColumns, isGroupColumn, isColumnSelected};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n flex: 1\n },\n input: {\n height: '100%',\n paddingLeft: '12px',\n paddingRight: '8px',\n fontSize: '14px'\n },\n inputNumber: {\n minWidth: '60px',\n marginRight: 10,\n height: '100%',\n backgroundColor: 'rgba(0, 0, 0, 0.03)'\n },\n inputUnit: {\n width: '100%'\n }\n});\n","import React from 'react';\nimport {pipe} from 'ramda';\nimport {getIntervalUnitLabel} from '@reltio/mdm-sdk';\nimport capitalize from '@material-ui/core/utils/capitalize';\nimport {TextField as TextField} from '@material-ui/core';\nimport SimpleDropDownSelector from '../SimpleDropDownSelector/SimpleDropDownSelector';\nimport {getValue} from '../../core/utils';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n interval: [number, string];\n onChange: ([number, string]) => void;\n onFocus?: () => void;\n};\n\nconst periods = ['minutes', 'hours', 'days', 'weeks', 'months', 'years'];\n\nconst DateIntervalSelector = ({interval: [value, unit], onChange, onFocus}: Props) => {\n const styles = useStyles();\n const getIntervalFromValue = (newValue: number) => [newValue, unit];\n const getIntervalFromUnit = ({value: newUnit}: {value: string}) => [value, newUnit];\n const onNumberChange = pipe(getValue, parseInt, getIntervalFromValue, onChange);\n const onUnitChange = pipe(getIntervalFromUnit, onChange);\n return (\n <div className={styles.root}>\n <TextField\n type=\"number\"\n value={value || ''}\n onChange={onNumberChange}\n inputProps={{min: 1, onFocus: onFocus}}\n InputProps={{classes: {root: styles.input}}}\n className={styles.inputNumber}\n />\n <SimpleDropDownSelector\n label={''}\n placeholder={capitalize(unit)}\n className={styles.inputUnit}\n value={{value: unit, label: capitalize(getIntervalUnitLabel(unit))}}\n options={periods.map((value) => ({\n value,\n label: capitalize(getIntervalUnitLabel(value))\n }))}\n onChange={onUnitChange}\n TextFieldProps={{\n inputProps: {onFocus: onFocus},\n InputProps: {classes: {root: styles.input}}\n }}\n />\n </div>\n );\n};\n\nexport default DateIntervalSelector;\n","import CreatableSelect from 'react-select/creatable';\nimport withMuiSkin from './withMuiSkin';\n\nexport default withMuiSkin(CreatableSelect);\n","import {MenuItem as MenuItem} from '@material-ui/core';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nimport ExpandedValueTooltip from '../../../ExpandedValueTooltip/ExpandedValueTooltip';\n\nexport default function Option(props) {\n const {\n innerProps,\n innerRef,\n children,\n isFocused,\n isSelected,\n selectProps: {classes},\n label\n } = props;\n\n return (\n <MenuItem\n className={classNames(classes.option, {[classes['option--selected']]: isSelected})}\n ref={innerRef}\n selected={isFocused}\n component=\"div\"\n {...innerProps}\n >\n <Checkbox color=\"primary\" checked={isSelected} />\n <ExpandedValueTooltip value={label}>\n <div className={classes['option--item']}>{children}</div>\n </ExpandedValueTooltip>\n </MenuItem>\n );\n}\n\nOption.propTypes = {\n children: PropTypes.node,\n innerProps: PropTypes.shape({\n id: PropTypes.string.isRequired,\n key: PropTypes.string,\n onClick: PropTypes.func.isRequired,\n onMouseMove: PropTypes.func.isRequired,\n onMouseOver: PropTypes.func.isRequired,\n tabIndex: PropTypes.number.isRequired\n }).isRequired,\n innerRef: PropTypes.oneOfType([\n PropTypes.oneOf([null]),\n PropTypes.func,\n PropTypes.shape({\n current: PropTypes.any.isRequired\n })\n ]),\n isFocused: PropTypes.bool.isRequired,\n isSelected: PropTypes.bool.isRequired,\n label: PropTypes.string,\n selectProps: PropTypes.shape({\n classes: PropTypes.shape({\n option: PropTypes.string\n })\n })\n};\n","import Option from './Option';\n\nconst components = {\n Option\n};\n\nexport default components;\n","import React, {useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {omit} from 'ramda';\nimport CreatableSelect from '../CreatableSelect';\nimport Select from '../Select';\nimport AsyncSelect from '../AsyncSelect';\nimport multiSelectComponents from './components';\nimport {makeStyles} from '@material-ui/core/styles';\nimport {mergeClasses} from '../../../core/utils';\n\nconst useStyles = makeStyles((theme) => ({\n label: {\n top: 6,\n left: 16\n },\n placeholder: (props) => ({\n display: !props.placeholder || props.label ? 'none' : undefined\n }),\n 'option--selected': {\n fontWeight: 400\n },\n clearIndicator: {\n padding: theme.spacing(1),\n margin: theme.spacing(0.25, 0.5)\n },\n dropdownIndicator: {\n padding: theme.spacing(1),\n margin: theme.spacing(0.25, 0.5)\n }\n}));\n\nlet id = 0;\nconst getInputId = () => `custom-select-${id++}`;\n\nfunction MultiSelect(props) {\n const {\n label,\n creatable,\n getOptions,\n loadingIndicator,\n components: componentsProp,\n classes: classesProp,\n styles: stylesProp,\n onChange: onChangeProp,\n onInputChange: onInputChangeProp,\n menuPlacement = 'auto',\n ...reactSelectProps\n } = props;\n\n const SelectComponent = creatable ? CreatableSelect : getOptions ? AsyncSelect : Select;\n\n const [inputValue, setInputValue] = useState('');\n const multiSelectClasses = useStyles(omit(['classes'], props));\n const inputId = getInputId();\n\n const components = {\n ...multiSelectComponents,\n ...componentsProp\n };\n\n const classes = mergeClasses(multiSelectClasses, classesProp);\n\n function handleInputChange(value, {action}) {\n onInputChangeProp(value, {action});\n if (action !== 'set-value') {\n setInputValue(value);\n }\n }\n\n function handleChange(value, actionMeta) {\n onChangeProp(value, actionMeta);\n if (actionMeta.action === 'create-option') {\n setInputValue('');\n onInputChangeProp('', {action: 'input-change'});\n }\n }\n\n const styles = {\n indicatorSeparator: (base) => ({\n ...base,\n margin: '10px 0'\n }),\n loadingIndicator: (base) => ({\n ...base,\n display: loadingIndicator ? base.display : 'none'\n }),\n loadingMessage: (base) => ({\n ...base,\n fontFamily: '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif'\n }),\n ...stylesProp\n };\n\n const labelProps = label\n ? {\n inputId,\n TextFieldProps: {\n label,\n InputLabelProps: {\n htmlFor: inputId,\n shrink: props.value && props.value.length ? true : undefined,\n className: classes.label\n },\n ...props.TextFieldProps\n }\n }\n : {};\n\n return (\n <SelectComponent\n isMulti\n inputId={inputId}\n inputValue={inputValue}\n onChange={handleChange}\n onInputChange={handleInputChange}\n closeMenuOnSelect={false}\n hideSelectedOptions={false}\n classes={classes}\n components={components}\n styles={styles}\n menuPlacement={menuPlacement}\n loadOptions={getOptions}\n {...labelProps}\n {...reactSelectProps}\n />\n );\n}\n\nMultiSelect.defaultProps = {\n creatable: false,\n cacheOptions: true,\n components: {},\n classes: {},\n placeholder: '',\n loadingIndicator: false,\n onInputChange: () => {},\n onChange: () => {}\n};\n\nMultiSelect.propTypes = {\n /**\n * Async creatable multi select with optional placeholder, shrink-label, non-closing menu and options with checkboxes.\n * Based on react-select/creatable and react-select/async.\n * See react-select docs: https://react-select.com\n *\n * Below are listed only props used in the MultiSelect component. Check https://react-select.com/props first.\n * */\n\n /** Ability to create values. React-select/async-creatable is used internally */\n creatable: PropTypes.bool,\n /** True for enabling cache. Recommended. */\n cacheOptions: PropTypes.bool,\n defaultOptions: PropTypes.bool,\n /** Array of selected options. */\n value: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.any\n })\n ),\n options: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.any\n })\n ),\n /** Way to receive updated values */\n onChange: PropTypes.func,\n /** Way to receive updated inputValue */\n onInputChange: PropTypes.func,\n /** Input placeholder. Will not be shown if the label prop is specified */\n placeholder: PropTypes.string,\n /** Floating label from @material-ui/core/TextField component */\n label: PropTypes.string,\n /** Enable to show default react-select's indicator */\n loadingIndicator: PropTypes.bool,\n /** You could redefine any of these components */\n components: PropTypes.shape({\n ClearIndicator: PropTypes.func,\n Control: PropTypes.func,\n DropdownIndicator: PropTypes.func,\n DownChevron: PropTypes.func,\n CrossIcon: PropTypes.func,\n Group: PropTypes.func,\n GroupHeading: PropTypes.func,\n IndicatorsContainer: PropTypes.func,\n IndicatorSeparator: PropTypes.func,\n Input: PropTypes.func,\n LoadingIndicator: PropTypes.func,\n Menu: PropTypes.func,\n MenuList: PropTypes.func,\n MenuPortal: PropTypes.func,\n LoadingMessage: PropTypes.func,\n NoOptionsMessage: PropTypes.func,\n MultiValue: PropTypes.func,\n MultiValueContainer: PropTypes.func,\n MultiValueLabel: PropTypes.func,\n MultiValueRemove: PropTypes.func,\n Option: PropTypes.func,\n Placeholder: PropTypes.func,\n SelectContainer: PropTypes.func,\n SingleValue: PropTypes.func,\n ValueContainer: PropTypes.func\n }),\n /** Classes are passed to mui skin components. Provided classes will be merged with existing ones. */\n classes: PropTypes.shape({\n control: PropTypes.string,\n valueContainer: PropTypes.string,\n multiValue: PropTypes.string,\n noOptionsMessage: PropTypes.string,\n singleValue: PropTypes.string,\n placeholder: PropTypes.string,\n menu: PropTypes.string,\n clearIndicator: PropTypes.string,\n dropdownIndicator: PropTypes.string,\n option: PropTypes.string,\n 'option--selected': PropTypes.string,\n label: PropTypes.string\n }),\n /**\n * React-select's way to customise style. Could be used to style default react-select components.\n * In other cases better to use classes and components props\n * */\n styles: PropTypes.shape({\n clearIndicator: PropTypes.func,\n container: PropTypes.func,\n control: PropTypes.func,\n dropdownIndicator: PropTypes.func,\n group: PropTypes.func,\n groupHeading: PropTypes.func,\n indicatorsContainer: PropTypes.func,\n indicatorSeparator: PropTypes.func,\n input: PropTypes.func,\n loadingIndicator: PropTypes.func,\n loadingMessage: PropTypes.func,\n menu: PropTypes.func,\n menuList: PropTypes.func,\n menuPortal: PropTypes.func,\n multiValue: PropTypes.func,\n multiValueLabel: PropTypes.func,\n multiValueRemove: PropTypes.func,\n noOptionsMessage: PropTypes.func,\n option: PropTypes.func,\n placeholder: PropTypes.func,\n singleValue: PropTypes.func,\n valueContainer: PropTypes.func\n }),\n /** Props from https://material-ui.com/api/text-field/ */\n TextFieldProps: PropTypes.object /* eslint-disable-line react/forbid-prop-types */,\n getOptions: PropTypes.func,\n menuPlacement: PropTypes.string,\n menuPortalTarget: PropTypes.object,\n getOptionValue: PropTypes.func,\n isSearchable: PropTypes.bool,\n inputRef: PropTypes.shape({current: PropTypes.object})\n};\n\nexport default MultiSelect;\n","import MultiSelect from './MultiSelect';\n\nexport default MultiSelect;\n","import React from 'react';\n\nconst SvgAttributesList: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={256} height={256} viewBox=\"0 0 256 256\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <circle cx={128} cy={128} r={128} fill=\"#0072CE\" fillOpacity={0.1} />\n <mask\n id=\"AttributesList_svg__a\"\n style={{\n maskType: 'alpha'\n }}\n maskUnits=\"userSpaceOnUse\"\n x={0}\n y={0}\n width={256}\n height={256}\n >\n <circle cx={128} cy={128} r={128} fill=\"#fff\" />\n </mask>\n <g mask=\"url(#AttributesList_svg__a)\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M-16 9h256v247H-16V9z\"\n fill=\"url(#AttributesList_svg__b)\"\n />\n <path\n opacity={0.05}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M187.761 56.865l58.639 58.639v148.871H93.383L52 225.083V56.865h135.761z\"\n fill=\"url(#AttributesList_svg__c)\"\n />\n <path\n opacity={0.06}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M47 58h202a7 7 0 017 7v157a7 7 0 01-7 7H47a7 7 0 01-7-7V65a7 7 0 017-7z\"\n fill=\"#000\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M50 56h201a5 5 0 015 5v157a5 5 0 01-5 5H50a5 5 0 01-5-5V61a5 5 0 015-5z\"\n fill=\"#fff\"\n />\n <path\n opacity={0.8}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M105.376 72.635a3 3 0 013-3H150a3 3 0 110 6h-41.624a3 3 0 01-3-3z\"\n fill=\"#B6C7DB\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M105 84.635a3 3 0 013-3h64.205a3 3 0 110 6H108a3 3 0 01-3-3z\"\n fill=\"#979797\"\n />\n <path\n opacity={0.8}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M105.376 163a3 3 0 013-3H150a3 3 0 110 6h-41.624a3 3 0 01-3-3z\"\n fill=\"#B6C7DB\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M105 175a3 3 0 013-3h64.205a3 3 0 110 6H108a3 3 0 01-3-3z\"\n fill=\"#979797\"\n />\n <path\n opacity={0.8}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M105.376 193a3 3 0 013-3H190a3 3 0 110 6h-81.624a3 3 0 01-3-3z\"\n fill=\"#B6C7DB\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M105 205a3 3 0 013-3h74.205a3 3 0 110 6H108a3 3 0 01-3-3z\"\n fill=\"#979797\"\n />\n <path\n opacity={0.8}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M138.376 103a3 3 0 013-3H223a3 3 0 110 6h-81.624a3 3 0 01-3-3z\"\n fill=\"#B6C7DB\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M138 115a3 3 0 013-3h64.205a3 3 0 110 6H141a3 3 0 01-3-3z\"\n fill=\"#979797\"\n />\n <circle cx={67} cy={79} r={9} fill=\"#B6C7DB\" />\n <circle cx={67} cy={79} r={9} fill=\"#B6C7DB\" />\n <circle cx={120} cy={106} r={6} fill=\"#B6C7DB\" />\n <circle cx={120} cy={136} r={6} fill=\"#B6C7DB\" />\n <circle cx={67} cy={169} r={9} fill=\"#B6C7DB\" />\n <circle cx={67} cy={199} r={9} fill=\"#B6C7DB\" />\n <path\n opacity={0.8}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M138.376 133a3 3 0 013-3H223a3 3 0 110 6h-81.624a3 3 0 01-3-3z\"\n fill=\"#B6C7DB\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M138 145a3 3 0 013-3h74.205a3 3 0 110 6H141a3 3 0 01-3-3z\"\n fill=\"#979797\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M92.514 108v-8h-2v40.365h11.178v-2h-9.178V110h9.178v-2h-9.178z\"\n fill=\"#2B98F0\"\n />\n <path\n opacity={0.54}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M95.071 77l-3.535 3.535L88 77h7.071z\"\n fill=\"#000\"\n />\n <path\n opacity={0.6}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M50 22h186a6 6 0 016 6v18a6 6 0 01-6 6H50a6 6 0 01-6-6V28a6 6 0 016-6z\"\n fill=\"#fff\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M58 37a6 6 0 016-6h70a6 6 0 110 12H64a6 6 0 01-6-6zm90 0a6 6 0 016-6h10a6 6 0 110 12h-10a6 6 0 01-6-6z\"\n fill=\"#979797\"\n />\n </g>\n <defs>\n <linearGradient\n id=\"AttributesList_svg__b\"\n x1={-16}\n y1={9}\n x2={-16}\n y2={256}\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#FAFAFA\" stopOpacity={0.01} />\n <stop offset={1} stopColor=\"#F4F4F4\" />\n </linearGradient>\n <linearGradient\n id=\"AttributesList_svg__c\"\n x1={266.117}\n y1={181.111}\n x2={154.882}\n y2={77.681}\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopOpacity={0.01} />\n <stop offset={1} />\n </linearGradient>\n </defs>\n </svg>\n );\n};\n\nexport default SvgAttributesList;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n flex: '1 1 auto',\n flexWrap: 'nowrap',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n overflow: 'auto',\n height: '100%',\n minHeight: '350px',\n boxSizing: 'border-box',\n padding: '40px'\n },\n logo: {\n width: '190px',\n height: '190px'\n },\n textBox: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n maxWidth: 400,\n marginTop: '24px'\n },\n text: {\n color: theme.palette.text.primary,\n fontSize: '20px',\n fontWeight: 500,\n lineHeight: '23px',\n textAlign: 'center'\n },\n secondaryText: {\n color: theme.palette.text.primary,\n fontSize: '14px',\n fontWeight: 'normal',\n lineHeight: '16px',\n letterSpacing: '0.24px',\n textAlign: 'center',\n paddingTop: '8px'\n }\n}));\n","import React from 'react';\nimport {Typography as Typography} from '@material-ui/core';\nimport {AttributesList as AttributesListIcon} from '../../icons';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n IconRenderer?: React.ElementType;\n text: string;\n secondaryText?: string;\n};\n\nconst SidePanelEmptyState = ({IconRenderer = AttributesListIcon, text, secondaryText}: Props) => {\n const styles = useStyles();\n return (\n <div className={styles.root}>\n <IconRenderer className={styles.logo} />\n <div className={styles.textBox}>\n <Typography className={styles.text}>{text}</Typography>\n {secondaryText && <Typography className={styles.secondaryText}>{secondaryText}</Typography>}\n </div>\n </div>\n );\n};\n\nexport default SidePanelEmptyState;\n","import React from 'react';\n\nconst Spacer = () => <div style={{flex: 1}} />;\n\nexport default Spacer;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const customStyles = {\n input: (currentStyles) => ({...currentStyles, fontSize: '14px'}),\n loadingMessage: (currentStyles) => ({...currentStyles, fontSize: '14px'}),\n menuPortal: (currentStyles) => ({...currentStyles, zIndex: 1300})\n};\n\nexport const useStyles = makeStyles({\n root: {\n flex: 1\n },\n title: {\n paddingBottom: '10px',\n paddingLeft: '5px',\n fontSize: '14px'\n },\n dropDownInput: {\n width: '100%',\n justifyContent: 'center',\n backgroundColor: 'rgba(0, 0, 0, 0.03)',\n borderTop: '4px'\n },\n option: {\n fontSize: '14px',\n height: '32px'\n }\n});\n","import React, {useRef} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {defaultTo, pipe, pluck} from 'ramda';\nimport classnames from 'classnames';\nimport {Typography as Typography} from '@material-ui/core';\nimport MultiSelect from '../ReactSelect/MultiSelect';\nimport DropdownIndicatorWithIconButton from '../commonReactSelectComponents/DropdownIndicatorWithIconButton';\nimport {getAllUsersForTenant, UserInfo, utils} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {customStyles, useStyles} from './styles';\n\ntype Props = {\n selectedUsers: string[];\n onChange: (activities: string[]) => void;\n className?: string;\n disableUnderline?: boolean;\n};\n\nconst UserSelector = ({selectedUsers, onChange, className, disableUnderline}: Props) => {\n const styles = useStyles();\n\n const valueToOption = (value: string) => ({value, label: value});\n const prepareValues = (values: string[]) => values.map(valueToOption);\n const filterUsers = (inputValue) => (users) =>\n inputValue ? users.filter((username) => utils.strings.search(username, inputValue)) : users;\n\n const tenant = useSelector(mdmModule.selectors.getTenant);\n const servicesPath = useSelector(mdmModule.selectors.getServicesPath);\n\n const cachedRequest = useRef<Promise<UserInfo[]>>();\n const getOptions = (inputValue) => {\n if (!cachedRequest.current) {\n cachedRequest.current = getAllUsersForTenant({tenant, servicesPath});\n }\n return cachedRequest.current.then(pipe(pluck('username'), filterUsers(inputValue), prepareValues));\n };\n\n return (\n <div className={classnames(styles.root, className)}>\n <Typography className={styles.title} variant={'subtitle1'}>\n {i18n.text('User')}\n </Typography>\n <MultiSelect\n value={prepareValues(selectedUsers)}\n onChange={pipe(defaultTo([]), pluck('value'), onChange)}\n defaultOptions={true}\n getOptions={getOptions}\n TextFieldProps={{\n InputProps: {disableUnderline},\n className: styles.dropDownInput\n }}\n components={{\n DropdownIndicator: DropdownIndicatorWithIconButton\n }}\n styles={customStyles}\n classes={styles}\n menuPortalTarget={document.body}\n />\n </div>\n );\n};\n\nexport default UserSelector;\n","export enum ActivityTypes {\n MODEL_UPDATED = 'MODEL_UPDATED',\n ENTITY_REMOVED = 'ENTITY_REMOVED',\n ENTITY_CREATED = 'ENTITY_CREATED',\n ENTITY_CHANGED = 'ENTITY_CHANGED',\n ENTITIES_MERGED = 'ENTITIES_MERGED',\n ENTITIES_SPLITTED = 'ENTITIES_SPLITTED',\n ENTITY_LOST_MERGE = 'ENTITY_LOST_MERGE',\n RELATIONSHIP_CREATED = 'RELATIONSHIP_CREATED',\n RELATIONSHIP_REMOVED = 'RELATIONSHIP_REMOVED',\n RELATIONSHIP_CHANGED = 'RELATIONSHIP_CHANGED',\n POTENTIAL_MATCHES_FOUND = 'POTENTIAL_MATCHES_FOUND',\n NOT_MATCHES_SET = 'NOT_MATCHES_SET',\n NOT_MATCHES_RESET = 'NOT_MATCHES_RESET',\n PERIODIC_TASK_SCHEDULED = 'PERIODIC_TASK_SCHEDULED',\n ENTITIES_MERGED_MANUALLY = 'ENTITIES_MERGED_MANUALLY',\n POTENTIAL_MATCHES_REMOVED = 'POTENTIAL_MATCHES_REMOVED',\n ENTITIES_MERGED_ON_THE_FLY = 'ENTITIES_MERGED_ON_THE_FLY',\n USER_LOGIN = 'USER_LOGIN',\n USER_LOGOUT = 'USER_LOGOUT',\n USER_SEARCH = 'USER_SEARCH',\n USER_PROFILE_VIEW = 'USER_PROFILE_VIEW',\n COMMENT_ADDED = 'COMMENT_ADDED',\n COMMENT_UPDATED = 'COMMENT_UPDATED',\n COMMENT_DELETED = 'COMMENT_DELETED',\n ANALYTICS_ATTRIBUTES_CHANGED = 'ANALYTICS_ATTRIBUTES_CHANGED',\n SFDC_CONNECTOR_SYNCHRONIZATION_ISSUE = 'SFDC_CONNECTOR_SYNCHRONIZATION_ISSUE',\n GROUP_CREATED = 'GROUP_CREATED',\n GROUP_REMOVED = 'GROUP_REMOVED',\n GROUP_CHANGED = 'GROUP_CHANGED'\n}\n","import {\n formatDataTypeValue,\n findAttributeTypeByUri,\n Metadata,\n AttributePresentations,\n makeAttrTypeUri,\n getAttrDataTypeDefinition\n} from '@reltio/mdm-sdk';\nimport {filter, groupBy, ifElse, map, path, pipe, propOr, values, isNil, includes, reject} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {ActivityData, ActivityItem, ActivityTypes, DeltaValue} from '../types';\n\nconst getItemDataType = path(['data', 'type']);\n\nexport const getActivityType = (activity: ActivityData) => {\n const {items, label} = activity;\n const [firstItem] = items || [];\n return getItemDataType(firstItem) || label;\n};\n\nexport const isValidActivityType = (type: string): boolean => pipe(values, includes(type))(ActivityTypes);\n\nexport const removeIgnoredItems = (activity: ActivityData): ActivityData => {\n const {items = [], label} = activity;\n const isImplementedItem = (item: ActivityItem): boolean => isValidActivityType(getItemDataType(item) || label);\n const filteredItems = filter(isImplementedItem)(items);\n if (items.length !== filteredItems.length) {\n console.error('Activities not implemented:', reject(isImplementedItem)(items));\n }\n return {\n ...activity,\n items: filteredItems,\n itemsTotal: filteredItems.length\n };\n};\n\nexport const splitActivityByType = (activity: ActivityData) => {\n return pipe(\n propOr([], 'items'),\n groupBy(getItemDataType),\n values,\n ifElse(\n ({length}) => length > 1,\n map((items) => ({\n ...activity,\n items,\n itemsTotal: items.length\n })),\n () => [activity]\n )\n )(activity);\n};\n\nexport const stringifyDeltaValue = (\n deltaValue: DeltaValue['value'],\n attributeTypeUri: string,\n metadata: Metadata,\n attributePresentations: AttributePresentations\n) => {\n const attributeType = findAttributeTypeByUri(metadata, attributeTypeUri);\n const dataTypeDefinition = getAttrDataTypeDefinition(attributeType);\n const formatValue = formatDataTypeValue({attributePresentations, dataTypeDefinition});\n\n if (isNil(deltaValue)) {\n return '';\n }\n\n if (typeof deltaValue === 'string') {\n return attributeType ? formatValue(deltaValue) : deltaValue;\n }\n\n return Object.entries(deltaValue)\n .flatMap(([attributeTypeName, deltaValues]) =>\n deltaValues.map((deltaValue) =>\n stringifyDeltaValue(\n deltaValue.value,\n makeAttrTypeUri(attributeTypeUri, attributeTypeName),\n metadata,\n attributePresentations\n )\n )\n )\n .join(', ');\n};\n\nexport const getActivityLabel = (type: ActivityTypes) => {\n const labels = {\n [ActivityTypes.COMMENT_ADDED]: i18n.text('Comment added'),\n [ActivityTypes.COMMENT_DELETED]: i18n.text('Comment deleted'),\n [ActivityTypes.COMMENT_UPDATED]: i18n.text('Comment updated'),\n [ActivityTypes.ENTITIES_MERGED]: i18n.text('Profile merged'),\n [ActivityTypes.ENTITIES_MERGED_MANUALLY]: i18n.text('Profile merged manually'),\n [ActivityTypes.ENTITIES_MERGED_ON_THE_FLY]: i18n.text('Profile merged on the fly'),\n [ActivityTypes.ENTITIES_SPLITTED]: i18n.text('Profile un-merged'),\n [ActivityTypes.ENTITY_CHANGED]: i18n.text('Profile updated'),\n [ActivityTypes.ENTITY_CREATED]: i18n.text('Profile created'),\n [ActivityTypes.ENTITY_LOST_MERGE]: i18n.text('Profile lost merge'),\n [ActivityTypes.ENTITY_REMOVED]: i18n.text('Profile removed'),\n [ActivityTypes.GROUP_CHANGED]: i18n.text('Group updated'),\n [ActivityTypes.GROUP_CREATED]: i18n.text('Group created'),\n [ActivityTypes.GROUP_REMOVED]: i18n.text('Group removed'),\n [ActivityTypes.MODEL_UPDATED]: i18n.text('Model was updated'),\n [ActivityTypes.NOT_MATCHES_RESET]: i18n.text('Not matches reset'),\n [ActivityTypes.NOT_MATCHES_SET]: i18n.text('Not matches set'),\n [ActivityTypes.PERIODIC_TASK_SCHEDULED]: i18n.text('Periodic task was scheduled'),\n [ActivityTypes.POTENTIAL_MATCHES_FOUND]: i18n.text('Potential matches found'),\n [ActivityTypes.POTENTIAL_MATCHES_REMOVED]: i18n.text('Potential matches removed'),\n [ActivityTypes.RELATIONSHIP_CHANGED]: i18n.text('Relationship updated'),\n [ActivityTypes.RELATIONSHIP_CREATED]: i18n.text('Relationship created'),\n [ActivityTypes.RELATIONSHIP_REMOVED]: i18n.text('Relationship removed'),\n [ActivityTypes.USER_LOGIN]: i18n.text('Logged in'),\n [ActivityTypes.USER_LOGOUT]: i18n.text('Logged out'),\n [ActivityTypes.USER_PROFILE_VIEW]: i18n.text('Profile viewed'),\n [ActivityTypes.USER_SEARCH]: i18n.text('Searched'),\n [ActivityTypes.ANALYTICS_ATTRIBUTES_CHANGED]: i18n.text('Analytics attribute changed'),\n [ActivityTypes.SFDC_CONNECTOR_SYNCHRONIZATION_ISSUE]: i18n.text('SFDC connector synchronization issue')\n };\n return labels[type] || '';\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n flex: 1\n },\n dropdownIndicator: {\n transition: 'transform .15s ease'\n },\n inputRoot: {\n fontSize: '14px',\n height: 46\n },\n input: {\n padding: '0 12px 0'\n },\n dateOptionLabel: {\n minWidth: '100px'\n },\n paper: {\n minWidth: '112px'\n }\n});\n","import React, {useCallback, useRef, useState} from 'react';\nimport moment from 'moment';\nimport i18n from 'ui-i18n';\nimport {isNil} from 'ramda';\nimport {DataTypes, formatDataTypeValue} from '@reltio/mdm-sdk';\nimport {noop} from '../../../core';\n\nimport {TextField as TextField} from '@material-ui/core';\nimport {Menu as Menu} from '@material-ui/core';\nimport DropdownIndicatorWithIconButton from '../../commonReactSelectComponents/DropdownIndicatorWithIconButton';\nimport DateRangePicker from '../../DateRangePicker/DateRangePicker';\nimport {useStyles} from './styles';\n\ntype DateValues = [Date, Date];\ntype Props = {\n values: DateValues;\n onChange: (values: DateValues) => void;\n onFocus?: () => void;\n};\n\nconst localeFormat = moment.localeData().longDateFormat('L');\n\nconst formatValue = (value: Date, placeholder: string) => {\n return isNil(value)\n ? `${placeholder}`\n : `${formatDataTypeValue({dataTypeDefinition: {type: DataTypes.TYPE_ACTIVENESS_DATE}}, value)}`;\n};\n\nconst CustomDateRangeEditor = ({values, onChange, onFocus = noop}: Props) => {\n const placeholder = localeFormat;\n const inputRef = useRef(null);\n const [open, setOpen] = useState(false);\n const styles = useStyles();\n\n const onApply = (values: DateValues) => {\n onChange(values);\n setOpen(false);\n };\n\n const handleToggle = useCallback(() => {\n setOpen((open) => !open);\n onFocus();\n }, [onFocus]);\n\n const onCancel = () => {\n setOpen(false);\n };\n\n return (\n <div className={styles.root}>\n <TextField\n fullWidth\n value={values.map((value) => formatValue(value, placeholder)).join(' \\u2014 ')}\n onClick={handleToggle}\n variant=\"filled\"\n ref={inputRef}\n InputProps={{\n endAdornment: (\n <DropdownIndicatorWithIconButton\n selectProps={{classes: styles, menuIsOpen: open}}\n innerProps={{}}\n />\n ),\n disableUnderline: isNil(values),\n readOnly: true,\n classes: {\n root: styles.inputRoot,\n input: styles.input\n }\n }}\n InputLabelProps={{\n shrink: false\n }}\n placeholder={i18n.text(`${placeholder} \\u2014 ${placeholder}`)}\n />\n <Menu\n variant=\"menu\"\n open={open}\n autoFocus={false}\n classes={{paper: styles.paper}}\n anchorEl={inputRef.current}\n onClose={onCancel}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'left'\n }}\n elevation={2}\n getContentAnchorEl={null}\n MenuListProps={{\n autoFocusItem: open,\n style: {width: '100%'}\n }}\n >\n <DateRangePicker\n values={values}\n onCancel={onCancel}\n onApply={onApply}\n type={DataTypes.TYPE_ACTIVENESS_DATE}\n />\n </Menu>\n </div>\n );\n};\n\nexport default CustomDateRangeEditor;\n","import i18n from 'ui-i18n';\nimport {DateRangeTypes} from '@reltio/mdm-sdk';\n\nexport const dateRangeTypeOptions = [DateRangeTypes.WITHIN, DateRangeTypes.AGO, DateRangeTypes.BETWEEN];\n\nexport const getDateRangeTypeLabel = (type: DateRangeTypes) => {\n const labels = {\n [DateRangeTypes.WITHIN]: i18n.text('Within the last'),\n [DateRangeTypes.AGO]: i18n.text('More than'),\n [DateRangeTypes.BETWEEN]: i18n.text('Date range')\n };\n return labels[type] || '';\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n flex: 1\n },\n title: {\n paddingBottom: '10px',\n paddingLeft: '5px',\n fontSize: '14px'\n },\n intervalContainer: {\n display: 'flex',\n justifyContent: 'space-between'\n },\n typeInput: {\n width: 160,\n marginRight: 10\n }\n});\n","import React, {useState} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {DateRangeFilter, DateRangeTypes} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport SimpleDropDownSelector from '../../SimpleDropDownSelector/SimpleDropDownSelector';\nimport {dateRangeTypeOptions, getDateRangeTypeLabel} from './utils';\nimport DateIntervalSelector from '../../DateIntervalSelector/DateIntervalSelector';\nimport {useDidUpdateEffect} from '../../../hooks';\nimport CustomDateRangeEditor from '../../editors/CustomDateRangeEditor/CustomDateRangeEditor';\n\nimport {useStyles} from './styles';\n\nconst emptyDates: [Date, Date] = [null, null];\nconst emptyInterval: [number, string] = [null, 'hours'];\n\ntype Props = {\n value: DateRangeFilter;\n onChange: (range: DateRangeFilter) => void;\n className?: string;\n};\n\nconst DateRangeSelector = ({value, onChange, className}: Props) => {\n const styles = useStyles();\n\n const isIntervalType = (type: DateRangeTypes) => type === DateRangeTypes.WITHIN || type === DateRangeTypes.AGO;\n const isBetweenType = (type: DateRangeTypes) => type === DateRangeTypes.BETWEEN;\n\n const initDatesInterval = isBetweenType(value?.type) ? value.period : emptyDates;\n const initInterval = isIntervalType(value?.type) ? value.period : emptyInterval;\n\n const [datesInterval, setDatesInterval] = useState(initDatesInterval as [Date, Date]);\n const [interval, setInterval] = useState(initInterval as [number, string]);\n\n const selectedType = value?.type || DateRangeTypes.WITHIN;\n\n const getCurrentPeriodByType = (type: DateRangeTypes) => {\n if (isIntervalType(type)) {\n return interval;\n } else if (isBetweenType(type)) {\n return datesInterval;\n }\n };\n\n const changeType = ({value: type}: {value: DateRangeTypes}) => {\n if (value?.type !== type) {\n onChange({period: getCurrentPeriodByType(type), type});\n }\n };\n const changePeriod = (period) => {\n onChange({type: selectedType, period});\n };\n\n useDidUpdateEffect(() => {\n if (value) {\n if (isIntervalType(value.type)) {\n setInterval(value.period as [number, string]);\n } else if (isBetweenType(value.type)) {\n setDatesInterval(value.period as [Date, Date]);\n }\n } else {\n setDatesInterval(emptyDates);\n setInterval(emptyInterval);\n }\n }, [value]);\n\n return (\n <div className={classnames(styles.root, className)}>\n <Typography className={styles.title} variant={'subtitle1'}>\n {i18n.text('Date')}\n </Typography>\n <div className={styles.intervalContainer}>\n <SimpleDropDownSelector\n label={''}\n className={styles.typeInput}\n value={{\n value: selectedType,\n label: getDateRangeTypeLabel(selectedType)\n }}\n options={dateRangeTypeOptions.map((option) => ({\n value: option,\n label: getDateRangeTypeLabel(option)\n }))}\n onChange={changeType}\n />\n {isIntervalType(selectedType) ? (\n <DateIntervalSelector interval={interval} onChange={changePeriod} />\n ) : (\n <CustomDateRangeEditor values={datesInterval} onChange={changePeriod} />\n )}\n </div>\n </div>\n );\n};\n\nexport default DateRangeSelector;\n","import i18n from 'ui-i18n';\nimport {HistoryActivityType} from '../types/HistoryFilter';\n\nexport const historyActivityOptions = [\n HistoryActivityType.UPDATE,\n HistoryActivityType.MERGE,\n HistoryActivityType.UNMERGE\n];\n\nexport const getHistoryActivityLabel = (type: HistoryActivityType) => {\n const labels = {\n [HistoryActivityType.UPDATE]: i18n.text('Update'),\n [HistoryActivityType.MERGE]: i18n.text('Merge'),\n [HistoryActivityType.UNMERGE]: i18n.text('Unmerge')\n };\n return labels[type] || '';\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const customStyles = {\n input: (currentStyles) => ({...currentStyles, fontSize: '14px'}),\n menuPortal: (currentStyles) => ({...currentStyles, zIndex: 1300})\n};\n\nexport const useStyles = makeStyles({\n root: {\n flex: 1\n },\n title: {\n paddingBottom: '10px',\n paddingLeft: '5px',\n fontSize: '14px'\n },\n dropDownInput: {\n width: '100%',\n justifyContent: 'center',\n backgroundColor: 'rgba(0, 0, 0, 0.03)',\n borderTop: '4px'\n },\n valueContainer: {\n overflowY: 'auto',\n height: 44\n },\n option: {\n fontSize: '14px',\n height: '32px'\n }\n});\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {defaultTo, pipe, pluck} from 'ramda';\nimport classnames from 'classnames';\nimport {Typography as Typography} from '@material-ui/core';\nimport MultiSelect from '../../ReactSelect/MultiSelect';\nimport DropdownIndicatorWithIconButton from '../../commonReactSelectComponents/DropdownIndicatorWithIconButton';\nimport {getHistoryActivityLabel, historyActivityOptions} from './utils';\nimport {HistoryActivityType} from '../types/HistoryFilter';\nimport {customStyles, useStyles} from './styles';\n\ntype Props = {\n selectedHistoryActivityTypes: HistoryActivityType[];\n onChange: (activities: HistoryActivityType[]) => void;\n className?: string;\n};\n\nconst HistoryActivitySelector = ({selectedHistoryActivityTypes, onChange, className}: Props) => {\n const styles = useStyles();\n const valueToOption = (value: HistoryActivityType) => ({value, label: getHistoryActivityLabel(value)});\n const prepareValues = (values: HistoryActivityType[]) => values.map(valueToOption);\n\n const options = prepareValues(historyActivityOptions);\n\n return (\n <div className={classnames(styles.root, className)}>\n <Typography className={styles.title} variant={'subtitle1'}>\n {i18n.text('Activity')}\n </Typography>\n <MultiSelect\n value={prepareValues(selectedHistoryActivityTypes)}\n onChange={pipe(defaultTo([]), pluck('value'), onChange)}\n options={options}\n TextFieldProps={{classes: {root: styles.dropDownInput}}}\n components={{\n DropdownIndicator: DropdownIndicatorWithIconButton\n }}\n styles={customStyles}\n classes={styles}\n menuPlacement=\"bottom\"\n menuPortalTarget={document.body}\n />\n </div>\n );\n};\n\nexport default HistoryActivitySelector;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n popup: {\n width: 500,\n minHeight: 500,\n overflowY: 'hidden',\n display: 'flex',\n flexDirection: 'column'\n },\n filterContainer: {\n padding: 20,\n height: 410,\n display: 'flex',\n flexDirection: 'column'\n },\n filterContainerScrollable: {\n overflowY: 'auto'\n },\n filterItem: {\n marginTop: 15\n },\n filterControls: {\n display: 'flex',\n padding: '10px 12px',\n borderTop: 'solid 1px rgba(0, 0, 0, 0.12)'\n },\n clearButton: {\n marginRight: 'auto'\n },\n input: {\n height: '100%',\n paddingLeft: '12px',\n paddingRight: '8px'\n }\n});\n","import React, {useCallback, useEffect, useRef, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {curry, dissoc} from 'ramda';\nimport FilterListIcon from '@material-ui/icons/FilterList';\nimport {Button as Button} from '@material-ui/core';\nimport {Popover as Popover} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {TEntityType, isDateRangeValid} from '@reltio/mdm-sdk';\nimport {SmallIconButton} from '../../SmallIconButton';\nimport {HistoryFilter} from '../types';\nimport UserSelector from '../../UserSelector/UserSelector';\nimport AttributeSelector from '../../AttributeSelector/AttributeSelector';\nimport DateRangeSelector from '../DateRangeSelector/DateRangeSelector';\nimport HistoryActivitySelector from '../HistoryActivitySelector/HistoryActivitySelector';\n\nimport {DEFAULT_HISTORY_FILTER, isDefaultFilter} from '../hooks/useHistory';\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n filter: HistoryFilter;\n onApplyFilter: (filter: HistoryFilter) => void;\n entityType: TEntityType;\n};\n\nconst HistoryFilterButton = ({className, filter, onApplyFilter, entityType}: Props) => {\n const styles = useStyles();\n const buttonRef = useRef();\n const [isOpen, setIsOpen] = useState(false);\n const [currentValue, setCurrentValue] = useState<HistoryFilter>(filter);\n const {activities = [], attributes = [], dateRange = null, users = []} = currentValue || {};\n\n const buttonColor = isDefaultFilter(filter) ? 'inherit' : 'primary';\n\n useEffect(() => {\n if (isOpen) {\n setCurrentValue(filter);\n }\n }, [filter, isOpen]);\n\n const handlePropChange = curry((propName: string, value: unknown) => {\n setCurrentValue((filterValue) => ({\n ...filterValue,\n [propName]: value\n }));\n });\n\n const togglePopup = useCallback(() => {\n setIsOpen((open) => !open);\n }, []);\n\n const applyButtonHandler = useCallback(() => {\n dateRange && isDateRangeValid(dateRange)\n ? onApplyFilter(currentValue)\n : onApplyFilter(dissoc('dateRange', currentValue));\n togglePopup();\n }, [currentValue, dateRange, onApplyFilter, togglePopup]);\n\n const clearAllButtonHandler = useCallback(() => {\n setCurrentValue({...DEFAULT_HISTORY_FILTER});\n }, []);\n\n return (\n <>\n <SmallIconButton\n ref={buttonRef}\n color={buttonColor}\n icon={FilterListIcon}\n size=\"L\"\n onClick={togglePopup}\n className={className}\n />\n <Popover\n classes={{paper: styles.popup}}\n open={isOpen}\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 <div className={styles.filterContainer}>\n <Typography variant=\"h6\">{i18n.text('Filter')}</Typography>\n <div className={styles.filterContainerScrollable}>\n <DateRangeSelector\n value={dateRange}\n onChange={handlePropChange('dateRange')}\n className={styles.filterItem}\n />\n <UserSelector\n selectedUsers={users}\n onChange={handlePropChange('users')}\n className={styles.filterItem}\n />\n <HistoryActivitySelector\n selectedHistoryActivityTypes={activities}\n onChange={handlePropChange('activities')}\n className={styles.filterItem}\n />\n <AttributeSelector\n selectedAttributes={attributes}\n entityType={entityType}\n onChange={handlePropChange('attributes')}\n className={styles.filterItem}\n title={i18n.text('Attribute updated')}\n />\n </div>\n </div>\n <div className={styles.filterControls}>\n <Button onClick={clearAllButtonHandler} className={styles.clearButton}>\n {i18n.text('Clear all')}\n </Button>\n <Button onClick={togglePopup}>{i18n.text('Cancel')}</Button>\n <Button color=\"primary\" onClick={applyButtonHandler}>\n {i18n.text('Apply')}\n </Button>\n </div>\n </Popover>\n </>\n );\n};\n\nexport default HistoryFilterButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n menuItem: {\n minHeight: '32px'\n },\n menuText: {\n fontSize: '13px',\n lineHeight: '15px',\n letterSpacing: 0,\n marginLeft: '30px'\n },\n checkIcon: {\n position: 'absolute',\n color: 'rgba(0, 0, 0, 0.54)'\n }\n});\n","import React, {forwardRef} from 'react';\nimport {MenuItem as MenuItem} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport CheckIcon from '@material-ui/icons/Check';\nimport {noop} from '../../../core';\nimport {useStyles} from './styles';\n\ntype Item = {\n text: string;\n selected: boolean;\n onClick: (e) => void;\n};\n\ntype Props = {\n item: Item;\n onMenuClose?: () => void;\n};\n\nconst MenuItemRenderer = forwardRef(({item, onMenuClose = noop}: Props, ref: React.Ref<HTMLLIElement>) => {\n const styles = useStyles();\n const {text, selected, onClick} = item;\n const handleClick = (e) => {\n onMenuClose();\n onClick(e);\n };\n\n return (\n <MenuItem classes={{root: styles.menuItem}} onClick={handleClick} ref={ref}>\n {selected && <CheckIcon className={styles.checkIcon} />}\n <Typography classes={{root: styles.menuText}}>{text}</Typography>\n </MenuItem>\n );\n});\nMenuItemRenderer.displayName = 'MenuItemRenderer';\n\nexport default MenuItemRenderer;\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport mdmModule, {HistoryMode, profile} from '@reltio/mdm-module';\nimport {SmallIconButton} from '../../SmallIconButton';\nimport DropDownMenuButton from '../../DropDownMenuButton/DropDownMenuButton';\nimport MenuItemRenderer from './MenuItemRenderer';\n\nconst HistoryMenuButton = () => {\n const mode = useSelector(mdmModule.selectors.getHistoryMode);\n const dispatch = useDispatch();\n const handleModeChange = (selectedMode: HistoryMode) => {\n dispatch(profile.history.actions.setHistoryMode(selectedMode));\n };\n const menuItems = [\n {\n text: i18n.text('Compare to Current view'),\n selected: mode === HistoryMode.Current,\n onClick: () => handleModeChange(HistoryMode.Current)\n },\n {\n text: i18n.text('Compare to Previous view'),\n selected: mode === HistoryMode.Previous,\n onClick: () => handleModeChange(HistoryMode.Previous)\n }\n ];\n\n return (\n <DropDownMenuButton\n MenuItemRenderer={MenuItemRenderer}\n buttonComponent={SmallIconButton}\n buttonProps={{\n icon: MoreVertIcon,\n size: 'L'\n }}\n menuId={'history-menu'}\n menuItems={menuItems}\n />\n );\n};\n\nexport default HistoryMenuButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n flex: 1,\n alignItems: 'center'\n },\n icon: {\n margin: 4\n },\n divider: {\n backgroundColor: 'rgba(0,0,0,0.12)',\n margin: '3px 19px'\n },\n count: {\n fontSize: 14\n },\n filterButton: {\n marginRight: '-4px'\n }\n});\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {Divider as Divider} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {isNil} from 'ramda';\nimport {TEntityType} from '@reltio/mdm-sdk';\nimport Spacer from '../../Spacer/Spacer';\nimport HistoryFilterButton from '../HistoryFilterButton/HistoryFilterButton';\nimport HistoryMenuButton from '../HistoryMenuButton/HistoryMenuButton';\nimport {HistoryFilter} from '../types';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n total?: number;\n entityType: TEntityType;\n filter: HistoryFilter;\n onApplyFilter: (value: HistoryFilter) => void;\n};\n\nconst HistoryHeader = ({total, entityType, filter, onApplyFilter}: Props) => {\n const styles = useStyles();\n return (\n <div className={styles.root}>\n <Typography variant=\"h6\">{i18n.text('History')}</Typography>\n {!isNil(total) && (\n <>\n <Divider orientation=\"vertical\" flexItem className={styles.divider} />\n <Typography variant=\"body1\" color=\"textSecondary\" className={styles.count}>\n {total === 1\n ? i18n.text('${count} contributing profile', {count: total})\n : i18n.text('${count} contributing profiles', {count: total})}\n </Typography>\n </>\n )}\n <Spacer />\n <HistoryFilterButton\n className={styles.filterButton}\n entityType={entityType}\n filter={filter}\n onApplyFilter={onApplyFilter}\n />\n <HistoryMenuButton />\n </div>\n );\n};\n\nexport default HistoryHeader;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport SidePanelEmptyState from '../../SidePanelEmptyState/SidePanelEmptyState';\n\nconst HistoryPanelEmptyState = () => (\n <SidePanelEmptyState\n text={i18n.text('History in the making')}\n secondaryText={i18n.text('When you create an event or perform an activity, it will show up here.')}\n />\n);\n\nexport default HistoryPanelEmptyState;\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype Type = {\n color?: string;\n};\n\nexport const useStyles = makeStyles(() => ({\n historyRow: {\n position: 'relative',\n padding: '8px 12px 16px',\n cursor: 'pointer'\n },\n selected: {\n background: 'rgba(0,0,0,0.05)',\n '&:before': {\n content: '\"\"',\n background: 'rgba(0,0,0,0.05)',\n width: '100%',\n height: '100%',\n position: 'absolute',\n left: '-100%',\n top: 0\n }\n },\n rowHeader: {\n display: 'flex',\n position: 'relative'\n },\n badge: ({color}: Type) => ({\n position: 'absolute',\n width: '2px',\n height: '100%',\n left: '-9px',\n pointerEvents: 'none',\n background: color,\n '&:before': {\n height: '100%',\n width: '3px',\n content: '\"\"',\n left: '-3px',\n background: color,\n position: 'absolute',\n opacity: 0.06\n }\n }),\n title: {\n color: 'rgba(0,0,0,0.87)',\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '16px',\n fontWeight: 400,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n '&.bold': {\n fontWeight: 500\n }\n },\n date: {\n marginLeft: 'auto',\n color: 'rgba(0,0,0,0.54)',\n fontSize: '11px',\n letterSpacing: 0,\n lineHeight: '16px'\n },\n user: {\n color: 'rgba(0,0,0,0.38)',\n fontSize: '12px',\n letterSpacing: 0,\n lineHeight: '14px'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {getContributorColor, HistoryChange} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {ActivityTypes} from '../../activityLog/types/ActivityTypes';\nimport {getActivityLabel} from '../../activityLog/utils/activities';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n change: HistoryChange;\n isCurrent?: boolean;\n isSelected: boolean;\n onClick: () => void;\n};\n\nconst HistoryRow = ({change, isCurrent, isSelected, onClick}: Props) => {\n const {uri, type, matchGroups, user, timestamp} = change;\n const color = getContributorColor(uri);\n const styles = useStyles({color});\n return (\n <div className={classnames(styles.historyRow, {[styles.selected]: isSelected})} onClick={onClick}>\n <div className={styles.rowHeader}>\n <div className={styles.badge} />\n <Typography className={classnames(styles.title, {bold: isCurrent})}>\n {isCurrent ? i18n.text('Current view') : getActivityLabel(type as ActivityTypes)}\n </Typography>\n {!isCurrent && <Typography className={styles.date}>{i18n.date(timestamp, 'L LT')}</Typography>}\n </div>\n {matchGroups && (\n <Typography className={styles.title}>\n {i18n.text('Match rule:')} {matchGroups.join(', ')}\n </Typography>\n )}\n <Typography className={styles.user}>{user}</Typography>\n </div>\n );\n};\n\nexport default HistoryRow;\n","import {HistoryChangeTypes} from '../types/HistoryChangeTypes';\n\nexport const getHistoryLinkCurve = (x: number, y: number, toX: number, toY: number) => {\n const isUp = y > toY;\n const isLeft = x < toX;\n const curveStartX = isLeft ? toX - 12 : toX + 12;\n const curveCenterY = isUp ? -6 : 6;\n const curveEndY = isUp ? -12 : 12;\n const curve = isLeft ? `c 6 0 12 ${curveCenterY} 12` : `c -6 0 -12 ${curveCenterY} -12`;\n return `M${x} ${y} L${curveStartX} ${y} ${curve} ${curveEndY} L${toX} ${toY}`;\n};\n\nexport const isFakeHistoryType = (type: string) =>\n type === HistoryChangeTypes.FAKE_FILTERED_INCOMING || type === HistoryChangeTypes.FAKE_FILTERED_OUTGOING;\n","import React from 'react';\nimport {getHistoryLinkCurve} from './helpers';\n\ntype Props = {\n x: number;\n y: number;\n toX: number;\n toY: number;\n color: string;\n isDashed?: boolean;\n};\n\nconst HistoryLink = ({x, y, toX, toY, color, isDashed}: Props) => {\n const lineData = getHistoryLinkCurve(x, y, toX, toY);\n return (\n <path\n d={lineData}\n stroke={color}\n strokeWidth={2}\n fill={'none'}\n strokeDasharray={isDashed ? '3,3' : undefined}\n />\n );\n};\n\nexport default HistoryLink;\n","import React, {forwardRef} from 'react';\n\ntype Props = {\n x: number;\n y: number;\n color: string;\n isDashed?: boolean;\n isCollapsed?: boolean;\n showCollapseIcon?: boolean;\n showLine?: boolean;\n} & React.SVGProps<SVGGElement>;\n\nexport const BUMP_RADIUS = 3;\nexport const LINE_MARGIN = 4;\n\nconst HistoryCircle = ({x, y, color, isDashed, isCollapsed, showCollapseIcon, showLine, ...otherProps}: Props, ref) => {\n const radius = showCollapseIcon ? BUMP_RADIUS * 2 : BUMP_RADIUS;\n return (\n <g {...otherProps} ref={ref}>\n {showLine && (\n <rect\n id=\"line\"\n x={x - radius - LINE_MARGIN}\n y={y - radius - LINE_MARGIN}\n width={radius * 2 + LINE_MARGIN * 2}\n height={2}\n fill={color}\n />\n )}\n <circle\n cx={x}\n cy={y}\n r={radius}\n fill={isDashed ? '#fff' : color}\n stroke={color}\n strokeDasharray={isDashed ? '1,1' : undefined}\n strokeWidth={2}\n />\n {showCollapseIcon && (\n <g id=\"icon\">\n <rect x={x - 4} y={y - 1} width={8} height={2} fill=\"#fff\" />\n {isCollapsed && <rect x={x - 1} y={y - 4} width={2} height={8} fill=\"#fff\" />}\n </g>\n )}\n </g>\n );\n};\n\nexport default forwardRef(HistoryCircle);\n","import React, {memo} from 'react';\nimport {getContributorColor} from '@reltio/mdm-sdk';\nimport HistoryLink from './HistoryLink';\nimport HistoryCircle from './HistoryCircle';\nimport {HistoryData, HistoryChangeTypes} from '../types';\nimport {isFakeHistoryType} from './helpers';\nimport {withTooltip} from '../../../HOCs';\n\nconst COL_WIDTH = 16;\nconst COL_MARGIN = 24;\nconst ROW_MARGIN = 16;\nconst ROW_HEIGHT = 16;\n\nexport const HistoryCircleWithTooltip = withTooltip(HistoryCircle);\n\ntype Props = {\n graphData: HistoryData;\n onHistoryCircleMouseOver?: (uri: string, timestamp: number, index: number) => void;\n};\n\nconst HistoryGraph = ({graphData, onHistoryCircleMouseOver}: Props) => {\n const {historyLanes, rows} = graphData;\n const rowPositions = [ROW_MARGIN];\n\n const {links, rowLines, circles} = rows.reduce(\n (acc, {uri, height, uris, type, fakeType, index, timestamp, label}, i) => {\n const x = historyLanes[uri].index * COL_WIDTH + COL_MARGIN;\n const y = rowPositions[i];\n rowPositions.push(y + height);\n\n const hasFakeType = isFakeHistoryType(fakeType);\n const circleUri = hasFakeType ? uris[0] : uri;\n const isCollapsed = !uris?.some((uri) => historyLanes[uri]);\n acc.circles.push(\n <HistoryCircleWithTooltip\n tooltipTitle={label}\n tooltipPlacement=\"top\"\n onMouseOver={\n onHistoryCircleMouseOver ? () => onHistoryCircleMouseOver(uri, timestamp, index) : undefined\n }\n key={`circle-${circleUri}-${i}`}\n x={x}\n y={y}\n color={getContributorColor(circleUri)}\n isDashed={hasFakeType}\n isCollapsed={isCollapsed}\n showCollapseIcon={!!uris}\n showLine={fakeType === HistoryChangeTypes.FAKE_NAVIGATE_PROFILE}\n />\n );\n\n acc.rowLines.push(\n <rect\n key={`${circleUri}-${index}`}\n x={x}\n y={y - ROW_HEIGHT / 2}\n width={'100%'}\n height={ROW_HEIGHT}\n fill={getContributorColor(circleUri)}\n opacity={0.06}\n />\n );\n\n const isUpRight = type === HistoryChangeTypes.ENTITIES_SPLITTED;\n uris?.forEach((contributorUri) => {\n const contributorLane = historyLanes[contributorUri];\n if (!contributorLane) return;\n const rowHeight = rows[i].height;\n const toX = contributorLane.index * COL_WIDTH + COL_MARGIN;\n const toY = isUpRight ? y - rowHeight : y + rowHeight;\n if (x !== toX)\n acc.links.push(\n <HistoryLink\n key={`link-${contributorUri}-${index}`}\n x={x}\n y={y}\n toX={toX}\n toY={toY}\n isDashed={isFakeHistoryType(fakeType)}\n color={getContributorColor(contributorUri)}\n />\n );\n });\n\n return acc;\n },\n {links: [], circles: [], rowLines: []}\n );\n\n const width = Object.keys(historyLanes).length * COL_WIDTH + COL_MARGIN;\n const height = rowPositions[rowPositions.length - 1] - ROW_MARGIN;\n\n Object.entries(historyLanes).forEach(([contributorUri, contributorLane]) => {\n const x = contributorLane.index * COL_WIDTH + COL_MARGIN;\n contributorLane.lifeTime.forEach(({start, end}, i) => {\n if (rows[end?.index]?.type === HistoryChangeTypes.ENTITIES_SPLITTED) return;\n const startIndex = start?.type === HistoryChangeTypes.ENTITIES_SPLITTED ? start?.index - 1 : start?.index;\n const endIndex =\n end?.type === HistoryChangeTypes.ENTITIES_MERGED_MANUALLY ||\n end?.type === HistoryChangeTypes.ENTITIES_MERGED\n ? end?.index + 1\n : end?.index;\n const startY = rowPositions[startIndex] || rowPositions[rowPositions.length - 2];\n const endY = rowPositions[endIndex] || ROW_MARGIN;\n if (startY <= endY) return;\n const color = getContributorColor(contributorUri);\n if (!end && contributorLane.index > 0) {\n circles.push(\n <HistoryCircle key={`initCircle-${contributorUri}-${i}`} x={x} y={endY} color={color} showLine />\n );\n }\n links.unshift(\n <path\n key={`line-${contributorUri}-${i}`}\n d={`M${x} ${startY} L${x} ${endY}`}\n stroke={color}\n strokeWidth={2}\n />\n );\n });\n });\n\n return (\n <svg className=\"chart\" width={width} height={height}>\n <g id=\"rowLines\">{rowLines}</g>\n <g id=\"links\">{links}</g>\n <g id=\"circles\">{circles}</g>\n </svg>\n );\n};\n\nexport default memo(HistoryGraph);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n historyTree: {\n display: 'grid',\n gridTemplateColumns: 'auto 1fr',\n overflowY: 'auto'\n },\n graph: {\n overflowX: 'auto',\n overflowY: 'hidden'\n },\n history: {\n minWidth: 344\n },\n buttonContainer: {\n gridColumnStart: 1,\n gridColumnEnd: 3,\n padding: '8px 16px'\n },\n shadow: {\n boxShadow: 'inset -8px 0px 5px -5px rgba(0,0,0,0.1)'\n }\n});\n","import React, {useCallback, useEffect, useRef, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport ReactResizeDetector from 'react-resize-detector';\nimport i18n from 'ui-i18n';\nimport {isNil, uniqBy, prop, identity} from 'ramda';\nimport classnames from 'classnames';\nimport {getEntity, Mode, Metadata, getCrosswalkType} from '@reltio/mdm-sdk';\nimport mdm, {HistoryEvent, profile} from '@reltio/mdm-module';\nimport {HistoryData, HistoryRowData} from '../types';\nimport {Button as Button} from '@material-ui/core';\nimport HistoryRow from '../HistoryRow/HistoryRow';\nimport HistoryGraph from '../HistoryGraph/HistoryGraph';\nimport LinearLoadIndicator from '../../LinearLoadIndicator/LinearLoadIndicator';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n historyData: HistoryData;\n canLoadMore: boolean;\n onLoadMore: () => void;\n isLoading: boolean;\n entityUri: string;\n historyEvent: HistoryEvent;\n findPreviousChange: (index: number, uri: string) => HistoryRowData;\n};\n\nconst HistoryTree = ({\n historyData,\n isLoading,\n canLoadMore,\n onLoadMore,\n entityUri,\n historyEvent,\n findPreviousChange\n}: Props) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n const isEditableMode = useSelector(mdm.selectors.getIsEditableMode);\n const metadata: Metadata = useSelector(mdm.selectors.getMetadata);\n\n const [graphData, setGraphData] = useState({historyLanes: {}, rows: []});\n const [isScrollable, setIsScrollable] = useState(false);\n const [selectedIndex, setSelectedIndex] = useState(-1);\n\n useEffect(() => {\n if (isNil(historyEvent)) {\n setSelectedIndex(0);\n return;\n }\n const isCurrentEventChange = (change: HistoryRowData) =>\n change?.uri === (historyEvent?.overrideUri || entityUri) && change?.timestamp === historyEvent?.aStamp;\n const selectedChangeByIndex = selectedIndex !== -1 ? historyData.rows[selectedIndex] : null;\n const currentEventChangeIndex = historyData.rows.findIndex((change) => isCurrentEventChange(change));\n setSelectedIndex(isCurrentEventChange(selectedChangeByIndex) ? selectedIndex : currentEventChangeIndex);\n }, [historyData.rows, historyEvent]);\n\n const graphRef = useRef(null);\n const rowsRef = useCallback(\n (node) => {\n if (!isNil(node)) {\n const rows = historyData.rows?.map((item, i) => ({...item, height: node.childNodes[i]?.clientHeight}));\n setGraphData({historyLanes: historyData.historyLanes, rows});\n }\n },\n [historyData]\n );\n\n const handleGraphScroll = () => {\n const {scrollWidth, clientWidth, scrollLeft} = graphRef?.current || {};\n setIsScrollable(scrollLeft < scrollWidth - clientWidth);\n };\n\n const handleHistoryCircleMouseOver = (uri, timestamp, index) => {\n if (isNil(graphData.rows[index].label)) {\n const options = {time: timestamp, select: 'crosswalks'} as any;\n getEntity(uri, options).then(({crosswalks}) => {\n const label = crosswalks\n ? uniqBy(prop('type'), crosswalks)\n .map((cw) => {\n const crosswalkType = getCrosswalkType(metadata, cw.type);\n return crosswalkType ? crosswalkType.label : null;\n })\n .filter(identity)\n .join(', ')\n : i18n.text('No data');\n\n setGraphData((prevGraphData) => ({\n ...prevGraphData,\n rows: prevGraphData.rows.map((row) => (row.index === index ? {...row, label} : row))\n }));\n });\n }\n };\n\n const handleHistoryRowClick = (index: number, change: HistoryRowData, isSelected: boolean, isCurrent: boolean) => {\n if (isEditableMode) {\n if (\n window.confirm(i18n.text('Are you sure you want to go in history mode? All your changes will be lost.'))\n ) {\n dispatch(profile.mode.actions.modeUpdated(Mode.Viewing));\n } else {\n return;\n }\n }\n\n if ((isCurrent && !isSelected) || (!isCurrent && isSelected)) {\n dispatch(profile.history.actions.clearHistoryEvent());\n setSelectedIndex(0);\n } else if (!isCurrent && !isSelected) {\n const aChange = findPreviousChange(index - 1, change.uri || entityUri);\n const bChange = findPreviousChange(index, change.uri || entityUri);\n const aStamp = aChange?.timestamp;\n const bStamp = bChange?.timestamp;\n const overrideUri = change?.uri === entityUri ? null : change?.uri;\n dispatch(profile.history.actions.setHistoryEvent({aStamp, bStamp, overrideUri}));\n setSelectedIndex(index);\n }\n };\n\n return (\n <div className={styles.historyTree}>\n {isLoading && <LinearLoadIndicator />}\n <div\n className={classnames(styles.graph, {[styles.shadow]: isScrollable})}\n onScroll={handleGraphScroll}\n ref={graphRef}\n >\n <HistoryGraph onHistoryCircleMouseOver={handleHistoryCircleMouseOver} graphData={graphData} />\n <ReactResizeDetector handleWidth onResize={handleGraphScroll} />\n </div>\n <div ref={rowsRef} className={styles.history}>\n {historyData.rows.map((change, i) => {\n const isSelected = i === selectedIndex;\n const isCurrent = i === 0;\n return (\n <HistoryRow\n key={`row-${i}`}\n change={change}\n isCurrent={isCurrent}\n isSelected={isSelected}\n onClick={() => handleHistoryRowClick(i, change, isSelected, isCurrent)}\n />\n );\n })}\n </div>\n {canLoadMore && (\n <div className={styles.buttonContainer}>\n <Button color=\"primary\" onClick={() => onLoadMore()}>\n {i18n.text('Show more')}\n </Button>\n </div>\n )}\n </div>\n );\n};\n\nexport default HistoryTree;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n flexWrap: 'wrap',\n padding: '10px 15px'\n }\n});\n\ntype StylesProps = {\n color: string;\n};\n\nexport const useContributorStyles = makeStyles({\n icon: ({color}: StylesProps) => ({\n boxSizing: 'border-box',\n borderWidth: 2,\n borderStyle: 'solid',\n borderColor: color,\n height: 12,\n width: 12,\n borderRadius: 30,\n transition: 'opacity 0.3s',\n margin: 4\n }),\n active: ({color}: StylesProps) => ({\n backgroundColor: color\n }),\n inactive: {\n backgroundColor: 'white'\n },\n clickable: {\n cursor: 'pointer'\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {getContributorColor} from '@reltio/mdm-sdk';\n\nimport {useContributorStyles} from './styles';\n\ntype Props = {\n value: string;\n isSelected?: boolean;\n onClick?: () => void;\n};\n\nconst ContributorItem = ({value, isSelected = true, onClick}: Props) => {\n const color = getContributorColor(value);\n const styles = useContributorStyles({color});\n\n return (\n <div\n className={classnames(styles.icon, {\n [styles.inactive]: !isSelected,\n [styles.active]: isSelected,\n [styles.clickable]: !!onClick\n })}\n onClick={onClick}\n />\n );\n};\n\nexport default ContributorItem;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {without} from 'ramda';\nimport ContributorItem from './ContributorItem';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n values: string[];\n selectedValues: string[];\n onSelectValues: (values: string[]) => void;\n entityUri: string;\n className?: string;\n};\n\nconst ContributorsPanel = ({values, selectedValues, entityUri, onSelectValues, className}: Props) => {\n const styles = useStyles();\n\n const handleClick = (value: string) => {\n if (selectedValues?.includes(value)) {\n onSelectValues(without([value], selectedValues));\n } else {\n onSelectValues([...(selectedValues || []), value]);\n }\n };\n\n return (\n <div className={classnames(styles.root, className)}>\n <ContributorItem value={entityUri} />\n {values?.length > 0 &&\n values.map((value) => (\n <ContributorItem\n key={value}\n value={value}\n isSelected={selectedValues?.includes(value)}\n onClick={() => handleClick(value)}\n />\n ))}\n </div>\n );\n};\n\nexport default ContributorsPanel;\n","import {useMemo} from 'react';\nimport {isNil, pipe, slice, find, curry, drop} from 'ramda';\nimport {HistoryChange} from '@reltio/mdm-sdk';\nimport {HistoryChangeTypes, HistoryLife, HistoryRowData} from './../types';\n\ntype Props = {\n entityUri: string;\n historyChanges: HistoryChange[];\n selectedUris: string[];\n};\n\nexport const useHistoryTree = ({entityUri, historyChanges, selectedUris}: Props) => {\n return useMemo(() => {\n const historyLanes = {[entityUri]: {index: 0, lifeTime: []}};\n const rows = [{user: '', timestamp: 0, uri: entityUri}] as HistoryRowData[];\n\n const checkChange = curry((involvedUris: string | any[], checkInUris: boolean, change: HistoryChange) => {\n const uri = change.uri || entityUri;\n if (involvedUris) {\n if (Array.isArray(involvedUris)) {\n if (change.type !== HistoryChangeTypes.ENTITY_LOST_MERGE) return null;\n if (involvedUris.includes(uri)) {\n return change;\n } else if (checkInUris && change.uris) {\n return involvedUris.some((involvedUri) => change.uris.includes(involvedUri)) ? change : null;\n }\n } else {\n if (uri === involvedUris || (checkInUris && change.uris?.includes(involvedUris))) return change;\n }\n }\n\n return null;\n });\n\n const findNextChange = (index: number, involvedUris: string | any[], checkInUris: boolean) =>\n pipe(drop(index + 1), find(checkChange(involvedUris, checkInUris)))(historyChanges);\n\n const findPreviousChange = (index: number, uri: string) =>\n pipe(slice(index + 1, Infinity), find(checkChange(uri, false)))(rows);\n\n const checkLaneUri = (uri: string) => {\n if (!historyLanes[uri] && (!selectedUris || selectedUris.includes(uri))) {\n historyLanes[uri] = {\n index: Object.keys(historyLanes).length,\n lifeTime: []\n };\n }\n return historyLanes[uri];\n };\n\n const startNewLife = (lifeTime: HistoryLife[], change: HistoryChange) => {\n const currentLife = lifeTime[lifeTime.length - 1];\n if (\n currentLife &&\n (!currentLife.start ||\n (currentLife.start.type === HistoryChangeTypes.ENTITY_CREATED &&\n change.type === HistoryChangeTypes.ENTITIES_SPLITTED))\n ) {\n currentLife.start = change;\n return;\n }\n lifeTime.push({start: change, end: null});\n };\n\n const updateLife = (lifeTime: HistoryLife[], change: HistoryChange) => {\n let shouldAddNewLife = true;\n if (lifeTime.length) {\n const currentLife = lifeTime[lifeTime.length - 1];\n shouldAddNewLife = !(\n (!currentLife.start || currentLife.start.timestamp < change.timestamp) &&\n (!currentLife.end || currentLife.end.timestamp > change.timestamp)\n );\n }\n if (shouldAddNewLife) {\n lifeTime.push({start: null, end: null});\n }\n };\n\n const endLife = (lifeTime: HistoryLife[], change: HistoryChange) => {\n if (lifeTime.length) {\n const currentLife = lifeTime[lifeTime.length - 1];\n if (!currentLife.start) currentLife.start = change;\n }\n lifeTime.push({start: null, end: change});\n };\n\n const checkLifeTime = (lifeTime: HistoryLife[], change: HistoryChange) => {\n switch (change.type) {\n case HistoryChangeTypes.ENTITY_CREATED:\n startNewLife(lifeTime, change);\n break;\n case HistoryChangeTypes.ENTITIES_MERGED_ON_THE_FLY:\n case HistoryChangeTypes.ENTITY_CHANGED:\n updateLife(lifeTime, change);\n break;\n case HistoryChangeTypes.ENTITY_LOST_MERGE:\n case HistoryChangeTypes.ENTITY_REMOVED:\n endLife(lifeTime, change);\n break;\n case HistoryChangeTypes.ENTITIES_SPLITTED:\n updateLife(lifeTime, change);\n change.uris?.forEach((uri) => {\n const relatedLane = historyLanes[uri];\n if (!relatedLane) return;\n const lifeTimeLength = relatedLane.lifeTime.length;\n lifeTimeLength\n ? startNewLife(relatedLane.lifeTime, change)\n : endLife(relatedLane.lifeTime, change);\n\n rows.push({\n uri,\n user: change.user,\n type: change.type,\n fakeType: lifeTimeLength\n ? HistoryChangeTypes.FAKE_UPDATE\n : HistoryChangeTypes.FAKE_NAVIGATE_PROFILE,\n timestamp: change.timestamp\n });\n });\n break;\n case HistoryChangeTypes.ENTITIES_MERGED:\n case HistoryChangeTypes.ENTITIES_MERGED_MANUALLY:\n updateLife(lifeTime, change);\n change.uris?.forEach((uri) => {\n const relatedLane = historyLanes[uri];\n if (relatedLane) endLife(relatedLane.lifeTime, change);\n });\n break;\n }\n };\n\n const postProcessChanges: HistoryChange[] = [];\n historyChanges?.forEach((change, index) => {\n switch (change.type) {\n case HistoryChangeTypes.ENTITIES_SPLITTED:\n if (!findNextChange(index, change.uri || entityUri, false)) {\n return;\n } else {\n const uri = change.uri;\n const involvedUris = change.uris ? [change.uris, uri] : [uri];\n const lostMergeChange = findNextChange(index, involvedUris, true);\n if (lostMergeChange && (!uri || uri === lostMergeChange.uri)) return;\n }\n break;\n case HistoryChangeTypes.ENTITY_LOST_MERGE:\n case HistoryChangeTypes.RELATIONSHIP_CREATED:\n case HistoryChangeTypes.RELATIONSHIP_REMOVED:\n case HistoryChangeTypes.RELATIONSHIP_CHANGED:\n return;\n }\n\n let addPostProcess = false;\n change.uris?.forEach((uri) => {\n if (!checkLaneUri(uri)) addPostProcess = true;\n });\n\n const contributorLane = checkLaneUri(change.uri || entityUri);\n if (!contributorLane) return;\n const rowChange = {...change};\n checkLifeTime(contributorLane.lifeTime, rowChange);\n if (addPostProcess) postProcessChanges.push(rowChange);\n rows.push(rowChange);\n });\n\n postProcessChanges.forEach((postChange) => {\n postChange.uris.forEach((postUri) => {\n if (historyLanes[postUri]) return;\n historyChanges.forEach(({uri, uris, timestamp, user, type}) => {\n if (uri !== postUri) return;\n uris?.forEach((contributorUri) => {\n const contributorLane = historyLanes[contributorUri];\n if (!contributorLane) return;\n let fakeType = null;\n switch (type) {\n case HistoryChangeTypes.ENTITIES_MERGED:\n case HistoryChangeTypes.ENTITIES_MERGED_MANUALLY:\n fakeType = HistoryChangeTypes.FAKE_FILTERED_INCOMING;\n break;\n case HistoryChangeTypes.ENTITIES_SPLITTED:\n fakeType = HistoryChangeTypes.FAKE_FILTERED_OUTGOING;\n break;\n default:\n return;\n }\n\n const fakeChange = {\n fakeType: fakeType,\n uri: postChange.uri,\n uris: [contributorUri],\n type,\n user,\n timestamp\n };\n\n const extendLife = findClosestLife(contributorLane.lifeTime, postChange.timestamp);\n if (fakeType === HistoryChangeTypes.FAKE_FILTERED_INCOMING) {\n if (!isNil(extendLife.endIndex)) {\n contributorLane.lifeTime[extendLife.endIndex].end = fakeChange;\n }\n } else {\n if (!isNil(extendLife.startIndex)) {\n contributorLane.lifeTime[extendLife.startIndex].start = fakeChange;\n }\n }\n rows.splice(rows.indexOf(postChange), 0, fakeChange);\n });\n });\n });\n });\n\n rows.forEach((row, i) => {\n row.index = i;\n row.uri = row.uri || entityUri;\n });\n\n return {\n historyData: {historyLanes, rows},\n findPreviousChange\n };\n }, [entityUri, historyChanges, selectedUris]);\n};\n\nconst findClosestLife = (lifeTime: HistoryLife[], timestamp: number) =>\n lifeTime.reduce(\n (acc, {start, end}, i) => {\n if (start) {\n const d = timestamp - start.timestamp;\n if (isNil(acc.startDistance) || (Math.abs(acc.startDistance) > Math.abs(d) && d > 0)) {\n acc.startIndex = i;\n acc.startDistance = d;\n }\n }\n if (end) {\n const d = timestamp - end.timestamp;\n if (isNil(acc.endDistance) || (Math.abs(acc.endDistance) > Math.abs(d) && d < 0)) {\n acc.endIndex = i;\n acc.endDistance = d;\n }\n }\n return acc;\n },\n {startIndex: null, endIndex: null, startDistance: null, endDistance: null}\n );\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n position: 'relative',\n height: '100%'\n },\n borderBottom: {\n borderBottom: '1px solid rgba(0, 0, 0, 0.12)'\n }\n});\n","import React, {memo, useEffect, useState} from 'react';\nimport {HistoryWithTotal} from '@reltio/mdm-sdk';\nimport HistoryTree from '../HistoryTree/HistoryTree';\nimport ContributorsPanel from '../ContributorsPanel/ContributorsPanel';\nimport {useHistoryTree} from '../hooks/useHistoryTree';\nimport {HistoryEvent} from '@reltio/mdm-module';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n isLoading: boolean;\n historyWithTotal: HistoryWithTotal;\n contributorsUris: string[];\n entityUri: string;\n historyEvent: HistoryEvent;\n canLoadMore: boolean;\n onLoadMore: () => void;\n};\n\nconst HistoryView = ({\n isLoading,\n historyWithTotal,\n contributorsUris,\n entityUri,\n canLoadMore,\n onLoadMore,\n historyEvent\n}: Props) => {\n const styles = useStyles();\n const [selectedUris, setSelectedUris] = useState<string[]>(null);\n\n useEffect(() => {\n setSelectedUris(contributorsUris);\n }, [contributorsUris]);\n\n const {historyData, findPreviousChange} = useHistoryTree({\n entityUri,\n historyChanges: historyWithTotal?.changes,\n selectedUris\n });\n\n return (\n <div className={styles.root}>\n <ContributorsPanel\n values={contributorsUris}\n selectedValues={selectedUris}\n onSelectValues={setSelectedUris}\n entityUri={entityUri}\n className={styles.borderBottom}\n />\n <HistoryTree\n historyData={historyData}\n isLoading={isLoading}\n onLoadMore={onLoadMore}\n canLoadMore={canLoadMore}\n entityUri={entityUri}\n historyEvent={historyEvent}\n findPreviousChange={findPreviousChange}\n />\n </div>\n );\n};\n\nexport default memo(HistoryView);\n","import {\n pipe,\n defaultTo,\n reject,\n map,\n join,\n cond,\n equals,\n append,\n concat,\n chain,\n evolve,\n values,\n over,\n lensProp\n} from 'ramda';\nimport {\n isEmptyValue,\n escapeQueryValue,\n wrapInBrackets,\n multiValueFilter,\n buildUserFilterClause,\n buildDateRangeFilterClause\n} from '@reltio/mdm-sdk';\nimport {HistoryActivityType} from '../types/HistoryFilter';\nimport {ActivityTypes} from '../../activityLog/types/ActivityTypes';\nimport {AttributeOption} from '../../../types';\n\nconst convertHistoryTypes = chain(\n cond([\n [\n equals(HistoryActivityType.MERGE),\n () => [\n ActivityTypes.ENTITIES_MERGED,\n ActivityTypes.ENTITIES_MERGED_MANUALLY,\n ActivityTypes.ENTITIES_MERGED_ON_THE_FLY\n ]\n ],\n [equals(HistoryActivityType.UNMERGE), () => [ActivityTypes.ENTITIES_SPLITTED]],\n [equals(HistoryActivityType.UPDATE), () => [ActivityTypes.ENTITY_CHANGED]]\n ])\n);\n\nconst buildActivityFilterClause = pipe(\n defaultTo([]),\n convertHistoryTypes,\n concat([ActivityTypes.ENTITY_CREATED, ActivityTypes.ENTITY_REMOVED, ActivityTypes.ENTITY_LOST_MERGE]),\n multiValueFilter((value: string) => `equals(type, '${value}')`)\n);\n\nconst buildAttributeFilterClause = (attribute: AttributeOption) => `changes(${escapeQueryValue(attribute.value)})`;\n\nexport const buildHistoryFilterString = pipe(\n defaultTo({}),\n reject(isEmptyValue),\n evolve({\n users: multiValueFilter(buildUserFilterClause),\n attributes: multiValueFilter(buildAttributeFilterClause),\n dateRange: buildDateRangeFilterClause\n }),\n over(lensProp('activities'), buildActivityFilterClause),\n values,\n reject(isEmptyValue),\n append(\"not equals(user, 'collaboration-service')\"),\n map(wrapInBrackets),\n join(' and ')\n);\n","import {useState, useMemo, useCallback, useEffect} from 'react';\nimport {Entity, getHistoricUris, getHistoryWithTotal, HistoryWithTotal, isEmptyValue} from '@reltio/mdm-sdk';\nimport {difference, either, evolve, isEmpty, isNil, pipe, reject} from 'ramda';\nimport {HistoryActivityType, HistoryFilter} from '../types';\nimport {buildHistoryFilterString} from '../utils/filters';\nimport {useSafePromise} from '../../../hooks';\n\ntype Props = {\n entity: Entity;\n enabled: boolean;\n};\n\nconst MAX_HISTORY_ROWS = 32;\n\nexport const DEFAULT_HISTORY_FILTER: HistoryFilter = {\n activities: [HistoryActivityType.MERGE, HistoryActivityType.UNMERGE, HistoryActivityType.UPDATE]\n};\n\nexport const isDefaultFilter = (filter: HistoryFilter): boolean => {\n return pipe(\n evolve({activities: difference(DEFAULT_HISTORY_FILTER.activities)}),\n reject(either(isNil, isEmpty)),\n isEmpty\n )(filter || {});\n};\n\nexport const useHistory = ({entity, enabled}: Props) => {\n const [historyFilter, setHistoryFilter] = useState(DEFAULT_HISTORY_FILTER);\n const [historyPage, setHistoryPage] = useState(0);\n\n const historyFilterString = useMemo(() => buildHistoryFilterString(historyFilter), [historyFilter]);\n\n const [historicUris, setHistoricUris] = useState<string[]>(null);\n const [historyWithTotal, setHistoryWithTotal] = useState<HistoryWithTotal>(null);\n const [isLoading, setIsLoading] = useState(false);\n const safePromise = useSafePromise();\n const entityUri = entity?.uri;\n const options = {max: MAX_HISTORY_ROWS, order: 'desc'};\n const showAll = isEmptyValue(historyFilter?.attributes) || undefined;\n\n const loadHistoryWithTotal = () => {\n setIsLoading(true);\n return safePromise(\n getHistoryWithTotal({\n entityUri,\n historicUris,\n filter: historyFilterString,\n showAll,\n ...options\n })\n )\n .then(setHistoryWithTotal)\n .catch((e) => {\n console.warn('Failed to load history data', e);\n setHistoryWithTotal(null);\n })\n .finally(() => {\n setIsLoading(false);\n });\n };\n\n useEffect(() => {\n if (entityUri && enabled) {\n loadHistoryWithTotal();\n }\n }, [historyFilterString, showAll, historicUris]);\n\n const loadHistoricUris = () => {\n setIsLoading(true);\n return safePromise(getHistoricUris({entityUri}))\n .then((historicUris) => {\n setHistoricUris(historicUris);\n })\n .catch((e) => {\n console.warn('Failed to load history data', e);\n setHistoricUris(null);\n })\n .finally(() => {\n setIsLoading(false);\n });\n };\n\n useEffect(() => {\n if (entityUri && enabled) {\n loadHistoricUris();\n setHistoryPage(0);\n }\n }, [entityUri, entity?.updatedTime, enabled]);\n\n const loadMore = useCallback(\n (offset: number) => {\n if (entityUri && historicUris && enabled) {\n setIsLoading(true);\n safePromise(\n getHistoryWithTotal({\n entityUri,\n historicUris,\n filter: historyFilterString,\n showAll,\n offset,\n ...options\n })\n )\n .then((results) => {\n setHistoryWithTotal((prev) => ({...prev, changes: [...prev?.changes, ...results.changes]}));\n })\n .catch((e) => {\n console.warn('Failed to load history data', e);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }\n },\n [historicUris, historyFilterString, enabled]\n );\n\n const canLoadMore = useMemo(() => (historyPage + 1) * MAX_HISTORY_ROWS < historyWithTotal?.total, [\n historyWithTotal,\n historyPage\n ]);\n\n const onApplyFilter = useCallback((filter: HistoryFilter) => {\n setHistoryPage(0);\n setHistoryFilter(filter);\n }, []);\n\n const onClearFilter = useCallback(() => {\n onApplyFilter({...DEFAULT_HISTORY_FILTER});\n }, []);\n\n const onLoadMore = useCallback(() => {\n if (!canLoadMore) return;\n loadMore((historyPage + 1) * MAX_HISTORY_ROWS);\n setHistoryPage(historyPage + 1);\n }, [loadMore, historyPage, canLoadMore]);\n\n return {\n isLoading,\n canLoadMore,\n onLoadMore,\n onApplyFilter,\n onClearFilter,\n historicUris,\n historyWithTotal,\n historyFilter\n };\n};\n","import {useEffect, useState} from 'react';\nimport {isTempUri, isDataTenantEntity, Entity} from '@reltio/mdm-sdk';\n\ntype Props = {\n isHistoryTabActive: boolean;\n entity: Entity;\n};\n\nexport const useHistoryEnabled = ({isHistoryTabActive, entity}: Props) => {\n const [wasHistoryTabActive, setWasHistoryTabActive] = useState(false);\n const entityUri = entity?.uri;\n useEffect(() => {\n if (!isHistoryTabActive) {\n setWasHistoryTabActive(false);\n }\n }, [entityUri]);\n\n useEffect(() => {\n if (isHistoryTabActive) {\n setWasHistoryTabActive(true);\n }\n }, [isHistoryTabActive]);\n\n const isProfilePersisted = entityUri && !isTempUri(entityUri) && !isDataTenantEntity(entity);\n const isHistoryEnabled = wasHistoryTabActive && isProfilePersisted;\n\n return {isHistoryEnabled, isProfilePersisted};\n};\n","import {useState, useEffect} from 'react';\nimport {useSelector, useDispatch} from 'react-redux';\nimport mdmModule, {HistoryEvent, profile} from '@reltio/mdm-module';\nimport {Entity, getEntityTimeSlice} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '../../../hooks';\n\ntype Props = {\n entity: Entity;\n historyEvent: HistoryEvent;\n};\n\nexport const useHistorySlice = ({entity, historyEvent}: Props) => {\n const [isLoading, setIsLoading] = useState(false);\n const historySlice = useSelector(mdmModule.selectors.getHistorySlice);\n const dispatch = useDispatch();\n const safePromise = useSafePromise();\n\n const {aStamp, bStamp, overrideUri} = historyEvent || {};\n const entityUri = overrideUri || entity?.uri;\n\n useEffect(() => {\n if (historyEvent && entityUri) {\n setIsLoading(true);\n safePromise(\n Promise.all([\n getEntityTimeSlice(entityUri, aStamp),\n bStamp && bStamp !== 1 ? getEntityTimeSlice(entityUri, bStamp) : Promise.resolve(null)\n ])\n )\n .then(([aEntity, bEntity]) => {\n dispatch(profile.history.actions.setHistorySlice({aEntity, bEntity}));\n })\n .catch((e) => {\n console.warn('Failed to load entity slice', e);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }\n }, [aStamp, bStamp, entityUri]);\n\n return {isLoading, historySlice};\n};\n","import {ActivityTypes} from '../../activityLog/types/ActivityTypes';\n\nenum FakeTypes {\n FAKE_NAVIGATE_PROFILE = 'FAKE_NAVIGATE_PROFILE',\n FAKE_FILTERED_INCOMING = 'FAKE_FILTERED_INCOMING',\n FAKE_FILTERED_OUTGOING = 'FAKE_FILTERED_OUTGOING',\n FAKE_UPDATE = 'FAKE_UPDATE'\n}\n\nexport const HistoryChangeTypes = {...ActivityTypes, ...FakeTypes};\nexport type HistoryChangeTypes = typeof HistoryChangeTypes;\n","import {DateRangeFilter} from '@reltio/mdm-sdk';\nimport {AttributeOption} from '../../../types';\n\nexport enum HistoryActivityType {\n UPDATE = 'UPDATE',\n MERGE = 'MERGE',\n UNMERGE = 'UNMERGE'\n}\n\nexport type HistoryFilter = {\n dateRange?: DateRangeFilter;\n users?: string[];\n activities?: HistoryActivityType[];\n attributes?: AttributeOption[];\n};\n","import React, {useCallback, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {Portal as Portal} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport Snackbar, {SnackbarOrigin} from '@material-ui/core/Snackbar';\n\ntype SnackbarOptions = {\n anchorOrigin?: SnackbarOrigin;\n showDismiss?: boolean;\n};\nconst FIVE_MINUTES = 5 * 60 * 1000;\nexport const useSnackbar = (options: SnackbarOptions = {}) => {\n const {anchorOrigin, showDismiss} = options;\n const [isOpenSnackbar, setIsOpenSnackbar] = useState(false);\n const [snackbarMessage, setSnackbarMessage] = useState('');\n\n const closeSnackbar = useCallback(() => {\n setIsOpenSnackbar(false);\n setSnackbarMessage('');\n }, []);\n\n const showSnackbarMessage = useCallback((message) => {\n setIsOpenSnackbar(true);\n setSnackbarMessage(message);\n }, []);\n\n const SnackbarRenderer = useCallback(() => {\n return (\n <Portal container={document.body}>\n <Snackbar\n open={isOpenSnackbar}\n anchorOrigin={anchorOrigin}\n autoHideDuration={FIVE_MINUTES}\n onClose={closeSnackbar}\n message={snackbarMessage}\n action={\n showDismiss ? (\n <Button color=\"primary\" onClick={closeSnackbar}>\n {i18n.text('Dismiss')}\n </Button>\n ) : undefined\n }\n />\n </Portal>\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isOpenSnackbar, closeSnackbar, snackbarMessage]);\n\n return {SnackbarRenderer, showSnackbarMessage};\n};\n"],"names":["customStyles","input","currentStyles","fontSize","menuPortal","zIndex","useStyles","makeStyles","root","flex","title","paddingBottom","paddingLeft","dropDownInput","width","justifyContent","backgroundColor","borderTop","option","height","noOptionsMessage","entityType","selectedAttributes","className","onChange","disableUnderline","menuPlacement","metadata","useSelector","mdmModule","styles","prepareItems","useCallback","data","level","prevLabel","reduce","acc","item","hidden","chipLabel","label","push","value","uri","attrType","subAttributes","getAttributeTypeSubAttributes","concat","options","useMemo","attributes","classnames","Typography","variant","i18n","MultiSelect","TextFieldProps","InputProps","classes","components","DropdownIndicator","DropdownIndicatorWithIconButton","MultiValue","props","Option","isFocused","isSelected","innerProps","AttributeListItem","checked","labelInText","pipe","defaultTo","menuPortalTarget","document","body","viewBox","xmlns","d","fill","fillRule","stroke","strokeWidth","opacity","ColumnsSettings","columnsData","selectedColumns","onChangeColumns","tooltipTitle","anchorEl","setAnchorEl","useState","handleColumnClick","column","changedColumns","getChildColumns","pluck","wasSelected","isColumnSelected","difference","uniq","SmallIconButton","size","icon","TableIcon","onClick","event","currentTarget","ColumnsSettingsPopup","onColumnClick","onClose","propTypes","ColumnsDataType","PropTypes","popup","minWidth","groupItem","ColumnListItem","style","isGroupItem","hideCheckBox","key","id","Highlighter","text","highlight","filterText","hideIcon","setFilterText","groupedItems","buildColumnItems","items","flattenGroupedItemsData","containerWidth","getMaxItemWidth","handleSearchOnEnter","focusIndex","handleKeyDown","useKeyboardNavigation","open","onSelectFocusedItem","selectedItems","handleClose","listHeight","Math","min","length","containerHeight","max","SelectionPopup","onSearch","searchInputOnKeyDown","VirtualGroupedList","fixedTitle","renderItem","index","isGroupColumn","getItemSize","groupId","isParentToColumn","curry","parent","startsWith","isGroupToColumn","group","isHideableColumn","propOr","addColumn","columns","find","either","getColumnRoot","children","filterColumnsByLabel","utils","some","buildColumnsTrees","columnData","dataTypeDefinition","buildFilteredColumnItems","filter","chain","isGroupedColumnsData","has","flattenGroupedColumnsData","map","assoc","when","childColumns","includes","every","display","paddingRight","inputNumber","marginRight","inputUnit","periods","interval","unit","onFocus","onNumberChange","getValue","parseInt","newValue","onUnitChange","newUnit","TextField","type","inputProps","SimpleDropDownSelector","placeholder","capitalize","getIntervalUnitLabel","withMuiSkin","CreatableSelect","innerRef","selectProps","MenuItem","classNames","ref","selected","component","Checkbox","color","ExpandedValueTooltip","onMouseMove","onMouseOver","tabIndex","isRequired","current","theme","top","left","undefined","fontWeight","clearIndicator","padding","spacing","margin","dropdownIndicator","creatable","getOptions","loadingIndicator","componentsProp","classesProp","stylesProp","onChangeProp","onInputChange","onInputChangeProp","reactSelectProps","SelectComponent","AsyncSelect","Select","inputValue","setInputValue","multiSelectClasses","omit","inputId","multiSelectComponents","mergeClasses","indicatorSeparator","base","loadingMessage","fontFamily","labelProps","InputLabelProps","htmlFor","shrink","isMulti","actionMeta","action","closeMenuOnSelect","hideSelectedOptions","loadOptions","defaultProps","cacheOptions","defaultOptions","ClearIndicator","Control","DownChevron","CrossIcon","Group","GroupHeading","IndicatorsContainer","IndicatorSeparator","Input","LoadingIndicator","Menu","MenuList","MenuPortal","LoadingMessage","NoOptionsMessage","MultiValueContainer","MultiValueLabel","MultiValueRemove","Placeholder","SelectContainer","SingleValue","ValueContainer","control","valueContainer","multiValue","singleValue","menu","container","groupHeading","indicatorsContainer","menuList","multiValueLabel","multiValueRemove","getOptionValue","isSearchable","inputRef","cx","cy","r","fillOpacity","maskType","maskUnits","x","y","mask","clipRule","x1","y1","x2","y2","gradientUnits","stopColor","stopOpacity","offset","flexWrap","flexDirection","alignItems","overflow","minHeight","boxSizing","logo","textBox","maxWidth","marginTop","palette","primary","lineHeight","textAlign","secondaryText","letterSpacing","paddingTop","IconRenderer","AttributesListIcon","selectedUsers","valueToOption","prepareValues","values","tenant","servicesPath","cachedRequest","useRef","getAllUsersForTenant","then","users","username","filterUsers","ActivityTypes","getItemDataType","path","getActivityType","activity","firstItem","removeIgnoredItems","isImplementedItem","isValidActivityType","filteredItems","console","error","reject","itemsTotal","splitActivityByType","groupBy","ifElse","stringifyDeltaValue","deltaValue","attributeTypeUri","attributePresentations","attributeType","findAttributeTypeByUri","getAttrDataTypeDefinition","formatValue","formatDataTypeValue","isNil","Object","entries","flatMap","attributeTypeName","deltaValues","makeAttrTypeUri","join","getActivityLabel","transition","inputRoot","dateOptionLabel","paper","localeFormat","moment","longDateFormat","noop","setOpen","handleToggle","onCancel","fullWidth","DataTypes","endAdornment","menuIsOpen","readOnly","autoFocus","anchorOrigin","vertical","horizontal","transformOrigin","elevation","getContentAnchorEl","MenuListProps","autoFocusItem","DateRangePicker","onApply","dateRangeTypeOptions","DateRangeTypes","getDateRangeTypeLabel","intervalContainer","typeInput","emptyDates","emptyInterval","isIntervalType","isBetweenType","initDatesInterval","period","initInterval","datesInterval","setDatesInterval","setInterval","selectedType","getCurrentPeriodByType","changePeriod","useDidUpdateEffect","DateIntervalSelector","CustomDateRangeEditor","historyActivityOptions","HistoryActivityType","overflowY","selectedHistoryActivityTypes","filterContainer","filterContainerScrollable","filterItem","filterControls","clearButton","onApplyFilter","buttonRef","isOpen","setIsOpen","currentValue","setCurrentValue","activities","dateRange","buttonColor","isDefaultFilter","useEffect","handlePropChange","propName","filterValue","togglePopup","applyButtonHandler","isDateRangeValid","dissoc","clearAllButtonHandler","DEFAULT_HISTORY_FILTER","FilterListIcon","Popover","UserSelector","AttributeSelector","Button","menuItem","menuText","marginLeft","checkIcon","position","MenuItemRenderer","forwardRef","onMenuClose","e","Check","displayName","mode","dispatch","useDispatch","handleModeChange","selectedMode","profile","menuItems","HistoryMode","DropDownMenuButton","buttonComponent","buttonProps","MoreVertIcon","menuId","divider","count","filterButton","total","Divider","orientation","flexItem","Spacer","historyRow","cursor","background","content","rowHeader","badge","pointerEvents","textOverflow","whiteSpace","date","user","change","isCurrent","matchGroups","timestamp","getContributorColor","bold","isFakeHistoryType","HistoryChangeTypes","toX","toY","isDashed","lineData","isUp","isLeft","curveCenterY","getHistoryLinkCurve","strokeDasharray","isCollapsed","showCollapseIcon","showLine","otherProps","radius","BUMP_RADIUS","LINE_MARGIN","HistoryCircleWithTooltip","withTooltip","HistoryCircle","memo","graphData","onHistoryCircleMouseOver","historyLanes","rows","rowPositions","links","rowLines","circles","i","uris","fakeType","hasFakeType","circleUri","tooltipPlacement","ROW_HEIGHT","isUpRight","forEach","contributorUri","contributorLane","rowHeight","keys","lifeTime","start","end","startIndex","endIndex","startY","endY","unshift","historyTree","gridTemplateColumns","graph","overflowX","history","buttonContainer","gridColumnStart","gridColumnEnd","shadow","boxShadow","historyData","isLoading","canLoadMore","onLoadMore","entityUri","historyEvent","findPreviousChange","isEditableMode","mdm","setGraphData","isScrollable","setIsScrollable","selectedIndex","setSelectedIndex","isCurrentEventChange","overrideUri","aStamp","selectedChangeByIndex","currentEventChangeIndex","findIndex","graphRef","rowsRef","node","childNodes","clientHeight","handleGraphScroll","scrollWidth","clientWidth","scrollLeft","LinearLoadIndicator","onScroll","time","select","getEntity","crosswalks","uniqBy","prop","cw","crosswalkType","getCrosswalkType","identity","prevGraphData","row","handleWidth","onResize","window","confirm","Mode","aChange","bChange","bStamp","handleHistoryRowClick","useContributorStyles","borderWidth","borderStyle","borderColor","borderRadius","active","inactive","clickable","selectedValues","onSelectValues","without","handleClick","findClosestLife","startDistance","abs","endDistance","borderBottom","historyWithTotal","contributorsUris","selectedUris","setSelectedUris","historyChanges","checkChange","involvedUris","checkInUris","Array","isArray","involvedUri","findNextChange","drop","checkLaneUri","startNewLife","currentLife","updateLife","shouldAddNewLife","endLife","postProcessChanges","lostMergeChange","addPostProcess","rowChange","relatedLane","lifeTimeLength","checkLifeTime","postChange","postUri","fakeChange","extendLife","splice","indexOf","slice","Infinity","useHistoryTree","changes","convertHistoryTypes","cond","equals","buildActivityFilterClause","multiValueFilter","buildHistoryFilterString","isEmptyValue","evolve","buildUserFilterClause","attribute","escapeQueryValue","buildDateRangeFilterClause","over","lensProp","append","wrapInBrackets","isEmpty","useHistory","entity","enabled","historyFilter","setHistoryFilter","historyPage","setHistoryPage","historyFilterString","historicUris","setHistoricUris","setHistoryWithTotal","setIsLoading","safePromise","useSafePromise","order","showAll","getHistoryWithTotal","catch","warn","finally","getHistoricUris","updatedTime","loadMore","results","prev","onClearFilter","useHistoryEnabled","isHistoryTabActive","wasHistoryTabActive","setWasHistoryTabActive","isProfilePersisted","isTempUri","isDataTenantEntity","isHistoryEnabled","useHistorySlice","historySlice","Promise","all","getEntityTimeSlice","resolve","aEntity","bEntity","FakeTypes","FIVE_MINUTES","useSnackbar","showDismiss","isOpenSnackbar","setIsOpenSnackbar","snackbarMessage","setSnackbarMessage","closeSnackbar","showSnackbarMessage","message","SnackbarRenderer","Portal","autoHideDuration"],"sourceRoot":""}
1
+ {"version":3,"file":"6233.js","mappings":"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","sources":["webpack://@reltio/remotes/../components/src/components/AttributeSelector/styles.ts","webpack://@reltio/remotes/../components/src/components/AttributeSelector/AttributeSelector.tsx","webpack://@reltio/remotes/../components/src/icons/Table.tsx","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTableHeader/ColumnsSettings/ColumnsSettings.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTableHeader/ColumnsSettings/styles.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTableHeader/ColumnsSettings/ColumnListItem.js","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTableHeader/ColumnsSettings/ColumnsSettingsPopup.tsx","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTableHeader/ColumnsSettings/columnHelpers.js","webpack://@reltio/remotes/../components/src/components/DateIntervalSelector/styles.ts","webpack://@reltio/remotes/../components/src/components/DateIntervalSelector/DateIntervalSelector.tsx","webpack://@reltio/remotes/../components/src/components/ReactSelect/CreatableSelect.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/components/Option.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/components/index.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/MultiSelect.js","webpack://@reltio/remotes/../components/src/components/ReactSelect/MultiSelect/index.js","webpack://@reltio/remotes/../components/src/icons/AttributesList.tsx","webpack://@reltio/remotes/../components/src/components/SidePanelEmptyState/styles.ts","webpack://@reltio/remotes/../components/src/components/SidePanelEmptyState/SidePanelEmptyState.tsx","webpack://@reltio/remotes/../components/src/components/Spacer/Spacer.js","webpack://@reltio/remotes/../components/src/components/UserSelector/styles.ts","webpack://@reltio/remotes/../components/src/components/UserSelector/UserSelector.tsx","webpack://@reltio/remotes/../components/src/components/activityLog/types/ActivityTypes.ts","webpack://@reltio/remotes/../components/src/components/activityLog/utils/activities.ts","webpack://@reltio/remotes/../components/src/components/editors/CustomDateRangeEditor/styles.ts","webpack://@reltio/remotes/../components/src/components/editors/CustomDateRangeEditor/CustomDateRangeEditor.tsx","webpack://@reltio/remotes/../components/src/components/history/DateRangeSelector/utils.ts","webpack://@reltio/remotes/../components/src/components/history/DateRangeSelector/styles.ts","webpack://@reltio/remotes/../components/src/components/history/DateRangeSelector/DateRangeSelector.tsx","webpack://@reltio/remotes/../components/src/components/history/HistoryActivitySelector/utils.ts","webpack://@reltio/remotes/../components/src/components/history/HistoryActivitySelector/styles.ts","webpack://@reltio/remotes/../components/src/components/history/HistoryActivitySelector/HistoryActivitySelector.tsx","webpack://@reltio/remotes/../components/src/components/history/HistoryFilterButton/styles.ts","webpack://@reltio/remotes/../components/src/components/history/HistoryFilterButton/HistoryFilterButton.tsx","webpack://@reltio/remotes/../components/src/components/history/HistoryMenuButton/styles.ts","webpack://@reltio/remotes/../components/src/components/history/HistoryMenuButton/MenuItemRenderer.tsx","webpack://@reltio/remotes/../components/src/components/history/HistoryMenuButton/HistoryMenuButton.tsx","webpack://@reltio/remotes/../components/src/components/history/HistoryHeader/styles.ts","webpack://@reltio/remotes/../components/src/components/history/HistoryHeader/HistoryHeader.tsx","webpack://@reltio/remotes/../components/src/components/history/HistoryPanelEmptyState/HistoryPanelEmptyState.tsx","webpack://@reltio/remotes/../components/src/components/history/HistoryRow/styles.ts","webpack://@reltio/remotes/../components/src/components/history/HistoryRow/HistoryRow.tsx","webpack://@reltio/remotes/../components/src/components/history/HistoryGraph/helpers.ts","webpack://@reltio/remotes/../components/src/components/history/HistoryGraph/HistoryLink.tsx","webpack://@reltio/remotes/../components/src/components/history/HistoryGraph/HistoryCircle.tsx","webpack://@reltio/remotes/../components/src/components/history/HistoryGraph/HistoryGraph.tsx","webpack://@reltio/remotes/../components/src/components/history/HistoryTree/styles.ts","webpack://@reltio/remotes/../components/src/components/history/HistoryTree/HistoryTree.tsx","webpack://@reltio/remotes/../components/src/components/history/ContributorsPanel/styles.ts","webpack://@reltio/remotes/../components/src/components/history/ContributorsPanel/ContributorItem.tsx","webpack://@reltio/remotes/../components/src/components/history/ContributorsPanel/ContributorsPanel.tsx","webpack://@reltio/remotes/../components/src/components/history/hooks/useHistoryTree.ts","webpack://@reltio/remotes/../components/src/components/history/HistoryView/styles.ts","webpack://@reltio/remotes/../components/src/components/history/HistoryView/HistoryView.tsx","webpack://@reltio/remotes/../components/src/components/history/utils/filters.ts","webpack://@reltio/remotes/../components/src/components/history/hooks/useHistory.ts","webpack://@reltio/remotes/../components/src/components/history/hooks/useHistoryEnabled.ts","webpack://@reltio/remotes/../components/src/components/history/hooks/useHistorySlice.ts","webpack://@reltio/remotes/../components/src/components/history/types/HistoryChangeTypes.ts","webpack://@reltio/remotes/../components/src/components/history/types/HistoryFilter.ts","webpack://@reltio/remotes/../components/src/hooks/useSnackbar.tsx"],"sourcesContent":["import {makeStyles} from '@material-ui/core/styles';\n\nexport const customStyles = {\n input: (currentStyles) => ({...currentStyles, fontSize: '14px'}),\n menuPortal: (currentStyles) => ({...currentStyles, zIndex: 1300})\n};\n\nexport const useStyles = makeStyles({\n root: {\n flex: 1\n },\n title: {\n paddingBottom: '10px',\n paddingLeft: '5px',\n fontSize: '14px'\n },\n dropDownInput: {\n width: '100%',\n justifyContent: 'center',\n backgroundColor: 'rgba(0, 0, 0, 0.03)',\n borderTop: '4px'\n },\n option: {\n fontSize: '14px',\n height: '32px'\n },\n noOptionsMessage: {\n fontSize: '14px'\n }\n});\n","import React, {useCallback, useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {pipe, defaultTo} from 'ramda';\nimport {useSelector} from 'react-redux';\nimport {AttributeOption} from '../../types';\nimport mdmModule from '@reltio/mdm-module';\nimport {MultiValueProps, OptionProps} from 'react-select';\nimport {AttributeType, getAttributeTypeSubAttributes, Metadata, TEntityType} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport MultiSelect from '../ReactSelect/MultiSelect';\nimport MultiValue from '../ReactSelect/commonComponents/MultiValue';\nimport DropdownIndicatorWithIconButton from '../commonReactSelectComponents/DropdownIndicatorWithIconButton';\nimport AttributeListItem from '../AttributeListItem/AttributeListItem';\nimport {customStyles, useStyles} from './styles';\n\ntype Props = {\n entityType: TEntityType;\n selectedAttributes: AttributeOption[];\n className?: string;\n onChange?: (attributes: AttributeOption[]) => void;\n title?: string;\n disableUnderline?: boolean;\n menuPlacement?: string;\n};\n\nconst AttributeSelector = ({\n entityType,\n selectedAttributes,\n className,\n onChange,\n title,\n disableUnderline,\n menuPlacement = 'bottom'\n}: Props) => {\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const styles = useStyles();\n\n const prepareItems = useCallback(\n (data: AttributeType[], level = 0, prevLabel = ''): AttributeOption[] => {\n return data.reduce((acc, item) => {\n if (item.hidden) return acc;\n const chipLabel = `${prevLabel && prevLabel + ' / '}${item.label}`;\n acc.push({\n label: item.label,\n value: item.uri,\n attrType: item,\n chipLabel,\n level\n });\n const subAttributes = getAttributeTypeSubAttributes(metadata, item);\n return acc.concat(subAttributes ? prepareItems(subAttributes, level + 1, chipLabel) : []);\n }, []);\n },\n [metadata]\n );\n\n const options = useMemo(() => prepareItems(entityType?.attributes || []), [entityType, prepareItems]);\n\n const CustomOption = ({isFocused, isSelected, data, label, innerProps}: OptionProps<AttributeOption, true>) => (\n <div {...innerProps}>\n <AttributeListItem\n checked={isSelected}\n level={data.level}\n data={data}\n label={label}\n labelInText={label}\n isFocused={isFocused}\n />\n </div>\n );\n\n const CustomMultiValue = ({data, ...props}: MultiValueProps<AttributeOption>) => (\n <MultiValue {...props}>{data.chipLabel}</MultiValue>\n );\n\n return (\n <div className={classnames(styles.root, className)}>\n <Typography className={styles.title} variant={'subtitle1'}>\n {title || i18n.text('Attribute')}\n </Typography>\n <MultiSelect\n value={selectedAttributes}\n options={options}\n TextFieldProps={{\n InputProps: {disableUnderline},\n classes: {root: styles.dropDownInput}\n }}\n components={{\n DropdownIndicator: DropdownIndicatorWithIconButton,\n MultiValue: CustomMultiValue,\n Option: CustomOption\n }}\n onChange={pipe(defaultTo([]), onChange)}\n styles={customStyles}\n classes={styles}\n menuPlacement={menuPlacement}\n menuPortalTarget={document.body}\n />\n </div>\n );\n};\n\nexport default AttributeSelector;\n","import React from 'react';\n\nconst SvgTable: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={20} height={18} viewBox=\"0 0 20 18\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"M16 7.24V6h-4v1.24a8.417 8.417 0 00-2 .768V6H6v6h.29a8.497 8.497 0 00-.15.358l-.29.733.29.733.07.176H2c-1.1 0-2-.9-2-2V2C0 .9.9 0 2 0h14c1.1 0 2 .9 2 2v6.008a8.417 8.417 0 00-2-.768zM4 12V6H2v6h2zm0-8V2H2v2h2zm6 0V2H6v2h4zm6 0V2h-4v2h4zm-2 5a6.451 6.451 0 00-6 4.09 6.451 6.451 0 006 4.092 6.451 6.451 0 006-4.091A6.451 6.451 0 0014 9zm0 6.818a2.728 2.728 0 010-5.454 2.728 2.728 0 010 5.454zm0-4.363c-.905 0-1.636.73-1.636 1.636 0 .905.73 1.636 1.636 1.636.905 0 1.636-.73 1.636-1.636 0-.906-.73-1.636-1.636-1.636z\"\n fill=\"#000\"\n fillRule=\"nonzero\"\n stroke=\"none\"\n strokeWidth={1}\n opacity={0.54}\n />\n </svg>\n );\n};\n\nexport default SvgTable;\n","import React, {useCallback, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {ColumnsDataType} from '../../../../constants';\nimport TableIcon from '../../../../icons/Table';\nimport {SmallIconButtonWithTooltip} from '../../../SmallIconButton';\nimport {pipe, uniq, pluck, difference, concat} from 'ramda';\n\nimport {ColumnsSettingsPopup} from './ColumnsSettingsPopup';\n\nimport i18n from 'ui-i18n';\nimport {getChildColumns, isColumnSelected} from './columnHelpers';\n\nconst ColumnsSettings = ({columnsData, selectedColumns, onChangeColumns, title, tooltipTitle}) => {\n const [anchorEl, setAnchorEl] = useState(null);\n const openPopup = (event) => setAnchorEl(event.currentTarget);\n const closePopup = () => setAnchorEl(null);\n const handleColumnClick = useCallback(\n (column) => {\n const changedColumns = pipe(getChildColumns, pluck('id'))(column);\n const wasSelected = isColumnSelected(selectedColumns, column);\n onChangeColumns(\n wasSelected\n ? difference(selectedColumns, changedColumns)\n : uniq(concat(selectedColumns, changedColumns))\n );\n },\n [selectedColumns, onChangeColumns]\n );\n return (\n <>\n <SmallIconButtonWithTooltip\n tooltipTitle={tooltipTitle || i18n.text('Show/hide columns')}\n size=\"L\"\n icon={TableIcon}\n onClick={openPopup}\n />\n <ColumnsSettingsPopup\n onColumnClick={handleColumnClick}\n anchorEl={anchorEl}\n columnsData={columnsData}\n onClose={closePopup}\n title={title}\n selectedColumns={selectedColumns}\n />\n </>\n );\n};\n\nColumnsSettings.propTypes = {\n columnsData: ColumnsDataType,\n selectedColumns: PropTypes.arrayOf(PropTypes.string),\n onChangeColumns: PropTypes.func,\n title: PropTypes.string,\n tooltipTitle: PropTypes.string\n};\n\nexport default ColumnsSettings;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n popup: {\n minWidth: '200px'\n },\n groupItem: {\n backgroundColor: 'rgba(0,0,0,0.04)'\n }\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport AttributeListItem from '../../../AttributeListItem/AttributeListItem';\nimport Highlighter from '../../../Highlighter/Highlighter';\n\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\nconst ColumnListItem = ({item, onClick, checked, level, style, isFocused, isGroupItem, hideCheckBox}) => {\n const styles = useStyles();\n return (\n <AttributeListItem\n hideCheckBox={hideCheckBox}\n key={item.id}\n onClick={onClick}\n checked={checked}\n level={level}\n data={item}\n label={<Highlighter text={item.label} highlight={item.filterText} />}\n labelInText={item.label}\n style={style}\n isFocused={isFocused}\n hideIcon={isGroupItem}\n className={classnames({[styles.groupItem]: isGroupItem})}\n />\n );\n};\n\nColumnListItem.propTypes = {\n item: PropTypes.shape({\n label: PropTypes.string,\n filterText: PropTypes.string\n }),\n level: PropTypes.number,\n onClick: PropTypes.func,\n checked: PropTypes.bool,\n style: PropTypes.object,\n isGroupItem: PropTypes.bool,\n isFocused: PropTypes.bool,\n hideCheckBox: PropTypes.bool\n};\n\nexport default ColumnListItem;\n","import React, {useState, useMemo, useCallback} from 'react';\nimport i18n from 'ui-i18n';\nimport {pipe} from 'ramda';\n\nimport {getMaxItemWidth, DataTypeDefinition} from '@reltio/mdm-sdk';\n\nimport VirtualGroupedList from '../../../VirtualGroupedList/VirtualGroupedList';\nimport SelectionPopup from '../../../SelectionPopup/SelectionPopup';\nimport {buildColumnItems, isColumnSelected, isGroupColumn} from './columnHelpers';\nimport {flattenGroupedItemsData} from '../../../VirtualGroupedList/helpers';\nimport {useKeyboardNavigation} from '../../../SelectionPopup/helpers';\nimport ColumnListItem from './ColumnListItem';\n\nimport {useStyles} from './styles';\nimport {ListItemProps} from '@material-ui/core/ListItem';\n\ntype Column = {\n id: string;\n label: string;\n};\n\ntype GroupedColumnData =\n | {\n id: string;\n label: string;\n columns: Column[];\n }\n | Column;\n\ntype GroupedColumnList = {\n id: string;\n groupId: string;\n label: string;\n attrType: DataTypeDefinition;\n};\n\ntype Props = {\n anchorEl: HTMLElement;\n onClose: () => void;\n title?: string;\n columnsData: GroupedColumnData[];\n onColumnClick: (column: {id: string}) => void;\n selectedColumns: string[];\n hideCheckBox?: boolean;\n};\n\nconst ITEM_HEIGHT = 32;\nconst MAX_LIST_CONTAINER_HEIGHT = 300;\nconst DEFAULT_MIN_CONTAINER_WIDTH = 308;\nconst CONTAINER_HEADER_HEIGHT = 108;\nconst MIN_CONTAINER_HEIGHT = 140;\n\nexport const ColumnsSettingsPopup = ({\n anchorEl,\n onClose,\n title,\n columnsData,\n onColumnClick,\n selectedColumns,\n hideCheckBox\n}: Props) => {\n const styles = useStyles();\n const [filterText, setFilterText] = useState('');\n const clearFilter = () => setFilterText('');\n const groupedItems = useMemo(() => buildColumnItems(columnsData, filterText), [columnsData, filterText]);\n\n const items = useMemo(() => flattenGroupedItemsData(groupedItems), [groupedItems]);\n const containerWidth: number = getMaxItemWidth('label')(groupedItems) || DEFAULT_MIN_CONTAINER_WIDTH;\n\n const handleSearchOnEnter = useCallback(\n ({item}: {item: {id: string}; groupData: {item: {id: string}}}) => onColumnClick(item),\n [onColumnClick]\n );\n\n const {focusIndex, handleKeyDown} = useKeyboardNavigation({\n items,\n open: true,\n onSelectFocusedItem: handleSearchOnEnter,\n selectedItems: selectedColumns,\n onClose\n });\n const handleClose = useCallback(pipe(onClose, clearFilter), [onClose]);\n\n const renderColumnItem = (\n style: ListItemProps['style'],\n {item, level = 0}: {item: GroupedColumnList; level?: number},\n index: number\n ) => {\n return (\n <ColumnListItem\n hideCheckBox={hideCheckBox}\n style={style}\n item={item}\n level={level}\n isFocused={focusIndex === index}\n checked={isColumnSelected(selectedColumns, item)}\n isGroupItem={isGroupColumn(item)}\n onClick={hideCheckBox ? pipe(onColumnClick, handleClose) : onColumnClick}\n />\n );\n };\n\n const listHeight = Math.min(MAX_LIST_CONTAINER_HEIGHT, ITEM_HEIGHT * items.length);\n const containerHeight = Math.max(MIN_CONTAINER_HEIGHT, listHeight + CONTAINER_HEADER_HEIGHT);\n\n return (\n <SelectionPopup\n className={styles.popup}\n open={!!anchorEl}\n anchorEl={anchorEl}\n onClose={handleClose}\n onSearch={setFilterText}\n title={title || i18n.text('Show/hide columns')}\n containerWidth={containerWidth}\n containerHeight={containerHeight}\n searchInputOnKeyDown={handleKeyDown}\n >\n <VirtualGroupedList\n fixedTitle={false}\n height={listHeight}\n renderItem={renderColumnItem}\n items={items}\n getItemSize={() => ITEM_HEIGHT}\n focusIndex={focusIndex}\n />\n </SelectionPopup>\n );\n};\n","import {assoc, chain, curry, either, filter, has, pipe, propOr, reduce, when} from 'ramda';\nimport {utils} from '@reltio/mdm-sdk';\n\nconst isGroupColumn = (column) => column.id === column.groupId;\nconst isParentToColumn = curry(\n ({id, groupId}, parent) => parent.groupId === groupId && (id === parent.id || id.startsWith(`${parent.id}.`))\n);\nconst isGroupToColumn = curry(({groupId}, group) => groupId === group.id);\nconst isHideableColumn = propOr(true, 'hideable');\n\nconst getColumnRoot = (columns, column) => columns.find(either(isGroupToColumn(column), isParentToColumn(column)));\n\nconst addColumn = (columns, column) => {\n const root = getColumnRoot(columns, column);\n if (root) {\n root.children = addColumn(root.children || [], column);\n return columns;\n } else {\n return columns.concat(column);\n }\n};\n\nconst filterColumnsByLabel = curry(\n (filterText, column) =>\n utils.strings.search(column.label, filterText) || (column.children || []).some(filterColumnsByLabel(filterText))\n);\n\nconst buildColumnsTrees = reduce(\n (acc, columnData) =>\n addColumn(acc, {\n id: columnData.id,\n groupId: columnData.groupId,\n label: columnData.label,\n attrType: columnData.dataTypeDefinition\n }),\n []\n);\n\nconst buildFilteredColumnItems = curry((filterText, columns, level = 0) =>\n pipe(\n filter(filterColumnsByLabel(filterText)),\n chain((column) => {\n const item = {\n item: {...column, filterText},\n level\n };\n const childrenItems = column.children\n ? buildFilteredColumnItems(filterText, column.children, level + 1)\n : [];\n return [item, ...childrenItems];\n })\n )(columns)\n);\n\nconst isGroupedColumnsData = has('columns');\nconst flattenGroupedColumnsData = ({id, label, columns}) => [\n {id, groupId: id, label},\n ...columns.map(assoc('groupId', id))\n];\n\nconst buildColumnItems = (columnsData, filterText) => {\n return pipe(\n chain(when(isGroupedColumnsData, flattenGroupedColumnsData)),\n filter(either(isGroupColumn, isHideableColumn)),\n buildColumnsTrees,\n buildFilteredColumnItems(filterText)\n )(columnsData);\n};\n\nconst getChildColumns = (column) => (column.children ? chain(getChildColumns, column.children) : [column]);\n\nconst isColumnSelected = (selectedColumns, column) => {\n const childColumns = getChildColumns(column);\n const isColumnSelected = (column) => selectedColumns.includes(column.id);\n return isGroupColumn(column) ? childColumns.every(isColumnSelected) : childColumns.some(isColumnSelected);\n};\n\nexport {buildColumnItems, getChildColumns, isGroupColumn, isColumnSelected};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n flex: 1\n },\n input: {\n height: '100%',\n paddingLeft: '12px',\n paddingRight: '8px',\n fontSize: '14px'\n },\n inputNumber: {\n minWidth: '60px',\n marginRight: 10,\n height: '100%',\n backgroundColor: 'rgba(0, 0, 0, 0.03)'\n },\n inputUnit: {\n width: '100%'\n }\n});\n","import React from 'react';\nimport {pipe} from 'ramda';\nimport {getIntervalUnitLabel} from '@reltio/mdm-sdk';\nimport capitalize from '@material-ui/core/utils/capitalize';\nimport {TextField as TextField} from '@material-ui/core';\nimport SimpleDropDownSelector from '../SimpleDropDownSelector/SimpleDropDownSelector';\nimport {getValue} from '../../core/utils';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n interval: [number, string];\n onChange: ([number, string]) => void;\n onFocus?: () => void;\n};\n\nconst periods = ['minutes', 'hours', 'days', 'weeks', 'months', 'years'];\n\nconst DateIntervalSelector = ({interval: [value, unit], onChange, onFocus}: Props) => {\n const styles = useStyles();\n const getIntervalFromValue = (newValue: number) => [newValue, unit];\n const getIntervalFromUnit = ({value: newUnit}: {value: string}) => [value, newUnit];\n const onNumberChange = pipe(getValue, parseInt, getIntervalFromValue, onChange);\n const onUnitChange = pipe(getIntervalFromUnit, onChange);\n return (\n <div className={styles.root}>\n <TextField\n type=\"number\"\n value={value || ''}\n onChange={onNumberChange}\n inputProps={{min: 1, onFocus: onFocus}}\n InputProps={{classes: {root: styles.input}}}\n className={styles.inputNumber}\n />\n <SimpleDropDownSelector\n label={''}\n placeholder={capitalize(unit)}\n className={styles.inputUnit}\n value={{value: unit, label: capitalize(getIntervalUnitLabel(unit))}}\n options={periods.map((value) => ({\n value,\n label: capitalize(getIntervalUnitLabel(value))\n }))}\n onChange={onUnitChange}\n TextFieldProps={{\n inputProps: {onFocus: onFocus},\n InputProps: {classes: {root: styles.input}}\n }}\n />\n </div>\n );\n};\n\nexport default DateIntervalSelector;\n","import CreatableSelect from 'react-select/creatable';\nimport withMuiSkin from './withMuiSkin';\n\nexport default withMuiSkin(CreatableSelect);\n","import {MenuItem as MenuItem} from '@material-ui/core';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nimport ExpandedValueTooltip from '../../../ExpandedValueTooltip/ExpandedValueTooltip';\n\nexport default function Option(props) {\n const {\n innerProps,\n innerRef,\n children,\n isFocused,\n isSelected,\n selectProps: {classes},\n label\n } = props;\n\n return (\n <MenuItem\n className={classNames(classes.option, {[classes['option--selected']]: isSelected})}\n ref={innerRef}\n selected={isFocused}\n component=\"div\"\n {...innerProps}\n >\n <Checkbox color=\"primary\" checked={isSelected} />\n <ExpandedValueTooltip value={label}>\n <div className={classes['option--item']}>{children}</div>\n </ExpandedValueTooltip>\n </MenuItem>\n );\n}\n\nOption.propTypes = {\n children: PropTypes.node,\n innerProps: PropTypes.shape({\n id: PropTypes.string.isRequired,\n key: PropTypes.string,\n onClick: PropTypes.func.isRequired,\n onMouseMove: PropTypes.func.isRequired,\n onMouseOver: PropTypes.func.isRequired,\n tabIndex: PropTypes.number.isRequired\n }).isRequired,\n innerRef: PropTypes.oneOfType([\n PropTypes.oneOf([null]),\n PropTypes.func,\n PropTypes.shape({\n current: PropTypes.any.isRequired\n })\n ]),\n isFocused: PropTypes.bool.isRequired,\n isSelected: PropTypes.bool.isRequired,\n label: PropTypes.string,\n selectProps: PropTypes.shape({\n classes: PropTypes.shape({\n option: PropTypes.string\n })\n })\n};\n","import Option from './Option';\n\nconst components = {\n Option\n};\n\nexport default components;\n","import React, {useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {omit} from 'ramda';\nimport CreatableSelect from '../CreatableSelect';\nimport Select from '../Select';\nimport AsyncSelect from '../AsyncSelect';\nimport multiSelectComponents from './components';\nimport {makeStyles} from '@material-ui/core/styles';\nimport {mergeClasses} from '../../../core/utils';\n\nconst useStyles = makeStyles((theme) => ({\n label: {\n top: 6,\n left: 16\n },\n placeholder: (props) => ({\n display: !props.placeholder || props.label ? 'none' : undefined\n }),\n 'option--selected': {\n fontWeight: 400\n },\n clearIndicator: {\n padding: theme.spacing(1),\n margin: theme.spacing(0.25, 0.5)\n },\n dropdownIndicator: {\n padding: theme.spacing(1),\n margin: theme.spacing(0.25, 0.5)\n }\n}));\n\nlet id = 0;\nconst getInputId = () => `custom-select-${id++}`;\n\nfunction MultiSelect(props) {\n const {\n label,\n creatable,\n getOptions,\n loadingIndicator,\n components: componentsProp,\n classes: classesProp,\n styles: stylesProp,\n onChange: onChangeProp,\n onInputChange: onInputChangeProp,\n menuPlacement = 'auto',\n ...reactSelectProps\n } = props;\n\n const SelectComponent = creatable ? CreatableSelect : getOptions ? AsyncSelect : Select;\n\n const [inputValue, setInputValue] = useState('');\n const multiSelectClasses = useStyles(omit(['classes'], props));\n const inputId = getInputId();\n\n const components = {\n ...multiSelectComponents,\n ...componentsProp\n };\n\n const classes = mergeClasses(multiSelectClasses, classesProp);\n\n function handleInputChange(value, {action}) {\n onInputChangeProp(value, {action});\n if (action !== 'set-value') {\n setInputValue(value);\n }\n }\n\n function handleChange(value, actionMeta) {\n onChangeProp(value, actionMeta);\n if (actionMeta.action === 'create-option') {\n setInputValue('');\n onInputChangeProp('', {action: 'input-change'});\n }\n }\n\n const styles = {\n indicatorSeparator: (base) => ({\n ...base,\n margin: '10px 0'\n }),\n loadingIndicator: (base) => ({\n ...base,\n display: loadingIndicator ? base.display : 'none'\n }),\n loadingMessage: (base) => ({\n ...base,\n fontFamily: '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif'\n }),\n ...stylesProp\n };\n\n const labelProps = label\n ? {\n inputId,\n TextFieldProps: {\n label,\n InputLabelProps: {\n htmlFor: inputId,\n shrink: props.value && props.value.length ? true : undefined,\n className: classes.label\n },\n ...props.TextFieldProps\n }\n }\n : {};\n\n return (\n <SelectComponent\n isMulti\n inputId={inputId}\n inputValue={inputValue}\n onChange={handleChange}\n onInputChange={handleInputChange}\n closeMenuOnSelect={false}\n hideSelectedOptions={false}\n classes={classes}\n components={components}\n styles={styles}\n menuPlacement={menuPlacement}\n loadOptions={getOptions}\n {...labelProps}\n {...reactSelectProps}\n />\n );\n}\n\nMultiSelect.defaultProps = {\n creatable: false,\n cacheOptions: true,\n components: {},\n classes: {},\n placeholder: '',\n loadingIndicator: false,\n onInputChange: () => {},\n onChange: () => {}\n};\n\nMultiSelect.propTypes = {\n /**\n * Async creatable multi select with optional placeholder, shrink-label, non-closing menu and options with checkboxes.\n * Based on react-select/creatable and react-select/async.\n * See react-select docs: https://react-select.com\n *\n * Below are listed only props used in the MultiSelect component. Check https://react-select.com/props first.\n * */\n\n /** Ability to create values. React-select/async-creatable is used internally */\n creatable: PropTypes.bool,\n /** True for enabling cache. Recommended. */\n cacheOptions: PropTypes.bool,\n defaultOptions: PropTypes.bool,\n /** Array of selected options. */\n value: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.any\n })\n ),\n options: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.any\n })\n ),\n /** Way to receive updated values */\n onChange: PropTypes.func,\n /** Way to receive updated inputValue */\n onInputChange: PropTypes.func,\n /** Input placeholder. Will not be shown if the label prop is specified */\n placeholder: PropTypes.string,\n /** Floating label from @material-ui/core/TextField component */\n label: PropTypes.string,\n /** Enable to show default react-select's indicator */\n loadingIndicator: PropTypes.bool,\n /** You could redefine any of these components */\n components: PropTypes.shape({\n ClearIndicator: PropTypes.func,\n Control: PropTypes.func,\n DropdownIndicator: PropTypes.func,\n DownChevron: PropTypes.func,\n CrossIcon: PropTypes.func,\n Group: PropTypes.func,\n GroupHeading: PropTypes.func,\n IndicatorsContainer: PropTypes.func,\n IndicatorSeparator: PropTypes.func,\n Input: PropTypes.func,\n LoadingIndicator: PropTypes.func,\n Menu: PropTypes.func,\n MenuList: PropTypes.func,\n MenuPortal: PropTypes.func,\n LoadingMessage: PropTypes.func,\n NoOptionsMessage: PropTypes.func,\n MultiValue: PropTypes.func,\n MultiValueContainer: PropTypes.func,\n MultiValueLabel: PropTypes.func,\n MultiValueRemove: PropTypes.func,\n Option: PropTypes.func,\n Placeholder: PropTypes.func,\n SelectContainer: PropTypes.func,\n SingleValue: PropTypes.func,\n ValueContainer: PropTypes.func\n }),\n /** Classes are passed to mui skin components. Provided classes will be merged with existing ones. */\n classes: PropTypes.shape({\n control: PropTypes.string,\n valueContainer: PropTypes.string,\n multiValue: PropTypes.string,\n noOptionsMessage: PropTypes.string,\n singleValue: PropTypes.string,\n placeholder: PropTypes.string,\n menu: PropTypes.string,\n clearIndicator: PropTypes.string,\n dropdownIndicator: PropTypes.string,\n option: PropTypes.string,\n 'option--selected': PropTypes.string,\n label: PropTypes.string\n }),\n /**\n * React-select's way to customise style. Could be used to style default react-select components.\n * In other cases better to use classes and components props\n * */\n styles: PropTypes.shape({\n clearIndicator: PropTypes.func,\n container: PropTypes.func,\n control: PropTypes.func,\n dropdownIndicator: PropTypes.func,\n group: PropTypes.func,\n groupHeading: PropTypes.func,\n indicatorsContainer: PropTypes.func,\n indicatorSeparator: PropTypes.func,\n input: PropTypes.func,\n loadingIndicator: PropTypes.func,\n loadingMessage: PropTypes.func,\n menu: PropTypes.func,\n menuList: PropTypes.func,\n menuPortal: PropTypes.func,\n multiValue: PropTypes.func,\n multiValueLabel: PropTypes.func,\n multiValueRemove: PropTypes.func,\n noOptionsMessage: PropTypes.func,\n option: PropTypes.func,\n placeholder: PropTypes.func,\n singleValue: PropTypes.func,\n valueContainer: PropTypes.func\n }),\n /** Props from https://material-ui.com/api/text-field/ */\n TextFieldProps: PropTypes.object /* eslint-disable-line react/forbid-prop-types */,\n getOptions: PropTypes.func,\n menuPlacement: PropTypes.string,\n menuPortalTarget: PropTypes.object,\n getOptionValue: PropTypes.func,\n isSearchable: PropTypes.bool,\n inputRef: PropTypes.shape({current: PropTypes.object})\n};\n\nexport default MultiSelect;\n","import MultiSelect from './MultiSelect';\n\nexport default MultiSelect;\n","import React from 'react';\n\nconst SvgAttributesList: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={256} height={256} viewBox=\"0 0 256 256\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <circle cx={128} cy={128} r={128} fill=\"#0072CE\" fillOpacity={0.1} />\n <mask\n id=\"AttributesList_svg__a\"\n style={{\n maskType: 'alpha'\n }}\n maskUnits=\"userSpaceOnUse\"\n x={0}\n y={0}\n width={256}\n height={256}\n >\n <circle cx={128} cy={128} r={128} fill=\"#fff\" />\n </mask>\n <g mask=\"url(#AttributesList_svg__a)\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M-16 9h256v247H-16V9z\"\n fill=\"url(#AttributesList_svg__b)\"\n />\n <path\n opacity={0.05}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M187.761 56.865l58.639 58.639v148.871H93.383L52 225.083V56.865h135.761z\"\n fill=\"url(#AttributesList_svg__c)\"\n />\n <path\n opacity={0.06}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M47 58h202a7 7 0 017 7v157a7 7 0 01-7 7H47a7 7 0 01-7-7V65a7 7 0 017-7z\"\n fill=\"#000\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M50 56h201a5 5 0 015 5v157a5 5 0 01-5 5H50a5 5 0 01-5-5V61a5 5 0 015-5z\"\n fill=\"#fff\"\n />\n <path\n opacity={0.8}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M105.376 72.635a3 3 0 013-3H150a3 3 0 110 6h-41.624a3 3 0 01-3-3z\"\n fill=\"#B6C7DB\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M105 84.635a3 3 0 013-3h64.205a3 3 0 110 6H108a3 3 0 01-3-3z\"\n fill=\"#979797\"\n />\n <path\n opacity={0.8}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M105.376 163a3 3 0 013-3H150a3 3 0 110 6h-41.624a3 3 0 01-3-3z\"\n fill=\"#B6C7DB\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M105 175a3 3 0 013-3h64.205a3 3 0 110 6H108a3 3 0 01-3-3z\"\n fill=\"#979797\"\n />\n <path\n opacity={0.8}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M105.376 193a3 3 0 013-3H190a3 3 0 110 6h-81.624a3 3 0 01-3-3z\"\n fill=\"#B6C7DB\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M105 205a3 3 0 013-3h74.205a3 3 0 110 6H108a3 3 0 01-3-3z\"\n fill=\"#979797\"\n />\n <path\n opacity={0.8}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M138.376 103a3 3 0 013-3H223a3 3 0 110 6h-81.624a3 3 0 01-3-3z\"\n fill=\"#B6C7DB\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M138 115a3 3 0 013-3h64.205a3 3 0 110 6H141a3 3 0 01-3-3z\"\n fill=\"#979797\"\n />\n <circle cx={67} cy={79} r={9} fill=\"#B6C7DB\" />\n <circle cx={67} cy={79} r={9} fill=\"#B6C7DB\" />\n <circle cx={120} cy={106} r={6} fill=\"#B6C7DB\" />\n <circle cx={120} cy={136} r={6} fill=\"#B6C7DB\" />\n <circle cx={67} cy={169} r={9} fill=\"#B6C7DB\" />\n <circle cx={67} cy={199} r={9} fill=\"#B6C7DB\" />\n <path\n opacity={0.8}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M138.376 133a3 3 0 013-3H223a3 3 0 110 6h-81.624a3 3 0 01-3-3z\"\n fill=\"#B6C7DB\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M138 145a3 3 0 013-3h74.205a3 3 0 110 6H141a3 3 0 01-3-3z\"\n fill=\"#979797\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M92.514 108v-8h-2v40.365h11.178v-2h-9.178V110h9.178v-2h-9.178z\"\n fill=\"#2B98F0\"\n />\n <path\n opacity={0.54}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M95.071 77l-3.535 3.535L88 77h7.071z\"\n fill=\"#000\"\n />\n <path\n opacity={0.6}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M50 22h186a6 6 0 016 6v18a6 6 0 01-6 6H50a6 6 0 01-6-6V28a6 6 0 016-6z\"\n fill=\"#fff\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M58 37a6 6 0 016-6h70a6 6 0 110 12H64a6 6 0 01-6-6zm90 0a6 6 0 016-6h10a6 6 0 110 12h-10a6 6 0 01-6-6z\"\n fill=\"#979797\"\n />\n </g>\n <defs>\n <linearGradient\n id=\"AttributesList_svg__b\"\n x1={-16}\n y1={9}\n x2={-16}\n y2={256}\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#FAFAFA\" stopOpacity={0.01} />\n <stop offset={1} stopColor=\"#F4F4F4\" />\n </linearGradient>\n <linearGradient\n id=\"AttributesList_svg__c\"\n x1={266.117}\n y1={181.111}\n x2={154.882}\n y2={77.681}\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopOpacity={0.01} />\n <stop offset={1} />\n </linearGradient>\n </defs>\n </svg>\n );\n};\n\nexport default SvgAttributesList;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n flex: '1 1 auto',\n flexWrap: 'nowrap',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n overflow: 'auto',\n height: '100%',\n minHeight: '350px',\n boxSizing: 'border-box',\n padding: '40px'\n },\n logo: {\n width: '190px',\n height: '190px'\n },\n textBox: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n maxWidth: 400,\n marginTop: '24px'\n },\n text: {\n color: theme.palette.text.primary,\n fontSize: '20px',\n fontWeight: 500,\n lineHeight: '23px',\n textAlign: 'center'\n },\n secondaryText: {\n color: theme.palette.text.primary,\n fontSize: '14px',\n fontWeight: 'normal',\n lineHeight: '16px',\n letterSpacing: '0.24px',\n textAlign: 'center',\n paddingTop: '8px'\n }\n}));\n","import React from 'react';\nimport {Typography as Typography} from '@material-ui/core';\nimport {AttributesList as AttributesListIcon} from '../../icons';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n IconRenderer?: React.ElementType;\n text: string;\n secondaryText?: string;\n};\n\nconst SidePanelEmptyState = ({IconRenderer = AttributesListIcon, text, secondaryText}: Props) => {\n const styles = useStyles();\n return (\n <div className={styles.root}>\n <IconRenderer className={styles.logo} />\n <div className={styles.textBox}>\n <Typography className={styles.text}>{text}</Typography>\n {secondaryText && <Typography className={styles.secondaryText}>{secondaryText}</Typography>}\n </div>\n </div>\n );\n};\n\nexport default SidePanelEmptyState;\n","import React from 'react';\n\nconst Spacer = () => <div style={{flex: 1}} />;\n\nexport default Spacer;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const customStyles = {\n input: (currentStyles) => ({...currentStyles, fontSize: '14px'}),\n loadingMessage: (currentStyles) => ({...currentStyles, fontSize: '14px'}),\n menuPortal: (currentStyles) => ({...currentStyles, zIndex: 1300})\n};\n\nexport const useStyles = makeStyles({\n root: {\n flex: 1\n },\n title: {\n paddingBottom: '10px',\n paddingLeft: '5px',\n fontSize: '14px'\n },\n dropDownInput: {\n width: '100%',\n justifyContent: 'center',\n backgroundColor: 'rgba(0, 0, 0, 0.03)',\n borderTop: '4px'\n },\n option: {\n fontSize: '14px',\n height: '32px'\n }\n});\n","import React, {useRef} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {defaultTo, pipe, pluck} from 'ramda';\nimport classnames from 'classnames';\nimport {Typography as Typography} from '@material-ui/core';\nimport MultiSelect from '../ReactSelect/MultiSelect';\nimport DropdownIndicatorWithIconButton from '../commonReactSelectComponents/DropdownIndicatorWithIconButton';\nimport {getAllUsersForTenant, UserInfo, utils} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {customStyles, useStyles} from './styles';\n\ntype Props = {\n selectedUsers: string[];\n onChange: (activities: string[]) => void;\n className?: string;\n disableUnderline?: boolean;\n};\n\nconst UserSelector = ({selectedUsers, onChange, className, disableUnderline}: Props) => {\n const styles = useStyles();\n\n const valueToOption = (value: string) => ({value, label: value});\n const prepareValues = (values: string[]) => values.map(valueToOption);\n const filterUsers = (inputValue) => (users) =>\n inputValue ? users.filter((username) => utils.strings.search(username, inputValue)) : users;\n\n const tenant = useSelector(mdmModule.selectors.getTenant);\n const servicesPath = useSelector(mdmModule.selectors.getServicesPath);\n\n const cachedRequest = useRef<Promise<UserInfo[]>>();\n const getOptions = (inputValue) => {\n if (!cachedRequest.current) {\n cachedRequest.current = getAllUsersForTenant({tenant, servicesPath});\n }\n return cachedRequest.current.then(pipe(pluck('username'), filterUsers(inputValue), prepareValues));\n };\n\n return (\n <div className={classnames(styles.root, className)}>\n <Typography className={styles.title} variant={'subtitle1'}>\n {i18n.text('User')}\n </Typography>\n <MultiSelect\n value={prepareValues(selectedUsers)}\n onChange={pipe(defaultTo([]), pluck('value'), onChange)}\n defaultOptions={true}\n getOptions={getOptions}\n TextFieldProps={{\n InputProps: {disableUnderline},\n className: styles.dropDownInput\n }}\n components={{\n DropdownIndicator: DropdownIndicatorWithIconButton\n }}\n styles={customStyles}\n classes={styles}\n menuPortalTarget={document.body}\n />\n </div>\n );\n};\n\nexport default UserSelector;\n","export enum ActivityTypes {\n MODEL_UPDATED = 'MODEL_UPDATED',\n ENTITY_REMOVED = 'ENTITY_REMOVED',\n ENTITY_CREATED = 'ENTITY_CREATED',\n ENTITY_CHANGED = 'ENTITY_CHANGED',\n ENTITIES_MERGED = 'ENTITIES_MERGED',\n ENTITIES_SPLITTED = 'ENTITIES_SPLITTED',\n ENTITY_LOST_MERGE = 'ENTITY_LOST_MERGE',\n RELATIONSHIP_CREATED = 'RELATIONSHIP_CREATED',\n RELATIONSHIP_REMOVED = 'RELATIONSHIP_REMOVED',\n RELATIONSHIP_CHANGED = 'RELATIONSHIP_CHANGED',\n POTENTIAL_MATCHES_FOUND = 'POTENTIAL_MATCHES_FOUND',\n NOT_MATCHES_SET = 'NOT_MATCHES_SET',\n NOT_MATCHES_RESET = 'NOT_MATCHES_RESET',\n PERIODIC_TASK_SCHEDULED = 'PERIODIC_TASK_SCHEDULED',\n ENTITIES_MERGED_MANUALLY = 'ENTITIES_MERGED_MANUALLY',\n POTENTIAL_MATCHES_REMOVED = 'POTENTIAL_MATCHES_REMOVED',\n ENTITIES_MERGED_ON_THE_FLY = 'ENTITIES_MERGED_ON_THE_FLY',\n USER_LOGIN = 'USER_LOGIN',\n USER_LOGOUT = 'USER_LOGOUT',\n USER_SEARCH = 'USER_SEARCH',\n USER_PROFILE_VIEW = 'USER_PROFILE_VIEW',\n COMMENT_ADDED = 'COMMENT_ADDED',\n COMMENT_UPDATED = 'COMMENT_UPDATED',\n COMMENT_DELETED = 'COMMENT_DELETED',\n ANALYTICS_ATTRIBUTES_CHANGED = 'ANALYTICS_ATTRIBUTES_CHANGED',\n SFDC_CONNECTOR_SYNCHRONIZATION_ISSUE = 'SFDC_CONNECTOR_SYNCHRONIZATION_ISSUE',\n GROUP_CREATED = 'GROUP_CREATED',\n GROUP_REMOVED = 'GROUP_REMOVED',\n GROUP_CHANGED = 'GROUP_CHANGED'\n}\n","import {\n formatDataTypeValue,\n findAttributeTypeByUri,\n Metadata,\n AttributePresentations,\n makeAttrTypeUri,\n getAttrDataTypeDefinition\n} from '@reltio/mdm-sdk';\nimport {filter, groupBy, ifElse, map, path, pipe, propOr, values, isNil, includes, reject} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {ActivityData, ActivityItem, ActivityTypes, DeltaValue} from '../types';\n\nconst getItemDataType = path(['data', 'type']);\n\nexport const getActivityType = (activity: ActivityData) => {\n const {items, label} = activity;\n const [firstItem] = items || [];\n return getItemDataType(firstItem) || label;\n};\n\nexport const isValidActivityType = (type: string): boolean => pipe(values, includes(type))(ActivityTypes);\n\nexport const removeIgnoredItems = (activity: ActivityData): ActivityData => {\n const {items = [], label} = activity;\n const isImplementedItem = (item: ActivityItem): boolean => isValidActivityType(getItemDataType(item) || label);\n const filteredItems = filter(isImplementedItem)(items);\n if (items.length !== filteredItems.length) {\n console.error('Activities not implemented:', reject(isImplementedItem)(items));\n }\n return {\n ...activity,\n items: filteredItems,\n itemsTotal: filteredItems.length\n };\n};\n\nexport const splitActivityByType = (activity: ActivityData) => {\n return pipe(\n propOr([], 'items'),\n groupBy(getItemDataType),\n values,\n ifElse(\n ({length}) => length > 1,\n map((items) => ({\n ...activity,\n items,\n itemsTotal: items.length\n })),\n () => [activity]\n )\n )(activity);\n};\n\nexport const stringifyDeltaValue = (\n deltaValue: DeltaValue['value'],\n attributeTypeUri: string,\n metadata: Metadata,\n attributePresentations: AttributePresentations\n) => {\n const attributeType = findAttributeTypeByUri(metadata, attributeTypeUri);\n const dataTypeDefinition = getAttrDataTypeDefinition(attributeType);\n const formatValue = formatDataTypeValue({attributePresentations, dataTypeDefinition});\n\n if (isNil(deltaValue)) {\n return '';\n }\n\n if (typeof deltaValue === 'string') {\n return attributeType ? formatValue(deltaValue) : deltaValue;\n }\n\n return Object.entries(deltaValue)\n .flatMap(([attributeTypeName, deltaValues]) =>\n deltaValues.map((deltaValue) =>\n stringifyDeltaValue(\n deltaValue.value,\n makeAttrTypeUri(attributeTypeUri, attributeTypeName),\n metadata,\n attributePresentations\n )\n )\n )\n .join(', ');\n};\n\nexport const getActivityLabel = (type: ActivityTypes) => {\n const labels = {\n [ActivityTypes.COMMENT_ADDED]: i18n.text('Comment added'),\n [ActivityTypes.COMMENT_DELETED]: i18n.text('Comment deleted'),\n [ActivityTypes.COMMENT_UPDATED]: i18n.text('Comment updated'),\n [ActivityTypes.ENTITIES_MERGED]: i18n.text('Profile merged'),\n [ActivityTypes.ENTITIES_MERGED_MANUALLY]: i18n.text('Profile merged manually'),\n [ActivityTypes.ENTITIES_MERGED_ON_THE_FLY]: i18n.text('Profile merged on the fly'),\n [ActivityTypes.ENTITIES_SPLITTED]: i18n.text('Profile un-merged'),\n [ActivityTypes.ENTITY_CHANGED]: i18n.text('Profile updated'),\n [ActivityTypes.ENTITY_CREATED]: i18n.text('Profile created'),\n [ActivityTypes.ENTITY_LOST_MERGE]: i18n.text('Profile lost merge'),\n [ActivityTypes.ENTITY_REMOVED]: i18n.text('Profile removed'),\n [ActivityTypes.GROUP_CHANGED]: i18n.text('Group updated'),\n [ActivityTypes.GROUP_CREATED]: i18n.text('Group created'),\n [ActivityTypes.GROUP_REMOVED]: i18n.text('Group removed'),\n [ActivityTypes.MODEL_UPDATED]: i18n.text('Model was updated'),\n [ActivityTypes.NOT_MATCHES_RESET]: i18n.text('Not matches reset'),\n [ActivityTypes.NOT_MATCHES_SET]: i18n.text('Not matches set'),\n [ActivityTypes.PERIODIC_TASK_SCHEDULED]: i18n.text('Periodic task was scheduled'),\n [ActivityTypes.POTENTIAL_MATCHES_FOUND]: i18n.text('Potential matches found'),\n [ActivityTypes.POTENTIAL_MATCHES_REMOVED]: i18n.text('Potential matches removed'),\n [ActivityTypes.RELATIONSHIP_CHANGED]: i18n.text('Relationship updated'),\n [ActivityTypes.RELATIONSHIP_CREATED]: i18n.text('Relationship created'),\n [ActivityTypes.RELATIONSHIP_REMOVED]: i18n.text('Relationship removed'),\n [ActivityTypes.USER_LOGIN]: i18n.text('Logged in'),\n [ActivityTypes.USER_LOGOUT]: i18n.text('Logged out'),\n [ActivityTypes.USER_PROFILE_VIEW]: i18n.text('Profile viewed'),\n [ActivityTypes.USER_SEARCH]: i18n.text('Searched'),\n [ActivityTypes.ANALYTICS_ATTRIBUTES_CHANGED]: i18n.text('Analytics attribute changed'),\n [ActivityTypes.SFDC_CONNECTOR_SYNCHRONIZATION_ISSUE]: i18n.text('SFDC connector synchronization issue')\n };\n return labels[type] || '';\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n flex: 1\n },\n dropdownIndicator: {\n transition: 'transform .15s ease'\n },\n inputRoot: {\n fontSize: '14px',\n height: 46\n },\n input: {\n padding: '0 12px 0'\n },\n dateOptionLabel: {\n minWidth: '100px'\n },\n paper: {\n minWidth: '112px'\n }\n});\n","import React, {useCallback, useRef, useState} from 'react';\nimport moment from 'moment';\nimport i18n from 'ui-i18n';\nimport {isNil} from 'ramda';\nimport {DataTypes, formatDataTypeValue} from '@reltio/mdm-sdk';\nimport {noop} from '../../../core';\n\nimport {TextField as TextField} from '@material-ui/core';\nimport {Menu as Menu} from '@material-ui/core';\nimport DropdownIndicatorWithIconButton from '../../commonReactSelectComponents/DropdownIndicatorWithIconButton';\nimport DateRangePicker from '../../DateRangePicker/DateRangePicker';\nimport {useStyles} from './styles';\n\ntype DateValues = [Date, Date];\ntype Props = {\n values: DateValues;\n onChange: (values: DateValues) => void;\n onFocus?: () => void;\n};\n\nconst localeFormat = moment.localeData().longDateFormat('L');\n\nconst formatValue = (value: Date, placeholder: string) => {\n return isNil(value)\n ? `${placeholder}`\n : `${formatDataTypeValue({dataTypeDefinition: {type: DataTypes.TYPE_ACTIVENESS_DATE}}, value)}`;\n};\n\nconst CustomDateRangeEditor = ({values, onChange, onFocus = noop}: Props) => {\n const placeholder = localeFormat;\n const inputRef = useRef(null);\n const [open, setOpen] = useState(false);\n const styles = useStyles();\n\n const onApply = (values: DateValues) => {\n onChange(values);\n setOpen(false);\n };\n\n const handleToggle = useCallback(() => {\n setOpen((open) => !open);\n onFocus();\n }, [onFocus]);\n\n const onCancel = () => {\n setOpen(false);\n };\n\n return (\n <div className={styles.root}>\n <TextField\n fullWidth\n value={values.map((value) => formatValue(value, placeholder)).join(' \\u2014 ')}\n onClick={handleToggle}\n variant=\"filled\"\n ref={inputRef}\n InputProps={{\n endAdornment: (\n <DropdownIndicatorWithIconButton\n selectProps={{classes: styles, menuIsOpen: open}}\n innerProps={{}}\n />\n ),\n disableUnderline: isNil(values),\n readOnly: true,\n classes: {\n root: styles.inputRoot,\n input: styles.input\n }\n }}\n InputLabelProps={{\n shrink: false\n }}\n placeholder={i18n.text(`${placeholder} \\u2014 ${placeholder}`)}\n />\n <Menu\n variant=\"menu\"\n open={open}\n autoFocus={false}\n classes={{paper: styles.paper}}\n anchorEl={inputRef.current}\n onClose={onCancel}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'left'\n }}\n elevation={2}\n getContentAnchorEl={null}\n MenuListProps={{\n autoFocusItem: open,\n style: {width: '100%'}\n }}\n >\n <DateRangePicker\n values={values}\n onCancel={onCancel}\n onApply={onApply}\n type={DataTypes.TYPE_ACTIVENESS_DATE}\n />\n </Menu>\n </div>\n );\n};\n\nexport default CustomDateRangeEditor;\n","import i18n from 'ui-i18n';\nimport {DateRangeTypes} from '@reltio/mdm-sdk';\n\nexport const dateRangeTypeOptions = [DateRangeTypes.WITHIN, DateRangeTypes.AGO, DateRangeTypes.BETWEEN];\n\nexport const getDateRangeTypeLabel = (type: DateRangeTypes) => {\n const labels = {\n [DateRangeTypes.WITHIN]: i18n.text('Within the last'),\n [DateRangeTypes.AGO]: i18n.text('More than'),\n [DateRangeTypes.BETWEEN]: i18n.text('Date range')\n };\n return labels[type] || '';\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n flex: 1\n },\n title: {\n paddingBottom: '10px',\n paddingLeft: '5px',\n fontSize: '14px'\n },\n intervalContainer: {\n display: 'flex',\n justifyContent: 'space-between'\n },\n typeInput: {\n width: 160,\n marginRight: 10\n }\n});\n","import React, {useState} from 'react';\nimport i18n from 'ui-i18n';\nimport classnames from 'classnames';\nimport {DateRangeFilter, DateRangeTypes} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport SimpleDropDownSelector from '../../SimpleDropDownSelector/SimpleDropDownSelector';\nimport {dateRangeTypeOptions, getDateRangeTypeLabel} from './utils';\nimport DateIntervalSelector from '../../DateIntervalSelector/DateIntervalSelector';\nimport {useDidUpdateEffect} from '../../../hooks';\nimport CustomDateRangeEditor from '../../editors/CustomDateRangeEditor/CustomDateRangeEditor';\n\nimport {useStyles} from './styles';\n\nconst emptyDates: [Date, Date] = [null, null];\nconst emptyInterval: [number, string] = [null, 'hours'];\n\ntype Props = {\n value: DateRangeFilter;\n onChange: (range: DateRangeFilter) => void;\n className?: string;\n};\n\nconst DateRangeSelector = ({value, onChange, className}: Props) => {\n const styles = useStyles();\n\n const isIntervalType = (type: DateRangeTypes) => type === DateRangeTypes.WITHIN || type === DateRangeTypes.AGO;\n const isBetweenType = (type: DateRangeTypes) => type === DateRangeTypes.BETWEEN;\n\n const initDatesInterval = isBetweenType(value?.type) ? value.period : emptyDates;\n const initInterval = isIntervalType(value?.type) ? value.period : emptyInterval;\n\n const [datesInterval, setDatesInterval] = useState(initDatesInterval as [Date, Date]);\n const [interval, setInterval] = useState(initInterval as [number, string]);\n\n const selectedType = value?.type || DateRangeTypes.WITHIN;\n\n const getCurrentPeriodByType = (type: DateRangeTypes) => {\n if (isIntervalType(type)) {\n return interval;\n } else if (isBetweenType(type)) {\n return datesInterval;\n }\n };\n\n const changeType = ({value: type}: {value: DateRangeTypes}) => {\n if (value?.type !== type) {\n onChange({period: getCurrentPeriodByType(type), type});\n }\n };\n const changePeriod = (period) => {\n onChange({type: selectedType, period});\n };\n\n useDidUpdateEffect(() => {\n if (value) {\n if (isIntervalType(value.type)) {\n setInterval(value.period as [number, string]);\n } else if (isBetweenType(value.type)) {\n setDatesInterval(value.period as [Date, Date]);\n }\n } else {\n setDatesInterval(emptyDates);\n setInterval(emptyInterval);\n }\n }, [value]);\n\n return (\n <div className={classnames(styles.root, className)}>\n <Typography className={styles.title} variant={'subtitle1'}>\n {i18n.text('Date')}\n </Typography>\n <div className={styles.intervalContainer}>\n <SimpleDropDownSelector\n label={''}\n className={styles.typeInput}\n value={{\n value: selectedType,\n label: getDateRangeTypeLabel(selectedType)\n }}\n options={dateRangeTypeOptions.map((option) => ({\n value: option,\n label: getDateRangeTypeLabel(option)\n }))}\n onChange={changeType}\n />\n {isIntervalType(selectedType) ? (\n <DateIntervalSelector interval={interval} onChange={changePeriod} />\n ) : (\n <CustomDateRangeEditor values={datesInterval} onChange={changePeriod} />\n )}\n </div>\n </div>\n );\n};\n\nexport default DateRangeSelector;\n","import i18n from 'ui-i18n';\nimport {HistoryActivityType} from '../types/HistoryFilter';\n\nexport const historyActivityOptions = [\n HistoryActivityType.UPDATE,\n HistoryActivityType.MERGE,\n HistoryActivityType.UNMERGE\n];\n\nexport const getHistoryActivityLabel = (type: HistoryActivityType) => {\n const labels = {\n [HistoryActivityType.UPDATE]: i18n.text('Update'),\n [HistoryActivityType.MERGE]: i18n.text('Merge'),\n [HistoryActivityType.UNMERGE]: i18n.text('Unmerge')\n };\n return labels[type] || '';\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const customStyles = {\n input: (currentStyles) => ({...currentStyles, fontSize: '14px'}),\n menuPortal: (currentStyles) => ({...currentStyles, zIndex: 1300})\n};\n\nexport const useStyles = makeStyles({\n root: {\n flex: 1\n },\n title: {\n paddingBottom: '10px',\n paddingLeft: '5px',\n fontSize: '14px'\n },\n dropDownInput: {\n width: '100%',\n justifyContent: 'center',\n backgroundColor: 'rgba(0, 0, 0, 0.03)',\n borderTop: '4px'\n },\n valueContainer: {\n overflowY: 'auto',\n height: 44\n },\n option: {\n fontSize: '14px',\n height: '32px'\n }\n});\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {defaultTo, pipe, pluck} from 'ramda';\nimport classnames from 'classnames';\nimport {Typography as Typography} from '@material-ui/core';\nimport MultiSelect from '../../ReactSelect/MultiSelect';\nimport DropdownIndicatorWithIconButton from '../../commonReactSelectComponents/DropdownIndicatorWithIconButton';\nimport {getHistoryActivityLabel, historyActivityOptions} from './utils';\nimport {HistoryActivityType} from '../types/HistoryFilter';\nimport {customStyles, useStyles} from './styles';\n\ntype Props = {\n selectedHistoryActivityTypes: HistoryActivityType[];\n onChange: (activities: HistoryActivityType[]) => void;\n className?: string;\n};\n\nconst HistoryActivitySelector = ({selectedHistoryActivityTypes, onChange, className}: Props) => {\n const styles = useStyles();\n const valueToOption = (value: HistoryActivityType) => ({value, label: getHistoryActivityLabel(value)});\n const prepareValues = (values: HistoryActivityType[]) => values.map(valueToOption);\n\n const options = prepareValues(historyActivityOptions);\n\n return (\n <div className={classnames(styles.root, className)}>\n <Typography className={styles.title} variant={'subtitle1'}>\n {i18n.text('Activity')}\n </Typography>\n <MultiSelect\n value={prepareValues(selectedHistoryActivityTypes)}\n onChange={pipe(defaultTo([]), pluck('value'), onChange)}\n options={options}\n TextFieldProps={{classes: {root: styles.dropDownInput}}}\n components={{\n DropdownIndicator: DropdownIndicatorWithIconButton\n }}\n styles={customStyles}\n classes={styles}\n menuPlacement=\"bottom\"\n menuPortalTarget={document.body}\n />\n </div>\n );\n};\n\nexport default HistoryActivitySelector;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n popup: {\n width: 500,\n minHeight: 500,\n overflowY: 'hidden',\n display: 'flex',\n flexDirection: 'column'\n },\n filterContainer: {\n padding: 20,\n height: 410,\n display: 'flex',\n flexDirection: 'column'\n },\n filterContainerScrollable: {\n overflowY: 'auto'\n },\n filterItem: {\n marginTop: 15\n },\n filterControls: {\n display: 'flex',\n padding: '10px 12px',\n borderTop: 'solid 1px rgba(0, 0, 0, 0.12)'\n },\n clearButton: {\n marginRight: 'auto'\n },\n input: {\n height: '100%',\n paddingLeft: '12px',\n paddingRight: '8px'\n }\n});\n","import React, {useCallback, useEffect, useRef, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {curry, dissoc} from 'ramda';\nimport FilterListIcon from '@material-ui/icons/FilterList';\nimport {Button as Button} from '@material-ui/core';\nimport {Popover as Popover} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {TEntityType, isDateRangeValid} from '@reltio/mdm-sdk';\nimport {SmallIconButton} from '../../SmallIconButton';\nimport {HistoryFilter} from '../types';\nimport UserSelector from '../../UserSelector/UserSelector';\nimport AttributeSelector from '../../AttributeSelector/AttributeSelector';\nimport DateRangeSelector from '../DateRangeSelector/DateRangeSelector';\nimport HistoryActivitySelector from '../HistoryActivitySelector/HistoryActivitySelector';\n\nimport {DEFAULT_HISTORY_FILTER, isDefaultFilter} from '../hooks/useHistory';\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n filter: HistoryFilter;\n onApplyFilter: (filter: HistoryFilter) => void;\n entityType: TEntityType;\n};\n\nconst HistoryFilterButton = ({className, filter, onApplyFilter, entityType}: Props) => {\n const styles = useStyles();\n const buttonRef = useRef();\n const [isOpen, setIsOpen] = useState(false);\n const [currentValue, setCurrentValue] = useState<HistoryFilter>(filter);\n const {activities = [], attributes = [], dateRange = null, users = []} = currentValue || {};\n\n const buttonColor = isDefaultFilter(filter) ? 'inherit' : 'primary';\n\n useEffect(() => {\n if (isOpen) {\n setCurrentValue(filter);\n }\n }, [filter, isOpen]);\n\n const handlePropChange = curry((propName: string, value: unknown) => {\n setCurrentValue((filterValue) => ({\n ...filterValue,\n [propName]: value\n }));\n });\n\n const togglePopup = useCallback(() => {\n setIsOpen((open) => !open);\n }, []);\n\n const applyButtonHandler = useCallback(() => {\n dateRange && isDateRangeValid(dateRange)\n ? onApplyFilter(currentValue)\n : onApplyFilter(dissoc('dateRange', currentValue));\n togglePopup();\n }, [currentValue, dateRange, onApplyFilter, togglePopup]);\n\n const clearAllButtonHandler = useCallback(() => {\n setCurrentValue({...DEFAULT_HISTORY_FILTER});\n }, []);\n\n return (\n <>\n <SmallIconButton\n ref={buttonRef}\n color={buttonColor}\n icon={FilterListIcon}\n size=\"L\"\n onClick={togglePopup}\n className={className}\n />\n <Popover\n classes={{paper: styles.popup}}\n open={isOpen}\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 <div className={styles.filterContainer}>\n <Typography variant=\"h6\">{i18n.text('Filter')}</Typography>\n <div className={styles.filterContainerScrollable}>\n <DateRangeSelector\n value={dateRange}\n onChange={handlePropChange('dateRange')}\n className={styles.filterItem}\n />\n <UserSelector\n selectedUsers={users}\n onChange={handlePropChange('users')}\n className={styles.filterItem}\n />\n <HistoryActivitySelector\n selectedHistoryActivityTypes={activities}\n onChange={handlePropChange('activities')}\n className={styles.filterItem}\n />\n <AttributeSelector\n selectedAttributes={attributes}\n entityType={entityType}\n onChange={handlePropChange('attributes')}\n className={styles.filterItem}\n title={i18n.text('Attribute updated')}\n />\n </div>\n </div>\n <div className={styles.filterControls}>\n <Button onClick={clearAllButtonHandler} className={styles.clearButton}>\n {i18n.text('Clear all')}\n </Button>\n <Button onClick={togglePopup}>{i18n.text('Cancel')}</Button>\n <Button color=\"primary\" onClick={applyButtonHandler}>\n {i18n.text('Apply')}\n </Button>\n </div>\n </Popover>\n </>\n );\n};\n\nexport default HistoryFilterButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n menuItem: {\n minHeight: '32px'\n },\n menuText: {\n fontSize: '13px',\n lineHeight: '15px',\n letterSpacing: 0,\n marginLeft: '30px'\n },\n checkIcon: {\n position: 'absolute',\n color: 'rgba(0, 0, 0, 0.54)'\n }\n});\n","import React, {forwardRef} from 'react';\nimport {MenuItem as MenuItem} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport CheckIcon from '@material-ui/icons/Check';\nimport {noop} from '../../../core';\nimport {useStyles} from './styles';\n\ntype Item = {\n text: string;\n selected: boolean;\n onClick: (e) => void;\n};\n\ntype Props = {\n item: Item;\n onMenuClose?: () => void;\n};\n\nconst MenuItemRenderer = forwardRef(({item, onMenuClose = noop}: Props, ref: React.Ref<HTMLLIElement>) => {\n const styles = useStyles();\n const {text, selected, onClick} = item;\n const handleClick = (e) => {\n onMenuClose();\n onClick(e);\n };\n\n return (\n <MenuItem classes={{root: styles.menuItem}} onClick={handleClick} ref={ref}>\n {selected && <CheckIcon className={styles.checkIcon} />}\n <Typography classes={{root: styles.menuText}}>{text}</Typography>\n </MenuItem>\n );\n});\nMenuItemRenderer.displayName = 'MenuItemRenderer';\n\nexport default MenuItemRenderer;\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport mdmModule, {HistoryMode, profile} from '@reltio/mdm-module';\nimport {SmallIconButton} from '../../SmallIconButton';\nimport DropDownMenuButton from '../../DropDownMenuButton/DropDownMenuButton';\nimport MenuItemRenderer from './MenuItemRenderer';\n\nconst HistoryMenuButton = () => {\n const mode = useSelector(mdmModule.selectors.getHistoryMode);\n const dispatch = useDispatch();\n const handleModeChange = (selectedMode: HistoryMode) => {\n dispatch(profile.history.actions.setHistoryMode(selectedMode));\n };\n const menuItems = [\n {\n text: i18n.text('Compare to Current view'),\n selected: mode === HistoryMode.Current,\n onClick: () => handleModeChange(HistoryMode.Current)\n },\n {\n text: i18n.text('Compare to Previous view'),\n selected: mode === HistoryMode.Previous,\n onClick: () => handleModeChange(HistoryMode.Previous)\n }\n ];\n\n return (\n <DropDownMenuButton\n MenuItemRenderer={MenuItemRenderer}\n buttonComponent={SmallIconButton}\n buttonProps={{\n icon: MoreVertIcon,\n size: 'L'\n }}\n menuId={'history-menu'}\n menuItems={menuItems}\n />\n );\n};\n\nexport default HistoryMenuButton;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n flex: 1,\n alignItems: 'center'\n },\n icon: {\n margin: 4\n },\n divider: {\n backgroundColor: 'rgba(0,0,0,0.12)',\n margin: '3px 19px'\n },\n count: {\n fontSize: 14\n },\n filterButton: {\n marginRight: '-4px'\n }\n});\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {Divider as Divider} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {isNil} from 'ramda';\nimport {TEntityType} from '@reltio/mdm-sdk';\nimport Spacer from '../../Spacer/Spacer';\nimport HistoryFilterButton from '../HistoryFilterButton/HistoryFilterButton';\nimport HistoryMenuButton from '../HistoryMenuButton/HistoryMenuButton';\nimport {HistoryFilter} from '../types';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n total?: number;\n entityType: TEntityType;\n filter: HistoryFilter;\n onApplyFilter: (value: HistoryFilter) => void;\n};\n\nconst HistoryHeader = ({total, entityType, filter, onApplyFilter}: Props) => {\n const styles = useStyles();\n return (\n <div className={styles.root}>\n <Typography variant=\"h6\">{i18n.text('History')}</Typography>\n {!isNil(total) && (\n <>\n <Divider orientation=\"vertical\" flexItem className={styles.divider} />\n <Typography variant=\"body1\" color=\"textSecondary\" className={styles.count}>\n {total === 1\n ? i18n.text('${count} contributing profile', {count: total})\n : i18n.text('${count} contributing profiles', {count: total})}\n </Typography>\n </>\n )}\n <Spacer />\n <HistoryFilterButton\n className={styles.filterButton}\n entityType={entityType}\n filter={filter}\n onApplyFilter={onApplyFilter}\n />\n <HistoryMenuButton />\n </div>\n );\n};\n\nexport default HistoryHeader;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport SidePanelEmptyState from '../../SidePanelEmptyState/SidePanelEmptyState';\n\nconst HistoryPanelEmptyState = () => (\n <SidePanelEmptyState\n text={i18n.text('History in the making')}\n secondaryText={i18n.text('When you create an event or perform an activity, it will show up here.')}\n />\n);\n\nexport default HistoryPanelEmptyState;\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype Type = {\n color?: string;\n};\n\nexport const useStyles = makeStyles(() => ({\n historyRow: {\n position: 'relative',\n padding: '8px 12px 16px',\n cursor: 'pointer'\n },\n selected: {\n background: 'rgba(0,0,0,0.05)',\n '&:before': {\n content: '\"\"',\n background: 'rgba(0,0,0,0.05)',\n width: '100%',\n height: '100%',\n position: 'absolute',\n left: '-100%',\n top: 0\n }\n },\n rowHeader: {\n display: 'flex',\n position: 'relative'\n },\n badge: ({color}: Type) => ({\n position: 'absolute',\n width: '2px',\n height: '100%',\n left: '-9px',\n pointerEvents: 'none',\n background: color,\n '&:before': {\n height: '100%',\n width: '3px',\n content: '\"\"',\n left: '-3px',\n background: color,\n position: 'absolute',\n opacity: 0.06\n }\n }),\n title: {\n color: 'rgba(0,0,0,0.87)',\n fontSize: '13px',\n letterSpacing: 0,\n lineHeight: '16px',\n fontWeight: 400,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n '&.bold': {\n fontWeight: 500\n }\n },\n date: {\n marginLeft: 'auto',\n color: 'rgba(0,0,0,0.54)',\n fontSize: '11px',\n letterSpacing: 0,\n lineHeight: '16px'\n },\n user: {\n color: 'rgba(0,0,0,0.38)',\n fontSize: '12px',\n letterSpacing: 0,\n lineHeight: '14px'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {getContributorColor, HistoryChange} from '@reltio/mdm-sdk';\nimport {Typography as Typography} from '@material-ui/core';\nimport {ActivityTypes} from '../../activityLog/types/ActivityTypes';\nimport {getActivityLabel} from '../../activityLog/utils/activities';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n change: HistoryChange;\n isCurrent?: boolean;\n isSelected: boolean;\n onClick: () => void;\n};\n\nconst HistoryRow = ({change, isCurrent, isSelected, onClick}: Props) => {\n const {uri, type, matchGroups, user, timestamp} = change;\n const color = getContributorColor(uri);\n const styles = useStyles({color});\n return (\n <div className={classnames(styles.historyRow, {[styles.selected]: isSelected})} onClick={onClick}>\n <div className={styles.rowHeader}>\n <div className={styles.badge} />\n <Typography className={classnames(styles.title, {bold: isCurrent})}>\n {isCurrent ? i18n.text('Current view') : getActivityLabel(type as ActivityTypes)}\n </Typography>\n {!isCurrent && <Typography className={styles.date}>{i18n.date(timestamp, 'L LT')}</Typography>}\n </div>\n {matchGroups && (\n <Typography className={styles.title}>\n {i18n.text('Match rule:')} {matchGroups.join(', ')}\n </Typography>\n )}\n <Typography className={styles.user}>{user}</Typography>\n </div>\n );\n};\n\nexport default HistoryRow;\n","import {HistoryChangeTypes} from '../types/HistoryChangeTypes';\n\nexport const getHistoryLinkCurve = (x: number, y: number, toX: number, toY: number) => {\n const isUp = y > toY;\n const isLeft = x < toX;\n const curveStartX = isLeft ? toX - 12 : toX + 12;\n const curveCenterY = isUp ? -6 : 6;\n const curveEndY = isUp ? -12 : 12;\n const curve = isLeft ? `c 6 0 12 ${curveCenterY} 12` : `c -6 0 -12 ${curveCenterY} -12`;\n return `M${x} ${y} L${curveStartX} ${y} ${curve} ${curveEndY} L${toX} ${toY}`;\n};\n\nexport const isFakeHistoryType = (type: string) =>\n type === HistoryChangeTypes.FAKE_FILTERED_INCOMING || type === HistoryChangeTypes.FAKE_FILTERED_OUTGOING;\n","import React from 'react';\nimport {getHistoryLinkCurve} from './helpers';\n\ntype Props = {\n x: number;\n y: number;\n toX: number;\n toY: number;\n color: string;\n isDashed?: boolean;\n};\n\nconst HistoryLink = ({x, y, toX, toY, color, isDashed}: Props) => {\n const lineData = getHistoryLinkCurve(x, y, toX, toY);\n return (\n <path\n d={lineData}\n stroke={color}\n strokeWidth={2}\n fill={'none'}\n strokeDasharray={isDashed ? '3,3' : undefined}\n />\n );\n};\n\nexport default HistoryLink;\n","import React, {forwardRef} from 'react';\n\ntype Props = {\n x: number;\n y: number;\n color: string;\n isDashed?: boolean;\n isCollapsed?: boolean;\n showCollapseIcon?: boolean;\n showLine?: boolean;\n} & React.SVGProps<SVGGElement>;\n\nexport const BUMP_RADIUS = 3;\nexport const LINE_MARGIN = 4;\n\nconst HistoryCircle = ({x, y, color, isDashed, isCollapsed, showCollapseIcon, showLine, ...otherProps}: Props, ref) => {\n const radius = showCollapseIcon ? BUMP_RADIUS * 2 : BUMP_RADIUS;\n return (\n <g {...otherProps} ref={ref}>\n {showLine && (\n <rect\n id=\"line\"\n x={x - radius - LINE_MARGIN}\n y={y - radius - LINE_MARGIN}\n width={radius * 2 + LINE_MARGIN * 2}\n height={2}\n fill={color}\n />\n )}\n <circle\n cx={x}\n cy={y}\n r={radius}\n fill={isDashed ? '#fff' : color}\n stroke={color}\n strokeDasharray={isDashed ? '1,1' : undefined}\n strokeWidth={2}\n />\n {showCollapseIcon && (\n <g id=\"icon\">\n <rect x={x - 4} y={y - 1} width={8} height={2} fill=\"#fff\" />\n {isCollapsed && <rect x={x - 1} y={y - 4} width={2} height={8} fill=\"#fff\" />}\n </g>\n )}\n </g>\n );\n};\n\nexport default forwardRef(HistoryCircle);\n","import React, {memo} from 'react';\nimport {getContributorColor} from '@reltio/mdm-sdk';\nimport HistoryLink from './HistoryLink';\nimport HistoryCircle from './HistoryCircle';\nimport {HistoryData, HistoryChangeTypes} from '../types';\nimport {isFakeHistoryType} from './helpers';\nimport {withTooltip} from '../../../HOCs';\n\nconst COL_WIDTH = 16;\nconst COL_MARGIN = 24;\nconst ROW_MARGIN = 16;\nconst ROW_HEIGHT = 16;\n\nexport const HistoryCircleWithTooltip = withTooltip(HistoryCircle);\n\ntype Props = {\n graphData: HistoryData;\n onHistoryCircleMouseOver?: (uri: string, timestamp: number, index: number) => void;\n};\n\nconst HistoryGraph = ({graphData, onHistoryCircleMouseOver}: Props) => {\n const {historyLanes, rows} = graphData;\n const rowPositions = [ROW_MARGIN];\n\n const {links, rowLines, circles} = rows.reduce(\n (acc, {uri, height, uris, type, fakeType, index, timestamp, label}, i) => {\n const x = historyLanes[uri].index * COL_WIDTH + COL_MARGIN;\n const y = rowPositions[i];\n rowPositions.push(y + height);\n\n const hasFakeType = isFakeHistoryType(fakeType);\n const circleUri = hasFakeType ? uris[0] : uri;\n const isCollapsed = !uris?.some((uri) => historyLanes[uri]);\n acc.circles.push(\n <HistoryCircleWithTooltip\n tooltipTitle={label}\n tooltipPlacement=\"top\"\n onMouseOver={\n onHistoryCircleMouseOver ? () => onHistoryCircleMouseOver(uri, timestamp, index) : undefined\n }\n key={`circle-${circleUri}-${i}`}\n x={x}\n y={y}\n color={getContributorColor(circleUri)}\n isDashed={hasFakeType}\n isCollapsed={isCollapsed}\n showCollapseIcon={!!uris}\n showLine={fakeType === HistoryChangeTypes.FAKE_NAVIGATE_PROFILE}\n />\n );\n\n acc.rowLines.push(\n <rect\n key={`${circleUri}-${index}`}\n x={x}\n y={y - ROW_HEIGHT / 2}\n width={'100%'}\n height={ROW_HEIGHT}\n fill={getContributorColor(circleUri)}\n opacity={0.06}\n />\n );\n\n const isUpRight = type === HistoryChangeTypes.ENTITIES_SPLITTED;\n uris?.forEach((contributorUri) => {\n const contributorLane = historyLanes[contributorUri];\n if (!contributorLane) return;\n const rowHeight = rows[i].height;\n const toX = contributorLane.index * COL_WIDTH + COL_MARGIN;\n const toY = isUpRight ? y - rowHeight : y + rowHeight;\n if (x !== toX)\n acc.links.push(\n <HistoryLink\n key={`link-${contributorUri}-${index}`}\n x={x}\n y={y}\n toX={toX}\n toY={toY}\n isDashed={isFakeHistoryType(fakeType)}\n color={getContributorColor(contributorUri)}\n />\n );\n });\n\n return acc;\n },\n {links: [], circles: [], rowLines: []}\n );\n\n const width = Object.keys(historyLanes).length * COL_WIDTH + COL_MARGIN;\n const height = rowPositions[rowPositions.length - 1] - ROW_MARGIN;\n\n Object.entries(historyLanes).forEach(([contributorUri, contributorLane]) => {\n const x = contributorLane.index * COL_WIDTH + COL_MARGIN;\n contributorLane.lifeTime.forEach(({start, end}, i) => {\n if (rows[end?.index]?.type === HistoryChangeTypes.ENTITIES_SPLITTED) return;\n const startIndex = start?.type === HistoryChangeTypes.ENTITIES_SPLITTED ? start?.index - 1 : start?.index;\n const endIndex =\n end?.type === HistoryChangeTypes.ENTITIES_MERGED_MANUALLY ||\n end?.type === HistoryChangeTypes.ENTITIES_MERGED\n ? end?.index + 1\n : end?.index;\n const startY = rowPositions[startIndex] || rowPositions[rowPositions.length - 2];\n const endY = rowPositions[endIndex] || ROW_MARGIN;\n if (startY <= endY) return;\n const color = getContributorColor(contributorUri);\n if (!end && contributorLane.index > 0) {\n circles.push(\n <HistoryCircle key={`initCircle-${contributorUri}-${i}`} x={x} y={endY} color={color} showLine />\n );\n }\n links.unshift(\n <path\n key={`line-${contributorUri}-${i}`}\n d={`M${x} ${startY} L${x} ${endY}`}\n stroke={color}\n strokeWidth={2}\n />\n );\n });\n });\n\n return (\n <svg className=\"chart\" width={width} height={height}>\n <g id=\"rowLines\">{rowLines}</g>\n <g id=\"links\">{links}</g>\n <g id=\"circles\">{circles}</g>\n </svg>\n );\n};\n\nexport default memo(HistoryGraph);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n historyTree: {\n display: 'grid',\n gridTemplateColumns: 'auto 1fr',\n overflowY: 'auto'\n },\n graph: {\n overflowX: 'auto',\n overflowY: 'hidden'\n },\n history: {\n minWidth: 344\n },\n buttonContainer: {\n gridColumnStart: 1,\n gridColumnEnd: 3,\n padding: '8px 16px'\n },\n shadow: {\n boxShadow: 'inset -8px 0px 5px -5px rgba(0,0,0,0.1)'\n }\n});\n","import React, {useCallback, useEffect, useRef, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport ReactResizeDetector from 'react-resize-detector';\nimport i18n from 'ui-i18n';\nimport {isNil, uniqBy, prop, identity} from 'ramda';\nimport classnames from 'classnames';\nimport {getEntity, Mode, Metadata, getCrosswalkType} from '@reltio/mdm-sdk';\nimport mdm, {HistoryEvent, profile} from '@reltio/mdm-module';\nimport {HistoryData, HistoryRowData} from '../types';\nimport {Button as Button} from '@material-ui/core';\nimport HistoryRow from '../HistoryRow/HistoryRow';\nimport HistoryGraph from '../HistoryGraph/HistoryGraph';\nimport LinearLoadIndicator from '../../LinearLoadIndicator/LinearLoadIndicator';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n historyData: HistoryData;\n canLoadMore: boolean;\n onLoadMore: () => void;\n isLoading: boolean;\n entityUri: string;\n historyEvent: HistoryEvent;\n findPreviousChange: (index: number, uri: string) => HistoryRowData;\n};\n\nconst HistoryTree = ({\n historyData,\n isLoading,\n canLoadMore,\n onLoadMore,\n entityUri,\n historyEvent,\n findPreviousChange\n}: Props) => {\n const styles = useStyles();\n const dispatch = useDispatch();\n const isEditableMode = useSelector(mdm.selectors.getIsEditableMode);\n const metadata: Metadata = useSelector(mdm.selectors.getMetadata);\n\n const [graphData, setGraphData] = useState({historyLanes: {}, rows: []});\n const [isScrollable, setIsScrollable] = useState(false);\n const [selectedIndex, setSelectedIndex] = useState(-1);\n\n useEffect(() => {\n if (isNil(historyEvent)) {\n setSelectedIndex(0);\n return;\n }\n const isCurrentEventChange = (change: HistoryRowData) =>\n change?.uri === (historyEvent?.overrideUri || entityUri) && change?.timestamp === historyEvent?.aStamp;\n const selectedChangeByIndex = selectedIndex !== -1 ? historyData.rows[selectedIndex] : null;\n const currentEventChangeIndex = historyData.rows.findIndex((change) => isCurrentEventChange(change));\n setSelectedIndex(isCurrentEventChange(selectedChangeByIndex) ? selectedIndex : currentEventChangeIndex);\n }, [historyData.rows, historyEvent]);\n\n const graphRef = useRef(null);\n const rowsRef = useCallback(\n (node) => {\n if (!isNil(node)) {\n const rows = historyData.rows?.map((item, i) => ({...item, height: node.childNodes[i]?.clientHeight}));\n setGraphData({historyLanes: historyData.historyLanes, rows});\n }\n },\n [historyData]\n );\n\n const handleGraphScroll = () => {\n const {scrollWidth, clientWidth, scrollLeft} = graphRef?.current || {};\n setIsScrollable(scrollLeft < scrollWidth - clientWidth);\n };\n\n const handleHistoryCircleMouseOver = (uri, timestamp, index) => {\n if (isNil(graphData.rows[index].label)) {\n const options = {time: timestamp, select: 'crosswalks'} as any;\n getEntity(uri, options).then(({crosswalks}) => {\n const label = crosswalks\n ? uniqBy(prop('type'), crosswalks)\n .map((cw) => {\n const crosswalkType = getCrosswalkType(metadata, cw.type);\n return crosswalkType ? crosswalkType.label : null;\n })\n .filter(identity)\n .join(', ')\n : i18n.text('No data');\n\n setGraphData((prevGraphData) => ({\n ...prevGraphData,\n rows: prevGraphData.rows.map((row) => (row.index === index ? {...row, label} : row))\n }));\n });\n }\n };\n\n const handleHistoryRowClick = (index: number, change: HistoryRowData, isSelected: boolean, isCurrent: boolean) => {\n if (isEditableMode) {\n if (\n window.confirm(i18n.text('Are you sure you want to go in history mode? All your changes will be lost.'))\n ) {\n dispatch(profile.mode.actions.modeUpdated(Mode.Viewing));\n } else {\n return;\n }\n }\n\n if ((isCurrent && !isSelected) || (!isCurrent && isSelected)) {\n dispatch(profile.history.actions.clearHistoryEvent());\n setSelectedIndex(0);\n } else if (!isCurrent && !isSelected) {\n const aChange = findPreviousChange(index - 1, change.uri || entityUri);\n const bChange = findPreviousChange(index, change.uri || entityUri);\n const aStamp = aChange?.timestamp;\n const bStamp = bChange?.timestamp;\n const overrideUri = change?.uri === entityUri ? null : change?.uri;\n dispatch(profile.history.actions.setHistoryEvent({aStamp, bStamp, overrideUri}));\n setSelectedIndex(index);\n }\n };\n\n return (\n <div className={styles.historyTree}>\n {isLoading && <LinearLoadIndicator />}\n <div\n className={classnames(styles.graph, {[styles.shadow]: isScrollable})}\n onScroll={handleGraphScroll}\n ref={graphRef}\n >\n <HistoryGraph onHistoryCircleMouseOver={handleHistoryCircleMouseOver} graphData={graphData} />\n <ReactResizeDetector handleWidth onResize={handleGraphScroll} />\n </div>\n <div ref={rowsRef} className={styles.history}>\n {historyData.rows.map((change, i) => {\n const isSelected = i === selectedIndex;\n const isCurrent = i === 0;\n return (\n <HistoryRow\n key={`row-${i}`}\n change={change}\n isCurrent={isCurrent}\n isSelected={isSelected}\n onClick={() => handleHistoryRowClick(i, change, isSelected, isCurrent)}\n />\n );\n })}\n </div>\n {canLoadMore && (\n <div className={styles.buttonContainer}>\n <Button color=\"primary\" onClick={() => onLoadMore()}>\n {i18n.text('Show more')}\n </Button>\n </div>\n )}\n </div>\n );\n};\n\nexport default HistoryTree;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n flexWrap: 'wrap',\n padding: '10px 15px'\n }\n});\n\ntype StylesProps = {\n color: string;\n};\n\nexport const useContributorStyles = makeStyles({\n icon: ({color}: StylesProps) => ({\n boxSizing: 'border-box',\n borderWidth: 2,\n borderStyle: 'solid',\n borderColor: color,\n height: 12,\n width: 12,\n borderRadius: 30,\n transition: 'opacity 0.3s',\n margin: 4\n }),\n active: ({color}: StylesProps) => ({\n backgroundColor: color\n }),\n inactive: {\n backgroundColor: 'white'\n },\n clickable: {\n cursor: 'pointer'\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {getContributorColor} from '@reltio/mdm-sdk';\n\nimport {useContributorStyles} from './styles';\n\ntype Props = {\n value: string;\n isSelected?: boolean;\n onClick?: () => void;\n};\n\nconst ContributorItem = ({value, isSelected = true, onClick}: Props) => {\n const color = getContributorColor(value);\n const styles = useContributorStyles({color});\n\n return (\n <div\n className={classnames(styles.icon, {\n [styles.inactive]: !isSelected,\n [styles.active]: isSelected,\n [styles.clickable]: !!onClick\n })}\n onClick={onClick}\n />\n );\n};\n\nexport default ContributorItem;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {without} from 'ramda';\nimport ContributorItem from './ContributorItem';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n values: string[];\n selectedValues: string[];\n onSelectValues: (values: string[]) => void;\n entityUri: string;\n className?: string;\n};\n\nconst ContributorsPanel = ({values, selectedValues, entityUri, onSelectValues, className}: Props) => {\n const styles = useStyles();\n\n const handleClick = (value: string) => {\n if (selectedValues?.includes(value)) {\n onSelectValues(without([value], selectedValues));\n } else {\n onSelectValues([...(selectedValues || []), value]);\n }\n };\n\n return (\n <div className={classnames(styles.root, className)}>\n <ContributorItem value={entityUri} />\n {values?.length > 0 &&\n values.map((value) => (\n <ContributorItem\n key={value}\n value={value}\n isSelected={selectedValues?.includes(value)}\n onClick={() => handleClick(value)}\n />\n ))}\n </div>\n );\n};\n\nexport default ContributorsPanel;\n","import {useMemo} from 'react';\nimport {isNil, pipe, slice, find, curry, drop} from 'ramda';\nimport {HistoryChange} from '@reltio/mdm-sdk';\nimport {HistoryChangeTypes, HistoryLife, HistoryRowData} from './../types';\n\ntype Props = {\n entityUri: string;\n historyChanges: HistoryChange[];\n selectedUris: string[];\n};\n\nexport const useHistoryTree = ({entityUri, historyChanges, selectedUris}: Props) => {\n return useMemo(() => {\n const historyLanes = {[entityUri]: {index: 0, lifeTime: []}};\n const rows = [{user: '', timestamp: 0, uri: entityUri}] as HistoryRowData[];\n\n const checkChange = curry((involvedUris: string | any[], checkInUris: boolean, change: HistoryChange) => {\n const uri = change.uri || entityUri;\n if (involvedUris) {\n if (Array.isArray(involvedUris)) {\n if (change.type !== HistoryChangeTypes.ENTITY_LOST_MERGE) return null;\n if (involvedUris.includes(uri)) {\n return change;\n } else if (checkInUris && change.uris) {\n return involvedUris.some((involvedUri) => change.uris.includes(involvedUri)) ? change : null;\n }\n } else {\n if (uri === involvedUris || (checkInUris && change.uris?.includes(involvedUris))) return change;\n }\n }\n\n return null;\n });\n\n const findNextChange = (index: number, involvedUris: string | any[], checkInUris: boolean) =>\n pipe(drop(index + 1), find(checkChange(involvedUris, checkInUris)))(historyChanges);\n\n const findPreviousChange = (index: number, uri: string) =>\n pipe(slice(index + 1, Infinity), find(checkChange(uri, false)))(rows);\n\n const checkLaneUri = (uri: string) => {\n if (!historyLanes[uri] && (!selectedUris || selectedUris.includes(uri))) {\n historyLanes[uri] = {\n index: Object.keys(historyLanes).length,\n lifeTime: []\n };\n }\n return historyLanes[uri];\n };\n\n const startNewLife = (lifeTime: HistoryLife[], change: HistoryChange) => {\n const currentLife = lifeTime[lifeTime.length - 1];\n if (\n currentLife &&\n (!currentLife.start ||\n (currentLife.start.type === HistoryChangeTypes.ENTITY_CREATED &&\n change.type === HistoryChangeTypes.ENTITIES_SPLITTED))\n ) {\n currentLife.start = change;\n return;\n }\n lifeTime.push({start: change, end: null});\n };\n\n const updateLife = (lifeTime: HistoryLife[], change: HistoryChange) => {\n let shouldAddNewLife = true;\n if (lifeTime.length) {\n const currentLife = lifeTime[lifeTime.length - 1];\n shouldAddNewLife = !(\n (!currentLife.start || currentLife.start.timestamp < change.timestamp) &&\n (!currentLife.end || currentLife.end.timestamp > change.timestamp)\n );\n }\n if (shouldAddNewLife) {\n lifeTime.push({start: null, end: null});\n }\n };\n\n const endLife = (lifeTime: HistoryLife[], change: HistoryChange) => {\n if (lifeTime.length) {\n const currentLife = lifeTime[lifeTime.length - 1];\n if (!currentLife.start) currentLife.start = change;\n }\n lifeTime.push({start: null, end: change});\n };\n\n const checkLifeTime = (lifeTime: HistoryLife[], change: HistoryChange) => {\n switch (change.type) {\n case HistoryChangeTypes.ENTITY_CREATED:\n startNewLife(lifeTime, change);\n break;\n case HistoryChangeTypes.ENTITIES_MERGED_ON_THE_FLY:\n case HistoryChangeTypes.ENTITY_CHANGED:\n updateLife(lifeTime, change);\n break;\n case HistoryChangeTypes.ENTITY_LOST_MERGE:\n case HistoryChangeTypes.ENTITY_REMOVED:\n endLife(lifeTime, change);\n break;\n case HistoryChangeTypes.ENTITIES_SPLITTED:\n updateLife(lifeTime, change);\n change.uris?.forEach((uri) => {\n const relatedLane = historyLanes[uri];\n if (!relatedLane) return;\n const lifeTimeLength = relatedLane.lifeTime.length;\n lifeTimeLength\n ? startNewLife(relatedLane.lifeTime, change)\n : endLife(relatedLane.lifeTime, change);\n\n rows.push({\n uri,\n user: change.user,\n type: change.type,\n fakeType: lifeTimeLength\n ? HistoryChangeTypes.FAKE_UPDATE\n : HistoryChangeTypes.FAKE_NAVIGATE_PROFILE,\n timestamp: change.timestamp\n });\n });\n break;\n case HistoryChangeTypes.ENTITIES_MERGED:\n case HistoryChangeTypes.ENTITIES_MERGED_MANUALLY:\n updateLife(lifeTime, change);\n change.uris?.forEach((uri) => {\n const relatedLane = historyLanes[uri];\n if (relatedLane) endLife(relatedLane.lifeTime, change);\n });\n break;\n }\n };\n\n const postProcessChanges: HistoryChange[] = [];\n historyChanges?.forEach((change, index) => {\n switch (change.type) {\n case HistoryChangeTypes.ENTITIES_SPLITTED:\n if (!findNextChange(index, change.uri || entityUri, false)) {\n return;\n } else {\n const uri = change.uri;\n const involvedUris = change.uris ? [change.uris, uri] : [uri];\n const lostMergeChange = findNextChange(index, involvedUris, true);\n if (lostMergeChange && (!uri || uri === lostMergeChange.uri)) return;\n }\n break;\n case HistoryChangeTypes.ENTITY_LOST_MERGE:\n case HistoryChangeTypes.RELATIONSHIP_CREATED:\n case HistoryChangeTypes.RELATIONSHIP_REMOVED:\n case HistoryChangeTypes.RELATIONSHIP_CHANGED:\n return;\n }\n\n let addPostProcess = false;\n change.uris?.forEach((uri) => {\n if (!checkLaneUri(uri)) addPostProcess = true;\n });\n\n const contributorLane = checkLaneUri(change.uri || entityUri);\n if (!contributorLane) return;\n const rowChange = {...change};\n checkLifeTime(contributorLane.lifeTime, rowChange);\n if (addPostProcess) postProcessChanges.push(rowChange);\n rows.push(rowChange);\n });\n\n postProcessChanges.forEach((postChange) => {\n postChange.uris.forEach((postUri) => {\n if (historyLanes[postUri]) return;\n historyChanges.forEach(({uri, uris, timestamp, user, type}) => {\n if (uri !== postUri) return;\n uris?.forEach((contributorUri) => {\n const contributorLane = historyLanes[contributorUri];\n if (!contributorLane) return;\n let fakeType = null;\n switch (type) {\n case HistoryChangeTypes.ENTITIES_MERGED:\n case HistoryChangeTypes.ENTITIES_MERGED_MANUALLY:\n fakeType = HistoryChangeTypes.FAKE_FILTERED_INCOMING;\n break;\n case HistoryChangeTypes.ENTITIES_SPLITTED:\n fakeType = HistoryChangeTypes.FAKE_FILTERED_OUTGOING;\n break;\n default:\n return;\n }\n\n const fakeChange = {\n fakeType: fakeType,\n uri: postChange.uri,\n uris: [contributorUri],\n type,\n user,\n timestamp\n };\n\n const extendLife = findClosestLife(contributorLane.lifeTime, postChange.timestamp);\n if (fakeType === HistoryChangeTypes.FAKE_FILTERED_INCOMING) {\n if (!isNil(extendLife.endIndex)) {\n contributorLane.lifeTime[extendLife.endIndex].end = fakeChange;\n }\n } else {\n if (!isNil(extendLife.startIndex)) {\n contributorLane.lifeTime[extendLife.startIndex].start = fakeChange;\n }\n }\n rows.splice(rows.indexOf(postChange), 0, fakeChange);\n });\n });\n });\n });\n\n rows.forEach((row, i) => {\n row.index = i;\n row.uri = row.uri || entityUri;\n });\n\n return {\n historyData: {historyLanes, rows},\n findPreviousChange\n };\n }, [entityUri, historyChanges, selectedUris]);\n};\n\nconst findClosestLife = (lifeTime: HistoryLife[], timestamp: number) =>\n lifeTime.reduce(\n (acc, {start, end}, i) => {\n if (start) {\n const d = timestamp - start.timestamp;\n if (isNil(acc.startDistance) || (Math.abs(acc.startDistance) > Math.abs(d) && d > 0)) {\n acc.startIndex = i;\n acc.startDistance = d;\n }\n }\n if (end) {\n const d = timestamp - end.timestamp;\n if (isNil(acc.endDistance) || (Math.abs(acc.endDistance) > Math.abs(d) && d < 0)) {\n acc.endIndex = i;\n acc.endDistance = d;\n }\n }\n return acc;\n },\n {startIndex: null, endIndex: null, startDistance: null, endDistance: null}\n );\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n position: 'relative',\n height: '100%'\n },\n borderBottom: {\n borderBottom: '1px solid rgba(0, 0, 0, 0.12)'\n }\n});\n","import React, {memo, useEffect, useState} from 'react';\nimport {HistoryWithTotal} from '@reltio/mdm-sdk';\nimport HistoryTree from '../HistoryTree/HistoryTree';\nimport ContributorsPanel from '../ContributorsPanel/ContributorsPanel';\nimport {useHistoryTree} from '../hooks/useHistoryTree';\nimport {HistoryEvent} from '@reltio/mdm-module';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n isLoading: boolean;\n historyWithTotal: HistoryWithTotal;\n contributorsUris: string[];\n entityUri: string;\n historyEvent: HistoryEvent;\n canLoadMore: boolean;\n onLoadMore: () => void;\n};\n\nconst HistoryView = ({\n isLoading,\n historyWithTotal,\n contributorsUris,\n entityUri,\n canLoadMore,\n onLoadMore,\n historyEvent\n}: Props) => {\n const styles = useStyles();\n const [selectedUris, setSelectedUris] = useState<string[]>(null);\n\n useEffect(() => {\n setSelectedUris(contributorsUris);\n }, [contributorsUris]);\n\n const {historyData, findPreviousChange} = useHistoryTree({\n entityUri,\n historyChanges: historyWithTotal?.changes,\n selectedUris\n });\n\n return (\n <div className={styles.root}>\n <ContributorsPanel\n values={contributorsUris}\n selectedValues={selectedUris}\n onSelectValues={setSelectedUris}\n entityUri={entityUri}\n className={styles.borderBottom}\n />\n <HistoryTree\n historyData={historyData}\n isLoading={isLoading}\n onLoadMore={onLoadMore}\n canLoadMore={canLoadMore}\n entityUri={entityUri}\n historyEvent={historyEvent}\n findPreviousChange={findPreviousChange}\n />\n </div>\n );\n};\n\nexport default memo(HistoryView);\n","import {\n pipe,\n defaultTo,\n reject,\n map,\n join,\n cond,\n equals,\n append,\n concat,\n chain,\n evolve,\n values,\n over,\n lensProp\n} from 'ramda';\nimport {\n isEmptyValue,\n escapeQueryValue,\n wrapInBrackets,\n multiValueFilter,\n buildUserFilterClause,\n buildDateRangeFilterClause\n} from '@reltio/mdm-sdk';\nimport {HistoryActivityType} from '../types/HistoryFilter';\nimport {ActivityTypes} from '../../activityLog/types/ActivityTypes';\nimport {AttributeOption} from '../../../types';\n\nconst convertHistoryTypes = chain(\n cond([\n [\n equals(HistoryActivityType.MERGE),\n () => [\n ActivityTypes.ENTITIES_MERGED,\n ActivityTypes.ENTITIES_MERGED_MANUALLY,\n ActivityTypes.ENTITIES_MERGED_ON_THE_FLY\n ]\n ],\n [equals(HistoryActivityType.UNMERGE), () => [ActivityTypes.ENTITIES_SPLITTED]],\n [equals(HistoryActivityType.UPDATE), () => [ActivityTypes.ENTITY_CHANGED]]\n ])\n);\n\nconst buildActivityFilterClause = pipe(\n defaultTo([]),\n convertHistoryTypes,\n concat([ActivityTypes.ENTITY_CREATED, ActivityTypes.ENTITY_REMOVED, ActivityTypes.ENTITY_LOST_MERGE]),\n multiValueFilter((value: string) => `equals(type, '${value}')`)\n);\n\nconst buildAttributeFilterClause = (attribute: AttributeOption) => `changes(${escapeQueryValue(attribute.value)})`;\n\nexport const buildHistoryFilterString = pipe(\n defaultTo({}),\n reject(isEmptyValue),\n evolve({\n users: multiValueFilter(buildUserFilterClause),\n attributes: multiValueFilter(buildAttributeFilterClause),\n dateRange: buildDateRangeFilterClause\n }),\n over(lensProp('activities'), buildActivityFilterClause),\n values,\n reject(isEmptyValue),\n append(\"not equals(user, 'collaboration-service')\"),\n map(wrapInBrackets),\n join(' and ')\n);\n","import {useState, useMemo, useCallback, useEffect} from 'react';\nimport {Entity, getHistoricUris, getHistoryWithTotal, HistoryWithTotal, isEmptyValue} from '@reltio/mdm-sdk';\nimport {difference, either, evolve, isEmpty, isNil, pipe, reject} from 'ramda';\nimport {HistoryActivityType, HistoryFilter} from '../types';\nimport {buildHistoryFilterString} from '../utils/filters';\nimport {useSafePromise} from '../../../hooks';\n\ntype Props = {\n entity: Entity;\n enabled: boolean;\n};\n\nconst MAX_HISTORY_ROWS = 32;\n\nexport const DEFAULT_HISTORY_FILTER: HistoryFilter = {\n activities: [HistoryActivityType.MERGE, HistoryActivityType.UNMERGE, HistoryActivityType.UPDATE]\n};\n\nexport const isDefaultFilter = (filter: HistoryFilter): boolean => {\n return pipe(\n evolve({activities: difference(DEFAULT_HISTORY_FILTER.activities)}),\n reject(either(isNil, isEmpty)),\n isEmpty\n )(filter || {});\n};\n\nexport const useHistory = ({entity, enabled}: Props) => {\n const [historyFilter, setHistoryFilter] = useState(DEFAULT_HISTORY_FILTER);\n const [historyPage, setHistoryPage] = useState(0);\n\n const historyFilterString = useMemo(() => buildHistoryFilterString(historyFilter), [historyFilter]);\n\n const [historicUris, setHistoricUris] = useState<string[]>(null);\n const [historyWithTotal, setHistoryWithTotal] = useState<HistoryWithTotal>(null);\n const [isLoading, setIsLoading] = useState(false);\n const safePromise = useSafePromise();\n const entityUri = entity?.uri;\n const options = {max: MAX_HISTORY_ROWS, order: 'desc'};\n const showAll = isEmptyValue(historyFilter?.attributes) || undefined;\n\n const loadHistoryWithTotal = () => {\n setIsLoading(true);\n return safePromise(\n getHistoryWithTotal({\n entityUri,\n historicUris,\n filter: historyFilterString,\n showAll,\n ...options\n })\n )\n .then(setHistoryWithTotal)\n .catch((e) => {\n console.warn('Failed to load history data', e);\n setHistoryWithTotal(null);\n })\n .finally(() => {\n setIsLoading(false);\n });\n };\n\n useEffect(() => {\n if (entityUri && enabled) {\n loadHistoryWithTotal();\n }\n }, [historyFilterString, showAll, historicUris]);\n\n const loadHistoricUris = () => {\n setIsLoading(true);\n return safePromise(getHistoricUris({entityUri}))\n .then((historicUris) => {\n setHistoricUris(historicUris);\n })\n .catch((e) => {\n console.warn('Failed to load history data', e);\n setHistoricUris(null);\n })\n .finally(() => {\n setIsLoading(false);\n });\n };\n\n useEffect(() => {\n if (entityUri && enabled) {\n loadHistoricUris();\n setHistoryPage(0);\n }\n }, [entityUri, entity?.updatedTime, enabled]);\n\n const loadMore = useCallback(\n (offset: number) => {\n if (entityUri && historicUris && enabled) {\n setIsLoading(true);\n safePromise(\n getHistoryWithTotal({\n entityUri,\n historicUris,\n filter: historyFilterString,\n showAll,\n offset,\n ...options\n })\n )\n .then((results) => {\n setHistoryWithTotal((prev) => ({...prev, changes: [...prev?.changes, ...results.changes]}));\n })\n .catch((e) => {\n console.warn('Failed to load history data', e);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }\n },\n [historicUris, historyFilterString, enabled]\n );\n\n const canLoadMore = useMemo(() => (historyPage + 1) * MAX_HISTORY_ROWS < historyWithTotal?.total, [\n historyWithTotal,\n historyPage\n ]);\n\n const onApplyFilter = useCallback((filter: HistoryFilter) => {\n setHistoryPage(0);\n setHistoryFilter(filter);\n }, []);\n\n const onClearFilter = useCallback(() => {\n onApplyFilter({...DEFAULT_HISTORY_FILTER});\n }, []);\n\n const onLoadMore = useCallback(() => {\n if (!canLoadMore) return;\n loadMore((historyPage + 1) * MAX_HISTORY_ROWS);\n setHistoryPage(historyPage + 1);\n }, [loadMore, historyPage, canLoadMore]);\n\n return {\n isLoading,\n canLoadMore,\n onLoadMore,\n onApplyFilter,\n onClearFilter,\n historicUris,\n historyWithTotal,\n historyFilter\n };\n};\n","import {useEffect, useState} from 'react';\nimport {isTempUri, isDataTenantEntity, Entity} from '@reltio/mdm-sdk';\nimport {usePerspectivesSettings} from '../../../contexts';\n\ntype Props = {\n entity: Entity;\n perspectiveId: string;\n historyButtonId: number;\n};\n\nexport const useHistoryEnabled = ({perspectiveId, entity, historyButtonId}: Props) => {\n const {perspectiveSettings} = usePerspectivesSettings(perspectiveId);\n const {active} = perspectiveSettings || {};\n\n const isHistoryTabActive = active === historyButtonId;\n const [wasHistoryTabActive, setWasHistoryTabActive] = useState(false);\n const entityUri = entity?.uri;\n useEffect(() => {\n if (!isHistoryTabActive) {\n setWasHistoryTabActive(false);\n }\n }, [entityUri]);\n\n useEffect(() => {\n if (isHistoryTabActive) {\n setWasHistoryTabActive(true);\n }\n }, [isHistoryTabActive]);\n\n const isProfilePersisted = entityUri && !isTempUri(entityUri) && !isDataTenantEntity(entity);\n const isHistoryEnabled = wasHistoryTabActive && isProfilePersisted;\n\n return {isHistoryEnabled, isProfilePersisted};\n};\n","import {useState, useEffect} from 'react';\nimport {useSelector, useDispatch} from 'react-redux';\nimport mdmModule, {HistoryEvent, profile} from '@reltio/mdm-module';\nimport {Entity, getEntityTimeSlice} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '../../../hooks';\n\ntype Props = {\n entity: Entity;\n historyEvent: HistoryEvent;\n};\n\nexport const useHistorySlice = ({entity, historyEvent}: Props) => {\n const [isLoading, setIsLoading] = useState(false);\n const historySlice = useSelector(mdmModule.selectors.getHistorySlice);\n const dispatch = useDispatch();\n const safePromise = useSafePromise();\n\n const {aStamp, bStamp, overrideUri} = historyEvent || {};\n const entityUri = overrideUri || entity?.uri;\n\n useEffect(() => {\n if (historyEvent && entityUri) {\n setIsLoading(true);\n safePromise(\n Promise.all([\n getEntityTimeSlice(entityUri, aStamp),\n bStamp && bStamp !== 1 ? getEntityTimeSlice(entityUri, bStamp) : Promise.resolve(null)\n ])\n )\n .then(([aEntity, bEntity]) => {\n dispatch(profile.history.actions.setHistorySlice({aEntity, bEntity}));\n })\n .catch((e) => {\n console.warn('Failed to load entity slice', e);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }\n }, [aStamp, bStamp, entityUri]);\n\n return {isLoading, historySlice};\n};\n","import {ActivityTypes} from '../../activityLog/types/ActivityTypes';\n\nenum FakeTypes {\n FAKE_NAVIGATE_PROFILE = 'FAKE_NAVIGATE_PROFILE',\n FAKE_FILTERED_INCOMING = 'FAKE_FILTERED_INCOMING',\n FAKE_FILTERED_OUTGOING = 'FAKE_FILTERED_OUTGOING',\n FAKE_UPDATE = 'FAKE_UPDATE'\n}\n\nexport const HistoryChangeTypes = {...ActivityTypes, ...FakeTypes};\nexport type HistoryChangeTypes = typeof HistoryChangeTypes;\n","import {DateRangeFilter} from '@reltio/mdm-sdk';\nimport {AttributeOption} from '../../../types';\n\nexport enum HistoryActivityType {\n UPDATE = 'UPDATE',\n MERGE = 'MERGE',\n UNMERGE = 'UNMERGE'\n}\n\nexport type HistoryFilter = {\n dateRange?: DateRangeFilter;\n users?: string[];\n activities?: HistoryActivityType[];\n attributes?: AttributeOption[];\n};\n","import React, {useCallback, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {Portal as Portal} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport Snackbar, {SnackbarOrigin} from '@material-ui/core/Snackbar';\n\ntype SnackbarOptions = {\n anchorOrigin?: SnackbarOrigin;\n showDismiss?: boolean;\n};\nconst FIVE_MINUTES = 5 * 60 * 1000;\nexport const useSnackbar = (options: SnackbarOptions = {}) => {\n const {anchorOrigin, showDismiss} = options;\n const [isOpenSnackbar, setIsOpenSnackbar] = useState(false);\n const [snackbarMessage, setSnackbarMessage] = useState('');\n\n const closeSnackbar = useCallback(() => {\n setIsOpenSnackbar(false);\n setSnackbarMessage('');\n }, []);\n\n const showSnackbarMessage = useCallback((message) => {\n setIsOpenSnackbar(true);\n setSnackbarMessage(message);\n }, []);\n\n const SnackbarRenderer = useCallback(() => {\n return (\n <Portal container={document.body}>\n <Snackbar\n open={isOpenSnackbar}\n anchorOrigin={anchorOrigin}\n autoHideDuration={FIVE_MINUTES}\n onClose={closeSnackbar}\n message={snackbarMessage}\n action={\n showDismiss ? (\n <Button color=\"primary\" onClick={closeSnackbar}>\n {i18n.text('Dismiss')}\n </Button>\n ) : undefined\n }\n />\n </Portal>\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isOpenSnackbar, closeSnackbar, snackbarMessage]);\n\n return {SnackbarRenderer, showSnackbarMessage};\n};\n"],"names":["customStyles","input","currentStyles","fontSize","menuPortal","zIndex","useStyles","makeStyles","root","flex","title","paddingBottom","paddingLeft","dropDownInput","width","justifyContent","backgroundColor","borderTop","option","height","noOptionsMessage","entityType","selectedAttributes","className","onChange","disableUnderline","menuPlacement","metadata","useSelector","mdmModule","styles","prepareItems","useCallback","data","level","prevLabel","reduce","acc","item","hidden","chipLabel","label","push","value","uri","attrType","subAttributes","getAttributeTypeSubAttributes","concat","options","useMemo","attributes","classnames","Typography","variant","i18n","MultiSelect","TextFieldProps","InputProps","classes","components","DropdownIndicator","DropdownIndicatorWithIconButton","MultiValue","props","Option","isFocused","isSelected","innerProps","AttributeListItem","checked","labelInText","pipe","defaultTo","menuPortalTarget","document","body","viewBox","xmlns","d","fill","fillRule","stroke","strokeWidth","opacity","ColumnsSettings","columnsData","selectedColumns","onChangeColumns","tooltipTitle","anchorEl","setAnchorEl","useState","handleColumnClick","column","changedColumns","getChildColumns","pluck","wasSelected","isColumnSelected","difference","uniq","SmallIconButton","size","icon","TableIcon","onClick","event","currentTarget","ColumnsSettingsPopup","onColumnClick","onClose","propTypes","ColumnsDataType","PropTypes","popup","minWidth","groupItem","ColumnListItem","style","isGroupItem","hideCheckBox","key","id","Highlighter","text","highlight","filterText","hideIcon","setFilterText","groupedItems","buildColumnItems","items","flattenGroupedItemsData","containerWidth","getMaxItemWidth","handleSearchOnEnter","focusIndex","handleKeyDown","useKeyboardNavigation","open","onSelectFocusedItem","selectedItems","handleClose","listHeight","Math","min","length","containerHeight","max","SelectionPopup","onSearch","searchInputOnKeyDown","VirtualGroupedList","fixedTitle","renderItem","index","isGroupColumn","getItemSize","groupId","isParentToColumn","curry","parent","startsWith","isGroupToColumn","group","isHideableColumn","propOr","addColumn","columns","find","either","getColumnRoot","children","filterColumnsByLabel","utils","some","buildColumnsTrees","columnData","dataTypeDefinition","buildFilteredColumnItems","filter","chain","isGroupedColumnsData","has","flattenGroupedColumnsData","map","assoc","when","childColumns","includes","every","display","paddingRight","inputNumber","marginRight","inputUnit","periods","interval","unit","onFocus","onNumberChange","getValue","parseInt","newValue","onUnitChange","newUnit","TextField","type","inputProps","SimpleDropDownSelector","placeholder","capitalize","getIntervalUnitLabel","withMuiSkin","CreatableSelect","innerRef","selectProps","MenuItem","classNames","ref","selected","component","Checkbox","color","ExpandedValueTooltip","onMouseMove","onMouseOver","tabIndex","isRequired","current","theme","top","left","undefined","fontWeight","clearIndicator","padding","spacing","margin","dropdownIndicator","creatable","getOptions","loadingIndicator","componentsProp","classesProp","stylesProp","onChangeProp","onInputChange","onInputChangeProp","reactSelectProps","SelectComponent","AsyncSelect","Select","inputValue","setInputValue","multiSelectClasses","omit","inputId","multiSelectComponents","mergeClasses","indicatorSeparator","base","loadingMessage","fontFamily","labelProps","InputLabelProps","htmlFor","shrink","isMulti","actionMeta","action","closeMenuOnSelect","hideSelectedOptions","loadOptions","defaultProps","cacheOptions","defaultOptions","ClearIndicator","Control","DownChevron","CrossIcon","Group","GroupHeading","IndicatorsContainer","IndicatorSeparator","Input","LoadingIndicator","Menu","MenuList","MenuPortal","LoadingMessage","NoOptionsMessage","MultiValueContainer","MultiValueLabel","MultiValueRemove","Placeholder","SelectContainer","SingleValue","ValueContainer","control","valueContainer","multiValue","singleValue","menu","container","groupHeading","indicatorsContainer","menuList","multiValueLabel","multiValueRemove","getOptionValue","isSearchable","inputRef","cx","cy","r","fillOpacity","maskType","maskUnits","x","y","mask","clipRule","x1","y1","x2","y2","gradientUnits","stopColor","stopOpacity","offset","flexWrap","flexDirection","alignItems","overflow","minHeight","boxSizing","logo","textBox","maxWidth","marginTop","palette","primary","lineHeight","textAlign","secondaryText","letterSpacing","paddingTop","IconRenderer","AttributesListIcon","selectedUsers","valueToOption","prepareValues","values","tenant","servicesPath","cachedRequest","useRef","getAllUsersForTenant","then","users","username","filterUsers","ActivityTypes","getItemDataType","path","getActivityType","activity","firstItem","removeIgnoredItems","isImplementedItem","isValidActivityType","filteredItems","console","error","reject","itemsTotal","splitActivityByType","groupBy","ifElse","stringifyDeltaValue","deltaValue","attributeTypeUri","attributePresentations","attributeType","findAttributeTypeByUri","getAttrDataTypeDefinition","formatValue","formatDataTypeValue","isNil","Object","entries","flatMap","attributeTypeName","deltaValues","makeAttrTypeUri","join","getActivityLabel","transition","inputRoot","dateOptionLabel","paper","localeFormat","moment","longDateFormat","noop","setOpen","handleToggle","onCancel","fullWidth","DataTypes","endAdornment","menuIsOpen","readOnly","autoFocus","anchorOrigin","vertical","horizontal","transformOrigin","elevation","getContentAnchorEl","MenuListProps","autoFocusItem","DateRangePicker","onApply","dateRangeTypeOptions","DateRangeTypes","getDateRangeTypeLabel","intervalContainer","typeInput","emptyDates","emptyInterval","isIntervalType","isBetweenType","initDatesInterval","period","initInterval","datesInterval","setDatesInterval","setInterval","selectedType","getCurrentPeriodByType","changePeriod","useDidUpdateEffect","DateIntervalSelector","CustomDateRangeEditor","historyActivityOptions","HistoryActivityType","overflowY","selectedHistoryActivityTypes","filterContainer","filterContainerScrollable","filterItem","filterControls","clearButton","onApplyFilter","buttonRef","isOpen","setIsOpen","currentValue","setCurrentValue","activities","dateRange","buttonColor","isDefaultFilter","useEffect","handlePropChange","propName","filterValue","togglePopup","applyButtonHandler","isDateRangeValid","dissoc","clearAllButtonHandler","DEFAULT_HISTORY_FILTER","FilterListIcon","Popover","UserSelector","AttributeSelector","Button","menuItem","menuText","marginLeft","checkIcon","position","MenuItemRenderer","forwardRef","onMenuClose","e","Check","displayName","mode","dispatch","useDispatch","handleModeChange","selectedMode","profile","menuItems","HistoryMode","DropDownMenuButton","buttonComponent","buttonProps","MoreVertIcon","menuId","divider","count","filterButton","total","Divider","orientation","flexItem","Spacer","historyRow","cursor","background","content","rowHeader","badge","pointerEvents","textOverflow","whiteSpace","date","user","change","isCurrent","matchGroups","timestamp","getContributorColor","bold","isFakeHistoryType","HistoryChangeTypes","toX","toY","isDashed","lineData","isUp","isLeft","curveCenterY","getHistoryLinkCurve","strokeDasharray","isCollapsed","showCollapseIcon","showLine","otherProps","radius","BUMP_RADIUS","LINE_MARGIN","HistoryCircleWithTooltip","withTooltip","HistoryCircle","memo","graphData","onHistoryCircleMouseOver","historyLanes","rows","rowPositions","links","rowLines","circles","i","uris","fakeType","hasFakeType","circleUri","tooltipPlacement","ROW_HEIGHT","isUpRight","forEach","contributorUri","contributorLane","rowHeight","keys","lifeTime","start","end","startIndex","endIndex","startY","endY","unshift","historyTree","gridTemplateColumns","graph","overflowX","history","buttonContainer","gridColumnStart","gridColumnEnd","shadow","boxShadow","historyData","isLoading","canLoadMore","onLoadMore","entityUri","historyEvent","findPreviousChange","isEditableMode","mdm","setGraphData","isScrollable","setIsScrollable","selectedIndex","setSelectedIndex","isCurrentEventChange","overrideUri","aStamp","selectedChangeByIndex","currentEventChangeIndex","findIndex","graphRef","rowsRef","node","childNodes","clientHeight","handleGraphScroll","scrollWidth","clientWidth","scrollLeft","LinearLoadIndicator","onScroll","time","select","getEntity","crosswalks","uniqBy","prop","cw","crosswalkType","getCrosswalkType","identity","prevGraphData","row","handleWidth","onResize","window","confirm","Mode","aChange","bChange","bStamp","handleHistoryRowClick","useContributorStyles","borderWidth","borderStyle","borderColor","borderRadius","active","inactive","clickable","selectedValues","onSelectValues","without","handleClick","findClosestLife","startDistance","abs","endDistance","borderBottom","historyWithTotal","contributorsUris","selectedUris","setSelectedUris","historyChanges","checkChange","involvedUris","checkInUris","Array","isArray","involvedUri","findNextChange","drop","checkLaneUri","startNewLife","currentLife","updateLife","shouldAddNewLife","endLife","postProcessChanges","lostMergeChange","addPostProcess","rowChange","relatedLane","lifeTimeLength","checkLifeTime","postChange","postUri","fakeChange","extendLife","splice","indexOf","slice","Infinity","useHistoryTree","changes","convertHistoryTypes","cond","equals","buildActivityFilterClause","multiValueFilter","buildHistoryFilterString","isEmptyValue","evolve","buildUserFilterClause","attribute","escapeQueryValue","buildDateRangeFilterClause","over","lensProp","append","wrapInBrackets","isEmpty","useHistory","entity","enabled","historyFilter","setHistoryFilter","historyPage","setHistoryPage","historyFilterString","historicUris","setHistoricUris","setHistoryWithTotal","setIsLoading","safePromise","useSafePromise","order","showAll","getHistoryWithTotal","catch","warn","finally","getHistoricUris","updatedTime","loadMore","results","prev","onClearFilter","useHistoryEnabled","perspectiveId","historyButtonId","perspectiveSettings","usePerspectivesSettings","isHistoryTabActive","wasHistoryTabActive","setWasHistoryTabActive","isProfilePersisted","isTempUri","isDataTenantEntity","isHistoryEnabled","useHistorySlice","historySlice","Promise","all","getEntityTimeSlice","resolve","aEntity","bEntity","FakeTypes","FIVE_MINUTES","useSnackbar","showDismiss","isOpenSnackbar","setIsOpenSnackbar","snackbarMessage","setSnackbarMessage","closeSnackbar","showSnackbarMessage","message","SnackbarRenderer","Portal","autoHideDuration"],"sourceRoot":""}