@reltio/remotes 1.4.1647 → 1.4.1649
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/1039.js +1 -1
- package/1088.js +1 -1
- package/1146.js +1 -1
- package/1148.js +1 -1
- package/1334.js +1 -1
- package/1425.js +1 -1
- package/1488.js +2 -0
- package/1488.js.map +1 -0
- package/1572.js +1 -1
- package/1664.js +1 -1
- package/1707.js +1 -1
- package/1790.js +5 -5
- package/1790.js.map +1 -1
- package/1840.js +2 -0
- package/1840.js.map +1 -0
- package/1984.js +1 -1
- package/2066.js +1 -1
- package/2400.js +1 -1
- package/281.js +2 -0
- package/281.js.map +1 -0
- package/2966.js +1 -1
- package/3096.js +1 -1
- package/3348.js +1 -1
- package/3358.js +1 -1
- package/3373.js +1 -1
- package/3381.js +1 -1
- package/3383.js +1 -1
- package/3463.js +1 -1
- package/3469.js +1 -1
- package/3538.js +1 -1
- package/356.js +1 -1
- package/3854.js +1 -1
- package/3902.js +1 -1
- package/3902.js.map +1 -1
- package/3912.js +1 -1
- package/3926.js +1 -1
- package/415.js +1 -1
- package/4212.js +1 -1
- package/{829.css → 4390.css} +1 -1
- package/4390.css.map +1 -0
- package/4390.js +2 -0
- package/4390.js.map +1 -0
- package/4481.js +1 -1
- package/4609.js +1 -1
- package/4610.js +1 -1
- package/4703.js +1 -1
- package/4780.js +2 -0
- package/4780.js.map +1 -0
- package/4806.js +1 -1
- package/4838.js +1 -1
- package/50.js +1 -1
- package/5039.js +1 -1
- package/5039.js.map +1 -1
- package/5053.js +1 -1
- package/5053.js.map +1 -1
- package/5108.js +1 -1
- package/5108.js.map +1 -1
- package/5163.js +1 -1
- package/5163.js.map +1 -1
- package/5292.js +1 -1
- package/5383.js +1 -1
- package/5617.js +1 -1
- package/6020.js +1 -1
- package/6287.js +1 -1
- package/636.js +1 -1
- package/6606.js +1 -1
- package/6606.js.map +1 -1
- package/6799.js +1 -1
- package/6844.js +1 -1
- package/6860.js +3 -0
- package/6860.js.map +1 -0
- package/6903.js +1 -1
- package/7128.js +1 -1
- package/7340.js +1 -1
- package/735.js +1 -1
- package/7422.js +1 -1
- package/{7303.css → 7605.css} +1 -1
- package/{7303.css.map → 7605.css.map} +1 -1
- package/7605.js +2 -0
- package/7605.js.map +1 -0
- package/7626.js +29 -0
- package/7626.js.map +1 -0
- package/{446.js → 764.js} +2 -2
- package/764.js.map +1 -0
- package/7744.js +1 -1
- package/7744.js.map +1 -1
- package/7896.js +1 -1
- package/820.js +1 -1
- package/8207.js +1 -1
- package/8565.js +1 -1
- package/870.css +635 -0
- package/870.css.map +1 -0
- package/870.js +2 -0
- package/870.js.map +1 -0
- package/8741.js +1 -1
- package/9016.js +1 -1
- package/9050.js +1 -1
- package/9283.js +1 -1
- package/9309.js +1 -1
- package/9328.js +1 -1
- package/9387.js +1 -1
- package/9464.js +1 -1
- package/9719.js +1 -1
- package/9736.js +1 -1
- package/9861.js +1 -1
- package/987.js +1 -1
- package/99.js +29 -0
- package/99.js.map +1 -0
- package/9952.js +1 -1
- package/9960.js +1 -1
- package/main.js +1 -1
- package/main.js.map +1 -1
- package/package.json +1 -1
- package/remoteEntry.js +1 -1
- package/remoteEntry.js.map +1 -1
- package/3785.js +0 -2
- package/3785.js.map +0 -1
- package/3880.js +0 -2
- package/3880.js.map +0 -1
- package/446.js.map +0 -1
- package/672.js +0 -2
- package/672.js.map +0 -1
- package/7303.js +0 -2
- package/7303.js.map +0 -1
- package/7963.js +0 -3
- package/7963.js.map +0 -1
- package/829.css.map +0 -1
- package/829.js +0 -2
- package/829.js.map +0 -1
- package/8344.js +0 -29
- package/8344.js.map +0 -1
- package/9109.js +0 -2
- package/9109.js.map +0 -1
- package/938.js +0 -29
- package/938.js.map +0 -1
- /package/{7963.js.LICENSE.txt → 6860.js.LICENSE.txt} +0 -0
package/3902.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"3902.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/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/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 '@mui/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 {AttributeOption} from '../../types';\nimport {MultiValueProps, OptionProps} from 'react-select';\nimport {AttributeType, getAttributeTypeSubAttributes, TEntityType} from '@reltio/mdm-sdk';\nimport Typography from '@mui/material/Typography';\nimport MultiSelect from '../ReactSelect/MultiSelect';\nimport MultiValue from '../ReactSelect/commonComponents/MultiValue';\nimport DropdownIndicatorWithIconButton from '../commonReactSelectComponents/DropdownIndicatorWithIconButton';\nimport AttributeListItem from '../AttributeListItem/AttributeListItem';\nimport {useMdmMetadata} from '../../contexts';\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 styles = useStyles();\n const metadata = useMdmMetadata();\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)} data-reltio-id=\"attribute-selector\">\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 menuShouldBlockScroll={true}\n captureMenuScroll={false}\n />\n </div>\n );\n};\n\nexport default AttributeSelector;\n","import {makeStyles} from '@mui/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 TextField from '@mui/material/TextField';\nimport SimpleDropDownSelector from '../SimpleDropDownSelector/SimpleDropDownSelector';\nimport {getValue} from '../../core/utils';\nimport {useStyles} from './styles';\n\nimport {capitalize} from '@mui/material/utils';\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 variant=\"standard\"\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 from '@mui/material/MenuItem';\nimport Checkbox from '@mui/material/Checkbox';\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 '@mui/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 @mui/material/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 menuShouldBlockScroll: PropTypes.bool,\n captureMenuScroll: PropTypes.bool,\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 '@mui/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 from '@mui/material/Typography';\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 {makeStyles} from '@mui/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 i18n from 'ui-i18n';\nimport {defaultTo, pipe, pluck} from 'ramda';\nimport classnames from 'classnames';\nimport Typography from '@mui/material/Typography';\nimport MultiSelect from '../ReactSelect/MultiSelect';\nimport DropdownIndicatorWithIconButton from '../commonReactSelectComponents/DropdownIndicatorWithIconButton';\nimport {getAllUsersForTenant, UserInfo, utils} from '@reltio/mdm-sdk';\nimport {useMdmServicesPath, useMdmTenant} from '../../contexts';\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 tenant = useMdmTenant();\n const servicesPath = useMdmServicesPath();\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 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)} data-reltio-id=\"user-selector\">\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 menuShouldBlockScroll={true}\n captureMenuScroll={false}\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 '@mui/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';\nimport TextField from '@mui/material/TextField';\nimport Popover from '@mui/material/Popover';\nimport DropdownIndicatorWithIconButton from '../../commonReactSelectComponents/DropdownIndicatorWithIconButton';\nimport DateRangePicker from '../../DateRangePicker/DateRangePicker';\n\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 <Popover\n open={open}\n anchorEl={inputRef.current}\n onClose={onCancel}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n elevation={2}\n >\n <DateRangePicker values={values} onApply={onApply} type={DataTypes.TYPE_ACTIVENESS_DATE} />\n </Popover>\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 '@mui/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 from '@mui/material/Typography';\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)} data-reltio-id=\"date-range-selector\">\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 '@mui/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 from '@mui/material/Typography';\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 disableUnderline?: boolean;\n};\n\nconst HistoryActivitySelector = ({selectedHistoryActivityTypes, onChange, className, disableUnderline}: 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)} data-reltio-id=\"history-activity-selector\">\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={{\n InputProps: {disableUnderline},\n classes: {root: styles.dropDownInput}\n }}\n components={{\n DropdownIndicator: DropdownIndicatorWithIconButton\n }}\n styles={customStyles}\n classes={styles}\n menuPlacement=\"bottom\"\n menuPortalTarget={document.body}\n menuShouldBlockScroll={true}\n captureMenuScroll={false}\n />\n </div>\n );\n};\n\nexport default HistoryActivitySelector;\n","import {makeStyles} from '@mui/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 maxHeight: '400px',\n borderColor: 'rgba(0,0,0,0.12)'\n },\n filterItem: {\n '&:not(:last-child)': {\n marginBottom: 12\n }\n },\n clearButton: {\n marginRight: 'auto'\n },\n input: {\n height: '100%',\n paddingLeft: '12px',\n paddingRight: '8px'\n },\n divider: {\n marginBottom: 12\n }\n});\n","import React, {useCallback, useEffect, useRef, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {curry, dissoc} from 'ramda';\nimport FilterListIcon from '@mui/icons-material/FilterList';\nimport Button from '@mui/material/Button';\nimport Popover from '@mui/material/Popover';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport Divider from '@mui/material/Divider';\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';\nimport {DEFAULT_HISTORY_FILTER, isDefaultFilter} from '../hooks/useHistory';\n\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 <DialogTitle>{i18n.text('Filter')}</DialogTitle>\n <DialogContent dividers className={styles.filterContainer}>\n <DateRangeSelector\n value={dateRange}\n onChange={handlePropChange('dateRange')}\n className={styles.filterItem}\n />\n <Divider light className={styles.divider} />\n <UserSelector\n selectedUsers={users}\n onChange={handlePropChange('users')}\n className={styles.filterItem}\n disableUnderline\n />\n <Divider light className={styles.divider} />\n <HistoryActivitySelector\n selectedHistoryActivityTypes={activities}\n onChange={handlePropChange('activities')}\n className={styles.filterItem}\n disableUnderline\n />\n <Divider light className={styles.divider} />\n <AttributeSelector\n selectedAttributes={attributes}\n entityType={entityType}\n onChange={handlePropChange('attributes')}\n className={styles.filterItem}\n title={i18n.text('Attribute updated')}\n disableUnderline\n />\n </DialogContent>\n <DialogActions>\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 </DialogActions>\n </Popover>\n </>\n );\n};\n\nexport default HistoryFilterButton;\n","import {makeStyles} from '@mui/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 from '@mui/material/MenuItem';\nimport Typography from '@mui/material/Typography';\nimport CheckIcon from '@mui/icons-material/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 i18n from 'ui-i18n';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport {HistoryMode} from '@reltio/mdm-sdk';\nimport {SmallIconButton} from '../../SmallIconButton';\nimport DropDownMenuButton from '../../DropDownMenuButton/DropDownMenuButton';\nimport MenuItemRenderer from './MenuItemRenderer';\nimport {useMdmAction, useMdmHistoryMode} from '../../../contexts';\n\nconst HistoryMenuButton = () => {\n const setHistoryMode = useMdmAction('setHistoryMode');\n const mode = useMdmHistoryMode();\n\n const menuItems = [\n {\n text: i18n.text('Compare to Current view'),\n selected: mode === HistoryMode.Current,\n onClick: () => setHistoryMode(HistoryMode.Current)\n },\n {\n text: i18n.text('Compare to Previous view'),\n selected: mode === HistoryMode.Previous,\n onClick: () => setHistoryMode(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 '@mui/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 borderColor: '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 from '@mui/material/Divider';\nimport Typography from '@mui/material/Typography';\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 '@mui/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 flexShrink: 0\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 from '@mui/material/Typography';\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 '@mui/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: '260px'\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 ReactResizeDetector from 'react-resize-detector';\nimport i18n from 'ui-i18n';\nimport {isNil, uniqBy, prop, identity} from 'ramda';\nimport classnames from 'classnames';\nimport {getEntity, Mode, getCrosswalkType, HistoryEvent} from '@reltio/mdm-sdk';\nimport Button from '@mui/material/Button';\nimport HistoryRow from '../HistoryRow/HistoryRow';\nimport {HistoryData, HistoryRowData} from '../types';\nimport HistoryGraph from '../HistoryGraph/HistoryGraph';\nimport LinearLoadIndicator from '../../LinearLoadIndicator/LinearLoadIndicator';\nimport {useMdmAction, useMdmIsEditableMode, useMdmMetadata} from '../../../contexts';\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\n const [graphData, setGraphData] = useState({historyLanes: {}, rows: []});\n const [isScrollable, setIsScrollable] = useState(false);\n const [selectedIndex, setSelectedIndex] = useState(-1);\n\n const setHistoryEvent = useMdmAction('setHistoryEvent');\n const clearHistoryEvent = useMdmAction('clearHistoryEvent');\n const modeUpdated = useMdmAction('modeUpdated');\n const metadata = useMdmMetadata();\n const isEditableMode = useMdmIsEditableMode();\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 modeUpdated(Mode.Viewing);\n } else {\n return;\n }\n }\n\n if ((isCurrent && !isSelected) || (!isCurrent && isSelected)) {\n 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 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 '@mui/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 '@mui/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, HistoryEvent} from '@reltio/mdm-sdk';\nimport HistoryTree from '../HistoryTree/HistoryTree';\nimport ContributorsPanel from '../ContributorsPanel/ContributorsPanel';\nimport {useHistoryTree} from '../hooks/useHistoryTree';\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(\n () => (historyPage + 1) * MAX_HISTORY_ROWS < historyWithTotal?.total,\n [historyWithTotal, 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 {Entity, getEntityTimeSlice, HistoryEvent} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '../../../hooks';\nimport {useMdmAction, useMdmHistorySlice} from '../../../contexts';\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 setHistorySlice = useMdmAction('setHistorySlice');\n const historySlice = useMdmHistorySlice();\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 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 {pipe} from 'ramda';\nimport Portal from '@mui/material/Portal';\nimport Button from '@mui/material/Button';\nimport Snackbar, {SnackbarOrigin} from '@mui/material/Snackbar';\nimport {noop} from '../core';\n\ntype SnackbarOptions = {\n anchorOrigin?: SnackbarOrigin;\n showDismiss?: boolean;\n dismissTitle?: string;\n autoHideDuration?: number;\n onDismissClick?: () => void;\n};\n\nconst FIVE_MINUTES = 5 * 60 * 1000;\nexport const useSnackbar = ({\n anchorOrigin = {vertical: 'bottom', horizontal: 'center'},\n showDismiss,\n dismissTitle = i18n.text('Dismiss'),\n autoHideDuration = FIVE_MINUTES,\n onDismissClick = noop\n}: SnackbarOptions = {}) => {\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 handleSnackbarClose = useCallback(\n (_, reason?: string) => {\n if (reason === 'clickaway') {\n return;\n }\n closeSnackbar();\n },\n [closeSnackbar]\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={autoHideDuration}\n onClose={handleSnackbarClose}\n message={snackbarMessage}\n style={{maxWidth: 500}}\n action={\n showDismiss ? (\n <Button color=\"primary\" onClick={pipe(closeSnackbar, onDismissClick)}>\n {dismissTitle}\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","styles","metadata","useMdmMetadata","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","menuShouldBlockScroll","captureMenuScroll","display","paddingRight","inputNumber","minWidth","marginRight","inputUnit","periods","interval","unit","onFocus","onNumberChange","getValue","parseInt","newValue","onUnitChange","newUnit","TextField","type","inputProps","min","SimpleDropDownSelector","placeholder","capitalize","getIntervalUnitLabel","map","withMuiSkin","CreatableSelect","innerRef","children","selectProps","MenuItem","classNames","ref","selected","component","Checkbox","color","ExpandedValueTooltip","propTypes","PropTypes","id","key","onClick","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","useState","multiSelectClasses","omit","inputId","multiSelectComponents","mergeClasses","indicatorSeparator","base","loadingMessage","fontFamily","labelProps","InputLabelProps","htmlFor","shrink","length","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","group","groupHeading","indicatorsContainer","menuList","multiValueLabel","multiValueRemove","getOptionValue","isSearchable","inputRef","viewBox","fill","xmlns","cx","cy","r","fillOpacity","style","maskType","maskUnits","x","y","mask","fillRule","clipRule","d","opacity","x1","y1","x2","y2","gradientUnits","stopColor","stopOpacity","offset","flexWrap","flexDirection","alignItems","overflow","minHeight","boxSizing","logo","textBox","maxWidth","marginTop","text","palette","primary","lineHeight","textAlign","secondaryText","letterSpacing","paddingTop","IconRenderer","AttributesListIcon","selectedUsers","tenant","useMdmTenant","servicesPath","useMdmServicesPath","valueToOption","prepareValues","values","cachedRequest","useRef","pluck","getAllUsersForTenant","then","users","filter","username","utils","filterUsers","ActivityTypes","getItemDataType","path","getActivityType","activity","items","firstItem","removeIgnoredItems","isImplementedItem","isValidActivityType","includes","filteredItems","console","error","reject","itemsTotal","splitActivityByType","propOr","groupBy","ifElse","stringifyDeltaValue","deltaValue","attributeTypeUri","attributePresentations","attributeType","findAttributeTypeByUri","dataTypeDefinition","getAttrDataTypeDefinition","formatValue","formatDataTypeValue","isNil","Object","entries","flatMap","attributeTypeName","deltaValues","makeAttrTypeUri","join","getActivityLabel","transition","inputRoot","dateOptionLabel","paper","localeFormat","moment","longDateFormat","noop","open","setOpen","handleToggle","fullWidth","DataTypes","endAdornment","menuIsOpen","readOnly","Popover","anchorEl","onClose","anchorOrigin","vertical","horizontal","transformOrigin","elevation","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","popup","filterContainer","maxHeight","borderColor","filterItem","marginBottom","clearButton","divider","onApplyFilter","buttonRef","isOpen","setIsOpen","currentValue","setCurrentValue","activities","dateRange","buttonColor","isDefaultFilter","useEffect","handlePropChange","curry","propName","filterValue","togglePopup","applyButtonHandler","isDateRangeValid","dissoc","clearAllButtonHandler","DEFAULT_HISTORY_FILTER","SmallIconButton","icon","FilterListIcon","size","DialogTitle","DialogContent","dividers","Divider","light","UserSelector","AttributeSelector","DialogActions","Button","menuItem","menuText","marginLeft","checkIcon","position","MenuItemRenderer","forwardRef","onMenuClose","e","Check","displayName","setHistoryMode","useMdmAction","mode","useMdmHistoryMode","menuItems","HistoryMode","DropDownMenuButton","buttonComponent","buttonProps","MoreVertIcon","menuId","count","filterButton","total","orientation","flexItem","Spacer","historyRow","cursor","background","content","rowHeader","badge","pointerEvents","textOverflow","whiteSpace","date","flexShrink","user","change","isCurrent","matchGroups","timestamp","getContributorColor","bold","isFakeHistoryType","HistoryChangeTypes","toX","toY","isDashed","lineData","isUp","isLeft","curveCenterY","getHistoryLinkCurve","stroke","strokeWidth","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","index","hasFakeType","circleUri","some","tooltipTitle","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","setGraphData","isScrollable","setIsScrollable","selectedIndex","setSelectedIndex","setHistoryEvent","clearHistoryEvent","modeUpdated","isEditableMode","useMdmIsEditableMode","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","borderRadius","active","inactive","clickable","selectedValues","onSelectValues","without","handleClick","findClosestLife","startDistance","Math","abs","endDistance","borderBottom","historyWithTotal","contributorsUris","selectedUris","setSelectedUris","historyChanges","checkChange","involvedUris","checkInUris","Array","isArray","involvedUri","findNextChange","drop","find","checkLaneUri","startNewLife","currentLife","updateLife","shouldAddNewLife","endLife","postProcessChanges","lostMergeChange","addPostProcess","rowChange","relatedLane","lifeTimeLength","checkLifeTime","postChange","postUri","fakeChange","extendLife","splice","indexOf","slice","Infinity","useHistoryTree","changes","convertHistoryTypes","chain","cond","equals","buildActivityFilterClause","multiValueFilter","buildHistoryFilterString","isEmptyValue","evolve","buildUserFilterClause","attribute","escapeQueryValue","buildDateRangeFilterClause","over","lensProp","append","wrapInBrackets","difference","either","isEmpty","useHistory","entity","enabled","historyFilter","setHistoryFilter","historyPage","setHistoryPage","historyFilterString","historicUris","setHistoricUris","setHistoryWithTotal","setIsLoading","safePromise","useSafePromise","max","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","setHistorySlice","historySlice","useMdmHistorySlice","Promise","all","getEntityTimeSlice","resolve","aEntity","bEntity","FakeTypes","FIVE_MINUTES","useSnackbar","showDismiss","dismissTitle","autoHideDuration","onDismissClick","isOpenSnackbar","setIsOpenSnackbar","snackbarMessage","setSnackbarMessage","closeSnackbar","handleSnackbarClose","_","reason","showSnackbarMessage","message","SnackbarRenderer"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"3902.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/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/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 '@mui/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 {AttributeOption} from '../../types';\nimport {MultiValueProps, OptionProps} from 'react-select';\nimport {AttributeType, getAttributeTypeSubAttributes, TEntityType} from '@reltio/mdm-sdk';\nimport Typography from '@mui/material/Typography';\nimport MultiSelect from '../ReactSelect/MultiSelect';\nimport MultiValue from '../ReactSelect/commonComponents/MultiValue';\nimport DropdownIndicatorWithIconButton from '../commonReactSelectComponents/DropdownIndicatorWithIconButton';\nimport AttributeListItem from '../AttributeListItem/AttributeListItem';\nimport {useMdmMetadata} from '../../contexts';\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 styles = useStyles();\n const metadata = useMdmMetadata();\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)} data-reltio-id=\"attribute-selector\">\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 menuShouldBlockScroll={true}\n captureMenuScroll={false}\n />\n </div>\n );\n};\n\nexport default AttributeSelector;\n","import {makeStyles} from '@mui/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 TextField from '@mui/material/TextField';\nimport SimpleDropDownSelector from '../SimpleDropDownSelector/SimpleDropDownSelector';\nimport {getValue} from '../../core/utils';\nimport {useStyles} from './styles';\n\nimport {capitalize} from '@mui/material/utils';\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 variant=\"standard\"\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 from '@mui/material/MenuItem';\nimport Checkbox from '@mui/material/Checkbox';\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 '@mui/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 @mui/material/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 menuShouldBlockScroll: PropTypes.bool,\n captureMenuScroll: PropTypes.bool,\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 '@mui/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 from '@mui/material/Typography';\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 {makeStyles} from '@mui/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 i18n from 'ui-i18n';\nimport {defaultTo, pipe, pluck} from 'ramda';\nimport classnames from 'classnames';\nimport Typography from '@mui/material/Typography';\nimport MultiSelect from '../ReactSelect/MultiSelect';\nimport DropdownIndicatorWithIconButton from '../commonReactSelectComponents/DropdownIndicatorWithIconButton';\nimport {getAllUsersForTenant, UserInfo, utils} from '@reltio/mdm-sdk';\nimport {useMdmServicesPath, useMdmTenant} from '../../contexts';\nimport MenuWithPopper from '../commonReactSelectComponents/MenuWithPopper';\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 inputRef = useRef(null);\n\n const tenant = useMdmTenant();\n const servicesPath = useMdmServicesPath();\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 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)} data-reltio-id=\"user-selector\">\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 ref: inputRef\n }}\n components={{\n DropdownIndicator: DropdownIndicatorWithIconButton,\n Menu: MenuWithPopper\n }}\n styles={customStyles}\n classes={styles}\n menuPortalTarget={document.body}\n menuShouldBlockScroll={true}\n captureMenuScroll={false}\n inputRef={inputRef}\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 '@mui/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';\nimport TextField from '@mui/material/TextField';\nimport Popover from '@mui/material/Popover';\nimport DropdownIndicatorWithIconButton from '../../commonReactSelectComponents/DropdownIndicatorWithIconButton';\nimport DateRangePicker from '../../DateRangePicker/DateRangePicker';\n\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 <Popover\n open={open}\n anchorEl={inputRef.current}\n onClose={onCancel}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n elevation={2}\n >\n <DateRangePicker values={values} onApply={onApply} type={DataTypes.TYPE_ACTIVENESS_DATE} />\n </Popover>\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 '@mui/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 from '@mui/material/Typography';\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)} data-reltio-id=\"date-range-selector\">\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 '@mui/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 from '@mui/material/Typography';\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 disableUnderline?: boolean;\n};\n\nconst HistoryActivitySelector = ({selectedHistoryActivityTypes, onChange, className, disableUnderline}: 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)} data-reltio-id=\"history-activity-selector\">\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={{\n InputProps: {disableUnderline},\n classes: {root: styles.dropDownInput}\n }}\n components={{\n DropdownIndicator: DropdownIndicatorWithIconButton\n }}\n styles={customStyles}\n classes={styles}\n menuPlacement=\"bottom\"\n menuPortalTarget={document.body}\n menuShouldBlockScroll={true}\n captureMenuScroll={false}\n />\n </div>\n );\n};\n\nexport default HistoryActivitySelector;\n","import {makeStyles} from '@mui/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 maxHeight: '400px',\n borderColor: 'rgba(0,0,0,0.12)'\n },\n filterItem: {\n '&:not(:last-child)': {\n marginBottom: 12\n }\n },\n clearButton: {\n marginRight: 'auto'\n },\n input: {\n height: '100%',\n paddingLeft: '12px',\n paddingRight: '8px'\n },\n divider: {\n marginBottom: 12\n }\n});\n","import React, {useCallback, useEffect, useRef, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {curry, dissoc} from 'ramda';\nimport FilterListIcon from '@mui/icons-material/FilterList';\nimport Button from '@mui/material/Button';\nimport Popover from '@mui/material/Popover';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport Divider from '@mui/material/Divider';\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';\nimport {DEFAULT_HISTORY_FILTER, isDefaultFilter} from '../hooks/useHistory';\n\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 <DialogTitle>{i18n.text('Filter')}</DialogTitle>\n <DialogContent dividers className={styles.filterContainer}>\n <DateRangeSelector\n value={dateRange}\n onChange={handlePropChange('dateRange')}\n className={styles.filterItem}\n />\n <Divider light className={styles.divider} />\n <UserSelector\n selectedUsers={users}\n onChange={handlePropChange('users')}\n className={styles.filterItem}\n disableUnderline\n />\n <Divider light className={styles.divider} />\n <HistoryActivitySelector\n selectedHistoryActivityTypes={activities}\n onChange={handlePropChange('activities')}\n className={styles.filterItem}\n disableUnderline\n />\n <Divider light className={styles.divider} />\n <AttributeSelector\n selectedAttributes={attributes}\n entityType={entityType}\n onChange={handlePropChange('attributes')}\n className={styles.filterItem}\n title={i18n.text('Attribute updated')}\n disableUnderline\n />\n </DialogContent>\n <DialogActions>\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 </DialogActions>\n </Popover>\n </>\n );\n};\n\nexport default HistoryFilterButton;\n","import {makeStyles} from '@mui/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 from '@mui/material/MenuItem';\nimport Typography from '@mui/material/Typography';\nimport CheckIcon from '@mui/icons-material/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 i18n from 'ui-i18n';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport {HistoryMode} from '@reltio/mdm-sdk';\nimport {SmallIconButton} from '../../SmallIconButton';\nimport DropDownMenuButton from '../../DropDownMenuButton/DropDownMenuButton';\nimport MenuItemRenderer from './MenuItemRenderer';\nimport {useMdmAction, useMdmHistoryMode} from '../../../contexts';\n\nconst HistoryMenuButton = () => {\n const setHistoryMode = useMdmAction('setHistoryMode');\n const mode = useMdmHistoryMode();\n\n const menuItems = [\n {\n text: i18n.text('Compare to Current view'),\n selected: mode === HistoryMode.Current,\n onClick: () => setHistoryMode(HistoryMode.Current)\n },\n {\n text: i18n.text('Compare to Previous view'),\n selected: mode === HistoryMode.Previous,\n onClick: () => setHistoryMode(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 '@mui/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 borderColor: '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 from '@mui/material/Divider';\nimport Typography from '@mui/material/Typography';\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 '@mui/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 flexShrink: 0\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 from '@mui/material/Typography';\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 '@mui/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: '260px'\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 ReactResizeDetector from 'react-resize-detector';\nimport i18n from 'ui-i18n';\nimport {isNil, uniqBy, prop, identity} from 'ramda';\nimport classnames from 'classnames';\nimport {getEntity, Mode, getCrosswalkType, HistoryEvent} from '@reltio/mdm-sdk';\nimport Button from '@mui/material/Button';\nimport HistoryRow from '../HistoryRow/HistoryRow';\nimport {HistoryData, HistoryRowData} from '../types';\nimport HistoryGraph from '../HistoryGraph/HistoryGraph';\nimport LinearLoadIndicator from '../../LinearLoadIndicator/LinearLoadIndicator';\nimport {useMdmAction, useMdmIsEditableMode, useMdmMetadata} from '../../../contexts';\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\n const [graphData, setGraphData] = useState({historyLanes: {}, rows: []});\n const [isScrollable, setIsScrollable] = useState(false);\n const [selectedIndex, setSelectedIndex] = useState(-1);\n\n const setHistoryEvent = useMdmAction('setHistoryEvent');\n const clearHistoryEvent = useMdmAction('clearHistoryEvent');\n const modeUpdated = useMdmAction('modeUpdated');\n const metadata = useMdmMetadata();\n const isEditableMode = useMdmIsEditableMode();\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 modeUpdated(Mode.Viewing);\n } else {\n return;\n }\n }\n\n if ((isCurrent && !isSelected) || (!isCurrent && isSelected)) {\n 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 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 '@mui/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 '@mui/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, HistoryEvent} from '@reltio/mdm-sdk';\nimport HistoryTree from '../HistoryTree/HistoryTree';\nimport ContributorsPanel from '../ContributorsPanel/ContributorsPanel';\nimport {useHistoryTree} from '../hooks/useHistoryTree';\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(\n () => (historyPage + 1) * MAX_HISTORY_ROWS < historyWithTotal?.total,\n [historyWithTotal, 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 {Entity, getEntityTimeSlice, HistoryEvent} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '../../../hooks';\nimport {useMdmAction, useMdmHistorySlice} from '../../../contexts';\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 setHistorySlice = useMdmAction('setHistorySlice');\n const historySlice = useMdmHistorySlice();\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 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 {pipe} from 'ramda';\nimport Portal from '@mui/material/Portal';\nimport Button from '@mui/material/Button';\nimport Snackbar, {SnackbarOrigin} from '@mui/material/Snackbar';\nimport {noop} from '../core';\n\ntype SnackbarOptions = {\n anchorOrigin?: SnackbarOrigin;\n showDismiss?: boolean;\n dismissTitle?: string;\n autoHideDuration?: number;\n onDismissClick?: () => void;\n};\n\nconst FIVE_MINUTES = 5 * 60 * 1000;\nexport const useSnackbar = ({\n anchorOrigin = {vertical: 'bottom', horizontal: 'center'},\n showDismiss,\n dismissTitle = i18n.text('Dismiss'),\n autoHideDuration = FIVE_MINUTES,\n onDismissClick = noop\n}: SnackbarOptions = {}) => {\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 handleSnackbarClose = useCallback(\n (_, reason?: string) => {\n if (reason === 'clickaway') {\n return;\n }\n closeSnackbar();\n },\n [closeSnackbar]\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={autoHideDuration}\n onClose={handleSnackbarClose}\n message={snackbarMessage}\n style={{maxWidth: 500}}\n action={\n showDismiss ? (\n <Button color=\"primary\" onClick={pipe(closeSnackbar, onDismissClick)}>\n {dismissTitle}\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","styles","metadata","useMdmMetadata","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","menuShouldBlockScroll","captureMenuScroll","display","paddingRight","inputNumber","minWidth","marginRight","inputUnit","periods","interval","unit","onFocus","onNumberChange","getValue","parseInt","newValue","onUnitChange","newUnit","TextField","type","inputProps","min","SimpleDropDownSelector","placeholder","capitalize","getIntervalUnitLabel","map","withMuiSkin","CreatableSelect","innerRef","children","selectProps","MenuItem","classNames","ref","selected","component","Checkbox","color","ExpandedValueTooltip","propTypes","PropTypes","id","key","onClick","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","useState","multiSelectClasses","omit","inputId","multiSelectComponents","mergeClasses","indicatorSeparator","base","loadingMessage","fontFamily","labelProps","InputLabelProps","htmlFor","shrink","length","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","group","groupHeading","indicatorsContainer","menuList","multiValueLabel","multiValueRemove","getOptionValue","isSearchable","inputRef","viewBox","fill","xmlns","cx","cy","r","fillOpacity","style","maskType","maskUnits","x","y","mask","fillRule","clipRule","d","opacity","x1","y1","x2","y2","gradientUnits","stopColor","stopOpacity","offset","flexWrap","flexDirection","alignItems","overflow","minHeight","boxSizing","logo","textBox","maxWidth","marginTop","text","palette","primary","lineHeight","textAlign","secondaryText","letterSpacing","paddingTop","IconRenderer","AttributesListIcon","selectedUsers","useRef","tenant","useMdmTenant","servicesPath","useMdmServicesPath","valueToOption","prepareValues","values","cachedRequest","pluck","getAllUsersForTenant","then","users","filter","username","utils","filterUsers","MenuWithPopper","ActivityTypes","getItemDataType","path","getActivityType","activity","items","firstItem","removeIgnoredItems","isImplementedItem","isValidActivityType","includes","filteredItems","console","error","reject","itemsTotal","splitActivityByType","propOr","groupBy","ifElse","stringifyDeltaValue","deltaValue","attributeTypeUri","attributePresentations","attributeType","findAttributeTypeByUri","dataTypeDefinition","getAttrDataTypeDefinition","formatValue","formatDataTypeValue","isNil","Object","entries","flatMap","attributeTypeName","deltaValues","makeAttrTypeUri","join","getActivityLabel","transition","inputRoot","dateOptionLabel","paper","localeFormat","moment","longDateFormat","noop","open","setOpen","handleToggle","fullWidth","DataTypes","endAdornment","menuIsOpen","readOnly","Popover","anchorEl","onClose","anchorOrigin","vertical","horizontal","transformOrigin","elevation","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","popup","filterContainer","maxHeight","borderColor","filterItem","marginBottom","clearButton","divider","onApplyFilter","buttonRef","isOpen","setIsOpen","currentValue","setCurrentValue","activities","dateRange","buttonColor","isDefaultFilter","useEffect","handlePropChange","curry","propName","filterValue","togglePopup","applyButtonHandler","isDateRangeValid","dissoc","clearAllButtonHandler","DEFAULT_HISTORY_FILTER","SmallIconButton","icon","FilterListIcon","size","DialogTitle","DialogContent","dividers","Divider","light","UserSelector","AttributeSelector","DialogActions","Button","menuItem","menuText","marginLeft","checkIcon","position","MenuItemRenderer","forwardRef","onMenuClose","e","Check","displayName","setHistoryMode","useMdmAction","mode","useMdmHistoryMode","menuItems","HistoryMode","DropDownMenuButton","buttonComponent","buttonProps","MoreVertIcon","menuId","count","filterButton","total","orientation","flexItem","Spacer","historyRow","cursor","background","content","rowHeader","badge","pointerEvents","textOverflow","whiteSpace","date","flexShrink","user","change","isCurrent","matchGroups","timestamp","getContributorColor","bold","isFakeHistoryType","HistoryChangeTypes","toX","toY","isDashed","lineData","isUp","isLeft","curveCenterY","getHistoryLinkCurve","stroke","strokeWidth","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","index","hasFakeType","circleUri","some","tooltipTitle","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","setGraphData","isScrollable","setIsScrollable","selectedIndex","setSelectedIndex","setHistoryEvent","clearHistoryEvent","modeUpdated","isEditableMode","useMdmIsEditableMode","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","borderRadius","active","inactive","clickable","selectedValues","onSelectValues","without","handleClick","findClosestLife","startDistance","Math","abs","endDistance","borderBottom","historyWithTotal","contributorsUris","selectedUris","setSelectedUris","historyChanges","checkChange","involvedUris","checkInUris","Array","isArray","involvedUri","findNextChange","drop","find","checkLaneUri","startNewLife","currentLife","updateLife","shouldAddNewLife","endLife","postProcessChanges","lostMergeChange","addPostProcess","rowChange","relatedLane","lifeTimeLength","checkLifeTime","postChange","postUri","fakeChange","extendLife","splice","indexOf","slice","Infinity","useHistoryTree","changes","convertHistoryTypes","chain","cond","equals","buildActivityFilterClause","multiValueFilter","buildHistoryFilterString","isEmptyValue","evolve","buildUserFilterClause","attribute","escapeQueryValue","buildDateRangeFilterClause","over","lensProp","append","wrapInBrackets","difference","either","isEmpty","useHistory","entity","enabled","historyFilter","setHistoryFilter","historyPage","setHistoryPage","historyFilterString","historicUris","setHistoricUris","setHistoryWithTotal","setIsLoading","safePromise","useSafePromise","max","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","setHistorySlice","historySlice","useMdmHistorySlice","Promise","all","getEntityTimeSlice","resolve","aEntity","bEntity","FakeTypes","FIVE_MINUTES","useSnackbar","showDismiss","dismissTitle","autoHideDuration","onDismissClick","isOpenSnackbar","setIsOpenSnackbar","snackbarMessage","setSnackbarMessage","closeSnackbar","handleSnackbarClose","_","reason","showSnackbarMessage","message","SnackbarRenderer"],"sourceRoot":""}
|