@iobroker/adapter-react-v5 7.7.1 → 7.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/build/Components/CustomModal.js +4 -2
  2. package/build/Components/CustomModal.js.map +1 -1
  3. package/build/Components/FileBrowser.d.ts +1 -1
  4. package/build/Components/FileBrowser.js +12 -5
  5. package/build/Components/FileBrowser.js.map +1 -1
  6. package/build/Components/FileViewer.js +1 -1
  7. package/build/Components/FileViewer.js.map +1 -1
  8. package/build/Components/ObjectBrowser.d.ts +2 -0
  9. package/build/Components/ObjectBrowser.js +31 -7
  10. package/build/Components/ObjectBrowser.js.map +1 -1
  11. package/build/Components/Utils.d.ts +7 -6
  12. package/build/Components/Utils.js +68 -62
  13. package/build/Components/Utils.js.map +1 -1
  14. package/build/Dialogs/SelectFile.d.ts +2 -0
  15. package/build/Dialogs/SelectFile.js +2 -3
  16. package/build/Dialogs/SelectFile.js.map +1 -1
  17. package/build/Dialogs/SelectID.d.ts +2 -1
  18. package/build/Dialogs/SelectID.js +3 -3
  19. package/build/Dialogs/SelectID.js.map +1 -1
  20. package/build/LegacyConnection.d.ts +14 -1
  21. package/build/LegacyConnection.js +26 -2
  22. package/build/LegacyConnection.js.map +1 -1
  23. package/build/i18n/de.json +8 -0
  24. package/build/i18n/en.json +8 -0
  25. package/build/i18n/es.json +8 -0
  26. package/build/i18n/fr.json +8 -0
  27. package/build/i18n/it.json +3 -0
  28. package/build/i18n/nl.json +3 -0
  29. package/build/i18n/pl.json +6 -3
  30. package/build/i18n/pt.json +3 -0
  31. package/build/i18n/ru.json +3 -0
  32. package/build/i18n/uk.json +3 -0
  33. package/build/i18n/zh-cn.json +3 -0
  34. package/build/types.d.ts +2 -0
  35. package/i18n/de.json +8 -0
  36. package/i18n/en.json +8 -0
  37. package/i18n/es.json +8 -0
  38. package/i18n/fr.json +8 -0
  39. package/i18n/it.json +3 -0
  40. package/i18n/nl.json +3 -0
  41. package/i18n/pl.json +6 -3
  42. package/i18n/pt.json +3 -0
  43. package/i18n/ru.json +3 -0
  44. package/i18n/uk.json +3 -0
  45. package/i18n/zh-cn.json +3 -0
  46. package/package.json +9 -8
  47. package/craco-module-federation.js +0 -62
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectBrowser.js","sourceRoot":"./src/","sources":["Components/ObjectBrowser.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright 2020-2025, Denis Haev <dogafox@gmail.com>\n *\n * MIT License\n *\n */\nimport React, { Component, createRef, type JSX } from 'react';\nimport SVG from 'react-inlinesvg';\n\nimport {\n Badge,\n Box,\n Button,\n Checkbox,\n CircularProgress,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n Fab,\n FormControl,\n FormControlLabel,\n Grid2,\n IconButton,\n Input,\n List,\n ListItem,\n ListItemButton,\n ListItemIcon,\n ListItemText,\n Menu,\n MenuItem,\n Paper,\n Select,\n Snackbar,\n Switch,\n TextField,\n type Theme,\n Tooltip,\n} from '@mui/material';\n\n// Icons\nimport {\n Add as AddIcon,\n ArrowRight as ArrowRightIcon,\n BedroomParent,\n BorderColor,\n Build as BuildIcon,\n CalendarToday as IconSchedule,\n Check as IconCheck,\n Close as IconClose,\n Code as IconScript,\n Construction,\n CreateNewFolder as IconFolder,\n Delete as IconDelete,\n Description as IconMeta,\n Edit as IconEdit,\n Error as IconError,\n FindInPage,\n FormatItalic as IconValueEdit,\n Info as IconInfo,\n Link as IconLink,\n ListAlt as IconEnum,\n LooksOne as LooksOneIcon,\n PersonOutlined as IconUser,\n Publish as PublishIcon,\n Refresh as RefreshIcon,\n Router as IconHost,\n Settings as IconConfig,\n SettingsApplications as IconSystem,\n DataObject as IconData,\n ShowChart as IconChart,\n SupervisedUserCircle as IconGroup,\n TextFields as TextFieldsIcon,\n ViewColumn as IconColumns,\n Wifi as IconConnection,\n WifiOff as IconDisconnected,\n DriveFileRenameOutline,\n} from '@mui/icons-material';\n\nimport { IconExpert } from '../icons/IconExpert';\nimport { IconAdapter } from '../icons/IconAdapter';\nimport { IconChannel } from '../icons/IconChannel';\nimport { IconCopy } from '../icons/IconCopy';\nimport { IconDevice } from '../icons/IconDevice';\nimport { IconDocument } from '../icons/IconDocument';\nimport { IconDocumentReadOnly } from '../icons/IconDocumentReadOnly';\nimport { IconInstance } from '../icons/IconInstance';\nimport { IconState } from '../icons/IconState';\nimport { IconClosed } from '../icons/IconClosed';\nimport { IconOpen } from '../icons/IconOpen';\nimport { IconClearFilter } from '../icons/IconClearFilter';\n\n// own\nimport type { ThemeType, ThemeName, IobTheme, Translate } from '../types';\nimport type { Router } from './Router';\nimport { Connection } from '../Connection';\nimport { Icon } from './Icon';\nimport { withWidth } from './withWidth';\nimport { Utils } from './Utils'; // @iobroker/adapter-react-v5/Components/Utils\nimport { TabContainer } from './TabContainer';\nimport { TabContent } from './TabContent';\nimport { TabHeader } from './TabHeader';\n\ndeclare global {\n interface Window {\n sparkline: {\n sparkline: (el: HTMLDivElement, data: number[]) => JSX.Element;\n };\n }\n}\ndeclare module '@mui/material/Button' {\n interface ButtonPropsColorOverrides {\n grey: true;\n }\n}\n\nconst ICON_SIZE = 24;\nconst ROW_HEIGHT = 32;\nconst ITEM_LEVEL = 16;\nconst SMALL_BUTTON_SIZE = 20;\nconst COLOR_NAME_USERDATA = (themeType: ThemeType): string => (themeType === 'dark' ? '#62ff25' : '#37c400');\nconst COLOR_NAME_ALIAS = (themeType: ThemeType): string => (themeType === 'dark' ? '#ee56ff' : '#a204b4');\nconst COLOR_NAME_JAVASCRIPT = (themeType: ThemeType): string => (themeType === 'dark' ? '#fff46e' : '#b89101');\nconst COLOR_NAME_SYSTEM = (themeType: ThemeType): string => (themeType === 'dark' ? '#ff6d69' : '#ff6d69');\nconst COLOR_NAME_SYSTEM_ADAPTER = (themeType: ThemeType): string => (themeType === 'dark' ? '#5773ff' : '#5773ff');\nconst COLOR_NAME_ERROR_DARK = '#ff413c';\nconst COLOR_NAME_ERROR_LIGHT = '#86211f';\nconst COLOR_NAME_CONNECTED_DARK = '#57ff45';\nconst COLOR_NAME_CONNECTED_LIGHT = '#098c04';\nconst COLOR_NAME_DISCONNECTED_DARK = '#f3ad11';\nconst COLOR_NAME_DISCONNECTED_LIGHT = '#6c5008';\n\ntype ObjectEventType = 'new' | 'changed' | 'deleted';\n\ninterface ObjectEvent {\n id: string;\n obj?: ioBroker.Object;\n type: ObjectEventType;\n oldObj?: ioBroker.Object;\n}\n\ninterface ObjectsWorker {\n getObjects(update?: boolean): Promise<void | Record<string, ioBroker.Object>>;\n registerHandler(cb: (events: ObjectEvent[]) => void): void;\n unregisterHandler(cb: (events: ObjectEvent[]) => void, doNotUnsubscribe?: boolean): void;\n}\n\ninterface CustomAdminColumnStored {\n path: string;\n name: string;\n objTypes?: ioBroker.ObjectType[];\n width?: number;\n edit?: boolean;\n type?: ioBroker.CommonType;\n}\n\ninterface ContextMenuItem {\n /** hotkey */\n key?: string;\n visibility: boolean;\n icon: JSX.Element | string;\n label: string;\n onClick?: () => void;\n listItemIconStyle?: React.CSSProperties;\n style?: React.CSSProperties;\n subMenu?: {\n label: string;\n visibility: boolean;\n icon: JSX.Element;\n onClick: () => void;\n iconStyle?: React.CSSProperties;\n style?: React.CSSProperties;\n listItemIconStyle?: React.CSSProperties;\n }[];\n iconStyle?: React.CSSProperties;\n}\n\nexport interface TreeItemData {\n id: string;\n name: string;\n obj?: ioBroker.Object;\n /** Object ID in lower case for filtering */\n fID?: string;\n /** translated common.name in lower case for filtering */\n fName?: string;\n /** Link to parent item */\n parent?: TreeItem;\n level?: number;\n icon?: string | JSX.Element | null;\n /** If the item existing object or generated folder */\n generated?: boolean;\n title?: string;\n /** if the item has \"write\" button (value=true, ack=false) */\n button?: boolean;\n /** If the item has read and write and is boolean */\n switch?: boolean;\n /** If the item is url linke */\n url?: boolean;\n /** if the item has custom settings in `common.custom` */\n hasCustoms?: boolean;\n /** If this item is visible */\n visible?: boolean;\n /** Is any of the children visible (not only directly children) */\n hasVisibleChildren?: boolean;\n /** Is any of the parents visible (not only directly parent) */\n hasVisibleParent?: boolean;\n /** Combination of `visible || hasVisibleChildren` */\n sumVisibility?: boolean;\n /** translated names of enumerations (functions) where this object is the member (or the parent), divided by comma */\n funcs?: string;\n /** is if the enums are from parent */\n pef?: boolean;\n /** translated names of enumerations (rooms) where this object is the member (or the parent), divided by comma */\n rooms?: string;\n /** is if the enums are from parent */\n per?: boolean;\n // language in what the rooms and functions where translated\n lang?: ioBroker.Languages;\n state?: {\n valTextRx?: JSX.Element[] | null;\n style?: React.CSSProperties;\n };\n aclTooltip?: null | JSX.Element;\n}\n\ninterface InputSelectItem {\n value: string;\n name: string;\n icon?: null | JSX.Element;\n}\n\ntype ioBrokerObjectForExport = ioBroker.Object & Partial<ioBroker.State>;\n\nexport interface ObjectBrowserCustomFilter {\n type?: ioBroker.ObjectType | ioBroker.ObjectType[];\n common?: {\n type?: ioBroker.CommonType | ioBroker.CommonType[];\n role?: string | string[];\n // If \"_\" - no custom set\n // If \"_dataSources\" - only data sources (history, sql, influxdb, ...)\n // Else \"telegram.\" or something like this\n // `true` - If common.custom not empty\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n custom?: '_' | '_dataSources' | true | string | string[];\n };\n}\n\ninterface FormatValueOptions {\n state: ioBroker.State;\n obj: ioBroker.StateObject;\n texts: Record<string, string>;\n dateFormat: string;\n isFloatComma: boolean;\n full?: boolean;\n}\n\nexport interface TreeItem {\n id?: string;\n data: TreeItemData;\n children?: TreeItem[];\n}\n\ninterface TreeInfo {\n funcEnums: string[];\n roomEnums: string[];\n roles: { role: string; type: ioBroker.CommonType }[];\n ids: string[];\n types: string[];\n objects: Record<string, ioBroker.Object>;\n customs: string[];\n enums: string[];\n hasSomeCustoms: boolean;\n // List of all aliases that shows to this state\n aliasesMap: { [stateId: string]: string[] };\n}\n\ninterface GetValueStyleOptions {\n state: ioBroker.State;\n isExpertMode?: boolean;\n isButton?: boolean;\n}\n\nconst styles: Record<string, any> = {\n toolbar: {\n minHeight: 38, // Theme.toolbar.height,\n // boxShadow: '0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12)'\n },\n toolbarButtons: {\n padding: 4,\n marginLeft: 4,\n },\n switchColumnAuto: {\n marginLeft: 16,\n },\n dialogColumns: {\n transition: 'opacity 1s',\n },\n dialogColumnsLabel: {\n fontSize: 12,\n paddingTop: 8,\n },\n columnCustom: {\n width: '100%',\n display: 'inline-block',\n },\n columnCustomEditable: {\n cursor: 'text',\n },\n columnCustom_center: {\n textAlign: 'center',\n },\n columnCustom_left: {\n textAlign: 'left',\n },\n columnCustom_right: {\n textAlign: 'right',\n },\n width100: {\n width: '100%',\n },\n transparent_10: {\n opacity: 0.1,\n },\n transparent_20: {\n opacity: 0.2,\n },\n transparent_30: {\n opacity: 0.3,\n },\n transparent_40: {\n opacity: 0.4,\n },\n transparent_50: {\n opacity: 0.5,\n },\n transparent_60: {\n opacity: 0.6,\n },\n transparent_70: {\n opacity: 0.7,\n },\n transparent_80: {\n opacity: 0.8,\n },\n transparent_90: {\n opacity: 0.9,\n },\n transparent_100: {\n opacity: 1,\n },\n headerRow: {\n paddingLeft: 8,\n height: 38,\n whiteSpace: 'nowrap',\n userSelect: 'none',\n },\n buttonClearFilter: {\n position: 'relative',\n float: 'right',\n padding: 0,\n },\n buttonClearFilterIcon: {\n zIndex: 2,\n position: 'absolute',\n top: 0,\n left: 0,\n color: '#FF0000',\n opacity: 0.7,\n },\n\n tableDiv: {\n paddingTop: 0,\n paddingLeft: 0,\n width: 'calc(100% - 8px)',\n height: 'calc(100% - 38px)',\n overflow: 'auto',\n },\n tableRow: (theme: IobTheme): any => ({\n pl: 1,\n height: ROW_HEIGHT,\n lineHeight: `${ROW_HEIGHT}px`,\n verticalAlign: 'top',\n userSelect: 'none',\n position: 'relative',\n width: '100%',\n '&:hover': {\n background: `${\n theme.palette.mode === 'dark' ? theme.palette.primary.dark : theme.palette.primary.light\n } !important`,\n color: Utils.invertColor(theme.palette.primary.main, true),\n },\n whiteSpace: 'nowrap',\n flexWrap: 'nowrap',\n }),\n tableRowLines: (theme: IobTheme): any => ({\n borderBottom: `1px solid ${theme.palette.mode === 'dark' ? '#8888882e' : '#8888882e'}`,\n '& > div': {\n borderRight: `1px solid ${theme.palette.mode === 'dark' ? '#8888882e' : '#8888882e'}`,\n },\n }),\n tableRowNoDragging: {\n cursor: 'pointer',\n },\n tableRowAlias: {\n height: ROW_HEIGHT + 10,\n },\n tableRowAliasReadWrite: {\n height: ROW_HEIGHT + 22,\n },\n tableRowFocused: (theme: IobTheme): any => ({\n '&:after': {\n content: '\"\"',\n position: 'absolute',\n top: 1,\n left: 1,\n right: 1,\n bottom: 1,\n border: theme.palette.mode ? '1px dotted #000' : '1px dotted #FFF',\n },\n }),\n checkBox: {\n padding: 0,\n },\n cellId: {\n position: 'relative',\n fontSize: '1rem',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n // verticalAlign: 'top',\n // position: 'relative',\n '& .copyButton': {\n display: 'none',\n },\n '&:hover .copyButton': {\n display: 'block',\n },\n '& .iconOwn': {\n display: 'block',\n width: ROW_HEIGHT - 4,\n height: ROW_HEIGHT - 4,\n mt: '2px',\n float: 'right',\n },\n '&:hover .iconOwn': {\n display: 'none',\n },\n '& *': {\n width: 'initial',\n },\n },\n cellIdSpan: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n // display: 'inline-block',\n // verticalAlign: 'top',\n },\n // This style is used for simple div. Do not migrate it to \"secondary.main\"\n cellIdIconFolder: (theme: IobTheme): React.CSSProperties => ({\n marginRight: 8,\n width: ROW_HEIGHT - 4,\n height: ROW_HEIGHT - 4,\n cursor: 'pointer',\n color: theme.palette.secondary.main || '#fbff7d',\n verticalAlign: 'top',\n }),\n cellIdIconDocument: {\n verticalAlign: 'middle',\n marginLeft: (ROW_HEIGHT - SMALL_BUTTON_SIZE) / 2,\n marginRight: 8,\n width: SMALL_BUTTON_SIZE,\n height: SMALL_BUTTON_SIZE,\n },\n cellIdIconOwn: {},\n cellIdTooltip: {\n fontSize: 14,\n },\n cellIdTooltipLink: {\n color: '#7ec2fd',\n '&:hover': {\n color: '#7ec2fd',\n },\n '&:visited': {\n color: '#7ec2fd',\n },\n },\n cellCopyButton: {\n width: SMALL_BUTTON_SIZE,\n height: SMALL_BUTTON_SIZE,\n top: (ROW_HEIGHT - SMALL_BUTTON_SIZE) / 2,\n opacity: 0.8,\n position: 'absolute',\n right: 3,\n },\n cellCopyButtonInDetails: {\n width: SMALL_BUTTON_SIZE,\n height: SMALL_BUTTON_SIZE,\n top: (ROW_HEIGHT - SMALL_BUTTON_SIZE) / 2,\n opacity: 0.8,\n },\n cellEditButton: {\n width: SMALL_BUTTON_SIZE,\n height: SMALL_BUTTON_SIZE,\n color: 'white',\n position: 'absolute',\n top: (ROW_HEIGHT - SMALL_BUTTON_SIZE) / 2,\n right: SMALL_BUTTON_SIZE + 3,\n opacity: 0.7,\n '&:hover': {\n opacity: 1,\n },\n },\n cellName: {\n display: 'inline-block',\n verticalAlign: 'top',\n fontSize: 14,\n ml: '5px',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n position: 'relative',\n '& .copyButton': {\n display: 'none',\n },\n '&:hover .copyButton': {\n display: 'block',\n },\n },\n cellNameWithDesc: {\n lineHeight: 'normal',\n },\n cellNameDivDiv: {},\n cellDescription: {\n fontSize: 10,\n opacity: 0.5,\n fontStyle: 'italic',\n },\n cellIdAlias: (theme: IobTheme): any => ({\n fontStyle: 'italic',\n fontSize: 12,\n opacity: 0.7,\n '&:hover': {\n color: theme.palette.mode === 'dark' ? '#009900' : '#007700',\n },\n }),\n cellIdAliasReadWriteDiv: {\n height: 24,\n marginTop: -5,\n },\n cellIdAliasAlone: {\n lineHeight: 0,\n },\n cellIdAliasReadWrite: {\n lineHeight: '12px',\n },\n cellType: {\n display: 'inline-block',\n verticalAlign: 'top',\n '& .itemIcon': {\n verticalAlign: 'middle',\n width: ICON_SIZE,\n height: ICON_SIZE,\n display: 'inline-block',\n },\n '& .itemIconFolder': {\n marginLeft: 3,\n },\n },\n cellRole: {\n display: 'inline-block',\n verticalAlign: 'top',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n },\n cellRoom: {\n display: 'inline-block',\n verticalAlign: 'top',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n },\n cellEnumParent: {\n opacity: 0.4,\n },\n cellFunc: {\n display: 'inline-block',\n verticalAlign: 'top',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n },\n cellValue: {\n display: 'inline-block',\n verticalAlign: 'top',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n },\n cellValueButton: {\n marginTop: 5,\n },\n cellValueButtonFalse: {\n opacity: 0.3,\n },\n cellAdapter: {\n display: 'inline-block',\n verticalAlign: 'top',\n },\n cellValueTooltip: {\n fontSize: 12,\n },\n cellValueText: {\n width: '100%',\n height: ROW_HEIGHT,\n fontSize: 16,\n display: 'flex',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n position: 'relative',\n verticalAlign: 'top',\n '& .copyButton': {\n display: 'none',\n },\n '&:hover .copyButton': {\n display: 'block',\n },\n },\n cellValueFile: {\n color: '#2837b9',\n },\n cellValueTooltipTitle: {\n fontStyle: 'italic',\n width: 100,\n display: 'inline-block',\n },\n cellValueTooltipValue: {\n width: 120,\n display: 'inline-block',\n // overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n },\n cellValueTooltipImage: {\n width: 100,\n height: 'auto',\n },\n cellValueTooltipBoth: {\n width: 220,\n display: 'inline-block',\n whiteSpace: 'nowrap',\n },\n cellValueTooltipBox: {\n width: 250,\n overflow: 'hidden',\n pointerEvents: 'none',\n },\n tooltip: {\n pointerEvents: 'none',\n },\n cellValueTextUnit: {\n marginLeft: 4,\n opacity: 0.8,\n display: 'inline-block',\n },\n cellValueTextState: {\n opacity: 0.7,\n },\n cellValueTooltipCopy: {\n position: 'absolute',\n bottom: 3,\n right: 3,\n },\n cellValueTooltipEdit: {\n position: 'absolute',\n bottom: 3,\n right: 15,\n },\n cellButtons: {\n display: 'inline-block',\n verticalAlign: 'top',\n },\n cellButtonsButton: {\n display: 'inline-block',\n opacity: 0.5,\n width: SMALL_BUTTON_SIZE + 4,\n height: SMALL_BUTTON_SIZE + 4,\n '&:hover': {\n opacity: 1,\n },\n p: 0,\n mt: '-2px',\n },\n cellButtonsEmptyButton: {\n fontSize: 12,\n },\n cellButtonMinWidth: {\n minWidth: 40,\n },\n cellButtonsButtonAlone: {\n ml: `${SMALL_BUTTON_SIZE + 6}px`,\n pt: 0,\n mt: '-2px',\n },\n cellButtonsButtonWithCustoms: (theme: IobTheme): React.CSSProperties => ({\n color: theme.palette.mode === 'dark' ? theme.palette.primary.main : theme.palette.secondary.main,\n }),\n cellButtonsButtonWithoutCustoms: {\n opacity: 0.2,\n },\n cellButtonsValueButton: (theme: IobTheme): any => ({\n position: 'absolute',\n top: SMALL_BUTTON_SIZE / 2 - 2,\n opacity: 0.7,\n width: SMALL_BUTTON_SIZE - 2,\n height: SMALL_BUTTON_SIZE - 2,\n color: theme.palette.action.active,\n '&:hover': {\n opacity: 1,\n },\n }),\n cellButtonsValueButtonCopy: {\n right: 8,\n cursor: 'pointer',\n },\n cellButtonsValueButtonEdit: {\n right: SMALL_BUTTON_SIZE / 2 + 16,\n },\n cellDetailsLine: {\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n height: 32,\n fontSize: 16,\n },\n cellDetailsName: {\n fontWeight: 'bold',\n marginRight: 8,\n minWidth: 80,\n },\n\n filteredOut: {\n opacity: 0.5,\n },\n filteredParentOut: {\n opacity: 0.3,\n },\n filterInput: {\n mt: 0,\n mb: 0,\n },\n selectIcon: {\n width: 24,\n height: 24,\n marginRight: 4,\n },\n selectNone: {\n opacity: 0.5,\n },\n itemSelected: (theme: IobTheme): React.CSSProperties => ({\n background: `${theme.palette.primary.main} !important`,\n color: `${Utils.invertColor(theme.palette.primary.main, true)} !important`,\n }),\n header: {\n width: '100%',\n },\n headerCell: {\n display: 'inline-block',\n verticalAlign: 'top',\n },\n headerCellValue: {\n paddingTop: 4,\n // paddingLeft: 5,\n fontSize: 16,\n },\n headerCellInput: {\n width: 'calc(100% - 5px)',\n height: ROW_HEIGHT,\n pt: 0,\n '& .itemIcon': {\n verticalAlign: 'middle',\n width: ICON_SIZE,\n height: ICON_SIZE,\n display: 'inline-block',\n },\n },\n headerCellSelectItem: {\n '& .itemIcon': {\n width: ICON_SIZE,\n height: ICON_SIZE,\n mr: '5px',\n display: 'inline-block',\n },\n },\n visibleButtons: {\n color: '#2196f3',\n opacity: 0.7,\n },\n grow: {\n flexGrow: 1,\n },\n enumIconDiv: {\n marginRight: 8,\n width: 32,\n height: 32,\n borderRadius: 8,\n background: '#FFFFFF',\n },\n enumIcon: {\n marginTop: 4,\n marginLeft: 4,\n width: 24,\n height: 24,\n },\n enumDialog: {\n overflow: 'hidden',\n },\n enumList: {\n minWidth: 250,\n height: 'calc(100% - 50px)',\n overflow: 'auto',\n },\n enumCheckbox: {\n minWidth: 0,\n },\n buttonDiv: {\n display: 'flex',\n height: '100%',\n alignItems: 'center',\n },\n aclText: {\n fontSize: 13,\n marginTop: 6,\n },\n rightsObject: {\n color: '#55ff55',\n paddingLeft: 3,\n },\n rightsState: {\n color: '#86b6ff',\n paddingLeft: 3,\n },\n textCenter: {\n padding: 12,\n textAlign: 'center',\n },\n tooltipAccessControl: {\n display: 'flex',\n flexDirection: 'column',\n },\n fontSizeTitle: {\n '@media screen and (max-width: 465px)': {\n '& *': {\n fontSize: 12,\n },\n },\n },\n draggable: {\n cursor: 'copy',\n },\n nonDraggable: {\n cursor: 'no-drop',\n },\n selectClearButton: {\n position: 'absolute',\n top: 0,\n right: 0,\n borderRadius: 5,\n backgroundColor: 'background.default',\n },\n iconDeviceConnected: (theme: IobTheme): React.CSSProperties => ({\n color: theme.palette.mode === 'dark' ? COLOR_NAME_CONNECTED_DARK : COLOR_NAME_CONNECTED_LIGHT,\n opacity: 0.8,\n position: 'absolute',\n top: 4,\n right: 32,\n width: 20,\n }),\n iconDeviceDisconnected: (theme: IobTheme): React.CSSProperties => ({\n color: theme.palette.mode === 'dark' ? COLOR_NAME_DISCONNECTED_DARK : COLOR_NAME_DISCONNECTED_LIGHT,\n opacity: 0.8,\n position: 'absolute',\n top: 4,\n right: 32,\n width: 20,\n }),\n iconDeviceError: (theme: IobTheme): React.CSSProperties => ({\n color: theme.palette.mode === 'dark' ? COLOR_NAME_ERROR_DARK : COLOR_NAME_ERROR_LIGHT,\n opacity: 0.8,\n position: 'absolute',\n top: 4,\n right: 50,\n width: 20,\n }),\n resizeHandle: {\n display: 'block',\n position: 'absolute',\n cursor: 'col-resize',\n width: 7,\n top: 2,\n bottom: 2,\n zIndex: 1,\n },\n resizeHandleRight: {\n right: 3,\n borderRight: '2px dotted #888',\n '&:hover': {\n borderColor: '#ccc',\n borderRightStyle: 'solid',\n },\n '&.active': {\n borderColor: '#517ea5',\n borderRightStyle: 'solid',\n },\n },\n invertedBackground: (theme: IobTheme): React.CSSProperties => ({\n backgroundColor: theme.palette.mode === 'dark' ? '#9a9a9a' : '#565656',\n padding: '0 3px',\n borderRadius: '2px 0 0 2px',\n }),\n invertedBackgroundFlex: (theme: IobTheme): React.CSSProperties => ({\n backgroundColor: theme.palette.mode === 'dark' ? '#9a9a9a' : '#565656',\n borderRadius: '0 2px 2px 0',\n }),\n contextMenuEdit: (theme: IobTheme): React.CSSProperties => ({\n color: theme.palette.mode === 'dark' ? '#ffee48' : '#cbb801',\n }),\n contextMenuEditValue: (theme: IobTheme): React.CSSProperties => ({\n color: theme.palette.mode === 'dark' ? '#5dff45' : '#1cd301',\n }),\n contextMenuView: (theme: IobTheme): React.CSSProperties => ({\n color: theme.palette.mode === 'dark' ? '#FFF' : '#000',\n }),\n contextMenuCustom: (theme: IobTheme): React.CSSProperties => ({\n color: theme.palette.mode === 'dark' ? '#42eaff' : '#01bbc2',\n }),\n contextMenuACL: (theme: IobTheme): React.CSSProperties => ({\n color: theme.palette.mode === 'dark' ? '#e079ff' : '#500070',\n }),\n contextMenuRoom: (theme: IobTheme): React.CSSProperties => ({\n color: theme.palette.mode === 'dark' ? '#ff9a33' : '#642a00',\n }),\n contextMenuRole: (theme: IobTheme): React.CSSProperties => ({\n color: theme.palette.mode === 'dark' ? '#ffdb43' : '#562d00',\n }),\n contextMenuDelete: (theme: IobTheme): React.CSSProperties => ({\n color: theme.palette.mode === 'dark' ? '#ff4f4f' : '#cf0000',\n }),\n contextMenuKeys: {\n marginLeft: 8,\n opacity: 0.7,\n fontSize: 'smaller',\n },\n contextMenuWithSubMenu: {\n display: 'flex',\n },\n};\n\nfunction ButtonIcon(props?: { style?: React.CSSProperties }): JSX.Element {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 436 436\"\n style={props?.style}\n width=\"24\"\n height=\"24\"\n className=\"admin-button\"\n >\n <g fill=\"currentColor\">\n <path d=\"m195.23077,24.30769c-36,3 -67,12 -96,26c-49,24 -82,61 -93,104l-3,11l-1,50c0,46 0,49 2,59l5,20c21,58 84,103 165,116c16,3 53,4 70,2c60,-6 111,-28 147,-64c21,-21 36,-49 40,-74a866,866 0 0 0 1,-104c-3,-18 -6,-28 -13,-43c-26,-52 -87,-90 -162,-101c-16,-2 -48,-3 -63,-2l1,0zm60,23c36,5 70,18 95,35c31,20 51,47 59,77c2,7 2,11 2,25c1,15 0,18 -2,26c-19,69 -104,117 -200,114c-47,-2 -90,-15 -124,-38c-31,-20 -51,-47 -59,-77c-3,-11 -4,-32 -2,-43c8,-42 41,-78 91,-101a260,260 0 0 1 140,-19l0,1zm-221,222c21,26 57,49 95,62c81,27 174,14 239,-32c14,-10 31,-27 41,-41c2,-2 2,-2 2,7c-1,23 -16,50 -38,72c-78,74 -233,74 -311,-1a121,121 0 0 1 -39,-76l0,-6l3,4l8,11z\" />\n <path d=\"m201.23077,47.30769c-40,3 -79,19 -104,44c-55,55 -38,133 37,171c52,26 122,24 172,-5c30,-17 51,-42 58,-71c3,-11 3,-34 0,-45c-6,-23 -21,-44 -40,-60l-27,-16a184,184 0 0 0 -96,-18zm30,21c56,5 100,35 112,75c4,11 4,30 0,41c-8,25 -26,45 -54,59a166,166 0 0 1 -160,-8a98,98 0 0 1 -41,-53c-5,-18 -2,-39 8,-57c23,-39 79,-62 135,-57z\" />\n </g>\n </svg>\n );\n}\n\n/** Converts ioB pattern into regex */\nexport function pattern2RegEx(pattern: string): string {\n pattern = (pattern || '').toString();\n\n const startsWithWildcard = pattern[0] === '*';\n const endsWithWildcard = pattern[pattern.length - 1] === '*';\n\n pattern = pattern.replace(/[-/\\\\^$+?.()|[\\]{}]/g, '\\\\$&').replace(/\\*/g, '.*');\n\n return (startsWithWildcard ? '' : '^') + pattern + (endsWithWildcard ? '' : '$');\n}\n\n/**\n * Function that walks through all keys of an object or array and applies a function to each key.\n */\nfunction walkThroughArray(object: any[], iteratee: (result: any[], value: any, key: number) => void): any[] {\n const copiedObject: any[] = [];\n for (let index = 0; index < object.length; index++) {\n iteratee(copiedObject, object[index], index);\n }\n return copiedObject;\n}\n\n/**\n * Function that walks through all keys of an object or array and applies a function to each key.\n */\nfunction walkThroughObject(\n object: Record<string, any>,\n iteratee: (result: Record<string, any>, value: any, key: string) => void,\n): Record<string, any> {\n const copiedObject: Record<string, any> = {};\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n iteratee(copiedObject, object[key], key);\n }\n }\n return copiedObject;\n}\n\n/**\n * Function to reduce an object primarily by a given list of keys\n */\nfunction filterObject(\n /** The objects which should be filtered */\n obj: Record<string, any> | any[],\n /** The keys which should be excluded */\n filterKeys: string[],\n /** Whether translations should be reduced to only the english value */\n excludeTranslations?: boolean,\n): Record<string, any> | any[] {\n if (Array.isArray(obj)) {\n return walkThroughArray(obj, (result: any[], value: any, key: number) => {\n if (value === undefined || value === null) {\n return;\n }\n // if the key is an object, run it through the inner function - omitFromObject\n const isObject = typeof value === 'object';\n if (excludeTranslations && isObject) {\n if (typeof value.en === 'string' && typeof value.de === 'string') {\n result[key] = value.en;\n return;\n }\n }\n result[key] = isObject ? filterObject(value, filterKeys, excludeTranslations) : value;\n });\n }\n\n return walkThroughObject(obj, (result: Record<string, any>, value: any, key: string) => {\n if (value === undefined || value === null) {\n return;\n }\n if (filterKeys.includes(key)) {\n return;\n }\n // if the key is an object, run it through the inner function - omitFromObject\n const isObject = typeof value === 'object';\n if (excludeTranslations && isObject) {\n if (typeof value.en === 'string' && typeof value.de === 'string') {\n result[key] = value.en;\n return;\n }\n }\n result[key] = isObject ? filterObject(value, filterKeys, excludeTranslations) : value;\n });\n}\n\nexport function filterRoles(\n roleArray: { role: string; type: ioBroker.CommonType }[],\n type: ioBroker.CommonType,\n defaultRoles?: { role: string; type: ioBroker.CommonType }[],\n): string[] {\n const bigRoleArray: string[] = [];\n roleArray.forEach(\n role =>\n (role.type === 'mixed' || role.type) === type &&\n !bigRoleArray.includes(role.role) &&\n bigRoleArray.push(role.role),\n );\n defaultRoles.forEach(\n role =>\n (role.type === 'mixed' || role.type) === type &&\n !bigRoleArray.includes(role.role) &&\n bigRoleArray.push(role.role),\n );\n bigRoleArray.sort();\n return bigRoleArray;\n}\n\n/**\n * Function to generate a json-file for an object and trigger download it\n */\nfunction generateFile(\n /** The desired filename */\n fileName: string,\n /** The objects which should be downloaded */\n obj: Record<string, ioBroker.Object>,\n /** Options to filter/reduce the output */\n options: {\n /** Whether the output should be beautified */\n beautify?: boolean;\n /** Whether \"system.repositories\" should be excluded */\n excludeSystemRepositories?: boolean;\n /** Whether translations should be reduced to only the english value */\n excludeTranslations?: boolean;\n },\n): void {\n const el = document.createElement('a');\n const filterKeys = [];\n if (options.excludeSystemRepositories) {\n filterKeys.push('system.repositories');\n }\n const filteredObject =\n filterKeys.length > 0 || options.excludeTranslations\n ? filterObject(obj, filterKeys, options.excludeTranslations)\n : obj;\n const data = options.beautify ? JSON.stringify(filteredObject, null, 2) : JSON.stringify(filteredObject);\n el.setAttribute('href', `data:application/json;charset=utf-8,${encodeURIComponent(data)}`);\n el.setAttribute('download', fileName);\n\n el.style.display = 'none';\n document.body.appendChild(el);\n\n el.click();\n\n document.body.removeChild(el);\n}\n\n// d=data, t=target, s=start, e=end, m=middle\nfunction binarySearch(list: string[], find: string, _start?: number, _end?: number): boolean {\n _start ||= 0;\n if (_end === undefined) {\n _end = list.length - 1;\n if (!_end) {\n return list[0] === find;\n }\n }\n const middle = Math.floor((_start + _end) / 2);\n if (find === list[middle]) {\n return true;\n }\n if (_end - 1 === _start) {\n return list[_start] === find || list[_end] === find;\n }\n if (find > list[middle]) {\n return binarySearch(list, find, middle, _end);\n }\n if (find < list[middle]) {\n return binarySearch(list, find, _start, middle);\n }\n return false;\n}\n\nfunction getName(name: ioBroker.StringOrTranslated, lang: ioBroker.Languages): string {\n if (typeof name === 'object') {\n if (!name) {\n return '';\n }\n return (name[lang] || name.en || '').toString();\n }\n\n return name ? name.toString() : '';\n}\n\nexport function getSelectIdIconFromObjects(\n objects: Record<string, ioBroker.Object>,\n id: string,\n lang: ioBroker.Languages,\n imagePrefix?: string,\n): string | JSX.Element | null {\n // `admin` has prefix '.' and `web` has '../..'\n imagePrefix ||= '.'; // http://localhost:8081';\n let src: string | JSX.Element = '';\n const _id_ = `system.adapter.${id}`;\n const aIcon = id && objects[_id_]?.common?.icon;\n if (aIcon) {\n // if not BASE64\n if (!aIcon.startsWith('data:image/')) {\n if (aIcon.includes('.')) {\n const name = objects[_id_].common.name;\n if (typeof name === 'object') {\n src = `${imagePrefix}/adapter/${name[lang] || name.en}/${aIcon}`;\n } else {\n src = `${imagePrefix}/adapter/${name}/${aIcon}`;\n }\n } else if (aIcon && aIcon.length < 3) {\n return aIcon; // utf-8\n } else {\n return null; // '<i class=\"material-icons iob-list-icon\">' + objects[_id_].common.icon + '</i>';\n }\n } else if (aIcon.startsWith('data:image/svg')) {\n src = (\n <SVG\n className=\"iconOwn\"\n src={aIcon}\n width={28}\n height={28}\n />\n );\n } else {\n src = aIcon;\n }\n } else {\n const common = objects[id] && objects[id].common;\n\n if (common) {\n const cIcon = common.icon;\n if (cIcon) {\n if (!cIcon.startsWith('data:image/')) {\n if (cIcon.includes('.')) {\n let instance;\n if (objects[id].type === 'instance' || objects[id].type === 'adapter') {\n if (typeof common.name === 'object') {\n src = `${imagePrefix}/adapter/${common.name[lang] || common.name.en}/${cIcon}`;\n } else {\n src = `${imagePrefix}/adapter/${common.name}/${cIcon}`;\n }\n } else if (id && id.startsWith('system.adapter.')) {\n instance = id.split('.', 3);\n if (cIcon[0] === '/') {\n instance[2] += cIcon;\n } else {\n instance[2] += `/${cIcon}`;\n }\n src = `${imagePrefix}/adapter/${instance[2]}`;\n } else {\n instance = id.split('.', 2);\n if (cIcon[0] === '/') {\n instance[0] += cIcon;\n } else {\n instance[0] += `/${cIcon}`;\n }\n src = `${imagePrefix}/adapter/${instance[0]}`;\n }\n } else if (aIcon && aIcon.length < 3) {\n return aIcon; // utf-8\n } else {\n return null;\n }\n } else if (cIcon.startsWith('data:image/svg')) {\n // if base 64 image\n src = (\n <SVG\n className=\"iconOwn\"\n src={cIcon}\n width={28}\n height={28}\n />\n );\n } else {\n src = cIcon;\n }\n }\n }\n }\n\n return src || null;\n}\n\nfunction applyFilter(\n item: TreeItem,\n filters: ObjectBrowserFilter,\n lang: ioBroker.Languages,\n objects: Record<string, ioBroker.Object>,\n context?: {\n id?: string;\n idRx?: RegExp;\n name?: string;\n nameRx?: RegExp;\n type?: string;\n custom?: string;\n role?: string;\n room?: string[];\n func?: string[];\n },\n counter?: { count: number },\n customFilter?: ObjectBrowserCustomFilter,\n selectedTypes?: string[],\n _depth?: number,\n): boolean {\n _depth ||= 0;\n let filteredOut = false;\n if (!context) {\n context = {};\n if (filters.id) {\n const id = filters.id.toLowerCase();\n if (id.includes('*')) {\n context.idRx = new RegExp(pattern2RegEx(filters.id), 'i');\n } else {\n context.id = id;\n }\n }\n if (filters.name) {\n const name = filters.name.toLowerCase();\n if (name.includes('*')) {\n context.nameRx = new RegExp(pattern2RegEx(name), 'i');\n } else {\n context.name = name;\n }\n }\n if (filters.type) {\n context.type = filters.type.toLowerCase();\n }\n if (filters.custom) {\n context.custom = filters.custom.toLowerCase();\n }\n if (filters.role) {\n context.role = filters.role.toLowerCase();\n }\n if (filters.room) {\n context.room = (objects[filters.room] as ioBroker.EnumObject)?.common?.members || [];\n }\n if (filters.func) {\n context.func = (objects[filters.func] as ioBroker.EnumObject)?.common?.members || [];\n }\n }\n\n const data = item.data;\n\n if (data && data.id) {\n const common: ioBroker.StateCommon = data.obj?.common as ioBroker.StateCommon;\n\n if (customFilter) {\n if (customFilter.type) {\n if (typeof customFilter.type === 'string') {\n if (!data.obj || customFilter.type !== data.obj.type) {\n filteredOut = true;\n }\n } else if (Array.isArray(customFilter.type)) {\n if (!data.obj || !customFilter.type.includes(data.obj.type)) {\n filteredOut = true;\n }\n }\n }\n if (!filteredOut && customFilter.common?.type) {\n if (!common?.type) {\n filteredOut = true;\n } else if (typeof customFilter.common.type === 'string') {\n if (customFilter.common.type !== common.type) {\n filteredOut = true;\n }\n } else if (Array.isArray(customFilter.common.type)) {\n if (!customFilter.common.type.includes(common.type)) {\n filteredOut = true;\n }\n }\n }\n if (!filteredOut && customFilter.common?.role) {\n if (!common?.role) {\n filteredOut = true;\n } else if (typeof customFilter.common.role === 'string') {\n if (common.role.startsWith(customFilter.common.role)) {\n filteredOut = true;\n }\n } else if (Array.isArray(customFilter.common.role)) {\n if (!customFilter.common.role.find(role => common.role.startsWith(role))) {\n filteredOut = true;\n }\n }\n }\n\n if (!filteredOut && customFilter.common?.custom === '_' && common?.custom) {\n filteredOut = true;\n } else if (!filteredOut && customFilter.common?.custom && customFilter.common?.custom !== '_') {\n const filterOfCustom = customFilter.common.custom as string | string[] | boolean;\n if (!common?.custom) {\n filteredOut = true;\n } else if (filterOfCustom === '_dataSources') {\n // TODO: make it configurable\n if (\n !Object.keys(common.custom).find(\n id => id.startsWith('history.') || id.startsWith('sql.') || id.startsWith('influxdb.'),\n )\n ) {\n filteredOut = true;\n }\n } else if (Array.isArray(filterOfCustom)) {\n // here are ['influxdb.', 'telegram.']\n const customs = Object.keys(common.custom); // here are ['influxdb.0', 'telegram.2']\n if (filterOfCustom.find(cst => customs.find(id => id.startsWith(cst)))) {\n filteredOut = true;\n }\n } else if (\n filterOfCustom !== true &&\n !Object.keys(common.custom).find(id => id.startsWith(filterOfCustom as string))\n ) {\n filteredOut = true;\n }\n }\n }\n\n if (!filteredOut && !filters.expertMode) {\n filteredOut =\n data.id === 'system' ||\n data.id === 'enum' ||\n // (data.obj && data.obj.type === 'meta') ||\n data.id.startsWith('system.') ||\n data.id.startsWith('enum.') ||\n data.id.startsWith('_design/') ||\n data.id.endsWith('.admin') ||\n !!common?.expert;\n }\n if (!filteredOut && context.id) {\n if (data.fID === undefined) {\n data.fID = data.id.toLowerCase();\n }\n filteredOut = !data.fID.includes(context.id);\n }\n if (!filteredOut && context.idRx) {\n filteredOut = !context.idRx.test(data.id);\n }\n if (!filteredOut && context.name) {\n if (common) {\n if (data.fName === undefined) {\n data.fName = getName(common.name, lang) || '';\n data.fName = data.fName.toLowerCase();\n }\n filteredOut = !data.fName.includes(context.name);\n } else {\n filteredOut = true;\n }\n }\n if (!filteredOut && context.nameRx) {\n if (common) {\n if (data.fName === undefined) {\n data.fName = getName(common.name, lang) || '';\n data.fName = data.fName.toLowerCase();\n }\n filteredOut = !context.nameRx.test(data.fName);\n }\n }\n\n if (!filteredOut && filters.role && common) {\n if (common) {\n filteredOut = !(typeof common.role === 'string' && common.role.startsWith(context.role));\n } else {\n filteredOut = true;\n }\n }\n if (!filteredOut && context.room) {\n filteredOut = !context.room.find(id => id === data.id || data.id.startsWith(`${id}.`));\n }\n if (!filteredOut && context.func) {\n filteredOut = !context.func.find(id => id === data.id || data.id.startsWith(`${id}.`));\n }\n if (!filteredOut && context.type) {\n filteredOut = !(data.obj && data.obj.type && data.obj.type === context.type);\n }\n if (!filteredOut && selectedTypes) {\n filteredOut = !(data.obj && data.obj.type && selectedTypes.includes(data.obj.type));\n }\n if (!filteredOut && context.custom) {\n if (common) {\n if (context.custom === '_') {\n filteredOut = !!common.custom;\n } else {\n filteredOut = !common.custom?.[context.custom];\n }\n } else {\n filteredOut = true;\n }\n }\n }\n\n data.visible = !filteredOut;\n\n data.hasVisibleChildren = false;\n if (item.children && _depth < 20) {\n item.children.forEach(_item => {\n const visible = applyFilter(\n _item,\n filters,\n lang,\n objects,\n context,\n counter,\n customFilter,\n selectedTypes,\n _depth + 1,\n );\n if (visible) {\n data.hasVisibleChildren = true;\n }\n });\n }\n\n // const visible = data.visible || data.hasVisibleChildren;\n data.sumVisibility = data.visible || data.hasVisibleChildren; // || data.hasVisibleParent;\n if (counter && data.sumVisibility) {\n counter.count++;\n }\n\n // show all children of visible object with opacity 0.5\n if (data.id && data.sumVisibility && item.children) {\n item.children.forEach(_item => (_item.data.hasVisibleParent = true));\n }\n\n return data.visible || data.hasVisibleChildren;\n}\n\nfunction getVisibleItems(\n item: TreeItem,\n type: ioBroker.ObjectType,\n objects: Record<string, ioBroker.Object>,\n _result?: string[],\n): string[] {\n _result ||= [];\n const data = item.data;\n if (data.sumVisibility) {\n if (data.id && objects[data.id] && (!type || objects[data.id].type === type)) {\n _result.push(data.id);\n }\n item.children?.forEach(_item => getVisibleItems(_item, type, objects, _result));\n }\n\n return _result;\n}\n\nfunction getSystemIcon(\n objects: Record<string, ioBroker.Object>,\n id: string,\n level: number,\n themeType: ThemeType,\n lang: ioBroker.Languages,\n imagePrefix?: string,\n): string | JSX.Element | null {\n let icon;\n\n // system or design has special icons\n if (id === 'alias' || id === 'alias.0') {\n icon = (\n <IconLink\n className=\"iconOwn\"\n style={{ color: COLOR_NAME_ALIAS(themeType) }}\n />\n );\n } else if (id === '0_userdata' || id === '0_userdata.0') {\n icon = (\n <IconData\n className=\"iconOwn\"\n style={{ color: COLOR_NAME_USERDATA(themeType) }}\n />\n );\n } else if (id.startsWith('_design/') || id === 'system') {\n icon = (\n <IconSystem\n className=\"iconOwn\"\n style={{ color: COLOR_NAME_SYSTEM(themeType) }}\n />\n );\n } else if (id === 'system.adapter') {\n icon = (\n <IconSystem\n className=\"iconOwn\"\n style={{ color: COLOR_NAME_SYSTEM_ADAPTER(themeType) }}\n />\n );\n } else if (id === 'system.group') {\n icon = <IconGroup className=\"iconOwn\" />;\n } else if (id === 'system.user') {\n icon = <IconUser className=\"iconOwn\" />;\n } else if (id === 'system.host') {\n icon = <IconHost className=\"iconOwn\" />;\n } else if (id.endsWith('.connection') || id.endsWith('.connected')) {\n icon = <IconConnection className=\"iconOwn\" />;\n } else if (id.endsWith('.info')) {\n icon = <IconInfo className=\"iconOwn\" />;\n } else if (objects[id] && objects[id].type === 'meta') {\n icon = <IconMeta className=\"iconOwn\" />;\n } else if (level < 2) {\n // detect \"cloud.0\"\n if (objects[`system.adapter.${id}`]) {\n icon = getSelectIdIconFromObjects(objects, `system.adapter.${id}`, lang, imagePrefix);\n }\n }\n\n return icon || null;\n}\n\nfunction getObjectTooltip(data: TreeItemData, lang: ioBroker.Languages): string | null {\n if (data?.obj?.common?.desc) {\n return getName(data.obj.common.desc, lang) || null;\n }\n\n return null;\n}\n\nfunction getIdFieldTooltip(data: TreeItemData, lang: ioBroker.Languages): JSX.Element {\n const tooltip = getObjectTooltip(data, lang);\n if (tooltip?.startsWith('http')) {\n return (\n <Box\n component=\"a\"\n sx={styles.cellIdTooltipLink}\n href={tooltip}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n {tooltip}\n </Box>\n );\n }\n return <span style={styles.cellIdTooltip}>{tooltip || data.id || ''}</span>;\n}\n\nfunction buildTree(\n objects: Record<string, ioBroker.Object>,\n options: {\n imagePrefix?: string;\n root?: string;\n lang: ioBroker.Languages;\n themeType: ThemeType;\n },\n): { root: TreeItem; info: TreeInfo } {\n const imagePrefix = options.imagePrefix || '.';\n\n let ids = Object.keys(objects);\n\n ids.sort((a, b) => {\n if (a === b) {\n return 0;\n }\n a = a.replace(/\\./g, '!!!');\n b = b.replace(/\\./g, '!!!');\n if (a > b) {\n return 1;\n }\n return -1;\n });\n\n if (options.root) {\n ids = ids.filter(id => id === options.root || id.startsWith(`${options.root}.`));\n }\n\n // find empty nodes and create names for it\n let currentPathArr: string[] = [];\n let currentPath = '';\n let currentPathLen = 0;\n const root: TreeItem = {\n data: {\n name: '',\n id: '',\n },\n children: [],\n };\n\n const info: TreeInfo = {\n funcEnums: [],\n roomEnums: [],\n roles: [],\n ids: [],\n types: [],\n objects,\n customs: ['_'],\n enums: [],\n hasSomeCustoms: false,\n aliasesMap: {},\n };\n\n let cRoot: TreeItem = root;\n\n for (let i = 0; i < ids.length; i++) {\n const id = ids[i];\n if (!id) {\n continue;\n }\n const obj = objects[id];\n const parts = id.split('.');\n\n if (obj.type && !info.types.includes(obj.type)) {\n info.types.push(obj.type);\n }\n\n if (obj) {\n const common = obj.common;\n const role = common?.role;\n if (role && !info.roles.find(it => it.role === role)) {\n if (typeof role !== 'string') {\n console.warn(`Invalid role type \"${typeof role}\" in \"${obj._id}\"`);\n } else {\n info.roles.push({ role, type: common.type });\n }\n } else if (id.startsWith('enum.rooms.')) {\n info.roomEnums.push(id);\n info.enums.push(id);\n } else if (id.startsWith('enum.functions.')) {\n info.funcEnums.push(id);\n info.enums.push(id);\n } else if (obj.type === 'enum') {\n info.enums.push(id);\n } else if (obj.type === 'instance' && common && (common.supportCustoms || common.adminUI?.custom)) {\n info.hasSomeCustoms = true;\n info.customs.push(id.substring('system.adapter.'.length));\n }\n\n // Build a map of aliases\n if (id.startsWith('alias.') && obj.common.alias?.id) {\n if (typeof obj.common.alias.id === 'string') {\n const usedId = obj.common.alias.id;\n if (!info.aliasesMap[usedId]) {\n info.aliasesMap[usedId] = [id];\n } else if (!info.aliasesMap[usedId].includes(id)) {\n info.aliasesMap[usedId].push(id);\n }\n } else {\n const readId = obj.common.alias.id.read;\n if (readId) {\n if (!info.aliasesMap[readId]) {\n info.aliasesMap[readId] = [id];\n } else if (!info.aliasesMap[readId].includes(id)) {\n info.aliasesMap[readId].push(id);\n }\n }\n const writeId = obj.common.alias.id.write;\n if (writeId) {\n if (!info.aliasesMap[writeId]) {\n info.aliasesMap[writeId] = [id];\n } else if (!info.aliasesMap[writeId].includes(id)) {\n info.aliasesMap[writeId].push(id);\n }\n }\n }\n }\n }\n\n info.ids.push(id);\n\n let repeat;\n\n // if next level\n do {\n repeat = false;\n\n // If the current level is still OK, and we can add ID to children\n if (!currentPath || id.startsWith(`${currentPath}.`)) {\n // if more than one level added\n if (parts.length - currentPathLen > 1) {\n let curPath = currentPath;\n // generate missing levels\n for (let k = currentPathLen; k < parts.length - 1; k++) {\n curPath += (curPath ? '.' : '') + parts[k];\n // level does not exist\n if (!binarySearch(info.ids, curPath)) {\n const _cRoot: TreeItem = {\n data: {\n name: parts[k],\n parent: cRoot,\n id: curPath,\n obj: objects[curPath],\n level: k,\n icon: getSystemIcon(\n objects,\n curPath,\n k,\n options.themeType,\n options.lang,\n imagePrefix,\n ),\n generated: true,\n },\n };\n\n cRoot.children ||= [];\n cRoot.children.push(_cRoot);\n cRoot = _cRoot;\n info.ids.push(curPath); // IDs will be added by alphabet\n } else if (cRoot.children) {\n cRoot = cRoot.children.find(item => item.data.name === parts[k]);\n }\n }\n }\n\n const _cRoot: TreeItem = {\n data: {\n name: parts[parts.length - 1],\n title: getName(obj?.common?.name, options.lang),\n obj,\n parent: cRoot,\n icon:\n getSelectIdIconFromObjects(objects, id, options.lang, imagePrefix) ||\n getSystemIcon(objects, id, 0, options.themeType, options.lang, imagePrefix),\n id,\n hasCustoms: !!(obj.common?.custom && Object.keys(obj.common.custom).length),\n level: parts.length - 1,\n generated: false,\n button:\n obj.type === 'state' &&\n !!obj.common?.role &&\n typeof obj.common.role === 'string' &&\n obj.common.role.startsWith('button') &&\n obj.common?.write !== false,\n switch:\n obj.type === 'state' &&\n obj.common?.type === 'boolean' &&\n obj.common?.write !== false &&\n obj.common?.read !== false,\n url:\n !!obj.common?.role &&\n typeof obj.common.role === 'string' &&\n obj.common.role.startsWith('url'),\n },\n };\n\n cRoot.children ||= [];\n cRoot.children.push(_cRoot);\n cRoot = _cRoot;\n\n currentPathLen = parts.length;\n currentPathArr = parts;\n currentPath = id;\n } else {\n let u = 0;\n\n while (currentPathArr[u] === parts[u]) {\n u++;\n }\n\n if (u > 0) {\n let move = currentPathArr.length;\n currentPathArr = currentPathArr.splice(0, u);\n currentPathLen = u;\n currentPath = currentPathArr.join('.');\n while (move > u) {\n if (cRoot.data.parent) {\n cRoot = cRoot.data.parent;\n } else {\n console.error(`Parent is null for ${id} ${currentPath} ${currentPathArr.join('.')}`);\n }\n move--;\n }\n } else {\n cRoot = root;\n currentPathArr = [];\n currentPath = '';\n currentPathLen = 0;\n }\n repeat = true;\n }\n } while (repeat);\n }\n\n info.roomEnums.sort((a, b) => {\n const aName: string = getName(objects[a]?.common?.name, options.lang) || a.split('.').pop();\n const bName: string = getName(objects[b]?.common?.name, options.lang) || b.split('.').pop();\n if (aName > bName) {\n return 1;\n }\n if (aName < bName) {\n return -1;\n }\n return 0;\n });\n info.funcEnums.sort((a, b) => {\n const aName: string = getName(objects[a]?.common?.name, options.lang) || a.split('.').pop();\n const bName: string = getName(objects[b]?.common?.name, options.lang) || b.split('.').pop();\n if (aName > bName) {\n return 1;\n }\n if (aName < bName) {\n return -1;\n }\n return 0;\n });\n info.roles.sort((a, b) => a.role.localeCompare(b.role));\n info.types.sort();\n\n return { info, root };\n}\n\nfunction findNode(root: TreeItem, id: string, _parts?: string[], _path?: string, _level?: number): TreeItem | null {\n if (root.data.id === id) {\n return root;\n }\n if (!_parts) {\n _parts = id.split('.');\n _level = 0;\n _path = _parts[_level];\n }\n if (!root.children && root.data.id !== id) {\n return null;\n }\n let found;\n if (root.children) {\n for (let i = 0; i < root.children.length; i++) {\n const _id = root.children[i].data.id;\n if (_id === _path) {\n found = root.children[i];\n break;\n } else if (_id > _path) {\n break;\n }\n }\n }\n if (found) {\n _level ||= 0;\n return findNode(found, id, _parts, `${_path}.${_parts[_level + 1]}`, _level + 1);\n }\n\n return null;\n}\n\nfunction findRoomsForObject(\n info: TreeInfo,\n id: string,\n lang: ioBroker.Languages,\n rooms?: string[],\n): { rooms: string[]; per: boolean } {\n if (!id) {\n return { rooms: [], per: false };\n }\n rooms ||= [];\n for (const room of info.roomEnums) {\n const common = info.objects[room]?.common;\n\n if (!common) {\n continue;\n }\n\n const name = getName(common.name, lang);\n\n if (common.members?.includes(id) && !rooms.includes(name)) {\n rooms.push(name);\n }\n }\n\n let ownEnums;\n\n // Check parent\n const parts = id.split('.');\n parts.pop();\n id = parts.join('.');\n if (info.objects[id]) {\n ownEnums = rooms.length;\n findRoomsForObject(info, id, lang, rooms);\n }\n\n return { rooms, per: !ownEnums }; // per is if the enums are from parent\n}\n\nfunction findEnumsForObjectAsIds(\n info: TreeInfo,\n id: string,\n enumName: 'roomEnums' | 'funcEnums',\n funcs?: string[],\n): string[] {\n if (!id) {\n return [];\n }\n funcs ||= [];\n for (let i = 0; i < info[enumName].length; i++) {\n const common = info.objects[info[enumName][i]]?.common;\n if (common?.members?.includes(id) && !funcs.includes(info[enumName][i])) {\n funcs.push(info[enumName][i]);\n }\n }\n funcs.sort();\n\n return funcs;\n}\n\nfunction findFunctionsForObject(\n info: TreeInfo,\n id: string,\n lang: ioBroker.Languages,\n funcs?: string[],\n): { funcs: string[]; pef: boolean } {\n if (!id) {\n return { funcs: [], pef: false };\n }\n funcs ||= [];\n for (let i = 0; i < info.funcEnums.length; i++) {\n const common = info.objects[info.funcEnums[i]]?.common;\n\n if (!common) {\n continue;\n }\n\n const name = getName(common.name, lang);\n if (common.members?.includes(id) && !funcs.includes(name)) {\n funcs.push(name);\n }\n }\n\n let ownEnums;\n\n // Check parent\n const parts = id.split('.');\n parts.pop();\n id = parts.join('.');\n if (info.objects[id]) {\n ownEnums = funcs.length;\n findFunctionsForObject(info, id, lang, funcs);\n }\n\n return { funcs, pef: !ownEnums };\n}\n\n/*\nfunction quality2text(q) {\n if (!q) {\n return 'ok';\n }\n const custom = q & 0xFFFF0000;\n let text = '';\n if (q & 0x40) text += 'device';\n if (q & 0x80) text += 'sensor';\n if (q & 0x01) text += ' bad';\n if (q & 0x02) text += ' not connected';\n if (q & 0x04) text += ' error';\n\n return text + (custom ? '|0x' + (custom >> 16).toString(16).toUpperCase() : '') + ' [0x' + q.toString(16).toUpperCase() + ']';\n}\n*/\n\n/**\n * Format a state value for visualization\n */\nfunction formatValue(options: FormatValueOptions): {\n valText: {\n /** value as string */\n v: string;\n /** value unit */\n u?: string;\n /** value isn't replaced by `common.states` */\n s?: string;\n /** Text for copy to clipboard */\n c?: string;\n };\n valFull:\n | {\n /** label */\n t: string;\n /** value */\n v: string;\n /** no break */\n nbr?: boolean;\n }[]\n | undefined;\n fileViewer: 'image' | 'text' | 'json' | 'html' | 'pdf' | 'audio' | 'video' | undefined;\n} {\n const { dateFormat, state, isFloatComma, texts, obj } = options;\n const states = Utils.getStates(obj);\n const isCommon = obj.common;\n let fileViewer: 'image' | 'text' | 'json' | 'html' | 'pdf' | 'audio' | 'video' | undefined;\n\n let v: any =\n // @ts-expect-error deprecated from js-controller 6\n isCommon?.type === 'file'\n ? '[file]'\n : !state || state.val === null\n ? '(null)'\n : state.val === undefined\n ? '[undef]'\n : state.val;\n\n const type = typeof v;\n\n if (isCommon?.role && typeof isCommon.role === 'string' && isCommon.role.match(/^value\\.time|^date/)) {\n if (v && typeof v === 'string') {\n if (Utils.isStringInteger(v)) {\n // we assume a unix ts\n v = new Date(parseInt(v, 10)).toString();\n } else {\n // check if parsable by new date\n try {\n const parsedDate = new Date(v);\n\n if (Utils.isValidDate(parsedDate)) {\n v = parsedDate.toString();\n }\n } catch {\n // ignore\n }\n }\n } else {\n if (v > 946681200 && v < 946681200000) {\n // '2000-01-01T00:00:00' => 946681200000\n v *= 1_000; // maybe the time is in seconds (UNIX time)\n }\n // \"null\" and undefined could not be here. See `let v = (isCommon && isCommon.type === 'file') ....` above\n v = v ? new Date(v).toString() : v;\n }\n } else {\n if (type === 'number') {\n if (!Number.isInteger(v)) {\n v = Math.round(v * 100_000_000) / 100_000_000; // remove 4.00000000000000001\n if (isFloatComma) {\n v = v.toString().replace('.', ',');\n }\n }\n } else if (type === 'object') {\n v = JSON.stringify(v);\n } else if (type !== 'string') {\n v = v.toString();\n } else if (v.startsWith('data:image/')) {\n fileViewer = 'image';\n }\n\n if (typeof v !== 'string') {\n v = v.toString();\n }\n }\n\n const valText: {\n /** value as string */\n v: string;\n /** value unit */\n u?: string;\n /** value not replaced by `common.states` */\n s?: string;\n /** Text for copy to clipboard */\n c?: string;\n } = { v: v as string };\n\n // try to replace number with \"common.states\"\n if (states && states[v] !== undefined) {\n if (v !== states[v]) {\n valText.s = v;\n v = states[v];\n valText.v = v;\n }\n }\n\n if (valText.v?.length > 40) {\n valText.c = valText.v;\n valText.v = `${valText.v.substring(0, 40)}...`;\n }\n\n if (isCommon?.unit) {\n valText.u = isCommon.unit;\n }\n\n let valFull:\n | {\n /** label */\n t: string;\n /** value */\n v: string;\n nbr?: boolean;\n }[]\n | undefined;\n if (options.full) {\n if (typeof v === 'string' && v.length > 100) {\n valFull = [{ t: texts.value, v: `${v.substring(0, 100)}...` }];\n } else {\n valFull = [{ t: texts.value, v }];\n }\n\n if (state) {\n if (state.ack !== undefined && state.ack !== null) {\n valFull.push({ t: texts.ack, v: state.ack.toString() });\n }\n if (state.ts) {\n valFull.push({ t: texts.ts, v: state.ts ? Utils.formatDate(new Date(state.ts), dateFormat) : '' });\n }\n if (state.lc) {\n valFull.push({ t: texts.lc, v: state.lc ? Utils.formatDate(new Date(state.lc), dateFormat) : '' });\n }\n if (state.from) {\n let from = state.from.toString();\n if (from.startsWith('system.adapter.')) {\n from = from.substring(15);\n }\n valFull.push({ t: texts.from, v: from });\n }\n if (state.user) {\n let user = state.user.toString();\n if (user.startsWith('system.user.')) {\n user = user.substring(12);\n }\n valFull.push({ t: texts.user, v: user });\n }\n if (state.c) {\n valFull.push({ t: texts.c, v: state.c });\n }\n valFull.push({ t: texts.quality, v: Utils.quality2text(state.q || 0).join(', '), nbr: true });\n }\n }\n\n return {\n valText,\n valFull,\n fileViewer,\n };\n}\n\n/**\n * Get CSS style for given state value\n */\nfunction getValueStyle(options: GetValueStyleOptions): { color: string } {\n const { state /* , isExpertMode, isButton */ } = options;\n const color = state?.ack ? (state.q ? '#ffa500' : '') : '#ff2222c9';\n\n // do not show the color of the button in non-expert mode\n // if (!isExpertMode && isButton) {\n // color = '';\n // }\n\n return { color };\n}\n\nfunction prepareSparkData(values: ioBroker.GetHistoryResult, from: number): number[] {\n // set one point every hour\n let time = from;\n let i = 1;\n const v = [];\n\n while (i < values.length && time < from + 25 * 3600000) {\n // find the interval\n while (values[i - 1].ts < time && time <= values[i].ts && i < values.length) {\n i++;\n }\n if (i === 1 && values[i - 1].ts >= time) {\n // assume the value was always null\n v.push(0);\n } else if (i < values.length) {\n if (typeof values[i].val === 'boolean' || typeof values[i - 1].val === 'boolean') {\n v.push(values[i].val ? 1 : 0);\n } else {\n // remove nulls\n values[i - 1].val ||= 0;\n values[i].val ||= 0;\n // interpolate\n const nm1: number = values[i - 1].val as number;\n const n: number = values[i].val as number;\n const val = nm1 + ((n - nm1) * (time - values[i - 1].ts)) / (values[i].ts - values[i - 1].ts);\n\n v.push(val);\n }\n }\n\n time += 3600000;\n }\n\n return v;\n}\n\nexport const ITEM_IMAGES: Record<string, JSX.Element> = {\n state: (\n <IconState\n className=\"itemIcon\"\n style={{ verticalAlign: 'middle' }}\n />\n ),\n channel: (\n <IconChannel\n className=\"itemIcon\"\n style={{ verticalAlign: 'middle' }}\n />\n ),\n device: (\n <IconDevice\n className=\"itemIcon\"\n style={{ verticalAlign: 'middle' }}\n />\n ),\n adapter: (\n <IconAdapter\n className=\"itemIcon\"\n style={{ verticalAlign: 'middle' }}\n />\n ),\n meta: (\n <IconMeta\n className=\"itemIcon\"\n style={{ verticalAlign: 'middle' }}\n />\n ),\n instance: (\n <IconInstance\n className=\"itemIcon\"\n style={{ color: '#7da7ff', verticalAlign: 'middle' }}\n />\n ),\n enum: (\n <IconEnum\n className=\"itemIcon\"\n style={{ verticalAlign: 'middle' }}\n />\n ),\n chart: (\n <IconChart\n className=\"itemIcon\"\n style={{ verticalAlign: 'middle' }}\n />\n ),\n config: (\n <IconConfig\n className=\"itemIcon\"\n style={{ verticalAlign: 'middle' }}\n />\n ),\n group: (\n <IconGroup\n className=\"itemIcon\"\n style={{ verticalAlign: 'middle' }}\n />\n ),\n user: (\n <IconUser\n className=\"itemIcon\"\n style={{ verticalAlign: 'middle' }}\n />\n ),\n host: (\n <IconHost\n className=\"itemIcon\"\n style={{ verticalAlign: 'middle' }}\n />\n ),\n schedule: (\n <IconSchedule\n className=\"itemIcon\"\n style={{ verticalAlign: 'middle' }}\n />\n ),\n script: (\n <IconScript\n className=\"itemIcon\"\n style={{ verticalAlign: 'middle' }}\n />\n ),\n folder: (\n <IconClosed\n className=\"itemIcon itemIconFolder\"\n style={{ verticalAlign: 'middle' }}\n />\n ),\n};\n\ninterface ScreenWidthOne {\n idWidth: string | number;\n widths: {\n room?: number;\n val?: number;\n name?: number;\n func?: number;\n buttons?: number;\n type?: number;\n role?: number;\n changedFrom?: number;\n qualityCode?: number;\n timestamp?: number;\n lastChange?: number;\n };\n fields: ObjectBrowserPossibleColumns[];\n}\n\ninterface ScreenWidth {\n xs: ScreenWidthOne;\n sm: ScreenWidthOne;\n md: ScreenWidthOne;\n lg: ScreenWidthOne;\n xl: ScreenWidthOne;\n}\n\nconst SCREEN_WIDTHS: ScreenWidth = {\n // extra-small: 0px\n xs: { idWidth: '100%', fields: [], widths: {} },\n // small: 600px\n sm: { idWidth: 300, fields: ['room', 'val'], widths: { room: 100, val: 200 } },\n // medium: 960px\n md: {\n idWidth: 300,\n fields: ['room', 'func', 'val', 'buttons'],\n widths: {\n name: 200,\n room: 150,\n func: 150,\n val: 120,\n buttons: 120,\n },\n },\n // large: 1280px\n lg: {\n idWidth: 300,\n fields: [\n 'name',\n 'type',\n 'role',\n 'room',\n 'func',\n 'val',\n 'buttons',\n 'changedFrom',\n 'qualityCode',\n 'timestamp',\n 'lastChange',\n ],\n widths: {\n name: 300,\n type: 80,\n role: 120,\n room: 180,\n func: 180,\n val: 140,\n buttons: 120,\n changedFrom: 120,\n qualityCode: 100,\n timestamp: 165,\n lastChange: 165,\n },\n },\n // /////////////\n // extra-large: 1920px\n xl: {\n idWidth: 550,\n fields: [\n 'name',\n 'type',\n 'role',\n 'room',\n 'func',\n 'val',\n 'buttons',\n 'changedFrom',\n 'qualityCode',\n 'timestamp',\n 'lastChange',\n ],\n widths: {\n name: 400,\n type: 80,\n role: 120,\n room: 180,\n func: 180,\n val: 140,\n buttons: 120,\n changedFrom: 120,\n qualityCode: 100,\n timestamp: 170,\n lastChange: 170,\n },\n },\n};\n\nlet objectsAlreadyLoaded = false;\n\nexport interface ObjectBrowserFilter {\n id?: string;\n name?: string;\n room?: string;\n func?: string;\n role?: string;\n type?: string;\n custom?: string;\n expertMode?: boolean;\n}\n\nconst DEFAULT_FILTER: ObjectBrowserFilter = {\n id: '',\n name: '',\n room: '',\n func: '',\n role: '',\n type: '',\n custom: '',\n expertMode: false,\n};\n\ninterface AdapterColumn {\n adapter: string;\n id: string;\n name: string;\n path: string[];\n pathText: string;\n edit?: boolean;\n type?: 'boolean' | 'string' | 'number';\n objTypes?: ioBroker.ObjectType[];\n align?: 'center' | 'left' | 'right';\n}\n\ninterface ObjectBrowserEditRoleProps {\n roleArray: { role: string; type: ioBroker.CommonType }[];\n id: string;\n socket: Connection;\n onClose: (obj?: ioBroker.Object | null) => void;\n t: Translate;\n commonType: ioBroker.CommonType;\n}\n\ninterface ObjectViewFileDialogProps {\n t: Translate;\n socket: Connection;\n obj: ioBroker.AnyObject;\n onClose: () => void;\n}\n\ninterface DragWrapperProps {\n item: TreeItem;\n className?: string;\n style?: React.CSSProperties;\n children: JSX.Element | null;\n}\n\ninterface ObjectCustomDialogProps {\n allVisibleObjects: boolean;\n customsInstances: string[];\n expertMode?: boolean;\n isFloatComma: boolean;\n lang: ioBroker.Languages;\n objectIDs: string[];\n objects: Record<string, ioBroker.Object>;\n onClose: () => void;\n reportChangedIds: (ids: string[]) => void;\n socket: Connection;\n systemConfig: ioBroker.SystemConfigObject;\n t: Translate;\n theme: IobTheme;\n themeName: ThemeName;\n themeType: ThemeType;\n}\n\ninterface ObjectMoveRenameDialogProps {\n childrenIds: string[];\n expertMode: boolean;\n id: string;\n objectType: ioBroker.ObjectType | undefined;\n onClose: () => void;\n socket: Connection;\n t: Translate;\n theme: IobTheme;\n}\n\ninterface ObjectBrowserValueProps {\n /** State type */\n type: 'states' | 'string' | 'number' | 'boolean' | 'json';\n /** State role */\n role: string;\n /** common.states */\n states: Record<string, string> | null;\n /** The state value */\n value: string | number | boolean | null;\n /** If expert mode is enabled */\n expertMode: boolean;\n onClose: (newValue?: {\n val: ioBroker.StateValue;\n ack: boolean;\n q: ioBroker.STATE_QUALITY[keyof ioBroker.STATE_QUALITY];\n expire: number | undefined;\n }) => void;\n /** Configured theme */\n themeType: ThemeType;\n theme: IobTheme;\n socket: Connection;\n defaultHistory: string;\n dateFormat: string;\n object: ioBroker.StateObject;\n isFloatComma: boolean;\n t: Translate;\n lang: ioBroker.Languages;\n width?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n}\n\ninterface ObjectBrowserEditObjectProps {\n socket: Connection;\n obj: ioBroker.AnyObject;\n roleArray: { role: string; type: ioBroker.CommonType }[];\n expertMode: boolean;\n themeType: ThemeType;\n theme: IobTheme;\n aliasTab: boolean;\n onClose: (obj?: ioBroker.AnyObject) => void;\n dialogName?: string;\n objects: Record<string, ioBroker.AnyObject>;\n dateFormat: string;\n isFloatComma: boolean;\n onNewObject: (obj: ioBroker.AnyObject) => void;\n t: Translate;\n width?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n}\n\nexport interface ObjectAliasEditorProps {\n t: Translate;\n roleArray: { role: string; type: ioBroker.CommonType }[];\n socket: Connection;\n objects: Record<string, ioBroker.AnyObject>;\n onRedirect: (id: string, delay?: number) => void;\n obj: ioBroker.AnyObject;\n onClose: () => void;\n}\n\nexport type ObjectBrowserColumn = 'name' | 'type' | 'role' | 'room' | 'func' | 'val' | 'buttons';\n\ntype ObjectBrowserPossibleColumns =\n | 'name'\n | 'type'\n | 'role'\n | 'room'\n | 'func'\n | 'val'\n | 'buttons'\n | 'changedFrom'\n | 'qualityCode'\n | 'timestamp'\n | 'lastChange'\n | 'id';\n\nexport interface ObjectBrowserProps {\n /** where to store settings in localStorage */\n dialogName?: string;\n defaultFilters?: ObjectBrowserFilter;\n selected?: string | string[];\n onSelect?: (selected: string | string[], name: string | null, isDouble?: boolean) => void;\n onFilterChanged?: (newFilter: ObjectBrowserFilter) => void;\n socket: Connection;\n showExpertButton?: boolean;\n expertMode?: boolean;\n imagePrefix?: string;\n themeName: ThemeName;\n themeType: ThemeType;\n /** will be filled by withWidth */\n width?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n theme: IobTheme;\n t: Translate;\n lang: ioBroker.Languages;\n multiSelect?: boolean;\n notEditable?: boolean;\n foldersFirst?: boolean;\n disableColumnSelector?: boolean;\n isFloatComma?: boolean;\n dateFormat?: string;\n levelPadding?: number;\n /** Allow selection of non-objects (virtual branches) */\n allowNonObjects?: boolean;\n\n // components\n objectCustomDialog?: React.FC<ObjectCustomDialogProps>;\n objectMoveRenameDialog?: React.FC<ObjectMoveRenameDialogProps>;\n objectAddBoolean?: boolean; // optional toolbar button\n objectEditBoolean?: boolean; // optional toolbar button\n objectStatesView?: boolean; // optional toolbar button\n objectImportExport?: boolean; // optional toolbar button\n objectEditOfAccessControl?: boolean; // Access Control\n /** modal add object */\n modalNewObject?: (oBrowser: ObjectBrowserClass) => JSX.Element;\n /** modal Edit Of Access Control */\n modalEditOfAccessControl: (oBrowser: ObjectBrowserClass, data: TreeItemData) => JSX.Element;\n onObjectDelete?: (id: string, hasChildren: boolean, objectExists: boolean, childrenCount: number) => void;\n\n /**\n * Optional filter\n * `{common: {custom: true}}` - show only objects with some custom settings\n * `{common: {custom: 'sql.0'}}` - show only objects with sql.0 custom settings (only of the specific instance)\n * `{common: {custom: '_dataSources'}}` - show only objects of adapters `influxdb' or 'sql' or 'history'\n * `{common: {custom: 'adapterName.'}}` - show only objects of custom settings of specific adapter (all instances)\n * `{type: 'channel'}` - show only channels\n * `{type: ['channel', 'device']}` - show only channels and devices\n * `{common: {type: 'number'}` - show only states of type 'number\n * `{common: {type: ['number', 'string']}` - show only states of type 'number and string\n * `{common: {role: ['switch']}` - show only states with roles starting from switch\n * `{common: {role: ['switch', 'button']}` - show only states with roles starting from `switch` and `button`\n */\n customFilter: ObjectBrowserCustomFilter;\n objectBrowserValue?: React.FC<ObjectBrowserValueProps>;\n objectBrowserEditObject?: React.FC<ObjectBrowserEditObjectProps>;\n /** on edit alias */\n objectBrowserAliasEditor?: React.FC<ObjectAliasEditorProps>;\n /** on Edit role */\n objectBrowserEditRole?: React.FC<ObjectBrowserEditRoleProps>;\n /** on view file state */\n objectBrowserViewFile?: React.FC<ObjectViewFileDialogProps>;\n router?: typeof Router;\n types?: ioBroker.ObjectType[];\n /** Possible columns: ['name', 'type', 'role', 'room', 'func', 'val', 'buttons'] */\n columns?: ObjectBrowserColumn[];\n /** Shows only elements of this root */\n root?: string;\n\n /** cache of objects */\n objectsWorker?: ObjectsWorker;\n /**\n * function to filter out all unnecessary objects. It cannot be used together with \"types\"\n * Example for function: `obj => obj.common?.type === 'boolean'` to show only boolean states\n */\n filterFunc?: (obj: ioBroker.Object) => boolean;\n /** Used for enums dragging */\n DragWrapper?: React.FC<DragWrapperProps>;\n /** let DragWrapper know about objects to get the icons */\n setObjectsReference?: (objects: Record<string, ioBroker.Object>) => void;\n dragEnabled?: boolean;\n}\n\ninterface ObjectBrowserState {\n loaded: boolean;\n foldersFirst: boolean;\n selected: string[];\n focused: string;\n selectedNonObject: string;\n filter: ObjectBrowserFilter;\n filterKey: number;\n depth: number;\n expandAllVisible: boolean;\n expanded: string[];\n toast: string;\n scrollBarWidth: number;\n customDialog: null | string[];\n customDialogAll?: boolean;\n editObjectDialog: string;\n editObjectAlias: boolean; // open the edit object dialog on alias tab\n viewFileDialog: string;\n showAliasEditor: string;\n enumDialog: null | {\n item: TreeItem;\n type: 'room' | 'func';\n enumsOriginal: string;\n };\n enumDialogEnums?: null | string[];\n roleDialog: null | string;\n statesView: boolean;\n /** ['name', 'type', 'role', 'room', 'func', 'val', 'buttons'] */\n columns: ObjectBrowserPossibleColumns[] | null;\n columnsForAdmin: Record<string, CustomAdminColumnStored[]> | null;\n columnsSelectorShow: boolean;\n columnsAuto: boolean;\n columnsWidths: Record<string, number>;\n columnsDialogTransparent: number;\n columnsEditCustomDialog: null | {\n obj: ioBroker.Object;\n item: TreeItem;\n it: AdapterColumn;\n };\n customColumnDialogValueChanged: boolean;\n showExportDialog: false | number;\n showAllExportOptions: boolean;\n linesEnabled: boolean;\n showDescription: boolean;\n showContextMenu: {\n item: TreeItem;\n position: { left: number; top: number };\n subItem?: string;\n subAnchor?: HTMLLIElement;\n } | null;\n noStatesByExportImport: boolean;\n beautifyJsonExport: boolean;\n excludeSystemRepositoriesFromExport: boolean;\n excludeTranslations: boolean;\n updating?: boolean;\n modalNewObj?: null | { id: string; initialType?: ioBroker.ObjectType; initialStateType?: ioBroker.CommonType };\n error?: any;\n modalEditOfAccess?: boolean;\n modalEditOfAccessObjData?: TreeItemData;\n updateOpened?: boolean;\n tooltipInfo: null | { el: JSX.Element[]; id: string };\n /** Show the menu with aliases for state */\n aliasMenu: string;\n /** Show rename dialog */\n showRenameDialog: {\n id: string;\n childrenIds: string[];\n } | null;\n}\n\nexport class ObjectBrowserClass extends Component<ObjectBrowserProps, ObjectBrowserState> {\n // do not define the type as null to save the performance, so we must check it every time\n private info: TreeInfo = {\n funcEnums: [],\n roomEnums: [],\n roles: [],\n ids: [],\n types: [],\n objects: {},\n customs: [],\n enums: [],\n hasSomeCustoms: false,\n aliasesMap: {},\n };\n\n private localStorage: Storage = ((window as any)._localStorage as Storage) || window.localStorage;\n\n private lastAppliedFilter: string | null = null;\n\n private readonly tableRef: React.RefObject<HTMLDivElement>;\n\n private readonly filterRefs: Record<string, React.RefObject<HTMLSelectElement>>;\n\n private pausedSubscribes: boolean = false;\n\n private selectFirst: string;\n\n private root: TreeItem | null = null;\n\n private readonly states: Record<string, ioBroker.State> = {};\n\n private subscribes: string[] = [];\n\n private unsubscribeTimer: ReturnType<typeof setTimeout> | null = null;\n\n private statesUpdateTimer: ReturnType<typeof setTimeout> | null = null;\n\n private objectsUpdateTimer: ReturnType<typeof setTimeout> | null = null;\n\n private filterTimer: ReturnType<typeof setTimeout> | null = null;\n\n private readonly visibleCols: ObjectBrowserPossibleColumns[];\n\n private readonly texts: Record<string, string>;\n\n private readonly possibleCols: ObjectBrowserPossibleColumns[];\n\n private readonly imagePrefix: string;\n\n private adapterColumns: AdapterColumn[] = [];\n\n private styleTheme: string = '';\n\n private edit: {\n val: string | number | boolean | null;\n q: number;\n ack: boolean;\n id: string;\n } = {\n id: '',\n val: '',\n q: 0,\n ack: false,\n };\n\n private readonly levelPadding: number;\n\n private customWidth: boolean = false;\n\n private resizeTimeout: ReturnType<typeof setTimeout> | null = null;\n\n private resizerNextName: string | null = null;\n\n private resizerActiveName: string | null = null;\n\n private resizerCurrentWidths: Record<string, number> = {};\n\n private resizeLeft: boolean = false;\n\n private resizerOldWidth: number = 0;\n\n private resizerMin: number = 0;\n\n private resizerNextMin: number = 0;\n\n private resizerOldWidthNext: number = 0;\n\n private resizerPosition: number = 0;\n\n private resizerActiveDiv: HTMLDivElement | null = null;\n\n private resizerNextDiv: HTMLDivElement | null = null;\n\n private storedWidths: ScreenWidthOne | null = null;\n\n private systemConfig: ioBroker.SystemConfigObject;\n\n public objects: Record<string, ioBroker.Object>;\n\n private defaultHistory: string = '';\n\n private cltrPressed = false;\n\n private columnsVisibility: {\n id?: number | string;\n name?: number | string;\n nameHeader?: number | string;\n type?: number;\n role?: number;\n room?: number;\n func?: number;\n changedFrom?: number;\n qualityCode?: number;\n timestamp?: number;\n lastChange?: number;\n val?: number;\n buttons?: number;\n } = {};\n\n private changedIds: null | string[] = null;\n\n private contextMenu: null | { item: any; ts: number } = null;\n\n private recordStates: string[] = [];\n\n private styles: {\n cellIdIconFolder?: React.CSSProperties;\n cellIdIconDocument?: React.CSSProperties;\n iconDeviceError?: React.CSSProperties;\n iconDeviceConnected?: React.CSSProperties;\n iconDeviceDisconnected?: React.CSSProperties;\n cellButtonsButtonWithCustoms?: React.CSSProperties;\n invertedBackground?: React.CSSProperties;\n invertedBackgroundFlex?: React.CSSProperties;\n contextMenuEdit?: React.CSSProperties;\n contextMenuEditValue?: React.CSSProperties;\n contextMenuView?: React.CSSProperties;\n contextMenuCustom?: React.CSSProperties;\n contextMenuACL?: React.CSSProperties;\n contextMenuRoom?: React.CSSProperties;\n contextMenuRole?: React.CSSProperties;\n contextMenuDelete?: React.CSSProperties;\n filterInput?: React.CSSProperties;\n iconCopy?: React.CSSProperties;\n aliasReadWrite?: React.CSSProperties;\n aliasAlone?: React.CSSProperties;\n } = {};\n\n private customColumnDialog: null | {\n value: boolean | number | string;\n type: 'boolean' | 'number' | 'string';\n initValue: boolean | number | string;\n } = null;\n\n /** Namespaces which are allowed to be edited by non-expert users */\n static #NON_EXPERT_NAMESPACES = ['0_userdata.0.', 'alias.0.'];\n\n constructor(props: ObjectBrowserProps) {\n super(props);\n\n const lastSelectedItemStr: string =\n this.localStorage.getItem(`${props.dialogName || 'App'}.objectSelected`) || '';\n\n this.selectFirst = '';\n\n if (lastSelectedItemStr.startsWith('[')) {\n try {\n const lastSelectedItems = JSON.parse(lastSelectedItemStr) as string[];\n this.selectFirst = lastSelectedItems[0] || '';\n } catch {\n // ignore\n }\n } else {\n this.selectFirst = lastSelectedItemStr;\n }\n\n let expanded: string[];\n const expandedStr = this.localStorage.getItem(`${props.dialogName || 'App'}.objectExpanded`) || '[]';\n try {\n expanded = JSON.parse(expandedStr);\n } catch {\n expanded = [];\n }\n\n let filter: ObjectBrowserFilter;\n const filterStr: string = props.defaultFilters\n ? ''\n : this.localStorage.getItem(`${props.dialogName || 'App'}.objectFilter`) || '';\n if (filterStr) {\n try {\n filter = JSON.parse(filterStr);\n } catch {\n filter = { ...DEFAULT_FILTER };\n }\n } else if (props.defaultFilters && typeof props.defaultFilters === 'object') {\n filter = { ...props.defaultFilters };\n } else {\n filter = { ...DEFAULT_FILTER };\n }\n\n filter.expertMode =\n props.expertMode !== undefined\n ? props.expertMode\n : (((window as any)._sessionStorage as Storage) || window.sessionStorage).getItem('App.expertMode') ===\n 'true';\n this.tableRef = createRef();\n this.filterRefs = {};\n\n Object.keys(DEFAULT_FILTER).forEach(name => (this.filterRefs[name] = createRef()));\n\n this.visibleCols = props.columns || SCREEN_WIDTHS[props.width || 'lg'].fields;\n // remove type column if only one type must be selected\n if (props.types && props.types.length === 1) {\n const pos = this.visibleCols.indexOf('type');\n if (pos !== -1) {\n this.visibleCols.splice(pos, 1);\n }\n }\n\n this.possibleCols = SCREEN_WIDTHS.xl.fields;\n\n let customDialog = null;\n\n if (props.router) {\n const location = props.router.getLocation();\n if (location.id && location.dialog === 'customs') {\n customDialog = [location.id];\n this.pauseSubscribe(true);\n }\n }\n\n let selected: string[];\n if (!Array.isArray(props.selected)) {\n selected = [props.selected || ''];\n } else {\n selected = props.selected;\n }\n selected = selected.map(id => id.replace(/[\"']/g, '')).filter(id => id);\n\n this.selectFirst = selected.length && selected[0] ? selected[0] : this.selectFirst;\n\n const columnsStr = this.localStorage.getItem(`${props.dialogName || 'App'}.columns`);\n let columns: ObjectBrowserPossibleColumns[] | null;\n try {\n columns = columnsStr ? JSON.parse(columnsStr) : null;\n } catch {\n columns = null;\n }\n\n let columnsWidths = null; // this.localStorage.getItem(`${props.dialogName || 'App'}.columnsWidths`);\n try {\n columnsWidths = columnsWidths ? JSON.parse(columnsWidths) : {};\n } catch {\n columnsWidths = {};\n }\n\n this.imagePrefix = props.imagePrefix || '.';\n let foldersFirst: boolean;\n const foldersFirstStr = this.localStorage.getItem(`${props.dialogName || 'App'}.foldersFirst`);\n\n if (foldersFirstStr === 'false') {\n foldersFirst = false;\n } else if (foldersFirstStr === 'true') {\n foldersFirst = true;\n } else {\n foldersFirst = props.foldersFirst === undefined ? true : props.foldersFirst;\n }\n\n let statesView = false;\n try {\n statesView = this.props.objectStatesView\n ? JSON.parse(this.localStorage.getItem(`${props.dialogName || 'App'}.objectStatesView`) || '') || false\n : false;\n } catch {\n // ignore\n }\n\n this.state = {\n loaded: false,\n foldersFirst,\n selected,\n selectedNonObject: this.localStorage.getItem(`${props.dialogName || 'App'}.selectedNonObject`) || '',\n filter,\n filterKey: 0,\n focused: this.localStorage.getItem(`${props.dialogName || 'App'}.focused`) || '',\n depth: 0,\n expandAllVisible: false,\n expanded,\n toast: '',\n scrollBarWidth: 16,\n customDialog,\n editObjectDialog: '',\n editObjectAlias: false, // open the edit object dialog on alias tab\n viewFileDialog: '',\n showAliasEditor: '',\n enumDialog: null,\n roleDialog: null,\n statesView,\n columns,\n columnsForAdmin: null,\n columnsSelectorShow: false,\n columnsAuto: this.localStorage.getItem(`${props.dialogName || 'App'}.columnsAuto`) !== 'false',\n columnsWidths,\n columnsDialogTransparent: 100,\n columnsEditCustomDialog: null,\n customColumnDialogValueChanged: false,\n showExportDialog: false,\n showAllExportOptions: false,\n linesEnabled: this.localStorage.getItem(`${props.dialogName || 'App'}.lines`) === 'true',\n showDescription: this.localStorage.getItem(`${props.dialogName || 'App'}.desc`) !== 'false',\n showContextMenu: null,\n noStatesByExportImport: false,\n beautifyJsonExport: true,\n excludeSystemRepositoriesFromExport: true,\n excludeTranslations: false,\n tooltipInfo: null,\n aliasMenu: '',\n showRenameDialog: null,\n };\n\n this.texts = {\n name: props.t('ra_Name'),\n categories: props.t('ra_Categories'),\n value: props.t('ra_tooltip_value'),\n ack: props.t('ra_tooltip_ack'),\n ts: props.t('ra_tooltip_ts'),\n lc: props.t('ra_tooltip_lc'),\n from: props.t('ra_tooltip_from'),\n user: props.t('ra_tooltip_user'),\n c: props.t('ra_tooltip_comment'),\n quality: props.t('ra_tooltip_quality'),\n editObject: props.t('ra_tooltip_editObject'),\n deleteObject: props.t('ra_tooltip_deleteObject'),\n customConfig: props.t('ra_tooltip_customConfig'),\n copyState: props.t('ra_tooltip_copyState'),\n editState: props.t('ra_tooltip_editState'),\n ctrlForLink: props.t('ra_tooltip_ctrlForLink'),\n close: props.t('ra_Close'),\n filter_id: props.t('ra_filter_id'),\n filter_name: props.t('ra_filter_name'),\n filter_type: props.t('ra_filter_type'),\n filter_role: props.t('ra_filter_role'),\n filter_room: props.t('ra_filter_room'),\n filter_func: props.t('ra_filter_func'),\n filter_custom: props.t('ra_filter_customs'), //\n filterCustomsWithout: props.t('ra_filter_customs_without'), //\n objectChangedByUser: props.t('ra_object_changed_by_user'), // Object last changed at\n objectChangedBy: props.t('ra_object_changed_by'), // Object changed by\n objectChangedFrom: props.t('ra_state_changed_from'), // Object changed from\n stateChangedBy: props.t('ra_state_changed_by'), // State changed by\n stateChangedFrom: props.t('ra_state_changed_from'), // State changed from\n ownerGroup: props.t('ra_Owner group'),\n ownerUser: props.t('ra_Owner user'),\n showAll: props.t('ra_show_all'),\n deviceError: props.t('ra_Error'),\n deviceDisconnected: props.t('ra_Disconnected'),\n deviceConnected: props.t('ra_Connected'),\n\n aclOwner_read_object: props.t('ra_aclOwner_read_object'),\n aclOwner_read_state: props.t('ra_aclOwner_read_state'),\n aclOwner_write_object: props.t('ra_aclOwner_write_object'),\n aclOwner_write_state: props.t('ra_aclOwner_write_state'),\n aclGroup_read_object: props.t('ra_aclGroup_read_object'),\n aclGroup_read_state: props.t('ra_aclGroup_read_state'),\n aclGroup_write_object: props.t('ra_aclGroup_write_object'),\n aclGroup_write_state: props.t('ra_aclGroup_write_state'),\n aclEveryone_read_object: props.t('ra_aclEveryone_read_object'),\n aclEveryone_read_state: props.t('ra_aclEveryone_read_state'),\n aclEveryone_write_object: props.t('ra_aclEveryone_write_object'),\n aclEveryone_write_state: props.t('ra_aclEveryone_write_state'),\n\n create: props.t('ra_Create'),\n createBooleanState: props.t('ra_create_boolean_state'),\n createNumberState: props.t('ra_create_number_state'),\n createStringState: props.t('ra_create_string_state'),\n createState: props.t('ra_create_state'),\n createChannel: props.t('ra_create_channel'),\n createDevice: props.t('ra_create_device'),\n createFolder: props.t('ra_Create folder'),\n };\n\n this.levelPadding = props.levelPadding || ITEM_LEVEL;\n\n const resizerCurrentWidthsStr = this.localStorage.getItem(`${this.props.dialogName || 'App'}.table`);\n if (resizerCurrentWidthsStr) {\n try {\n const resizerCurrentWidths = JSON.parse(resizerCurrentWidthsStr);\n const width = this.props.width || 'lg';\n this.storedWidths = JSON.parse(JSON.stringify(SCREEN_WIDTHS[width]));\n Object.keys(resizerCurrentWidths).forEach(id => {\n if (id === 'id') {\n SCREEN_WIDTHS[width].idWidth = resizerCurrentWidths.id;\n } else if (id === 'nameHeader') {\n SCREEN_WIDTHS[width].widths.name = resizerCurrentWidths[id];\n } else if ((SCREEN_WIDTHS[width].widths as Record<string, number>)[id] !== undefined) {\n (SCREEN_WIDTHS[width].widths as Record<string, number>)[id] = resizerCurrentWidths[id];\n }\n });\n\n this.customWidth = true;\n } catch {\n // ignore\n }\n }\n\n this.calculateColumnsVisibility();\n }\n\n async loadAllObjects(update?: boolean): Promise<void> {\n const props = this.props;\n\n try {\n await new Promise<void>(resolve => {\n this.setState({ updating: true }, () => resolve());\n });\n\n const objects =\n (this.props.objectsWorker\n ? await this.props.objectsWorker.getObjects(update)\n : await props.socket.getObjects(update, true)) || {};\n if (props.types && Connection.isWeb()) {\n for (let i = 0; i < props.types.length; i++) {\n // admin has ALL objects\n // web has only state, channel, device, enum, and system.config\n if (\n props.types[i] === 'state' ||\n props.types[i] === 'channel' ||\n props.types[i] === 'device' ||\n props.types[i] === 'enum'\n ) {\n continue;\n }\n const moreObjects = await props.socket.getObjectViewSystem(props.types[i]);\n Object.assign(objects || {}, moreObjects as Record<string, ioBroker.Object>);\n }\n }\n\n this.systemConfig =\n this.systemConfig ||\n (objects?.['system.config'] as ioBroker.SystemConfigObject) ||\n (await props.socket.getObject('system.config'));\n\n this.systemConfig.common = this.systemConfig.common || ({} as ioBroker.SystemConfigCommon);\n this.systemConfig.common.defaultNewAcl = this.systemConfig.common.defaultNewAcl || {\n object: 0,\n state: 0,\n file: 0,\n owner: 'system.user.admin',\n ownerGroup: 'system.group.administrator',\n };\n this.systemConfig.common.defaultNewAcl.owner =\n this.systemConfig.common.defaultNewAcl.owner || 'system.user.admin';\n this.systemConfig.common.defaultNewAcl.ownerGroup =\n this.systemConfig.common.defaultNewAcl.ownerGroup || 'system.group.administrator';\n if (typeof this.systemConfig.common.defaultNewAcl.state !== 'number') {\n // TODO: may be convert here from string\n this.systemConfig.common.defaultNewAcl.state = 0x664;\n }\n if (typeof this.systemConfig.common.defaultNewAcl.object !== 'number') {\n // TODO: may be convert here from string\n this.systemConfig.common.defaultNewAcl.state = 0x664;\n }\n\n if (typeof props.filterFunc === 'function') {\n this.objects = {};\n const filterFunc: (obj: ioBroker.Object) => boolean = props.filterFunc;\n\n Object.keys(objects).forEach(id => {\n try {\n if (filterFunc(objects[id])) {\n this.objects[id] = objects[id];\n } else {\n const type = objects[id] && objects[id].type;\n // include \"folder\" types too for icons and names of nodes\n if (\n type &&\n (type === 'channel' ||\n type === 'device' ||\n type === 'folder' ||\n type === 'adapter' ||\n type === 'instance')\n ) {\n this.objects[id] = objects[id];\n }\n }\n } catch (e) {\n console.log(`Error by filtering of \"${id}\": ${e}`);\n }\n });\n } else if (props.types) {\n this.objects = {};\n const propsTypes = props.types;\n\n Object.keys(objects).forEach(id => {\n const type = objects[id]?.type;\n // include \"folder\" types too\n if (\n type &&\n (type === 'channel' ||\n type === 'device' ||\n type === 'enum' ||\n type === 'folder' ||\n type === 'adapter' ||\n type === 'instance' ||\n propsTypes.includes(type))\n ) {\n this.objects[id] = objects[id];\n }\n });\n } else {\n this.objects = objects;\n }\n\n if (props.setObjectsReference) {\n props.setObjectsReference(this.objects);\n }\n\n // read default history\n this.defaultHistory = this.systemConfig.common.defaultHistory;\n if (this.defaultHistory) {\n props.socket\n .getState(`system.adapter.${this.defaultHistory}.alive`)\n .then(state => {\n if (!state?.val) {\n this.defaultHistory = '';\n }\n })\n .catch(e => window.alert(`Cannot get state: ${e}`));\n }\n\n const columnsForAdmin = await this.getAdditionalColumns();\n this.calculateColumnsVisibility(null, null, columnsForAdmin);\n\n const { info, root } = buildTree(this.objects, {\n imagePrefix: this.props.imagePrefix,\n root: this.props.root,\n lang: this.props.lang,\n themeType: this.props.themeType,\n });\n this.root = root;\n this.info = info;\n\n // Show first selected item\n const node = this.state.selected?.length && findNode(this.root, this.state.selected[0]);\n\n this.lastAppliedFilter = null;\n\n // If the selected ID is not visible, reset filter\n if (\n node &&\n !applyFilter(\n node,\n this.state.filter,\n this.props.lang,\n this.objects,\n undefined,\n undefined,\n props.customFilter,\n props.types,\n )\n ) {\n // reset filter\n this.setState({ filter: { ...DEFAULT_FILTER }, columnsForAdmin }, () => {\n this.setState({ loaded: true, updating: false }, () =>\n this.expandAllSelected(() => this.onAfterSelect()),\n );\n });\n } else {\n this.setState({ loaded: true, updating: false, columnsForAdmin }, () =>\n this.expandAllSelected(() => this.onAfterSelect()),\n );\n }\n } catch (error) {\n this.showError(error);\n }\n }\n\n /**\n * Check if it is a non-expert id\n */\n static isNonExpertId(\n /** id to test */\n id: string,\n ): boolean {\n return !!ObjectBrowserClass.#NON_EXPERT_NAMESPACES.find(saveNamespace => id.startsWith(saveNamespace));\n }\n\n private expandAllSelected(cb?: () => void): void {\n const expanded = [...this.state.expanded];\n let changed = false;\n this.state.selected.forEach(id => {\n const parts = id.split('.');\n const path = [];\n for (let i = 0; i < parts.length - 1; i++) {\n path.push(parts[i]);\n if (!expanded.includes(path.join('.'))) {\n expanded.push(path.join('.'));\n changed = true;\n }\n }\n });\n if (changed) {\n expanded.sort();\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectExpanded`, JSON.stringify(expanded));\n this.setState({ expanded }, cb);\n } else if (cb) {\n cb();\n }\n }\n\n /**\n * @param isDouble is double click\n */\n private onAfterSelect(isDouble?: boolean): void {\n if (this.state.selected?.length && this.state.selected[0]) {\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectSelected`, this.state.selected[0]);\n\n // remove a task to select the pre-selected item if now we want to see another object\n if (this.selectFirst && this.selectFirst !== this.state.selected[0]) {\n this.selectFirst = '';\n }\n\n // If the this.state.selected[0] filtered out, disable the filter\n const item = this.findItem(this.state.selected[0]);\n if (item?.data && !item.data.visible && !item.data.hasVisibleChildren) {\n // If the selected ID is not visible, reset filter\n this.clearFilter();\n }\n\n if (this.state.selected.length === 1 && this.objects[this.state.selected[0]]) {\n const name = Utils.getObjectName(this.objects, this.state.selected[0], null, {\n language: this.props.lang,\n });\n this.props.onSelect?.(this.state.selected, name, isDouble);\n } else if (this.state.selected.length === 1 && this.props.allowNonObjects) {\n this.props.onSelect?.(this.state.selected, null, isDouble);\n }\n } else {\n this.localStorage.removeItem(`${this.props.dialogName || 'App'}.objectSelected`);\n\n if (this.state.selected.length) {\n this.setState({ selected: [] }, () => {\n if (this.props.onSelect) {\n if (this.state.focused && this.props.allowNonObjects) {\n // remove a task to select the pre-selected item if now we want to see another object\n if (this.selectFirst && this.selectFirst !== this.state.selected[0]) {\n this.selectFirst = '';\n }\n this.props.onSelect([this.state.focused], null, isDouble);\n } else {\n this.props.onSelect([], '');\n }\n }\n });\n } else if (this.props.onSelect) {\n if (this.state.focused && this.props.allowNonObjects) {\n // remove a task to select the pre-selected item if now we want to see another object\n if (this.selectFirst && this.selectFirst !== this.state.selected[0]) {\n this.selectFirst = '';\n }\n this.props.onSelect([this.state.focused], null, isDouble);\n } else {\n this.props.onSelect([], '');\n }\n }\n }\n }\n\n private static getDerivedStateFromProps(\n props: ObjectBrowserProps,\n state: ObjectBrowserState,\n ): Partial<ObjectBrowserState> | null {\n const newState: Partial<ObjectBrowserState> = {};\n let changed = false;\n if (props.expertMode !== undefined && props.expertMode !== state.filter.expertMode) {\n changed = true;\n newState.filter = { ...state.filter };\n newState.filter.expertMode = props.expertMode;\n }\n return changed ? newState : null;\n }\n\n /**\n * Called when component is mounted.\n */\n async componentDidMount(): Promise<void> {\n await this.loadAllObjects(!objectsAlreadyLoaded);\n if (this.props.objectsWorker) {\n this.props.objectsWorker.registerHandler(this.onObjectChangeFromWorker);\n } else {\n await this.props.socket.subscribeObject('*', this.onObjectChange);\n }\n\n objectsAlreadyLoaded = true;\n\n window.addEventListener('contextmenu', this.onContextMenu, true);\n window.addEventListener('keydown', this.onKeyPress, true);\n window.addEventListener('keyup', this.onKeyPress, true);\n }\n\n onKeyPress = (event: KeyboardEvent): void => {\n if (event.type === 'keydown' && event.ctrlKey && !this.cltrPressed) {\n this.cltrPressed = true;\n if (this.tableRef.current) {\n this.tableRef.current.className = 'highlight-link';\n }\n } else if (event.type === 'keyup' && !event.ctrlKey && this.cltrPressed) {\n this.cltrPressed = false;\n if (this.tableRef.current) {\n this.tableRef.current.className = '';\n }\n }\n };\n\n /**\n * Called when component is unmounted.\n */\n componentWillUnmount(): void {\n if (this.filterTimer) {\n clearTimeout(this.filterTimer);\n this.filterTimer = null;\n }\n window.removeEventListener('contextmenu', this.onContextMenu, true);\n window.removeEventListener('keydown', this.onKeyPress, true);\n window.removeEventListener('keyup', this.onKeyPress, true);\n\n if (this.props.objectsWorker) {\n this.props.objectsWorker.unregisterHandler(this.onObjectChangeFromWorker, true);\n } else {\n void this.props.socket\n .unsubscribeObject('*', this.onObjectChange)\n .catch(e => console.error(`Cannot unsubscribe *: ${e}`));\n }\n\n // remove all subscribes\n this.subscribes.forEach(pattern => {\n // console.log(`- unsubscribe ${pattern}`);\n this.props.socket.unsubscribeState(pattern, this.onStateChange);\n });\n\n this.subscribes = [];\n this.objects = {};\n }\n\n /**\n * Show the deletion dialog for a given object\n */\n showDeleteDialog(options: { id: string; obj: ioBroker.Object; item: TreeItem }): void {\n const { id, obj, item } = options;\n\n // calculate the number of children\n const keys = Object.keys(this.objects);\n keys.sort();\n let count = 0;\n const start = `${id}.`;\n for (let i = 0; i < keys.length; i++) {\n if (keys[i].startsWith(start)) {\n count++;\n } else if (keys[i] > start) {\n break;\n }\n }\n\n this.props.onObjectDelete?.(id, !!item.children?.length, !obj.common?.dontDelete, count + 1);\n }\n\n /**\n * Context menu handler.\n */\n onContextMenu = (e: MouseEvent): void => {\n // console.log(`CONTEXT MENU: ${this.contextMenu ? Date.now() - this.contextMenu.ts : 'false'}`);\n if (this.contextMenu && Date.now() - this.contextMenu.ts < 2000) {\n e.preventDefault();\n this.setState({\n showContextMenu: {\n item: this.contextMenu.item,\n position: { left: e.clientX + 2, top: e.clientY - 6 },\n },\n });\n } else if (this.state.showContextMenu) {\n e.preventDefault();\n this.setState({ showContextMenu: null });\n }\n this.contextMenu = null;\n };\n\n /**\n * Called when component is mounted.\n */\n refreshComponent(): void {\n // remove all subscribes\n this.subscribes.forEach(pattern => {\n // console.log(`- unsubscribe ${pattern}`);\n this.props.socket.unsubscribeState(pattern, this.onStateChange);\n });\n\n this.subscribes = [];\n\n this.loadAllObjects(true)\n .then(() => console.log('updated!'))\n .catch(e => this.showError(e));\n }\n\n /**\n * Renders the error dialog.\n */\n renderErrorDialog(): JSX.Element | null {\n return this.state.error ? (\n <Dialog\n open={!0}\n maxWidth=\"sm\"\n fullWidth\n onClose={() => this.setState({ error: '' })}\n aria-labelledby=\"error-dialog-title\"\n aria-describedby=\"error-dialog-description\"\n >\n <DialogTitle id=\"alert-dialog-title\">{this.props.t('ra_Error')}</DialogTitle>\n <DialogContent>\n <DialogContentText id=\"alert-dialog-description\">{this.state.error}</DialogContentText>\n </DialogContent>\n <DialogActions>\n <Button\n variant=\"contained\"\n onClick={() => this.setState({ error: '' })}\n color=\"primary\"\n autoFocus\n startIcon={<IconCheck />}\n >\n {this.props.t('ra_Ok')}\n </Button>\n </DialogActions>\n </Dialog>\n ) : null;\n }\n\n /**\n * Show the error dialog.\n */\n showError(error: any): void {\n this.setState({\n error:\n typeof error === 'object'\n ? error && typeof error.toString === 'function'\n ? error.toString()\n : JSON.stringify(error)\n : error,\n });\n }\n\n /**\n * Called when an item is selected/deselected.\n */\n onSelect(toggleItem: string, isDouble?: boolean, cb?: () => void): void {\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.focused`, toggleItem);\n\n if (!this.props.multiSelect) {\n if (\n this.objects[toggleItem] &&\n (!this.props.types || this.props.types.includes(this.objects[toggleItem].type))\n ) {\n this.localStorage.removeItem(`${this.props.dialogName || 'App'}.selectedNonObject`);\n if (this.state.selected[0] !== toggleItem) {\n this.setState({ selected: [toggleItem], selectedNonObject: '', focused: toggleItem }, () => {\n this.onAfterSelect(isDouble);\n if (cb) {\n cb();\n }\n });\n } else if (isDouble && this.props.onSelect) {\n this.onAfterSelect(isDouble);\n }\n } else {\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.selectedNonObject`, toggleItem);\n this.setState({ selected: [], selectedNonObject: toggleItem, focused: toggleItem }, () => {\n this.onAfterSelect();\n if (cb) {\n cb();\n }\n });\n }\n } else if (\n this.objects[toggleItem] &&\n (!this.props.types || this.props.types.includes(this.objects[toggleItem].type))\n ) {\n this.localStorage.removeItem(`${this.props.dialogName || 'App'}.selectedNonObject`);\n\n const selected = [...this.state.selected];\n const pos = selected.indexOf(toggleItem);\n if (pos === -1) {\n selected.push(toggleItem);\n selected.sort();\n } else if (!isDouble) {\n selected.splice(pos, 1);\n }\n\n this.setState({ selected, selectedNonObject: '', focused: toggleItem }, () => {\n this.onAfterSelect(isDouble);\n if (cb) {\n cb();\n }\n });\n }\n }\n\n private _renderDefinedList(isLast: boolean): JSX.Element[] {\n const cols = [...this.possibleCols];\n cols.unshift('id');\n if (this.props.columns && !this.props.columns.includes('buttons')) {\n const pos = cols.indexOf('buttons');\n if (pos !== -1) {\n cols.splice(pos, 1);\n }\n }\n return cols\n .filter(\n id => (isLast && (id === 'val' || id === 'buttons')) || (!isLast && id !== 'val' && id !== 'buttons'),\n )\n .map(id => (\n <ListItemButton\n onClick={() => {\n if (!this.state.columnsAuto && id !== 'id') {\n const columns = [...(this.state.columns || [])];\n const pos = columns.indexOf(id);\n if (pos === -1) {\n columns.push(id);\n columns.sort();\n } else {\n columns.splice(pos, 1);\n }\n this.localStorage.setItem(\n `${this.props.dialogName || 'App'}.columns`,\n JSON.stringify(columns),\n );\n this.calculateColumnsVisibility(null, columns);\n this.setState({ columns });\n }\n }}\n key={id}\n >\n <Checkbox\n edge=\"start\"\n disabled={id === 'id' || this.state.columnsAuto}\n checked={\n id === 'id' ||\n !!(this.state.columnsAuto\n ? this.visibleCols.includes(id)\n : this.state.columns?.includes(id))\n }\n disableRipple\n />\n <ListItemText primary={this.texts[`filter_${id}`] || this.props.t(`ra_${id}`)} />\n {/*\n <ListItemSecondaryAction>\n <FormControl\n variant=\"standard\"\n style={{ ...styles.columnsDialogInputWidth, marginTop: 0, marginBottom: 0 }}\n margin=\"dense\"\n >\n <Input\n classes={{ underline: 'no-underline' }}\n placeholder={this.props.t('ra_Width')}\n value={this.state.columnsWidths[id] || ''}\n onChange={e => {\n const columnsWidths = JSON.parse(JSON.stringify(this.state.columnsWidths));\n columnsWidths[id] = e.target.value;\n this.localStorage.setItem((this.props.dialogName || 'App') + '.columnsWidths', JSON.stringify(columnsWidths));\n this.calculateColumnsVisibility(null, null, null, columnsWidths);\n this.setState({ columnsWidths });\n }}\n autoComplete=\"off\"\n />\n </FormControl>\n </ListItemSecondaryAction>\n */}\n </ListItemButton>\n ));\n }\n\n /**\n * Renders the columns' selector.\n */\n renderColumnsSelectorDialog(): JSX.Element | null {\n if (!this.state.columnsSelectorShow) {\n return null;\n }\n return (\n <Dialog\n onClose={() => this.setState({ columnsSelectorShow: false })}\n open={!0}\n sx={{\n '& .MuiPaper-root': Utils.getStyle(\n this.props.theme,\n styles.dialogColumns,\n styles[`transparent_${this.state.columnsDialogTransparent}`],\n ),\n }}\n >\n <DialogTitle sx={styles.fontSizeTitle}>{this.props.t('ra_Configure')}</DialogTitle>\n <DialogContent sx={styles.fontSizeTitle}>\n <FormControlLabel\n style={styles.switchColumnAuto}\n control={\n <Switch\n checked={this.state.foldersFirst}\n onChange={() => {\n this.localStorage.setItem(\n `${this.props.dialogName || 'App'}.foldersFirst`,\n this.state.foldersFirst ? 'false' : 'true',\n );\n this.setState({ foldersFirst: !this.state.foldersFirst });\n }}\n />\n }\n label={this.props.t('ra_Folders always first')}\n />\n <FormControlLabel\n style={styles.switchColumnAuto}\n control={\n <Switch\n checked={this.state.linesEnabled}\n onChange={() => {\n this.localStorage.setItem(\n `${this.props.dialogName || 'App'}.lines`,\n this.state.linesEnabled ? 'false' : 'true',\n );\n this.setState({ linesEnabled: !this.state.linesEnabled });\n }}\n />\n }\n label={this.props.t('ra_Show lines between rows')}\n />\n <FormControlLabel\n style={styles.switchColumnAuto}\n control={\n <Switch\n checked={this.state.columnsAuto}\n onChange={() => {\n this.localStorage.setItem(\n `${this.props.dialogName || 'App'}.columnsAuto`,\n this.state.columnsAuto ? 'false' : 'true',\n );\n if (!this.state.columnsAuto) {\n this.calculateColumnsVisibility(true);\n this.setState({ columnsAuto: true });\n } else if (!this.state.columns) {\n this.calculateColumnsVisibility(false, [...this.visibleCols]);\n this.setState({ columnsAuto: false, columns: [...this.visibleCols] });\n } else {\n this.calculateColumnsVisibility(false);\n this.setState({ columnsAuto: false });\n }\n }}\n />\n }\n label={this.props.t('ra_Auto (no custom columns)')}\n />\n {/*\n <Typography classes={{ root: styles.dialogColumnsLabel }}>{this.props.t('ra_Transparent dialog')}</Typography>\n <Slider classes={{ root: styles.width100 }} value={this.state.columnsDialogTransparent} min={20} max={100} step={10} onChange={(event, newValue) =>\n this.setState({ columnsDialogTransparent: newValue })\n } />\n */}\n <List>\n {this._renderDefinedList(false)}\n\n {this.state.columnsForAdmin &&\n Object.keys(this.state.columnsForAdmin)\n .sort()\n .map(adapter =>\n this.state.columnsForAdmin?.[adapter].map(column => (\n <ListItemButton\n onClick={() => {\n if (!this.state.columnsAuto) {\n const columns = [...(this.state.columns || [])];\n const id: ObjectBrowserPossibleColumns =\n `_${adapter}_${column.path}` as ObjectBrowserPossibleColumns;\n const pos = columns.indexOf(id);\n if (pos === -1) {\n columns.push(id);\n columns.sort();\n } else {\n columns.splice(pos, 1);\n }\n this.calculateColumnsVisibility(null, columns);\n this.localStorage.setItem(\n `${this.props.dialogName || 'App'}.columns`,\n JSON.stringify(columns),\n );\n this.setState({ columns });\n }\n }}\n key={`${adapter}_${column.name}`}\n >\n <ListItemIcon>\n <Checkbox\n disabled={this.state.columnsAuto}\n edge=\"start\"\n checked={\n !this.state.columnsAuto &&\n this.state.columns?.includes(\n `_${adapter}_${column.path}` as ObjectBrowserPossibleColumns,\n )\n }\n disableRipple\n />\n </ListItemIcon>\n <ListItemText primary={`${column.name} (${adapter})`} />\n {/*\n <ListItemSecondaryAction>\n <FormControl\n variant=\"standard\"\n style={{ ...styles.columnsDialogInputWidth, marginTop: 0, marginBottom: 0 }}\n margin=\"dense\"\n >\n <Input\n classes={{ underline: 'no-underline' }}\n placeholder={this.props.t('ra_Width')}\n value={this.state.columnsWidths['_' + adapter + '_' + column.path] || ''}\n onChange={e => {\n const columnsWidths = JSON.parse(JSON.stringify(this.state.columnsWidths));\n columnsWidths['_' + adapter + '_' + column.path] = e.target.value;\n this.localStorage.setItem((this.props.dialogName || 'App') + '.columnsWidths', JSON.stringify(columnsWidths));\n this.calculateColumnsVisibility(null, null, null, columnsWidths);\n this.setState({ columnsWidths });\n }}\n autoComplete=\"off\"\n />\n </FormControl>\n </ListItemSecondaryAction>\n */}\n </ListItemButton>\n )),\n )}\n {this._renderDefinedList(true)}\n </List>\n </DialogContent>\n <DialogActions>\n <Button\n variant=\"contained\"\n onClick={() => this.setState({ columnsSelectorShow: false })}\n color=\"primary\"\n startIcon={<IconClose />}\n >\n {this.texts.close}\n </Button>\n </DialogActions>\n </Dialog>\n );\n }\n\n private async getAdditionalColumns(): Promise<Record<string, CustomAdminColumnStored[]> | null> {\n try {\n const instances = await this.props.socket.getAdapters();\n\n let columnsForAdmin: Record<string, CustomAdminColumnStored[]> | null = null;\n // find all additional columns\n instances.forEach(obj => (columnsForAdmin = this.parseObjectForAdmins(columnsForAdmin, obj)));\n\n return columnsForAdmin;\n } catch (err) {\n // window.alert('Cannot get adapters: ' + e);\n // Object browser in Web has no additional columns\n console.error(`Cannot get adapters: ${err}`);\n return null;\n }\n }\n\n private checkUnsubscribes(): void {\n // Remove unused subscriptions\n for (let i = this.subscribes.length - 1; i >= 0; i--) {\n if (!this.recordStates.includes(this.subscribes[i])) {\n this.unsubscribe(this.subscribes[i]);\n }\n }\n this.recordStates = [];\n }\n\n /**\n * Find an item.\n */\n findItem(id: string, _parts?: string[], _root?: TreeItem | null, _partyId?: string): TreeItem | null {\n _parts ||= id.split('.');\n _root ||= this.root;\n if (!_root || !_parts.length) {\n return null;\n }\n\n _partyId = (_partyId ? `${_partyId}.` : '') + _parts.shift();\n\n if (_root.children) {\n const item = _root.children.find(i => i.data.id === _partyId);\n if (item) {\n if (item.data.id === id) {\n return item;\n }\n if (_parts.length) {\n return this.findItem(id, _parts, item, _partyId);\n }\n } else {\n return null;\n }\n }\n\n return null;\n }\n\n /**\n * Called when a state changes.\n */\n onStateChange = (id: string, state?: ioBroker.State | null): void => {\n // console.log(`> stateChange ${id}`);\n if (this.states[id]) {\n const item = this.findItem(id);\n if (item?.data.state) {\n item.data.state = undefined;\n }\n }\n if (state) {\n this.states[id] = state;\n } else {\n delete this.states[id];\n }\n\n if (!this.pausedSubscribes) {\n if (!this.statesUpdateTimer) {\n this.statesUpdateTimer = setTimeout(() => {\n this.statesUpdateTimer = null;\n this.forceUpdate();\n }, 300);\n }\n } else if (this.statesUpdateTimer) {\n clearTimeout(this.statesUpdateTimer);\n this.statesUpdateTimer = null;\n }\n };\n\n private parseObjectForAdmins(\n columnsForAdmin: Record<string, CustomAdminColumnStored[]> | null,\n obj: ioBroker.AdapterObject,\n ): Record<string, CustomAdminColumnStored[]> | null {\n if (obj.common?.adminColumns && obj.common.name) {\n const columns: string | (string | ioBroker.CustomAdminColumn)[] = obj.common.adminColumns;\n let aColumns: (string | ioBroker.CustomAdminColumn)[] | undefined;\n if (columns && typeof columns !== 'object') {\n aColumns = [columns];\n } else if (columns) {\n aColumns = columns as (string | ioBroker.CustomAdminColumn)[];\n }\n let cColumns: CustomAdminColumnStored[] | null;\n if (columns) {\n cColumns = aColumns\n .map((_item: string | ioBroker.CustomAdminColumn) => {\n if (typeof _item !== 'object') {\n return { path: _item, name: _item.split('.').pop() };\n }\n const item: ioBroker.CustomAdminColumn = _item;\n // string => array\n if (item.objTypes && typeof item.objTypes !== 'object') {\n item.objTypes = [item.objTypes];\n } else if (!item.objTypes) {\n item.objTypes = undefined;\n }\n\n if (!item.name && item.path) {\n return {\n path: item.path,\n name: item.path.split('.').pop(),\n width: item.width,\n edit: !!item.edit,\n type: item.type,\n objTypes: item.objTypes,\n } as CustomAdminColumnStored;\n }\n if (!item.path) {\n console.warn(`Admin columns for ${obj._id} ignored, because path not found`);\n return null;\n }\n return {\n path: item.path,\n name: getName(item.name || '', this.props.lang),\n width: item.width,\n edit: !!item.edit,\n type: item.type,\n objTypes: item.objTypes,\n } as CustomAdminColumnStored;\n })\n .filter((item: CustomAdminColumnStored) => item);\n } else {\n cColumns = null;\n }\n\n if (cColumns?.length) {\n columnsForAdmin ||= {};\n columnsForAdmin[obj.common.name] = cColumns.sort((a, b) =>\n a.path > b.path ? -1 : a.path < b.path ? 1 : 0,\n );\n }\n } else if (obj.common && obj.common.name && columnsForAdmin && columnsForAdmin[obj.common.name]) {\n delete columnsForAdmin[obj.common.name];\n }\n return columnsForAdmin;\n }\n\n onObjectChangeFromWorker = (events: ObjectEvent[]): void => {\n if (Array.isArray(events)) {\n let newState: { columnsForAdmin: Record<string, CustomAdminColumnStored[] | null> | null } | null = null;\n events.forEach(event => {\n const { newInnerState, filtered } = this.processOnObjectChangeElement(event.id, event.obj);\n if (filtered) {\n return;\n }\n if (newInnerState && newState) {\n Object.assign(newState, newInnerState);\n } else {\n newState = newInnerState;\n }\n });\n\n if (newState) {\n this.setState(newState);\n }\n this.afterObjectUpdated();\n }\n };\n\n onObjectChange = (id: string, obj?: ioBroker.Object | null): void => {\n const { newInnerState, filtered } = this.processOnObjectChangeElement(id, obj);\n if (filtered) {\n return;\n }\n\n if (newInnerState) {\n this.setState(newInnerState);\n }\n this.afterObjectUpdated();\n };\n\n afterObjectUpdated(): void {\n if (!this.objectsUpdateTimer && this.objects) {\n this.objectsUpdateTimer = setTimeout(() => {\n this.objectsUpdateTimer = null;\n const { info, root } = buildTree(this.objects, {\n imagePrefix: this.props.imagePrefix,\n root: this.props.root,\n lang: this.props.lang,\n themeType: this.props.themeType,\n });\n this.root = root;\n this.info = info;\n this.lastAppliedFilter = null; // apply filter anew\n\n if (!this.pausedSubscribes) {\n this.forceUpdate();\n }\n // else it will be re-rendered when the dialog will be closed\n }, 500);\n }\n }\n\n // This function is called when the user changes the alias of an object.\n // It updates the aliasMap and returns true if the aliasMap has changed.\n updateAliases(aliasId: string): void {\n if (!this.objects || !this.info?.aliasesMap || !aliasId?.startsWith('alias.')) {\n return;\n }\n // Rebuild aliases map\n const aliasesIds = Object.keys(this.objects).filter(id => id.startsWith('alias.0'));\n\n this.info.aliasesMap = {};\n\n for (const id of aliasesIds) {\n const obj = this.objects[id];\n if (obj?.common?.alias?.id) {\n if (typeof obj.common.alias.id === 'string') {\n const usedId = obj.common.alias.id;\n if (!this.info.aliasesMap[usedId]) {\n this.info.aliasesMap[usedId] = [id];\n } else if (!this.info.aliasesMap[usedId].includes(id)) {\n this.info.aliasesMap[usedId].push(id);\n }\n } else {\n const readId = obj.common.alias.id.read;\n if (readId) {\n if (!this.info.aliasesMap[readId]) {\n this.info.aliasesMap[readId] = [id];\n } else if (!this.info.aliasesMap[readId].includes(id)) {\n this.info.aliasesMap[readId].push(id);\n }\n }\n const writeId = obj.common.alias.id.write;\n if (writeId) {\n if (!this.info.aliasesMap[writeId]) {\n this.info.aliasesMap[writeId] = [id];\n } else if (!this.info.aliasesMap[writeId].includes(id)) {\n this.info.aliasesMap[writeId].push(id);\n }\n }\n }\n }\n }\n }\n\n /**\n * Processes a single element in regard to certain filters, columns for admin and updates object dict\n *\n * @param id The id of the object\n * @param obj The object itself\n * @returns Returns an object containing the new state (if any) and whether the object was filtered.\n */\n processOnObjectChangeElement(\n id: string,\n obj?: ioBroker.Object | null,\n ): {\n filtered: boolean;\n newInnerState: null | { columnsForAdmin: Record<string, CustomAdminColumnStored[]> | null };\n } {\n // console.log(`> objectChange ${id}`);\n const type = obj?.type;\n\n // If the object is filtered out, we don't need to update the React state\n if (\n obj &&\n typeof this.props.filterFunc === 'function' &&\n !this.props.filterFunc(obj) &&\n type !== 'channel' &&\n type !== 'device' &&\n type !== 'folder' &&\n type !== 'adapter' &&\n type !== 'instance'\n ) {\n return { newInnerState: null, filtered: true };\n }\n\n let newInnerState = null;\n if (id.startsWith('system.adapter.') && obj?.type === 'adapter') {\n const columnsForAdmin: Record<string, CustomAdminColumnStored[]> | null = JSON.parse(\n JSON.stringify(this.state.columnsForAdmin),\n );\n\n this.parseObjectForAdmins(columnsForAdmin, obj as ioBroker.AdapterObject);\n\n if (JSON.stringify(this.state.columnsForAdmin) !== JSON.stringify(columnsForAdmin)) {\n newInnerState = { columnsForAdmin };\n }\n }\n\n this.objects ||= {};\n\n if (obj) {\n this.objects[id] = obj;\n } else if (this.objects[id]) {\n delete this.objects[id];\n }\n\n this.updateAliases(id);\n\n return { newInnerState, filtered: false };\n }\n\n private subscribe(id: string): void {\n if (!this.subscribes.includes(id)) {\n this.subscribes.push(id);\n // console.log(`+ subscribe ${id}`);\n if (!this.pausedSubscribes) {\n this.props.socket\n .subscribeState(id, this.onStateChange)\n .catch(e => console.error(`Cannot subscribe on state ${id}: ${e}`));\n }\n }\n }\n\n private unsubscribe(id: string): void {\n const pos = this.subscribes.indexOf(id);\n if (pos !== -1) {\n this.subscribes.splice(pos, 1);\n if (this.states[id]) {\n delete this.states[id];\n }\n // console.log(`- unsubscribe ${id}`);\n this.props.socket.unsubscribeState(id, this.onStateChange);\n\n if (this.pausedSubscribes) {\n console.warn('Unsubscribe during pause?');\n }\n }\n }\n\n private pauseSubscribe(isPause: boolean): void {\n if (!this.pausedSubscribes && isPause) {\n this.pausedSubscribes = true;\n this.subscribes.forEach(id => this.props.socket.unsubscribeState(id, this.onStateChange));\n } else if (this.pausedSubscribes && !isPause) {\n this.pausedSubscribes = false;\n this.subscribes.forEach(id => this.props.socket.subscribeState(id, this.onStateChange));\n }\n }\n\n private onFilter(name?: string, value?: string | boolean): void {\n this.filterTimer = null;\n const filter: ObjectBrowserFilter = { ...this.state.filter };\n\n Object.keys(this.filterRefs).forEach(_name => {\n if (this.filterRefs[_name]?.current) {\n const filterRef: HTMLSelectElement = this.filterRefs[_name].current;\n for (let i = 0; i < filterRef.children.length; i++) {\n if (filterRef.children[i].tagName === 'INPUT') {\n (filter as Record<string, string>)[_name] = (filterRef.children[i] as HTMLInputElement).value;\n break;\n }\n }\n }\n });\n\n if (name) {\n (filter as Record<string, string | boolean | undefined>)[name] = value;\n if (name === 'expertMode') {\n (((window as any)._sessionStorage as Storage) || window.sessionStorage).setItem(\n 'App.expertMode',\n value ? 'true' : 'false',\n );\n }\n }\n\n if (JSON.stringify(this.state.filter) !== JSON.stringify(filter)) {\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectFilter`, JSON.stringify(filter));\n this.setState({ filter }, () => this.props.onFilterChanged && this.props.onFilterChanged(filter));\n }\n }\n\n clearFilter(): void {\n const filter: ObjectBrowserFilter = { ...this.state.filter };\n\n Object.keys(this.filterRefs).forEach(name => {\n if (this.filterRefs[name]?.current) {\n const filterRef: HTMLSelectElement = this.filterRefs[name].current;\n for (let i = 0; i < filterRef.childNodes.length; i++) {\n const item = filterRef.childNodes[i];\n if ((item as HTMLInputElement).tagName === 'INPUT') {\n (filter as Record<string, string>)[name] = '';\n (item as HTMLInputElement).value = '';\n break;\n }\n }\n }\n });\n\n if (JSON.stringify(this.state.filter) !== JSON.stringify(filter)) {\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectFilter`, JSON.stringify(filter));\n this.setState({ filter, filterKey: this.state.filterKey + 1 }, () => this.props.onFilterChanged?.(filter));\n }\n }\n\n isFilterEmpty(): boolean {\n const someNotEmpty = Object.keys(this.state.filter).find(\n attr => attr !== 'expertMode' && (this.state.filter as Record<string, string>)[attr],\n );\n return !someNotEmpty;\n }\n\n private getFilterInput(filterName: string): JSX.Element {\n return (\n <FormControl\n sx={this.styles.filterInput}\n key={`${filterName}_${this.state.filterKey}`}\n title={\n filterName === 'name' || filterName === 'id'\n ? this.props.t('ra_You can use * as wildcard')\n : undefined\n }\n // style={{ marginTop: 0, marginBottom: 0 }}\n margin=\"dense\"\n >\n <Input\n ref={this.filterRefs[filterName]}\n classes={{ underline: 'no-underline' }}\n id={filterName}\n placeholder={this.texts[`filter_${filterName}`]}\n defaultValue={(this.state.filter as Record<string, string>)[filterName] || ''}\n onChange={() => {\n if (this.filterTimer) {\n clearTimeout(this.filterTimer);\n }\n this.filterTimer = setTimeout(() => this.onFilter(), 400);\n }}\n autoComplete=\"off\"\n />\n {(this.filterRefs[filterName]?.current?.firstChild as HTMLInputElement)?.value ? (\n <div\n style={{\n position: 'absolute',\n right: 0,\n }}\n >\n <IconButton\n size=\"small\"\n onClick={() => {\n (this.filterRefs[filterName].current?.firstChild as HTMLInputElement).value = '';\n this.onFilter(filterName, '');\n }}\n >\n <IconClose />\n </IconButton>\n </div>\n ) : null}\n </FormControl>\n );\n }\n\n private getFilterSelect(name: string, values?: (string | InputSelectItem)[]): JSX.Element {\n const hasIcons = !!values?.find(item => (item as InputSelectItem).icon);\n\n return (\n <div style={{ position: 'relative' }}>\n <Select\n variant=\"standard\"\n key={`${name}_${this.state.filterKey}`}\n ref={this.filterRefs[name]}\n sx={styles.headerCellInput}\n className=\"no-underline\"\n onChange={() => {\n if (this.filterTimer) {\n clearTimeout(this.filterTimer);\n }\n this.filterTimer = setTimeout(() => this.onFilter(), 400);\n }}\n defaultValue={(this.state.filter as Record<string, string>)[name] || ''}\n inputProps={{ name, id: name }}\n displayEmpty\n >\n <MenuItem\n key=\"empty\"\n value=\"\"\n >\n <span style={styles.selectNone}>\n {name === 'custom' ? this.texts.showAll : this.texts[`filter_${name}`]}\n </span>\n </MenuItem>\n {values?.map(item => {\n let id: string;\n let _name: string;\n let icon: null | JSX.Element | undefined;\n if (typeof item === 'object') {\n id = item.value;\n _name = item.name;\n icon = item.icon;\n } else {\n id = item;\n _name = item;\n }\n return (\n <MenuItem\n sx={styles.headerCellSelectItem}\n key={id}\n value={id}\n >\n {icon || (hasIcons ? <div className=\"itemIcon\" /> : null)}\n {_name}\n </MenuItem>\n );\n })}\n </Select>\n {(this.filterRefs[name]?.current?.childNodes[1] as HTMLInputElement)?.value ? (\n <Box\n component=\"div\"\n sx={styles.selectClearButton}\n >\n <IconButton\n size=\"small\"\n onClick={() => {\n const newFilter: ObjectBrowserFilter = { ...this.state.filter };\n (newFilter as Record<string, string>)[name] = '';\n (this.filterRefs[name].current?.childNodes[1] as HTMLInputElement).value = '';\n this.localStorage.setItem(\n `${this.props.dialogName || 'App'}.objectFilter`,\n JSON.stringify(newFilter),\n );\n this.setState(\n { filter: newFilter, filterKey: this.state.filterKey + 1 },\n () => this.props.onFilterChanged && this.props.onFilterChanged(newFilter),\n );\n }}\n >\n <IconClose />\n </IconButton>\n </Box>\n ) : null}\n </div>\n );\n }\n\n private getFilterSelectRole(): JSX.Element {\n return this.getFilterSelect(\n 'role',\n this.info.roles.map(it => it.role),\n );\n }\n\n private getFilterSelectRoom(): JSX.Element {\n const rooms: InputSelectItem[] = this.info.roomEnums.map(\n id =>\n ({\n name: getName(this.objects[id]?.common?.name, this.props.lang) || id.split('.').pop(),\n value: id,\n icon: (\n <Icon\n src={this.objects[id]?.common?.icon || ''}\n style={styles.selectIcon}\n />\n ),\n }) as InputSelectItem,\n );\n\n return this.getFilterSelect('room', rooms);\n }\n\n private getFilterSelectFunction(): JSX.Element {\n const func: InputSelectItem[] = this.info.funcEnums.map(\n id =>\n ({\n name: getName(this.objects[id]?.common?.name, this.props.lang) || id.split('.').pop(),\n value: id,\n icon: (\n <Icon\n src={this.objects[id]?.common?.icon || ''}\n style={styles.selectIcon}\n />\n ),\n }) as InputSelectItem,\n );\n\n return this.getFilterSelect('func', func);\n }\n\n private getFilterSelectType(): JSX.Element {\n const types = this.info.types.map(type => ({\n name: type,\n value: type,\n icon: ITEM_IMAGES[type] || null,\n }));\n\n return this.getFilterSelect('type', types);\n }\n\n private getFilterSelectCustoms(): JSX.Element | null {\n if (this.info.customs.length > 1) {\n const customs = this.info.customs.map(id => ({\n name: id === '_' ? this.texts.filterCustomsWithout : id,\n value: id,\n icon:\n id === '_' ? null : (\n <Icon\n src={getSelectIdIconFromObjects(this.objects, id, this.props.lang, this.imagePrefix) || ''}\n style={styles.selectIcon}\n />\n ),\n }));\n return this.getFilterSelect('custom', customs);\n }\n return null;\n }\n\n private onExpandAll(root?: TreeItem, expanded?: string[]): void {\n const _root: TreeItem | null = root || this.root;\n expanded ||= [];\n\n _root?.children?.forEach((item: TreeItem) => {\n if (item.data.sumVisibility) {\n expanded.push(item.data.id);\n this.onExpandAll(item, expanded);\n }\n });\n\n if (_root === this.root) {\n expanded.sort();\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectExpanded`, JSON.stringify(expanded));\n\n this.setState({ expanded });\n }\n }\n\n private onCollapseAll(): void {\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectExpanded`, JSON.stringify([]));\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectSelected`, '[]');\n this.setState({ expanded: [], depth: 0, selected: [] }, () => this.onAfterSelect());\n }\n\n private expandDepth(root: TreeItem, depth: number, expanded: string[]): void {\n root ||= this.root;\n if (depth > 0) {\n root.children?.forEach(item => {\n if (item.data.sumVisibility) {\n if (!binarySearch(expanded, item.data.id)) {\n expanded.push(item.data.id);\n expanded.sort();\n }\n if (depth - 1 > 0) {\n this.expandDepth(item, depth - 1, expanded);\n }\n }\n });\n }\n }\n\n private static collapseDepth(depth: number, expanded: string[]): string[] {\n return expanded.filter(id => id.split('.').length <= depth);\n }\n\n private onExpandVisible(): void {\n if (this.state.depth < 9) {\n const depth = this.state.depth + 1;\n const expanded = [...this.state.expanded];\n if (this.root) {\n this.expandDepth(this.root, depth, expanded);\n }\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectExpanded`, JSON.stringify(expanded));\n this.setState({ depth, expanded });\n }\n }\n\n private onStatesViewVisible(): void {\n const statesView = !this.state.statesView;\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectStatesView`, JSON.stringify(statesView));\n this.setState({ statesView });\n }\n\n private onCollapseVisible(): void {\n if (this.state.depth > 0) {\n const depth = this.state.depth - 1;\n const expanded = ObjectBrowserClass.collapseDepth(depth, this.state.expanded);\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectExpanded`, JSON.stringify(expanded));\n this.setState({ depth, expanded });\n }\n }\n\n private getEnumsForId = (id: string): ioBroker.EnumObject[] | undefined => {\n const result: ioBroker.EnumObject[] = [];\n this.info.enums.forEach(_id => {\n if (this.objects[_id]?.common?.members?.includes(id)) {\n const enumItem: ioBroker.EnumObject = {\n _id: this.objects[_id]._id,\n common: JSON.parse(JSON.stringify(this.objects[_id].common)) as ioBroker.EnumCommon,\n native: this.objects[_id].native,\n type: 'enum',\n } as ioBroker.EnumObject;\n if (enumItem.common) {\n delete enumItem.common.members;\n delete enumItem.common.custom;\n // @ts-expect-error deprecated attribute\n delete enumItem.common.mobile;\n }\n result.push(enumItem);\n }\n });\n\n return result.length ? result : undefined;\n };\n\n private _createAllEnums = async (enums: (string | ioBroker.EnumObject)[], objId: string): Promise<void> => {\n for (let e = 0; e < enums.length; e++) {\n const item: string | ioBroker.EnumObject = enums[e];\n let id: string;\n let newObj: ioBroker.EnumObject | undefined;\n\n // some admin version delivered enums as string\n if (typeof item === 'object') {\n newObj = item;\n id = newObj._id;\n } else {\n id = item;\n }\n\n let oldObj: ioBroker.EnumObject | undefined = this.objects[id] as ioBroker.EnumObject | undefined;\n // if enum does not exist\n if (!oldObj) {\n // create a new one\n oldObj =\n newObj ||\n ({\n _id: id,\n common: {\n name: id.split('.').pop(),\n members: [],\n },\n native: {},\n type: 'enum',\n } as ioBroker.EnumObject);\n\n oldObj.common ||= {} as ioBroker.EnumCommon;\n oldObj.common.members = [objId];\n oldObj.type = 'enum';\n\n await this.props.socket.setObject(id, oldObj);\n } else if (!oldObj.common?.members?.includes(objId)) {\n oldObj.common ||= {} as ioBroker.EnumCommon;\n oldObj.type = 'enum';\n oldObj.common.members ||= [];\n // add the missing object\n oldObj.common.members.push(objId);\n oldObj.common.members.sort();\n await this.props.socket.setObject(id, oldObj);\n }\n }\n };\n\n private async loadObjects(objs: Record<string, ioBrokerObjectForExport>): Promise<void> {\n if (objs) {\n for (const id in objs) {\n if (!Object.prototype.hasOwnProperty.call(objs, id) || !objs[id]) {\n continue;\n }\n const obj = objs[id];\n let enums = null;\n let val;\n let ack;\n if (obj?.common?.enums) {\n enums = obj.common.enums;\n delete obj.common.enums;\n } else {\n enums = null;\n }\n\n if (obj.val || obj.val === 0) {\n val = obj.val;\n delete obj.val;\n }\n if (obj.ack !== undefined) {\n ack = obj.ack;\n delete obj.ack;\n }\n try {\n await this.props.socket.setObject(id, obj);\n if (enums) {\n await this._createAllEnums(enums, obj._id);\n }\n if (obj.type === 'state') {\n if (val !== undefined && val !== null) {\n try {\n await this.props.socket.setState(obj._id, val, ack !== undefined ? ack : true);\n } catch (e) {\n window.alert(`Cannot set state \"${obj._id} with ${val}\": ${e}`);\n }\n } else {\n try {\n const state = await this.props.socket.getState(obj._id);\n if (!state || state.val === null) {\n try {\n await this.props.socket.setState(\n obj._id,\n !obj.common || obj.common.def === undefined ? null : obj.common.def,\n true,\n );\n } catch (e) {\n window.alert(`Cannot set state \"${obj._id}\": ${e}`);\n }\n }\n } catch (e) {\n window.alert(`Cannot read state \"${obj._id}\": ${e}`);\n }\n }\n }\n } catch (error) {\n window.alert(error);\n }\n }\n }\n }\n\n _getSelectedIdsForExport(): string[] {\n if (this.state.selected.length || this.state.selectedNonObject) {\n const result = [];\n const keys = Object.keys(this.objects);\n keys.sort();\n const id = this.state.selected[0] || this.state.selectedNonObject;\n const idDot = `${id}.`;\n const idLen = idDot.length;\n for (let k = 0; k < keys.length; k++) {\n const key = keys[k];\n if (id === key || key.startsWith(idDot)) {\n result.push(key);\n }\n if (key.substring(0, idLen) > idDot) {\n break;\n }\n }\n\n return result;\n }\n return [];\n }\n\n /**\n * Exports the selected objects based on the given options and triggers file generation\n */\n private async _exportObjects(\n /** Options to filter/reduce the output */\n options: {\n /** Whether all objects should be exported or only the selected ones */\n isAll?: boolean;\n /** Whether the output should be beautified */\n beautify?: boolean;\n /** Whether \"system.repositories\" should be excluded */\n excludeSystemRepositories?: boolean;\n /** Whether translations should be reduced to only the english value */\n excludeTranslations?: boolean;\n /** Whether the values of the states should be not included */\n noStatesByExportImport?: boolean;\n },\n ): Promise<void> {\n if (options.isAll) {\n generateFile('allObjects.json', this.objects, options);\n return;\n }\n if (!(this.state.selected.length || this.state.selectedNonObject)) {\n window.alert(this.props.t('ra_Save of objects-tree is not possible'));\n return;\n }\n const result: Record<string, ioBrokerObjectForExport> = {};\n const id = this.state.selected[0] || this.state.selectedNonObject;\n const ids = this._getSelectedIdsForExport();\n\n for (const key of ids) {\n result[key] = JSON.parse(JSON.stringify(this.objects[key])) as ioBrokerObjectForExport;\n // read states values\n if (result[key]?.type === 'state' && !options.noStatesByExportImport) {\n const state = await this.props.socket.getState(key);\n if (state) {\n result[key].val = state.val;\n result[key].ack = state.ack;\n }\n }\n // add enum information\n if (result[key].common) {\n const enums = this.getEnumsForId(key);\n if (enums) {\n result[key].common.enums = enums;\n }\n }\n }\n\n generateFile(`${id}.json`, result, options);\n }\n\n renderExportDialog(): JSX.Element | null {\n if (this.state.showExportDialog === false) {\n return null;\n }\n return (\n <Dialog\n open={!0}\n maxWidth=\"lg\"\n >\n <DialogTitle>{this.props.t('ra_Select type of export')}</DialogTitle>\n <DialogContent>\n <DialogContentText>\n {this.state.filter.expertMode || this.state.showAllExportOptions ? (\n <>\n {this.props.t('ra_You can export all objects or just the selected branch.')}\n <br />\n {this.props.t('ra_Selected %s object(s)', this.state.showExportDialog)}\n <br />\n <FormControlLabel\n control={\n <Checkbox\n checked={this.state.noStatesByExportImport}\n onChange={e => this.setState({ noStatesByExportImport: e.target.checked })}\n />\n }\n label={this.props.t('ra_Do not export values of states')}\n />\n <br />\n {this.props.t('These options can reduce the size of the export file:')}\n <FormControlLabel\n control={\n <Checkbox\n checked={this.state.beautifyJsonExport}\n onChange={e => this.setState({ beautifyJsonExport: e.target.checked })}\n />\n }\n label={this.props.t('Beautify JSON output')}\n />\n <br />\n <FormControlLabel\n control={\n <Checkbox\n checked={this.state.excludeSystemRepositoriesFromExport}\n onChange={e =>\n this.setState({ excludeSystemRepositoriesFromExport: e.target.checked })\n }\n />\n }\n label={this.props.t('Exclude system repositories from export JSON')}\n />\n <FormControlLabel\n control={\n <Checkbox\n checked={this.state.excludeTranslations}\n onChange={e => this.setState({ excludeTranslations: e.target.checked })}\n />\n }\n label={this.props.t('Exclude translations (except english) from export JSON')}\n />\n </>\n ) : null}\n </DialogContentText>\n </DialogContent>\n <DialogActions>\n {this.state.filter.expertMode || this.state.showAllExportOptions ? (\n <Button\n color=\"grey\"\n variant=\"outlined\"\n onClick={() =>\n this.setState({ showExportDialog: false, showAllExportOptions: false }, () =>\n this._exportObjects({\n isAll: true,\n noStatesByExportImport: this.state.noStatesByExportImport,\n beautify: this.state.beautifyJsonExport,\n excludeSystemRepositories: this.state.excludeSystemRepositoriesFromExport,\n excludeTranslations: this.state.excludeTranslations,\n }),\n )\n }\n >\n <span style={{ marginRight: 8 }}>{this.props.t('ra_All objects')}</span>(\n {Object.keys(this.objects).length})\n </Button>\n ) : (\n <Button\n color=\"grey\"\n variant=\"outlined\"\n startIcon={<IconExpert />}\n onClick={() => this.setState({ showAllExportOptions: true })}\n >\n {this.props.t('ra_Advanced options')}\n </Button>\n )}\n <Button\n color=\"primary\"\n variant=\"contained\"\n autoFocus\n onClick={() =>\n this.setState({ showExportDialog: false, showAllExportOptions: false }, () =>\n this._exportObjects({\n isAll: false,\n noStatesByExportImport: this.state.noStatesByExportImport,\n beautify: this.state.beautifyJsonExport,\n excludeSystemRepositories: this.state.excludeSystemRepositoriesFromExport,\n excludeTranslations: this.state.excludeTranslations,\n }),\n )\n }\n >\n <span style={{ marginRight: 8 }}>{this.props.t('ra_Only selected')}</span>(\n {this.state.showExportDialog})\n </Button>\n <Button\n color=\"grey\"\n variant=\"contained\"\n onClick={() => this.setState({ showExportDialog: false, showAllExportOptions: false })}\n startIcon={<IconClose />}\n >\n {this.props.t('ra_Cancel')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n }\n\n renderRenameDialog(): JSX.Element | null {\n if (!this.state.showRenameDialog) {\n return null;\n }\n const ObjectMoveRenameDialog = this.props.objectMoveRenameDialog;\n return (\n <ObjectMoveRenameDialog\n expertMode={this.props.expertMode}\n onClose={() => this.setState({ showRenameDialog: null })}\n id={this.state.showRenameDialog.id}\n childrenIds={this.state.showRenameDialog.childrenIds}\n theme={this.props.theme}\n socket={this.props.socket}\n t={this.props.t}\n objectType={this.objects[this.state.showRenameDialog.id]?.type}\n />\n );\n }\n\n private handleJsonUpload(evt: Event): void {\n const target = evt.target as HTMLInputElement;\n const f = target.files?.length && target.files[0];\n if (f) {\n const r = new FileReader();\n r.onload = async e => {\n const contents = e.target?.result;\n try {\n const json = JSON.parse(contents as string);\n const len = Object.keys(json).length;\n const id = json._id;\n // it could be a single object or many objects\n if (id === undefined && len) {\n // many objects\n await this.loadObjects(json as Record<string, ioBrokerObjectForExport>);\n window.alert(this.props.t('ra_%s object(s) processed', len));\n } else {\n // it is only one object in form\n // {\n // \"_id\": \"xxx\",\n // \"common\": \"yyy\",\n // \"native\": \"zzz\"\n // \"val\": JSON.stringify(value)\n // \"ack\": true\n // }\n if (!id) {\n return window.alert(this.props.t('ra_Invalid structure'));\n }\n try {\n let enums;\n let val;\n let ack;\n if (json.common.enums) {\n enums = json.common.enums;\n delete json.common.enums;\n }\n if (json.val) {\n val = json.val;\n delete json.val;\n }\n if (json.ack !== undefined) {\n ack = json.ack;\n delete json.ack;\n }\n await this.props.socket.setObject(json._id, json);\n\n if (json.type === 'state') {\n if (val !== undefined && val !== null) {\n await this.props.socket.setState(json._id, val, ack === undefined ? true : ack);\n } else {\n const state = await this.props.socket.getState(json._id);\n if (!state || state.val === null || state.val === undefined) {\n await this.props.socket.setState(\n json._id,\n json.common.def === undefined ? null : json.common.def,\n true,\n );\n }\n }\n }\n if (enums) {\n await this._createAllEnums(enums, json._id);\n }\n\n window.alert(this.props.t('ra_%s was imported', json._id));\n } catch (err) {\n window.alert(err);\n }\n }\n } catch (err) {\n window.alert(err);\n }\n return null;\n };\n r.readAsText(f);\n } else {\n window.alert(this.props.t('ra_Failed to open JSON File'));\n }\n }\n\n toolTipObjectCreating = (): JSX.Element[] | string => {\n const { t } = this.props;\n\n let value = [\n <div key={1}>{t('ra_Only following structures of objects are available:')}</div>,\n <div key={2}>{t('ra_Folder → State')}</div>,\n <div key={3}>{t('ra_Folder → Channel → State')}</div>,\n <div key={4}>{t('ra_Folder → Device → Channel → State')}</div>,\n <div key={5}>{t('ra_Device → Channel → State')}</div>,\n <div key={6}>{t('ra_Channel → State')}</div>,\n <div\n key={7}\n style={{ height: 10 }}\n />,\n <div key={8}>{t('ra_Non-experts may create new objects only in \"0_userdata.0\" or \"alias.0\".')}</div>,\n <div key={9}>\n {t(\n 'ra_The experts may create objects everywhere but from second level (e.g. \"vis.0\" or \"javascript.0\").',\n )}\n </div>,\n ];\n\n if (this.state.selected.length || this.state.selectedNonObject) {\n const id = this.state.selected[0] || this.state.selectedNonObject;\n if (id.split('.').length < 2 || (this.objects[id] && this.objects[id]?.type === 'state')) {\n // show default tooltip\n } else if (this.state.filter.expertMode) {\n switch (this.objects[id]?.type) {\n case 'device':\n value = [\n <div key={1}>{t('ra_Only following structures of objects are available:')}</div>,\n <div key={5}>{t('ra_Device → Channel → State')}</div>,\n <div\n key={7}\n style={{ height: 10 }}\n />,\n <div key={8}>\n {t('ra_Non-experts may create new objects only in \"0_userdata.0\" or \"alias.0\".')}\n </div>,\n <div key={9}>\n {t(\n 'ra_The experts may create objects everywhere but from second level (e.g. \"vis.0\" or \"javascript.0\").',\n )}\n </div>,\n ];\n break;\n case 'folder':\n value = [\n <div key={1}>{t('ra_Only following structures of objects are available:')}</div>,\n <div key={2}>{t('ra_Folder → State')}</div>,\n <div key={3}>{t('ra_Folder → Channel → State')}</div>,\n <div key={4}>{t('ra_Folder → Device → Channel → State')}</div>,\n <div\n key={7}\n style={{ height: 10 }}\n />,\n <div key={8}>\n {t('ra_Non-experts may create new objects only in \"0_userdata.0\" or \"alias.0\".')}\n </div>,\n <div key={9}>\n {t(\n 'ra_The experts may create objects everywhere but from second level (e.g. \"vis.0\" or \"javascript.0\").',\n )}\n </div>,\n ];\n break;\n case 'channel':\n value = [\n <div key={1}>{t('ra_Only following structures of objects are available:')}</div>,\n <div key={1}>{t('ra_Channel → State')}</div>,\n <div\n key={7}\n style={{ height: 10 }}\n />,\n <div key={8}>\n {t('ra_Non-experts may create new objects only in \"0_userdata.0\" or \"alias.0\".')}\n </div>,\n <div key={9}>\n {t(\n 'ra_The experts may create objects everywhere but from second level (e.g. \"vis.0\" or \"javascript.0\").',\n )}\n </div>,\n ];\n break;\n default:\n break;\n }\n } else if (id.startsWith('alias.0') || id.startsWith('0_userdata')) {\n value = [\n <div key={1}>{t('ra_Only following structures of objects are available:')}</div>,\n <div key={2}>{t('ra_Folder → State')}</div>,\n <div key={3}>{t('ra_Folder → Channel → State')}</div>,\n <div key={4}>{t('ra_Folder → Device → Channel → State')}</div>,\n <div key={5}>{t('ra_Device → Channel → State')}</div>,\n <div key={6}>{t('ra_Channel → State')}</div>,\n <div\n key={7}\n style={{ height: 10 }}\n />,\n <div key={7}>\n {t('ra_Non-experts may create new objects only in \"0_userdata.0\" or \"alias.0\".')}\n </div>,\n <div key={8}>\n {t(\n 'ra_The experts may create objects everywhere but from second level (e.g. \"vis.0\" or \"javascript.0\").',\n )}\n </div>,\n ];\n }\n }\n\n return value.length ? value : t('ra_Add new child object to selected parent');\n };\n\n /**\n * Renders the toolbar.\n */\n getToolbar(): JSX.Element {\n let allowObjectCreation = false;\n if (this.state.selected.length || this.state.selectedNonObject) {\n const id = this.state.selected[0] || this.state.selectedNonObject;\n\n if (id.split('.').length < 2 || (this.objects[id] && this.objects[id].type === 'state')) {\n allowObjectCreation = false;\n } else if (this.state.filter.expertMode) {\n allowObjectCreation = true;\n } else if (id.startsWith('alias.0') || id.startsWith('0_userdata')) {\n allowObjectCreation = true;\n }\n }\n\n return (\n <div\n style={{\n display: 'flex',\n width: '100%',\n alignItems: 'center',\n overflowX: 'auto',\n }}\n >\n <div\n style={{\n display: 'flex',\n width: '100%',\n alignItems: 'center',\n }}\n >\n <Tooltip\n title={this.props.t('ra_Refresh tree')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <div>\n <IconButton\n onClick={() => this.refreshComponent()}\n disabled={this.state.updating}\n size=\"large\"\n >\n <RefreshIcon />\n </IconButton>\n </div>\n </Tooltip>\n {this.props.showExpertButton && !this.props.expertMode && (\n <Tooltip\n title={this.props.t('ra_expertMode')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n key=\"expertMode\"\n color={this.state.filter.expertMode ? 'secondary' : 'default'}\n onClick={() => this.onFilter('expertMode', !this.state.filter.expertMode)}\n size=\"large\"\n >\n <IconExpert />\n </IconButton>\n </Tooltip>\n )}\n {!this.props.disableColumnSelector && this.props.width !== 'xs' && (\n <Tooltip\n title={this.props.t('ra_Configure')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n key=\"columnSelector\"\n color={this.state.columnsAuto ? 'primary' : 'default'}\n onClick={() => this.setState({ columnsSelectorShow: true })}\n size=\"large\"\n >\n <IconColumns />\n </IconButton>\n </Tooltip>\n )}\n {this.props.width !== 'xs' && this.state.expandAllVisible && (\n <Tooltip\n title={this.props.t('ra_Expand all nodes')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n key=\"expandAll\"\n onClick={() => this.onExpandAll()}\n size=\"large\"\n >\n <IconOpen />\n </IconButton>\n </Tooltip>\n )}\n <Tooltip\n title={this.props.t('ra_Collapse all nodes')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n key=\"collapseAll\"\n onClick={() => this.onCollapseAll()}\n size=\"large\"\n >\n <IconClosed />\n </IconButton>\n </Tooltip>\n {this.props.width !== 'xs' && (\n <Tooltip\n title={this.props.t('ra_Expand one step node')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n key=\"expandVisible\"\n color=\"primary\"\n onClick={() => this.onExpandVisible()}\n size=\"large\"\n >\n <Badge\n badgeContent={this.state.depth}\n color=\"secondary\"\n sx={(theme: Theme) => ({\n badge: {\n right: 3,\n top: 3,\n border: `2px solid ${theme.palette.background.paper}`,\n padding: '0 4px',\n },\n })}\n >\n <IconOpen />\n </Badge>\n </IconButton>\n </Tooltip>\n )}\n {this.props.width !== 'xs' && (\n <Tooltip\n title={this.props.t('ra_Collapse one step node')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n key=\"collapseVisible\"\n color=\"primary\"\n onClick={() => this.onCollapseVisible()}\n size=\"large\"\n >\n <Badge\n sx={(theme: Theme) => ({\n badge: {\n right: 3,\n top: 3,\n border: `2px solid ${theme.palette.background.paper}`,\n padding: '0 4px',\n },\n })}\n badgeContent={this.state.depth}\n color=\"secondary\"\n >\n <IconClosed />\n </Badge>\n </IconButton>\n </Tooltip>\n )}\n {this.props.objectStatesView && (\n <Tooltip\n title={this.props.t('ra_Toggle the states view')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n onClick={() => this.onStatesViewVisible()}\n size=\"large\"\n >\n <LooksOneIcon color={this.state.statesView ? 'primary' : 'inherit'} />\n </IconButton>\n </Tooltip>\n )}\n\n <Tooltip\n title={this.props.t('ra_Show/Hide object descriptions')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n onClick={() => {\n this.localStorage.setItem(\n `${this.props.dialogName || 'App'}.desc`,\n this.state.showDescription ? 'false' : 'true',\n );\n this.setState({ showDescription: !this.state.showDescription });\n }}\n size=\"large\"\n >\n <TextFieldsIcon color={this.state.showDescription ? 'primary' : 'inherit'} />\n </IconButton>\n </Tooltip>\n\n {this.props.objectAddBoolean ? (\n <Tooltip\n title={this.toolTipObjectCreating()}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <div>\n <IconButton\n disabled={!allowObjectCreation}\n onClick={() =>\n this.setState({\n modalNewObj: {\n id: this.state.selected[0] || this.state.selectedNonObject,\n },\n })\n }\n size=\"large\"\n >\n <AddIcon />\n </IconButton>\n </div>\n </Tooltip>\n ) : null}\n\n {this.props.objectImportExport && (\n <Tooltip\n title={this.props.t('ra_Add objects tree from JSON file')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n onClick={() => {\n const input = document.createElement('input');\n input.setAttribute('type', 'file');\n input.setAttribute('id', 'files');\n input.setAttribute('opacity', '0');\n input.addEventListener('change', (e: Event) => this.handleJsonUpload(e), false);\n input.click();\n }}\n size=\"large\"\n >\n <PublishIcon />\n </IconButton>\n </Tooltip>\n )}\n {this.props.objectImportExport &&\n (!!this.state.selected.length || this.state.selectedNonObject) && (\n <Tooltip\n title={this.props.t('ra_Save objects tree as JSON file')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n onClick={() =>\n this.setState({ showExportDialog: this._getSelectedIdsForExport().length })\n }\n size=\"large\"\n >\n <PublishIcon style={{ transform: 'rotate(180deg)' }} />\n </IconButton>\n </Tooltip>\n )}\n </div>\n {!!this.props.objectBrowserEditObject && this.props.width !== 'xs' && (\n <div style={{ display: 'flex', whiteSpace: 'nowrap' }}>\n {`${this.props.t('ra_Objects')}: ${Object.keys(this.info.objects).length}, ${this.props.t(\n 'ra_States',\n )}: ${\n Object.keys(this.info.objects).filter(el => this.info.objects[el].type === 'state').length\n }`}\n </div>\n )}\n {this.props.objectEditBoolean && (\n <Tooltip\n title={this.props.t('ra_Edit custom config')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n onClick={() => {\n // get all visible states\n const ids = this.root ? getVisibleItems(this.root, 'state', this.objects) : [];\n\n if (ids.length) {\n this.pauseSubscribe(true);\n\n if (ids.length === 1) {\n this.localStorage.setItem(\n `${this.props.dialogName || 'App'}.objectSelected`,\n this.state.selected[0],\n );\n this.props.router?.doNavigate(null, 'custom', this.state.selected[0]);\n }\n this.setState({ customDialog: ids, customDialogAll: true });\n } else {\n this.setState({ toast: this.props.t('ra_please select object') });\n }\n }}\n size=\"large\"\n >\n <BuildIcon />\n </IconButton>\n </Tooltip>\n )}\n </div>\n );\n }\n\n private toggleExpanded(id: string): void {\n const expanded: string[] = JSON.parse(JSON.stringify(this.state.expanded));\n const pos = expanded.indexOf(id);\n if (pos === -1) {\n expanded.push(id);\n expanded.sort();\n } else {\n expanded.splice(pos, 1);\n }\n\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectExpanded`, JSON.stringify(expanded));\n\n this.setState({ expanded });\n }\n\n private onCopy(e: React.MouseEvent, text: string | undefined): void {\n e.stopPropagation();\n e.preventDefault();\n if (text) {\n Utils.copyToClipboard(text);\n if (text.length < 50) {\n this.setState({ toast: this.props.t('ra_Copied %s', text) });\n } else {\n this.setState({ toast: this.props.t('ra_Copied') });\n }\n }\n }\n\n renderTooltipAccessControl = (acl: ioBroker.StateACL): null | JSX.Element => {\n // acl ={object,state,owner,ownerGroup}\n if (!acl) {\n return null;\n }\n const check = [\n {\n value: '0x400',\n valueNum: 0x400,\n title: 'read',\n group: 'Owner',\n },\n {\n value: '0x200',\n valueNum: 0x200,\n title: 'write',\n group: 'Owner',\n },\n {\n value: '0x40',\n valueNum: 0x40,\n title: 'read',\n group: 'Group',\n },\n {\n value: '0x20',\n valueNum: 0x20,\n title: 'write',\n group: 'Group',\n },\n {\n value: '0x4',\n valueNum: 0x4,\n title: 'read',\n group: 'Everyone',\n },\n {\n value: '0x2',\n valueNum: 0x2,\n title: 'write',\n group: 'Everyone',\n },\n ];\n const arrayTooltipText = [];\n const funcRenderStateObject = (value: 'object' | 'state'): void => {\n const rights: number = acl[value];\n check.forEach((el, i) => {\n if (rights & el.valueNum) {\n arrayTooltipText.push(\n <span key={value + i}>\n {this.texts[`acl${el.group}_${el.title}_${value}`]},\n <span style={value === 'object' ? styles.rightsObject : styles.rightsState}>\n {el.value}\n </span>\n </span>,\n );\n }\n });\n };\n\n arrayTooltipText.push(\n <span key=\"group\">\n {`${this.texts.ownerGroup}: ${(acl.ownerGroup || '').replace('system.group.', '')}`}\n </span>,\n );\n arrayTooltipText.push(\n <span key=\"owner\">{`${this.texts.ownerUser}: ${(acl.owner || '').replace('system.user.', '')}`}</span>,\n );\n funcRenderStateObject('object');\n if (acl.state) {\n funcRenderStateObject('state');\n }\n\n return arrayTooltipText.length ? (\n <span style={styles.tooltipAccessControl}>{arrayTooltipText.map(el => el)}</span>\n ) : null;\n };\n\n renderColumnButtons(id: string, item: TreeItem): (JSX.Element | null)[] | JSX.Element | null {\n if (!item.data.obj) {\n return this.props.onObjectDelete || this.props.objectEditOfAccessControl ? (\n <div style={styles.buttonDiv}>\n {this.state.filter.expertMode && this.props.objectEditOfAccessControl ? (\n <IconButton\n sx={{\n ...styles.cellButtonsButton,\n ...styles.cellButtonsEmptyButton,\n ...styles.cellButtonMinWidth,\n }}\n onClick={() =>\n this.setState({ modalEditOfAccess: true, modalEditOfAccessObjData: item.data })\n }\n size=\"large\"\n >\n <div style={{ height: 15 }}>---</div>\n </IconButton>\n ) : null}\n {this.props.onObjectDelete && item.children?.length ? (\n <IconButton\n sx={{\n ...styles.cellButtonsButton,\n ...styles.cellButtonsButtonAlone,\n }}\n size=\"small\"\n aria-label=\"delete\"\n title={this.texts.deleteObject}\n onClick={() => {\n // calculate the number of children\n const keys = Object.keys(this.objects);\n keys.sort();\n let count = 0;\n const start = `${id}.`;\n for (let i = 0; i < keys.length; i++) {\n if (keys[i].startsWith(start)) {\n count++;\n } else if (keys[i] > start) {\n break;\n }\n }\n\n if (this.props.onObjectDelete) {\n this.props.onObjectDelete(id, !!item.children?.length, false, count + 1);\n }\n }}\n >\n <IconDelete style={styles.cellButtonsButtonIcon} />\n </IconButton>\n ) : null}\n </div>\n ) : null;\n }\n\n item.data.aclTooltip =\n item.data.aclTooltip || this.renderTooltipAccessControl(item.data.obj.acl as ioBroker.StateACL);\n\n const acl = item.data.obj.acl\n ? item.data.obj.type === 'state'\n ? item.data.obj.acl.state\n : item.data.obj.acl.object\n : 0;\n const aclSystemConfig =\n item.data.obj.acl &&\n (item.data.obj.type === 'state'\n ? this.systemConfig.common.defaultNewAcl.state\n : this.systemConfig.common.defaultNewAcl.object);\n\n const showEdit = this.state.filter.expertMode || ObjectBrowserClass.isNonExpertId(item.data.id);\n\n return [\n this.state.filter.expertMode && this.props.objectEditOfAccessControl ? (\n <Tooltip\n key=\"acl\"\n title={item.data.aclTooltip}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n sx={{\n ...styles.cellButtonsButton,\n ...styles.cellButtonMinWidth,\n opacity: 1,\n }}\n onClick={() => this.setState({ modalEditOfAccess: true, modalEditOfAccessObjData: item.data })}\n size=\"large\"\n >\n <div style={styles.aclText}>\n {Number.isNaN(Number(acl))\n ? Number(aclSystemConfig).toString(16)\n : Number(acl).toString(16)}\n </div>\n </IconButton>\n </Tooltip>\n ) : (\n <div\n key=\"aclEmpty\"\n style={styles.cellButtonMinWidth}\n />\n ),\n\n showEdit ? (\n <IconButton\n key=\"edit\"\n sx={{\n marginRight: '2px',\n ...styles.cellButtonsButton,\n }}\n size=\"small\"\n aria-label=\"edit\"\n title={this.texts.editObject}\n onClick={() => {\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectSelected`, id);\n this.setState({ editObjectDialog: id, editObjectAlias: false });\n }}\n >\n <IconEdit style={styles.cellButtonsButtonIcon} />\n </IconButton>\n ) : (\n <Box\n component=\"div\"\n key=\"editDisabled\"\n sx={styles.cellButtonsButton}\n />\n ),\n\n this.props.onObjectDelete && (item.children?.length || !item.data.obj.common?.dontDelete) ? (\n <IconButton\n key=\"delete\"\n sx={styles.cellButtonsButton}\n size=\"small\"\n aria-label=\"delete\"\n onClick={() => {\n const keys = Object.keys(this.objects);\n keys.sort();\n let count = 0;\n const start = `${id}.`;\n for (let i = 0; i < keys.length; i++) {\n if (keys[i].startsWith(start)) {\n count++;\n } else if (keys[i] > start) {\n break;\n }\n }\n if (this.props.onObjectDelete) {\n this.props.onObjectDelete(\n id,\n !!item.children?.length,\n !item.data.obj?.common?.dontDelete,\n count,\n );\n }\n }}\n title={this.texts.deleteObject}\n >\n <IconDelete style={styles.cellButtonsButtonIcon} />\n </IconButton>\n ) : null,\n\n this.props.objectCustomDialog &&\n this.info.hasSomeCustoms &&\n item.data.obj.type === 'state' &&\n // @ts-expect-error deprecated from js-controller 6\n item.data.obj.common?.type !== 'file' ? (\n <IconButton\n sx={{\n ...styles.cellButtonsButton,\n ...(item.data.hasCustoms\n ? this.styles.cellButtonsButtonWithCustoms\n : styles.cellButtonsButtonWithoutCustoms),\n }}\n key=\"custom\"\n size=\"small\"\n aria-label=\"config\"\n title={this.texts.customConfig}\n onClick={() => {\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectSelected`, id);\n\n this.pauseSubscribe(true);\n this.props.router?.doNavigate(null, 'customs', id);\n this.setState({ customDialog: [id], customDialogAll: false });\n }}\n >\n <IconConfig style={styles.cellButtonsButtonIcon} />\n </IconButton>\n ) : null,\n ];\n }\n\n private readHistory(id: string): void {\n /* interface GetHistoryOptions {\n instance?: string;\n start?: number;\n end?: number;\n step?: number;\n count?: number;\n from?: boolean;\n ack?: boolean;\n q?: boolean;\n addID?: boolean;\n limit?: number;\n ignoreNull?: boolean;\n sessionId?: any;\n aggregate?: 'minmax' | 'min' | 'max' | 'average' | 'total' | 'count' | 'none';\n } */\n if (\n window.sparkline &&\n this.defaultHistory &&\n this.objects[id]?.common?.custom &&\n this.objects[id].common.custom[this.defaultHistory]\n ) {\n const now = new Date();\n now.setHours(now.getHours() - 24);\n now.setMinutes(0);\n now.setSeconds(0);\n now.setMilliseconds(0);\n const nowMs = now.getTime();\n\n this.props.socket\n .getHistory(id, {\n instance: this.defaultHistory,\n start: nowMs,\n end: Date.now(),\n step: 3600000,\n from: false,\n ack: false,\n q: false,\n addId: false,\n aggregate: 'minmax',\n })\n .then(values => {\n const sparks: HTMLDivElement[] = window.document.getElementsByClassName(\n 'sparkline',\n ) as any as HTMLDivElement[];\n\n for (let s = 0; s < sparks.length; s++) {\n if (sparks[s].dataset.id === id) {\n const v = prepareSparkData(values, nowMs);\n\n window.sparkline.sparkline(sparks[s], v);\n break;\n }\n }\n })\n .catch(e => console.warn(`Cannot read history: ${e}`));\n }\n }\n\n private getTooltipInfo(id: string, cb?: () => void): void {\n const obj = this.objects[id];\n const state = this.states[id];\n\n const { valFull, fileViewer } = formatValue({\n state,\n obj: obj as ioBroker.StateObject,\n texts: this.texts,\n dateFormat: this.props.dateFormat || this.systemConfig.common.dateFormat,\n isFloatComma:\n this.props.isFloatComma === undefined ? this.systemConfig.common.isFloatComma : this.props.isFloatComma,\n full: true,\n });\n const valFullRx: JSX.Element[] = [];\n\n valFull?.forEach(_item => {\n if (_item.t === this.texts.quality && state.q) {\n valFullRx.push(\n <div\n style={styles.cellValueTooltipBoth}\n key={_item.t}\n >\n {_item.t}\n :&nbsp;\n {_item.v}\n </div>,\n );\n // <div style={styles.cellValueTooltipValue} key={item.t + '_v'}>{item.v}</div>,\n if (!_item.nbr) {\n valFullRx.push(<br key={`${_item.t}_br`} />);\n }\n } else {\n valFullRx.push(\n <div\n style={styles.cellValueTooltipTitle}\n key={_item.t}\n >\n {_item.t}\n :&nbsp;\n </div>,\n );\n valFullRx.push(\n <div\n style={styles.cellValueTooltipValue}\n key={`${_item.t}_v`}\n >\n {_item.v}\n </div>,\n );\n if (!_item.nbr) {\n valFullRx.push(<br key={`${_item.t}_br`} />);\n }\n }\n });\n const role = obj?.common?.role || '';\n\n if (fileViewer === 'image') {\n valFullRx.push(\n <img\n style={styles.cellValueTooltipImage}\n src={state.val as string}\n alt={id}\n />,\n );\n } else if (role === 'url' || obj.common.role === 'url.self' || obj.common.role === 'url.blank') {\n // Show comment about \"Hold Ctrl/⌘ key to open the link\"\n valFullRx.unshift(\n <div\n key=\"ctrl\"\n style={{ textDecoration: 'underline', fontWeight: 'bold' }}\n >\n {this.texts.ctrlForLink}\n </div>,\n );\n } else if (this.defaultHistory && obj?.common?.custom?.[this.defaultHistory]) {\n valFullRx.push(\n <svg\n key=\"sparkline\"\n className=\"sparkline\"\n data-id={id}\n style={{ fill: '#3d85de' }}\n width=\"200\"\n height=\"30\"\n strokeWidth=\"3\"\n />,\n );\n }\n\n this.setState({ tooltipInfo: { el: valFullRx, id } }, () => cb && cb());\n }\n\n /**\n * This function renders the value in different forms in the table\n *\n * @param id state ID\n * @param item Item\n * @param narrowStyleWithDetails if use mobile view\n */\n private renderColumnValue(id: string, item: TreeItem, narrowStyleWithDetails?: boolean): JSX.Element | null {\n const obj = item.data.obj;\n if (!obj || !this.states) {\n return null;\n }\n\n if (obj.common?.type === 'file') {\n return (\n <Box\n component=\"div\"\n sx={{ ...styles.cellValueText, ...styles.cellValueFile }}\n >\n [file]\n </Box>\n );\n }\n if (!this.states[id]) {\n if (obj.type === 'state') {\n // we are waiting for state\n if (!this.recordStates.includes(id)) {\n this.recordStates.push(id);\n }\n this.states[id] = { val: null } as ioBroker.State;\n this.subscribe(id);\n }\n return null;\n }\n if (!this.recordStates.includes(id)) {\n this.recordStates.push(id);\n }\n\n const state = this.states[id];\n\n let info = item.data.state;\n if (!info) {\n const { valText } = formatValue({\n state,\n obj: obj as ioBroker.StateObject,\n texts: this.texts,\n dateFormat: this.props.dateFormat || this.systemConfig.common.dateFormat,\n isFloatComma:\n this.props.isFloatComma === undefined\n ? this.systemConfig.common.isFloatComma\n : this.props.isFloatComma,\n });\n const valTextRx: JSX.Element[] = [];\n item.data.state = { valTextRx };\n\n valTextRx.push(\n <span\n className={`newValueBrowser-${this.props.themeType || 'light'}`}\n key={`${valText.v.toString()}valText`}\n style={{\n whiteSpace: 'nowrap',\n display: 'inline-block',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }}\n >\n {valText.v.toString()}\n </span>,\n );\n if (valText.u) {\n valTextRx.push(\n <span\n className={`newValueBrowser-${this.props.themeType || 'light'}`}\n style={styles.cellValueTextUnit}\n key={`${valText.v.toString()}unit`}\n >\n {valText.u}\n </span>,\n );\n }\n if (valText.s !== undefined) {\n valTextRx.push(\n <span\n style={styles.cellValueTextState}\n className={`newValueBrowser-${this.props.themeType || 'light'}`}\n key={`${valText.v.toString()}states`}\n >\n ({valText.s})\n </span>,\n );\n }\n if (!narrowStyleWithDetails) {\n const copyText = valText.c !== undefined ? valText.c : valText.v || '';\n valTextRx.push(\n <IconCopy\n className=\"copyButton\"\n style={this.styles.iconCopy}\n onClick={e => this.onCopy(e, copyText)}\n key=\"cc\"\n />,\n );\n }\n // <IconEdit className=\"copyButton\" style={{{ ...styles.cellButtonsValueButton, styles.cellButtonsValueButtonEdit)} key=\"ce\" />\n\n info = item.data.state;\n }\n\n info.style = getValueStyle({ state, isExpertMode: this.state.filter.expertMode, isButton: item.data.button });\n\n let val: JSX.Element[] = info.valTextRx;\n if (!this.state.filter.expertMode) {\n if (item.data.button) {\n val = [\n <ButtonIcon\n key=\"button\"\n style={{ color: info.style.color, ...styles.cellValueButton }}\n />,\n ];\n } else if (item.data.switch) {\n val = [\n <Switch\n key=\"switch\"\n sx={{\n '& .MuiSwitch-thumb': { color: info.style.color },\n '& .MuiSwitch-track': {\n backgroundColor:\n !!this.states[id].val && this.state.selected.includes(id)\n ? this.props.themeType === 'dark'\n ? '#FFF !important'\n : '#111 !important'\n : undefined,\n },\n }}\n checked={!!this.states[id].val}\n />,\n ];\n }\n }\n\n return (\n <Tooltip\n key=\"value\"\n title={this.state.tooltipInfo?.el}\n slotProps={{\n popper: { sx: styles.cellValueTooltipBox },\n tooltip: { sx: styles.cellValueTooltip },\n }}\n onOpen={() => this.getTooltipInfo(id, () => this.readHistory(id))}\n onClose={() => this.state.tooltipInfo?.id === id && this.setState({ tooltipInfo: null })}\n >\n <Box\n component=\"div\"\n style={info.style}\n className={item.data.url ? 'iob-link' : undefined}\n sx={{\n ...styles.cellValueText,\n height: narrowStyleWithDetails ? undefined : ROW_HEIGHT,\n '& .admin-button:active': {\n transform: 'translate(0, 2px)',\n },\n }}\n >\n {val}\n </Box>\n </Tooltip>\n );\n }\n\n private _syncEnum(id: string, enumIds: string[], newArray: string[], cb: () => void): void {\n if (!enumIds?.length) {\n if (cb) {\n cb();\n }\n return;\n }\n const enumId = enumIds.pop() || '';\n const promises = [];\n if (this.info.objects[enumId]?.common) {\n if (this.info.objects[enumId].common.members?.length) {\n const pos = this.info.objects[enumId].common.members.indexOf(id);\n if (pos !== -1 && !newArray.includes(enumId)) {\n // delete it from members\n const obj: ioBroker.Object = JSON.parse(JSON.stringify(this.info.objects[enumId]));\n obj.common.members.splice(pos, 1);\n promises.push(\n this.props.socket\n .setObject(enumId, obj)\n .then(() => (this.info.objects[enumId] = obj))\n .catch(e => this.showError(e)),\n );\n }\n }\n\n // add to it\n if (newArray.includes(enumId) && !this.info.objects[enumId].common.members?.includes(id)) {\n // add to object\n const obj: ioBroker.Object = JSON.parse(JSON.stringify(this.info.objects[enumId]));\n obj.common.members ||= [];\n obj.common.members.push(id);\n obj.common.members.sort();\n promises.push(\n this.props.socket\n .setObject(enumId, obj)\n .then(() => (this.info.objects[enumId] = obj))\n .catch(e => this.showError(e)),\n );\n }\n }\n\n void Promise.all(promises).then(() => {\n setTimeout(() => this._syncEnum(id, enumIds, newArray, cb), 0);\n });\n }\n\n private syncEnum(id: string, enumName: 'func' | 'room', newArray: string[]): Promise<void> {\n const toCheck = [...this.info[enumName === 'func' ? 'funcEnums' : 'roomEnums']];\n\n return new Promise<void>(resolve => {\n this._syncEnum(id, toCheck, newArray, () => {\n // force update of an object\n resolve();\n });\n });\n }\n\n private renderEnumDialog(): JSX.Element | null {\n if (!this.state.enumDialog) {\n return null;\n }\n const type = this.state.enumDialog.type;\n const item = this.state.enumDialog.item;\n const itemEnums: string[] = this.state.enumDialogEnums;\n const enumsOriginal = this.state.enumDialog.enumsOriginal;\n\n const enums = (type === 'room' ? this.info.roomEnums : this.info.funcEnums)\n .map(id => ({\n name: getName(this.objects[id]?.common?.name || id.split('.').pop() || '', this.props.lang),\n value: id,\n icon: getSelectIdIconFromObjects(this.objects, id, this.props.lang, this.imagePrefix),\n }))\n .sort((a, b) => (a.name > b.name ? 1 : -1));\n\n enums.forEach(_item => {\n if (_item.icon && typeof _item.icon === 'string') {\n _item.icon = (\n <Box style={styles.enumIconDiv}>\n <img\n src={_item.icon}\n style={styles.enumIcon}\n alt={_item.name}\n />\n </Box>\n );\n }\n });\n\n // const hasIcons = !!enums.find(item => item.icon);\n\n return (\n <Dialog\n sx={{ '& .MuiPaper-root': styles.enumDialog }}\n onClose={() => this.setState({ enumDialog: null })}\n aria-labelledby=\"enum-dialog-title\"\n open={!0} // true\n >\n <DialogTitle\n id=\"enum-dialog-title\"\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n width: '100%',\n flexWrap: 'nowrap',\n gap: 8,\n paddingRight: 12,\n }}\n >\n {type === 'func' ? this.props.t('ra_Define functions') : this.props.t('ra_Define rooms')}\n <Fab\n color=\"primary\"\n disabled={enumsOriginal === JSON.stringify(itemEnums)}\n size=\"small\"\n onClick={() =>\n this.syncEnum(item.data.id, type, itemEnums).then(() =>\n this.setState({ enumDialog: null, enumDialogEnums: null }),\n )\n }\n >\n <IconCheck />\n </Fab>\n </DialogTitle>\n <List sx={{ '&.MuiList-root': styles.enumList }}>\n {enums.map(_item => {\n let id;\n let name;\n let icon;\n\n if (typeof _item === 'object') {\n id = _item.value;\n name = _item.name;\n icon = _item.icon;\n } else {\n id = _item;\n name = _item;\n }\n const labelId = `checkbox-list-label-${id}`;\n\n return (\n <ListItem\n sx={styles.headerCellSelectItem}\n key={id}\n onClick={() => {\n const pos = itemEnums.indexOf(id);\n const enumDialogEnums: string[] = JSON.parse(\n JSON.stringify(this.state.enumDialogEnums),\n );\n if (pos === -1) {\n enumDialogEnums.push(id);\n enumDialogEnums.sort();\n } else {\n enumDialogEnums.splice(pos, 1);\n }\n this.setState({ enumDialogEnums });\n }}\n secondaryAction={icon}\n >\n <ListItemIcon sx={{ '&.MuiListItemIcon-root': styles.enumCheckbox }}>\n <Checkbox\n edge=\"start\"\n checked={itemEnums.includes(id)}\n tabIndex={-1}\n disableRipple\n inputProps={{ 'aria-labelledby': labelId }}\n />\n </ListItemIcon>\n <ListItemText id={labelId}>{name}</ListItemText>\n </ListItem>\n );\n })}\n </List>\n </Dialog>\n );\n }\n\n private renderEditRoleDialog(): JSX.Element | null {\n if (!this.state.roleDialog || !this.props.objectBrowserEditRole) {\n return null;\n }\n\n if (this.state.roleDialog && this.props.objectBrowserEditRole) {\n const ObjectBrowserEditRole = this.props.objectBrowserEditRole;\n\n return (\n <ObjectBrowserEditRole\n key=\"objectBrowserEditRole\"\n id={this.state.roleDialog}\n socket={this.props.socket}\n t={this.props.t}\n roleArray={this.info.roles}\n commonType={this.info.objects[this.state.roleDialog]?.common?.type}\n onClose={(obj?: ioBroker.Object | null) => {\n if (obj) {\n this.info.objects[this.state.roleDialog] = obj;\n }\n this.setState({ roleDialog: null });\n }}\n />\n );\n }\n return null;\n }\n\n private onColumnsEditCustomDialogClose(isSave?: boolean): void {\n // cannot be null\n const customColumnDialog: {\n value: boolean | number | string;\n type: 'boolean' | 'number' | 'string';\n initValue: boolean | number | string;\n } = this.customColumnDialog as {\n value: boolean | number | string;\n type: 'boolean' | 'number' | 'string';\n initValue: boolean | number | string;\n };\n\n if (isSave) {\n let value: string | number | boolean = customColumnDialog.value;\n if (customColumnDialog.type === 'boolean') {\n value = value === 'true' || value === true;\n } else if (customColumnDialog.type === 'number') {\n value = parseFloat(value as any as string);\n }\n this.customColumnDialog = null;\n this.props.socket\n .getObject(this.state.columnsEditCustomDialog?.obj?._id || '')\n .then(obj => {\n if (obj && ObjectBrowserClass.setCustomValue(obj, this.state.columnsEditCustomDialog?.it, value)) {\n return this.props.socket.setObject(obj._id, obj);\n }\n throw new Error(this.props.t('ra_Cannot update attribute, because not found in the object'));\n })\n .then(() => this.setState({ columnsEditCustomDialog: null }))\n .catch(e => this.showError(e));\n } else {\n this.customColumnDialog = null;\n this.setState({ columnsEditCustomDialog: null });\n }\n }\n\n private renderColumnsEditCustomDialog(): JSX.Element | null {\n if (!this.state.columnsEditCustomDialog) {\n return null;\n }\n if (!this.customColumnDialog) {\n const value = ObjectBrowserClass.getCustomValue(\n this.state.columnsEditCustomDialog.obj,\n this.state.columnsEditCustomDialog.it,\n );\n this.customColumnDialog = {\n type: (this.state.columnsEditCustomDialog.it.type || typeof value) as 'boolean' | 'string' | 'number',\n initValue: (value === null || value === undefined ? '' : value).toString(),\n value: (value === null || value === undefined ? '' : value).toString(),\n };\n }\n\n return (\n <Dialog\n onClose={() => this.setState({ columnsEditCustomDialog: null })}\n maxWidth=\"md\"\n aria-labelledby=\"custom-dialog-title\"\n open={!0}\n >\n <DialogTitle id=\"custom-dialog-title\">\n {`${this.props.t('ra_Edit object field')}: ${this.state.columnsEditCustomDialog.obj._id}`}\n </DialogTitle>\n <DialogContent>\n <DialogContentText id=\"alert-dialog-description\">\n {this.customColumnDialog.type === 'boolean' ? (\n <FormControlLabel\n control={\n <Checkbox\n onKeyUp={e => e.key === 'Enter' && this.onColumnsEditCustomDialogClose(true)}\n defaultChecked={this.customColumnDialog.value === 'true'}\n onChange={e => {\n const customColumnDialog: {\n value: boolean | number | string;\n type: 'boolean' | 'number' | 'string';\n initValue: boolean | number | string;\n } = this.customColumnDialog as {\n value: boolean | number | string;\n type: 'boolean' | 'number' | 'string';\n initValue: boolean | number | string;\n };\n\n customColumnDialog.value = e.target.checked.toString();\n const changed = customColumnDialog.value !== customColumnDialog.initValue;\n if (changed === !this.state.customColumnDialogValueChanged) {\n this.setState({ customColumnDialogValueChanged: changed });\n }\n }}\n />\n }\n label={`${this.state.columnsEditCustomDialog.it.name} (${this.state.columnsEditCustomDialog.it.pathText})`}\n />\n ) : (\n <TextField\n variant=\"standard\"\n defaultValue={this.customColumnDialog.value}\n fullWidth\n onKeyUp={e => e.key === 'Enter' && this.onColumnsEditCustomDialogClose(true)}\n label={`${this.state.columnsEditCustomDialog.it.name} (${this.state.columnsEditCustomDialog.it.pathText})`}\n onChange={e => {\n const customColumnDialog: {\n value: boolean | number | string;\n type: 'boolean' | 'number' | 'string';\n initValue: boolean | number | string;\n } = this.customColumnDialog as {\n value: boolean | number | string;\n type: 'boolean' | 'number' | 'string';\n initValue: boolean | number | string;\n };\n\n customColumnDialog.value = e.target.value;\n const changed = customColumnDialog.value !== customColumnDialog.initValue;\n if (changed === !this.state.customColumnDialogValueChanged) {\n this.setState({ customColumnDialogValueChanged: changed });\n }\n }}\n autoFocus\n />\n )}\n </DialogContentText>\n </DialogContent>\n <DialogActions>\n <Button\n variant=\"contained\"\n onClick={() => this.onColumnsEditCustomDialogClose(true)}\n disabled={!this.state.customColumnDialogValueChanged}\n color=\"primary\"\n startIcon={<IconCheck />}\n >\n {this.props.t('ra_Update')}\n </Button>\n <Button\n color=\"grey\"\n variant=\"contained\"\n onClick={() => this.onColumnsEditCustomDialogClose()}\n startIcon={<IconClose />}\n >\n {this.props.t('ra_Cancel')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n }\n\n private static getCustomValue(obj: ioBroker.Object, it: AdapterColumn): string | number | boolean | null {\n if (obj?._id?.startsWith(`${it.adapter}.`) && it.path.length > 1) {\n const p = it.path;\n let value;\n const anyObj: Record<string, any> = obj as Record<string, any>;\n if (anyObj[p[0]] && typeof anyObj[p[0]] === 'object') {\n if (p.length === 2) {\n // most common case\n value = anyObj[p[0]][p[1]];\n } else if (p.length === 3) {\n value =\n anyObj[p[0]][p[1]] && typeof anyObj[p[0]][p[1]] === 'object' ? anyObj[p[0]][p[1]][p[2]] : null;\n } else if (p.length === 4) {\n value =\n anyObj[p[0]][p[1]] && typeof anyObj[p[0]][p[1]] === 'object' && anyObj[p[0]][p[1]][p[2]]\n ? anyObj[p[0]][p[1]][p[2]][p[3]]\n : null;\n } else if (p.length === 5) {\n value =\n anyObj[p[0]][p[1]] &&\n typeof anyObj[p[0]][p[1]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]] &&\n anyObj[p[0]][p[1]][p[2]][p[3]]\n ? anyObj[p[0]][p[1]][p[2]][p[3]][p[4]]\n : null;\n } else if (p.length === 6) {\n value =\n anyObj[p[0]][p[1]] &&\n typeof anyObj[p[0]][p[1]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]] &&\n anyObj[p[0]][p[1]][p[2]][p[3]] &&\n anyObj[p[0]][p[1]][p[2]][p[3]][p[4]]\n ? anyObj[p[0]][p[1]][p[2]][p[3]][p[4]][p[5]]\n : null;\n }\n if (value === undefined || value === null) {\n return null;\n }\n return value;\n }\n }\n\n return null;\n }\n\n private static setCustomValue(obj: ioBroker.Object, it: AdapterColumn, value: string | number | boolean): boolean {\n if (obj?._id?.startsWith(`${it.adapter}.`) && it.path.length > 1) {\n const p = it.path;\n const anyObj: Record<string, any> = obj as Record<string, any>;\n if (anyObj[p[0]] && typeof anyObj[p[0]] === 'object') {\n if (p.length === 2) {\n // most common case\n anyObj[p[0]][p[1]] = value;\n return true;\n }\n if (p.length === 3) {\n if (anyObj[p[0]][p[1]] && typeof anyObj[p[0]][p[1]] === 'object') {\n anyObj[p[0]][p[1]][p[2]] = value;\n return true;\n }\n } else if (p.length === 4) {\n if (\n anyObj[p[0]][p[1]] &&\n typeof anyObj[p[0]][p[1]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]] &&\n typeof anyObj[p[0]][p[1]][p[2]] === 'object'\n ) {\n anyObj[p[0]][p[1]][p[2]][p[3]] = value;\n return true;\n }\n } else if (p.length === 5) {\n if (\n anyObj[p[0]][p[1]] &&\n typeof anyObj[p[0]][p[1]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]] &&\n typeof anyObj[p[0]][p[1]][p[2]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]][p[3]] &&\n typeof anyObj[p[0]][p[1]][p[2]][p[3]] === 'object'\n ) {\n anyObj[p[0]][p[1]][p[2]][p[3]][p[4]] = value;\n return true;\n }\n } else if (p.length === 6) {\n if (\n anyObj[p[0]][p[1]] &&\n typeof anyObj[p[0]][p[1]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]] &&\n typeof anyObj[p[0]][p[1]][p[2]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]][p[3]] &&\n typeof anyObj[p[0]][p[1]][p[2]][p[3]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]][p[3]][p[4]] &&\n typeof anyObj[p[0]][p[1]][p[2]][p[3]][p[4]] === 'object'\n ) {\n anyObj[p[0]][p[1]][p[2]][p[3]][p[4]][p[5]] = value;\n return true;\n }\n }\n }\n }\n return false;\n }\n\n /**\n * Renders a custom value.\n */\n renderCustomValue(obj: ioBroker.Object, it: AdapterColumn, item: TreeItem): JSX.Element | null {\n const text = ObjectBrowserClass.getCustomValue(obj, it);\n if (text !== null && text !== undefined) {\n if (it.edit && !this.props.notEditable && (!it.objTypes || it.objTypes.includes(obj.type))) {\n return (\n <Box\n component=\"div\"\n style={{\n ...styles.columnCustom,\n ...styles.columnCustomEditable,\n ...styles[`columnCustom_${it.align}`],\n }}\n onClick={() =>\n this.setState({\n columnsEditCustomDialog: { item, it, obj },\n customColumnDialogValueChanged: false,\n })\n }\n >\n {text}\n </Box>\n );\n }\n return (\n <Box\n component=\"div\"\n style={{\n ...styles.columnCustom,\n ...styles[`columnCustom_${it.align}`],\n }}\n >\n {text}\n </Box>\n );\n }\n return null;\n }\n\n renderAliasLink(id: string, index?: number, customStyle?: Record<string, any>): JSX.Element | null {\n const _index = index || 0;\n // read the type of operation\n const aliasObj = this.objects[this.info.aliasesMap[id][_index]].common.alias.id;\n if (aliasObj) {\n return (\n <Box\n component=\"div\"\n onClick={e => {\n e.stopPropagation();\n e.preventDefault();\n const aliasId = this.info.aliasesMap[id][_index];\n // if more than one alias, close the menu\n if (this.info.aliasesMap[id].length > 1) {\n this.setState({ aliasMenu: '' });\n }\n this.onSelect(aliasId);\n setTimeout(() => this.expandAllSelected(() => this.scrollToItem(aliasId)), 100);\n }}\n sx={customStyle || this.styles.aliasAlone}\n >\n <span className=\"admin-browser-arrow\">\n {typeof aliasObj === 'string' || (aliasObj.read === id && aliasObj.write === id)\n ? '↔'\n : aliasObj.read === id\n ? '→'\n : '←'}\n </span>\n {this.info.aliasesMap[id][_index]}\n </Box>\n );\n }\n\n return null;\n }\n\n /**\n * Renders a leaf.\n */\n renderLeaf(\n item: TreeItem,\n isExpanded: boolean | undefined,\n counter: { count: number },\n ): { row: JSX.Element; details: JSX.Element | null } {\n const id = item.data.id;\n counter.count++;\n isExpanded = isExpanded === undefined ? this.state.expanded.includes(id) : isExpanded;\n\n // icon\n let iconFolder;\n const obj = item.data.obj;\n const itemType = obj?.type;\n\n if (\n item.children ||\n itemType === 'folder' ||\n itemType === 'device' ||\n itemType === 'channel' ||\n itemType === 'meta'\n ) {\n iconFolder = isExpanded ? (\n <IconOpen\n style={this.styles.cellIdIconFolder}\n onClick={() => this.toggleExpanded(id)}\n />\n ) : (\n <IconClosed\n style={this.styles.cellIdIconFolder}\n onClick={() => this.toggleExpanded(id)}\n />\n );\n } else if (obj && obj.common && obj.common.write === false && obj.type === 'state') {\n iconFolder = <IconDocumentReadOnly style={this.styles.cellIdIconDocument} />;\n } else {\n iconFolder = <IconDocument style={this.styles.cellIdIconDocument} />;\n }\n\n let iconItem = null;\n if (item.data.icon) {\n if (typeof item.data.icon === 'string') {\n if (item.data.icon.length < 3) {\n iconItem = (\n <span\n className=\"iconOwn\"\n style={styles.cellIdIconOwn}\n >\n {item.data.icon}\n </span>\n ); // utf-8 char\n } else {\n iconItem = (\n <Icon\n style={styles.cellIdIconOwn}\n className=\"iconOwn\"\n src={item.data.icon}\n alt=\"\"\n />\n );\n }\n } else {\n iconItem = item.data.icon;\n }\n }\n\n const common = obj?.common;\n\n const typeImg = (obj?.type && ITEM_IMAGES[obj.type]) || <div className=\"itemIcon\" />;\n\n const paddingLeft = this.levelPadding * (item.data.level || 0);\n\n // recalculate rooms and function names if the language changed\n if (item.data.lang !== this.props.lang) {\n const { rooms, per } = findRoomsForObject(this.info, id, this.props.lang);\n item.data.rooms = rooms.join(', ');\n item.data.per = per;\n const { funcs, pef } = findFunctionsForObject(this.info, id, this.props.lang);\n item.data.funcs = funcs.join(', ');\n item.data.pef = pef;\n item.data.lang = this.props.lang;\n }\n\n const checkbox =\n this.props.multiSelect &&\n this.objects[id] &&\n (!this.props.types || this.props.types.includes(this.objects[id].type)) ? (\n <Checkbox\n style={styles.checkBox}\n checked={this.state.selected.includes(id)}\n />\n ) : null;\n\n let valueEditable =\n !this.props.notEditable &&\n itemType === 'state' &&\n (this.state.filter.expertMode || common?.write !== false);\n if (this.props.objectBrowserViewFile && common?.type === 'file') {\n valueEditable = true;\n }\n\n const enumEditable =\n !this.props.notEditable &&\n this.objects[id] &&\n (this.state.filter.expertMode || itemType === 'state' || itemType === 'channel' || itemType === 'device');\n\n const checkVisibleObjectType =\n this.state.statesView && (itemType === 'state' || itemType === 'channel' || itemType === 'device');\n\n let newValue = '';\n const newValueTitle = [];\n if (checkVisibleObjectType) {\n newValue = this.states[id]?.from;\n if (newValue === undefined) {\n newValue = '&nbsp;';\n } else {\n newValue = newValue ? newValue.replace(/^system\\.adapter\\.|^system\\./, '') : '';\n newValueTitle.push(`${this.texts.stateChangedFrom} ${newValue}`);\n }\n if (obj?.user) {\n const user = obj.user.replace('system.user.', '');\n newValue += `/${user}`;\n newValueTitle.push(`${this.texts.stateChangedBy} ${user}`);\n }\n }\n\n if (obj) {\n if (obj.from) {\n newValueTitle.push(\n `${this.texts.objectChangedFrom} ${obj.from.replace(/^system\\.adapter\\.|^system\\./, '')}`,\n );\n }\n if (obj.user) {\n newValueTitle.push(`${this.texts.objectChangedBy} ${obj.user.replace(/^system\\.user\\./, '')}`);\n }\n if (obj.ts) {\n newValueTitle.push(\n `${this.texts.objectChangedByUser} ${Utils.formatDate(new Date(obj.ts), this.props.dateFormat || this.systemConfig.common.dateFormat)}`,\n );\n }\n }\n\n let readWriteAlias = false;\n let alias: JSX.Element | null = null;\n if (id.startsWith('alias.') && common?.alias?.id) {\n readWriteAlias = typeof common.alias.id === 'object';\n if (readWriteAlias) {\n alias = (\n <div style={styles.cellIdAliasReadWriteDiv}>\n {common.alias.id.read ? (\n <Box\n component=\"div\"\n onClick={e => {\n e.stopPropagation();\n e.preventDefault();\n this.onSelect(common.alias.id.read);\n setTimeout(\n () => this.expandAllSelected(() => this.scrollToItem(common.alias.id.read)),\n 100,\n );\n }}\n sx={this.styles.aliasReadWrite}\n >\n ←{common.alias.id.read}\n </Box>\n ) : null}\n {common.alias.id.write ? (\n <Box\n component=\"div\"\n onClick={e => {\n e.stopPropagation();\n e.preventDefault();\n this.onSelect(common.alias.id.write);\n setTimeout(\n () => this.expandAllSelected(() => this.scrollToItem(common.alias.id.write)),\n 100,\n );\n }}\n sx={this.styles.aliasReadWrite}\n >\n →{common.alias.id.write}\n </Box>\n ) : null}\n </div>\n );\n } else {\n alias = (\n <Box\n component=\"div\"\n onClick={e => {\n e.stopPropagation();\n e.preventDefault();\n this.onSelect(common.alias.id);\n setTimeout(() => this.expandAllSelected(() => this.scrollToItem(common.alias.id)), 100);\n }}\n sx={this.styles.aliasAlone}\n >\n →{common.alias.id}\n </Box>\n );\n }\n } else if (this.info.aliasesMap[id]) {\n // Some alias points to this object. It can be more than one\n if (this.info.aliasesMap[id].length > 1) {\n // Show number of aliases and open a menu by click\n alias = (\n <Box\n component=\"div\"\n id={`alias_${id}`}\n onClick={e => {\n e.stopPropagation();\n e.preventDefault();\n this.setState({ aliasMenu: id });\n }}\n sx={this.styles.aliasAlone}\n >\n {this.props.t('ra_%s links from aliases', this.info.aliasesMap[id].length)}\n </Box>\n );\n } else {\n // Show name of alias and open it by click\n alias = this.renderAliasLink(id, 0);\n }\n }\n\n let checkColor = common?.color;\n let invertBackground;\n if (checkColor && !this.state.selected.includes(id)) {\n const background =\n this.props.themeName === 'dark' ? '#1f1f1f' : this.props.themeName === 'blue' ? '#222a2e' : '#FFFFFF';\n const distance = Utils.colorDistance(checkColor, background);\n // console.log(`Distance: ${checkColor} - ${background} = ${distance}`);\n if (distance < 1000) {\n invertBackground = this.props.themeType === 'dark' ? '#9a9a9a' : '#565656';\n }\n }\n let bold = false;\n if (id === '0_userdata') {\n checkColor = COLOR_NAME_USERDATA(this.props.themeType);\n bold = true;\n } else if (id === 'alias') {\n checkColor = COLOR_NAME_ALIAS(this.props.themeType);\n bold = true;\n } else if (id === 'javascript') {\n checkColor = COLOR_NAME_JAVASCRIPT(this.props.themeType);\n bold = true;\n } else if (id === 'system') {\n checkColor = COLOR_NAME_SYSTEM(this.props.themeType);\n bold = true;\n } else if (id === 'system.adapter') {\n checkColor = COLOR_NAME_SYSTEM_ADAPTER(this.props.themeType);\n } else if (!checkColor || this.state.selected.includes(id)) {\n checkColor = 'inherit';\n }\n\n const icons = [];\n\n if (common?.statusStates) {\n const ids: Record<string, string> = {};\n Object.keys(common.statusStates).forEach(name => {\n let _id = common.statusStates[name];\n if (_id.split('.').length < 3) {\n _id = `${id}.${_id}`;\n }\n ids[name] = _id;\n\n if (!this.states[_id]) {\n if (this.objects[_id]?.type === 'state') {\n if (!this.recordStates.includes(_id)) {\n this.recordStates.push(_id);\n }\n this.states[_id] = { val: null } as ioBroker.State;\n this.subscribe(_id);\n }\n } else if (!this.recordStates.includes(_id)) {\n this.recordStates.push(_id);\n }\n });\n // calculate color\n // errorId has priority\n let colorSet = false;\n if (common.statusStates.errorId && this.states[ids.errorId] && this.states[ids.errorId].val) {\n checkColor = this.props.themeType === 'dark' ? COLOR_NAME_ERROR_DARK : COLOR_NAME_ERROR_LIGHT;\n colorSet = true;\n icons.push(\n <IconError\n key=\"error\"\n // title={this.texts.deviceError}\n style={this.styles.iconDeviceError}\n />,\n );\n }\n\n if (ids.onlineId && this.states[ids.onlineId]) {\n if (!colorSet) {\n if (this.states[ids.onlineId].val) {\n checkColor =\n this.props.themeType === 'dark' ? COLOR_NAME_CONNECTED_DARK : COLOR_NAME_CONNECTED_LIGHT;\n icons.push(\n <IconConnection\n key=\"conn\"\n // title={this.texts.deviceError}\n style={this.styles.iconDeviceConnected}\n />,\n );\n } else {\n checkColor =\n this.props.themeType === 'dark'\n ? COLOR_NAME_DISCONNECTED_DARK\n : COLOR_NAME_DISCONNECTED_LIGHT;\n icons.push(\n <IconDisconnected\n key=\"disc\"\n // title={this.texts.deviceError}\n style={this.styles.iconDeviceDisconnected}\n />,\n );\n }\n } else if (this.states[ids.onlineId].val) {\n icons.push(\n <IconConnection\n key=\"conn\"\n // title={this.texts.deviceError}\n style={this.styles.iconDeviceConnected}\n />,\n );\n } else {\n icons.push(\n <IconDisconnected\n key=\"disc\"\n // title={this.texts.deviceError}\n style={this.styles.iconDeviceDisconnected}\n />,\n );\n }\n } else if (ids.offlineId && this.states[ids.offlineId]) {\n if (!colorSet) {\n if (this.states[ids.offlineId].val) {\n checkColor =\n this.props.themeType === 'dark'\n ? COLOR_NAME_DISCONNECTED_DARK\n : COLOR_NAME_DISCONNECTED_LIGHT;\n icons.push(\n <IconDisconnected\n key=\"disc\"\n // title={this.texts.deviceError}\n style={this.styles.iconDeviceDisconnected}\n />,\n );\n } else {\n checkColor =\n this.props.themeType === 'dark' ? COLOR_NAME_CONNECTED_DARK : COLOR_NAME_CONNECTED_LIGHT;\n icons.push(\n <IconConnection\n key=\"conn\"\n // title={this.texts.deviceError}\n style={this.styles.iconDeviceConnected}\n />,\n );\n }\n } else if (this.states[ids.offlineId].val) {\n icons.push(\n <IconDisconnected\n key=\"disc\"\n // title={this.texts.deviceError}\n style={this.styles.iconDeviceDisconnected}\n />,\n );\n } else {\n icons.push(\n <IconConnection\n key=\"conn\"\n // title={this.texts.deviceError}\n style={this.styles.iconDeviceConnected}\n />,\n );\n }\n }\n }\n\n const q = checkVisibleObjectType ? Utils.quality2text(this.states[id]?.q || 0).join(', ') : null;\n\n let name: JSX.Element[] | string = item.data?.title || '';\n let useDesc = false;\n if (this.state.showDescription) {\n const oTooltip: string | null = getObjectTooltip(item.data, this.props.lang);\n if (oTooltip) {\n name = [\n <div\n key=\"name\"\n style={styles.cellNameDivDiv}\n >\n {name}\n </div>,\n <div\n key=\"desc\"\n style={styles.cellDescription}\n >\n {oTooltip}\n </div>,\n ];\n useDesc = !!oTooltip;\n }\n }\n\n const narrowStyleWithDetails = this.props.width === 'xs' && this.state.focused === id;\n\n const colID = (\n <Grid2\n container\n wrap=\"nowrap\"\n direction=\"row\"\n sx={styles.cellId}\n style={{ width: this.columnsVisibility.id, paddingLeft }}\n >\n <Grid2\n container\n alignItems=\"center\"\n >\n {checkbox}\n {iconFolder}\n </Grid2>\n <Grid2\n style={{\n ...styles.cellIdSpan,\n ...(invertBackground ? this.styles.invertedBackground : undefined),\n color: checkColor,\n fontWeight: bold ? 'bold' : undefined,\n }}\n >\n <Tooltip\n title={getIdFieldTooltip(item.data, this.props.lang)}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <div>{item.data.name}</div>\n </Tooltip>\n {alias}\n {icons}\n </Grid2>\n <div style={{ ...styles.grow, ...(invertBackground ? this.styles.invertedBackgroundFlex : {}) }} />\n <Grid2\n container\n alignItems=\"center\"\n >\n {iconItem}\n </Grid2>\n {this.props.width !== 'xs' ? (\n <div>\n <IconCopy\n className={narrowStyleWithDetails ? '' : 'copyButton'}\n style={styles.cellCopyButton}\n onClick={e => this.onCopy(e, id)}\n />\n </div>\n ) : null}\n </Grid2>\n );\n\n let colName =\n (narrowStyleWithDetails && name) || this.columnsVisibility.name ? (\n <Box\n component=\"div\"\n sx={{\n ...styles.cellName,\n ...(useDesc ? styles.cellNameWithDesc : undefined),\n width: this.props.width !== 'xs' ? this.columnsVisibility.name : undefined,\n ml: narrowStyleWithDetails ? 0 : '5px',\n }}\n >\n {name}\n {!narrowStyleWithDetails && item.data?.title ? (\n <Box style={{ color: checkColor }}>\n <IconCopy\n className=\"copyButton\"\n style={styles.cellCopyButton}\n onClick={e => this.onCopy(e, item.data?.title)}\n />\n </Box>\n ) : null}\n </Box>\n ) : null;\n\n let colMiddle:\n | ({\n el: JSX.Element;\n type:\n | 'filter_type'\n | 'filter_role'\n | 'filter_func'\n | 'filter_room'\n | 'quality'\n | 'from'\n | 'lc'\n | 'ts';\n onClick?: (() => void) | null | undefined;\n } | null)[]\n | null;\n if (!this.state.statesView) {\n colMiddle = [\n (narrowStyleWithDetails && obj?.type) || this.columnsVisibility.type\n ? {\n el: (\n <div\n key=\"type\"\n style={{\n ...styles.cellType,\n width: this.props.width !== 'xs' ? this.columnsVisibility.type : undefined,\n }}\n >\n {typeImg}\n &nbsp;\n {obj?.type}\n </div>\n ),\n type: 'filter_type',\n }\n : null,\n (narrowStyleWithDetails && common) || this.columnsVisibility.role\n ? {\n el: (\n <div\n key=\"role\"\n style={{\n ...styles.cellRole,\n width: this.props.width !== 'xs' ? this.columnsVisibility.role : '100%',\n cursor:\n this.state.filter.expertMode &&\n enumEditable &&\n this.props.objectBrowserEditRole\n ? 'text'\n : 'default',\n }}\n onClick={\n !narrowStyleWithDetails &&\n this.state.filter.expertMode &&\n enumEditable &&\n this.props.objectBrowserEditRole\n ? () => this.setState({ roleDialog: item.data.id })\n : undefined\n }\n >\n {common?.role}\n </div>\n ),\n type: 'filter_role',\n onClick:\n narrowStyleWithDetails &&\n this.state.filter.expertMode &&\n enumEditable &&\n this.props.objectBrowserEditRole\n ? () => this.setState({ roleDialog: item.data.id })\n : undefined,\n }\n : null,\n (narrowStyleWithDetails && common) || this.columnsVisibility.room\n ? {\n el: (\n <div\n key=\"room\"\n style={{\n ...styles.cellRoom,\n ...(item.data.per ? styles.cellEnumParent : {}),\n width: this.props.width !== 'xs' ? this.columnsVisibility.room : '100%',\n cursor: enumEditable ? 'text' : 'default',\n }}\n onClick={\n !narrowStyleWithDetails && enumEditable\n ? () => {\n const enums = findEnumsForObjectAsIds(\n this.info,\n item.data.id,\n 'roomEnums',\n );\n this.setState({\n enumDialogEnums: enums,\n enumDialog: {\n item,\n type: 'room',\n enumsOriginal: JSON.stringify(enums),\n },\n });\n }\n : undefined\n }\n >\n {item.data.rooms}\n </div>\n ),\n type: 'filter_room',\n onClick:\n narrowStyleWithDetails && enumEditable\n ? () => {\n const enums = findEnumsForObjectAsIds(this.info, item.data.id, 'roomEnums');\n this.setState({\n enumDialogEnums: enums,\n enumDialog: {\n item,\n type: 'room',\n enumsOriginal: JSON.stringify(enums),\n },\n });\n }\n : undefined,\n }\n : null,\n (narrowStyleWithDetails && common) || this.columnsVisibility.func\n ? {\n el: (\n <div\n key=\"func\"\n style={{\n ...styles.cellFunc,\n ...(item.data.pef ? styles.cellEnumParent : {}),\n width: this.props.width !== 'xs' ? this.columnsVisibility.func : '100%',\n cursor: enumEditable ? 'text' : 'default',\n }}\n onClick={\n !narrowStyleWithDetails && enumEditable\n ? () => {\n const enums = findEnumsForObjectAsIds(\n this.info,\n item.data.id,\n 'funcEnums',\n );\n this.setState({\n enumDialogEnums: enums,\n enumDialog: {\n item,\n type: 'func',\n enumsOriginal: JSON.stringify(enums),\n },\n });\n }\n : undefined\n }\n >\n {item.data.funcs}\n </div>\n ),\n type: 'filter_func',\n onClick:\n narrowStyleWithDetails && enumEditable\n ? () => {\n const enums = findEnumsForObjectAsIds(this.info, item.data.id, 'funcEnums');\n this.setState({\n enumDialogEnums: enums,\n enumDialog: {\n item,\n type: 'func',\n enumsOriginal: JSON.stringify(enums),\n },\n });\n }\n : undefined,\n }\n : null,\n ];\n } else {\n colMiddle = [\n (narrowStyleWithDetails && checkVisibleObjectType && this.states[id]?.from) ||\n this.columnsVisibility.changedFrom\n ? {\n el: (\n <div\n key=\"from\"\n style={{\n ...styles.cellRole,\n width: this.props.width !== 'xs' ? this.columnsVisibility.changedFrom : undefined,\n }}\n title={newValueTitle.join('\\n')}\n >\n {checkVisibleObjectType && this.states[id]?.from ? newValue : null}\n </div>\n ),\n type: 'from',\n }\n : null,\n (narrowStyleWithDetails && q) || this.columnsVisibility.qualityCode\n ? {\n el: (\n <div\n key=\"q\"\n style={{\n ...styles.cellRole,\n width: this.props.width !== 'xs' ? this.columnsVisibility.qualityCode : undefined,\n }}\n title={q || ''}\n >\n {q}\n </div>\n ),\n type: 'quality',\n }\n : null,\n (narrowStyleWithDetails && checkVisibleObjectType && this.states[id]?.ts) ||\n this.columnsVisibility.timestamp\n ? {\n el: (\n <div\n key=\"ts\"\n style={{\n ...styles.cellRole,\n width: this.props.width !== 'xs' ? this.columnsVisibility.timestamp : undefined,\n }}\n >\n {checkVisibleObjectType && this.states[id]?.ts\n ? Utils.formatDate(\n new Date(this.states[id].ts),\n this.props.dateFormat || this.systemConfig.common.dateFormat,\n )\n : null}\n </div>\n ),\n type: 'ts',\n }\n : null,\n (narrowStyleWithDetails && checkVisibleObjectType && this.states[id]?.lc) ||\n this.columnsVisibility.lastChange\n ? {\n el: (\n <div\n key=\"lc\"\n style={{\n ...styles.cellRole,\n width: this.props.width !== 'xs' ? this.columnsVisibility.lastChange : undefined,\n }}\n >\n {checkVisibleObjectType && this.states[id]?.lc\n ? Utils.formatDate(\n new Date(this.states[id].lc),\n this.props.dateFormat || this.systemConfig.common.dateFormat,\n )\n : null}\n </div>\n ),\n type: 'lc',\n }\n : null,\n ];\n }\n\n let colCustom: JSX.Element[] | null =\n this.adapterColumns?.map(it => (\n <div\n style={{\n ...styles.cellAdapter,\n width:\n this.props.width !== 'xs'\n ? (this.columnsVisibility as Record<string, number>)[it.id]\n : undefined,\n }}\n key={it.id}\n title={`${it.adapter} => ${it.pathText}`}\n >\n {obj ? this.renderCustomValue(obj, it, item) : null}\n </div>\n )) || null;\n\n const columnValue =\n narrowStyleWithDetails || this.columnsVisibility.val\n ? this.renderColumnValue(id, item, narrowStyleWithDetails)\n : null;\n\n let colValue =\n (narrowStyleWithDetails && columnValue) || this.columnsVisibility.val ? (\n <div\n style={{\n ...styles.cellValue,\n width: this.props.width !== 'xs' ? this.columnsVisibility.val : 'calc(100% - 100px)',\n cursor: valueEditable\n ? common?.type === 'file'\n ? 'zoom-in'\n : item.data.button\n ? 'grab'\n : 'text'\n : 'default',\n }}\n onClick={e => {\n if (valueEditable) {\n if (!obj || !this.states) {\n // return;\n } else if (common?.type === 'file') {\n this.setState({ viewFileDialog: id });\n } else if (item.data.url && e.ctrlKey) {\n if (this.states[id]?.val && typeof this.states[id].val === 'string') {\n if (common?.role === 'url.self') {\n window.location.href = this.states[id].val;\n } else {\n const opened = window.open(this.states[id].val, '_blank');\n opened?.focus();\n }\n }\n } else if (!this.state.filter.expertMode && item.data.button) {\n // in non-expert mode control button directly\n this.props.socket\n .setState(id, true)\n .catch(e => window.alert(`Cannot write state \"${id}\": ${e}`));\n } else if (!this.state.filter.expertMode && item.data.switch) {\n // in non-expert mode control switch directly\n this.props.socket\n .setState(id, !this.states[id].val)\n .catch(e => window.alert(`Cannot write state \"${id}\": ${e}`));\n } else {\n this.edit = {\n val: this.states[id] ? this.states[id].val : '',\n q: this.states[id] ? this.states[id].q || 0 : 0,\n ack: false,\n id,\n };\n this.setState({ updateOpened: true });\n }\n } else if (common?.role === 'url' || (common?.role === 'url.blank' && e.ctrlKey)) {\n if (this.states[id]?.val && typeof this.states[id].val === 'string') {\n window.open(this.states[id].val, '_blank');\n }\n } else if (common?.role === 'url.self' && e.ctrlKey) {\n if (this.states[id]?.val && typeof this.states[id].val === 'string') {\n window.location.href = this.states[id].val;\n }\n }\n }}\n >\n {columnValue}\n </div>\n ) : null;\n\n let colButtons =\n narrowStyleWithDetails || this.columnsVisibility.buttons ? (\n <div\n style={{\n ...styles.cellButtons,\n width: this.props.width !== 'xs' ? this.columnsVisibility.buttons : undefined,\n }}\n >\n {this.renderColumnButtons(id, item)}\n </div>\n ) : null;\n\n let colDetails: JSX.Element | null = null;\n if (this.props.width === 'xs' && this.state.focused === id) {\n colMiddle = colMiddle.filter(a => a);\n let renderedMiddle: (JSX.Element | null)[] | null;\n if (!colMiddle.length) {\n renderedMiddle = null;\n } else {\n renderedMiddle = colMiddle.map(it => {\n if (!it) {\n return null;\n }\n return (\n <div\n key={it.type}\n style={styles.cellDetailsLine}\n >\n <span style={styles.cellDetailsName}>{this.texts[it.type]}:</span>\n {it.el}\n <div style={{ flexGrow: 1 }} />\n {it.onClick ? (\n <IconEdit\n style={styles.cellCopyButtonInDetails}\n onClick={() => {\n if (it?.onClick) {\n it.onClick();\n }\n }}\n />\n ) : null}\n </div>\n );\n });\n }\n if (!colCustom.length) {\n colCustom = null;\n }\n colDetails = (\n <Paper\n style={{\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n padding: 10,\n backgroundColor: this.props.theme.palette.mode === 'dark' ? '#333' : '#ccc',\n }}\n >\n <div style={styles.cellDetailsLine}>\n <div style={{ flexGrow: 1 }} />\n <IconCopy\n style={styles.cellCopyButtonInDetails}\n onClick={e => this.onCopy(e, id)}\n />\n </div>\n {colName && (\n <div style={styles.cellDetailsLine}>\n <span style={styles.cellDetailsName}>{this.texts.name}:</span>\n {colName}\n <div style={{ flexGrow: 1 }} />\n {item.data?.title ? (\n <IconCopy\n className=\"copyButton\"\n style={styles.cellCopyButtonInDetails}\n onClick={e => this.onCopy(e, item.data?.title)}\n />\n ) : null}\n </div>\n )}\n {renderedMiddle}\n {colCustom && <div style={styles.cellDetailsLine}>{colCustom}</div>}\n {this.objects[id]?.type === 'state' && (\n <div style={styles.cellDetailsLine}>\n <span style={styles.cellDetailsName}>{this.texts.value}:</span>\n {colValue}\n <div style={{ flexGrow: 1 }} />\n <IconCopy\n className=\"copyButton\"\n style={styles.cellCopyButtonInDetails}\n onClick={e => {\n const { valText } = formatValue({\n state: this.states[id],\n obj: this.objects[id] as ioBroker.StateObject,\n texts: this.texts,\n dateFormat: this.props.dateFormat || this.systemConfig.common.dateFormat,\n isFloatComma:\n this.props.isFloatComma === undefined\n ? this.systemConfig.common.isFloatComma\n : this.props.isFloatComma,\n });\n this.onCopy(e, valText.c !== undefined ? valText.c : valText.v.toString());\n }}\n key=\"cc\"\n />\n </div>\n )}\n {colButtons && (\n <div style={{ ...styles.cellDetailsLine, justifyContent: 'right' }}>{colButtons}</div>\n )}\n </Paper>\n );\n\n colName = null;\n colMiddle = null;\n colCustom = null;\n colValue = null;\n colButtons = null;\n }\n\n const row = (\n <Grid2\n container\n direction=\"row\"\n wrap=\"nowrap\"\n sx={Utils.getStyle(\n this.props.theme,\n styles.tableRow,\n this.state.linesEnabled && styles.tableRowLines,\n !this.props.dragEnabled && styles.tableRowNoDragging,\n alias && styles.tableRowAlias,\n readWriteAlias && styles.tableRowAliasReadWrite,\n this.state.focused === id && this.props.multiSelect && styles.tableRowFocused,\n !item.data.visible && styles.filteredOut,\n item.data.hasVisibleParent &&\n !item.data.visible &&\n !item.data.hasVisibleChildren &&\n styles.filteredParentOut,\n this.state.selected.includes(id) && styles.itemSelected,\n this.state.selectedNonObject === id && styles.itemSelected,\n )}\n key={id}\n id={id}\n onMouseDown={e => {\n this.onSelect(id);\n let isRightMB;\n if ('which' in e) {\n // Gecko (Firefox), WebKit (Safari/Chrome) & Opera\n isRightMB = e.which === 3;\n } else if ('button' in e) {\n // IE, Opera\n isRightMB = e.button === 2;\n }\n if (isRightMB) {\n this.contextMenu = {\n item,\n ts: Date.now(),\n };\n } else {\n this.contextMenu = null;\n }\n }}\n onDoubleClick={() => {\n if (!item.children) {\n this.onSelect(id, true);\n } else {\n this.toggleExpanded(id);\n }\n }}\n >\n {colID}\n {colName}\n {colMiddle?.map(it => it?.el)}\n {colCustom}\n {colValue}\n {colButtons}\n </Grid2>\n );\n return { row, details: colDetails };\n }\n\n /**\n * Renders an item.\n */\n renderItem(root: TreeItem, isExpanded: boolean | undefined, counter?: { count: number }): JSX.Element[] {\n const items: (JSX.Element | null)[] = [];\n counter = counter || { count: 0 };\n const result = this.renderLeaf(root, isExpanded, counter);\n let leaf: JSX.Element;\n const DragWrapper = this.props.DragWrapper;\n if (this.props.dragEnabled && DragWrapper) {\n if (root.data.sumVisibility) {\n leaf = (\n <DragWrapper\n key={root.data.id}\n item={root}\n style={styles.draggable}\n >\n {result.row}\n </DragWrapper>\n );\n } else {\n // change cursor\n leaf = (\n <div\n key={root.data.id}\n style={styles.nonDraggable}\n >\n {result.row}\n </div>\n );\n }\n } else {\n leaf = result.row;\n }\n if (root.data.id && leaf) {\n items.push(leaf);\n }\n if (result.details) {\n items.push(result.details);\n }\n\n isExpanded = isExpanded === undefined ? binarySearch(this.state.expanded, root.data.id) : isExpanded;\n\n if (!root.data.id || isExpanded) {\n if (!this.state.foldersFirst) {\n if (root.children) {\n items.push(\n root.children.map(item => {\n // do not render too many items in column editor mode\n if (!this.state.columnsSelectorShow || counter.count < 15) {\n if (item.data.sumVisibility) {\n return this.renderItem(item, undefined, counter);\n }\n }\n return null;\n }) as any as JSX.Element,\n );\n }\n } else if (root.children) {\n // first only folder\n items.push(\n root.children.map(item => {\n if (item.children) {\n // do not render too many items in column editor mode\n if (!this.state.columnsSelectorShow || counter.count < 15) {\n if (item.data.sumVisibility) {\n return this.renderItem(item, undefined, counter);\n }\n }\n }\n\n return null;\n }) as any as JSX.Element,\n );\n\n // then items\n items.push(\n root.children.map(item => {\n if (!item.children) {\n // do not render too many items in column editor mode\n if (!this.state.columnsSelectorShow || counter.count < 15) {\n if (item.data.sumVisibility) {\n return this.renderItem(item, undefined, counter);\n }\n }\n }\n return null;\n }) as any as JSX.Element,\n );\n }\n }\n\n return items;\n }\n\n private calculateColumnsVisibility(\n aColumnsAuto?: boolean | null,\n aColumns?: string[] | null,\n aColumnsForAdmin?: Record<string, CustomAdminColumnStored[]> | null,\n aColumnsWidths?: Record<string, number>,\n ): void {\n let columnsWidths: Record<string, number> = aColumnsWidths || this.state.columnsWidths;\n const columnsForAdmin: Record<string, CustomAdminColumnStored[]> | null =\n aColumnsForAdmin || this.state.columnsForAdmin;\n const columns: string[] = aColumns || this.state.columns || [];\n const columnsAuto: boolean = typeof aColumnsAuto !== 'boolean' ? this.state.columnsAuto : aColumnsAuto;\n\n columnsWidths = JSON.parse(JSON.stringify(columnsWidths));\n Object.keys(columnsWidths).forEach(name => {\n if (columnsWidths[name]) {\n columnsWidths[name] = parseInt(columnsWidths[name] as any as string, 10) || 0;\n }\n });\n\n this.adapterColumns = [];\n const WIDTHS = SCREEN_WIDTHS[this.props.width || 'lg'].widths;\n\n if (columnsAuto) {\n this.columnsVisibility = {\n id: SCREEN_WIDTHS[this.props.width || 'lg'].idWidth,\n name: this.visibleCols.includes('name') ? WIDTHS.name || 0 : 0,\n nameHeader: this.visibleCols.includes('name') ? WIDTHS.name || 0 : 0,\n type: this.visibleCols.includes('type') ? WIDTHS.type || 0 : 0,\n role: this.visibleCols.includes('role') ? WIDTHS.role || 0 : 0,\n room: this.visibleCols.includes('room') ? WIDTHS.room || 0 : 0,\n func: this.visibleCols.includes('func') ? WIDTHS.func || 0 : 0,\n changedFrom: this.visibleCols.includes('changedFrom') ? WIDTHS.changedFrom || 0 : 0,\n qualityCode: this.visibleCols.includes('qualityCode') ? WIDTHS.qualityCode || 0 : 0,\n timestamp: this.visibleCols.includes('timestamp') ? WIDTHS.timestamp || 0 : 0,\n lastChange: this.visibleCols.includes('lastChange') ? WIDTHS.lastChange || 0 : 0,\n val: this.visibleCols.includes('val') ? WIDTHS.val || 0 : 0,\n buttons: this.visibleCols.includes('buttons') ? WIDTHS.buttons || 0 : 0,\n };\n\n // in xs name is not visible\n if (this.columnsVisibility.name && !this.customWidth) {\n let widthSum: number = (this.columnsVisibility.id as number) || 0; // id is always visible\n if (this.state.statesView) {\n widthSum += this.columnsVisibility.changedFrom || 0;\n widthSum += this.columnsVisibility.qualityCode || 0;\n widthSum += this.columnsVisibility.timestamp || 0;\n widthSum += this.columnsVisibility.lastChange || 0;\n } else {\n widthSum += this.columnsVisibility.type || 0;\n widthSum += this.columnsVisibility.role || 0;\n widthSum += this.columnsVisibility.room || 0;\n widthSum += this.columnsVisibility.func || 0;\n }\n widthSum += this.columnsVisibility.val || 0;\n widthSum += this.columnsVisibility.buttons || 0;\n this.columnsVisibility.name = `calc(100% - ${widthSum + 5}px)`;\n this.columnsVisibility.nameHeader = `calc(100% - ${widthSum + 5 + this.state.scrollBarWidth}px)`;\n } else if (!this.customWidth) {\n // Calculate the width of ID\n let widthSum = 0; // id is always visible\n if (this.state.statesView) {\n widthSum += this.columnsVisibility.changedFrom || 0;\n widthSum += this.columnsVisibility.qualityCode || 0;\n widthSum += this.columnsVisibility.timestamp || 0;\n widthSum += this.columnsVisibility.lastChange || 0;\n } else {\n widthSum += this.columnsVisibility.type || 0;\n widthSum += this.columnsVisibility.role || 0;\n widthSum += this.columnsVisibility.room || 0;\n widthSum += this.columnsVisibility.func || 0;\n }\n widthSum += this.columnsVisibility.val || 0;\n widthSum += this.columnsVisibility.buttons || 0;\n this.columnsVisibility.id = `calc(100% - ${widthSum + 5}px)`;\n }\n } else {\n const width = this.props.width || 'lg';\n this.columnsVisibility = {\n id: columnsWidths.id || SCREEN_WIDTHS[width].idWidth,\n name: columns.includes('name')\n ? columnsWidths.name || WIDTHS.name || SCREEN_WIDTHS[width].widths.name || 0\n : 0,\n type: columns.includes('type')\n ? columnsWidths.type || WIDTHS.type || SCREEN_WIDTHS[width].widths.type || 0\n : 0,\n role: columns.includes('role')\n ? columnsWidths.role || WIDTHS.role || SCREEN_WIDTHS[width].widths.role || 0\n : 0,\n room: columns.includes('room')\n ? columnsWidths.room || WIDTHS.room || SCREEN_WIDTHS[width].widths.room || 0\n : 0,\n func: columns.includes('func')\n ? columnsWidths.func || WIDTHS.func || SCREEN_WIDTHS[width].widths.func || 0\n : 0,\n };\n let widthSum: number = this.columnsVisibility.id as number; // id is always visible\n if (this.columnsVisibility.name) {\n widthSum += this.columnsVisibility.type || 0;\n widthSum += this.columnsVisibility.role || 0;\n widthSum += this.columnsVisibility.room || 0;\n widthSum += this.columnsVisibility.func || 0;\n }\n\n if (columnsForAdmin && columns) {\n Object.keys(columnsForAdmin)\n .sort()\n .forEach(adapter =>\n columnsForAdmin[adapter].forEach(column => {\n const id = `_${adapter}_${column.path}`;\n if (columns.includes(id)) {\n const item: AdapterColumn = {\n adapter,\n id: `_${adapter}_${column.path}`,\n name: column.name,\n path: column.path.split('.'),\n pathText: column.path,\n };\n if (column.edit) {\n item.edit = true;\n if (column.type) {\n item.type = column.type as 'number' | 'boolean' | 'string';\n }\n if (column.objTypes) {\n item.objTypes = column.objTypes;\n }\n }\n\n this.adapterColumns.push(item);\n (this.columnsVisibility as Record<string, number>)[id] =\n columnsWidths[item.id] ||\n column.width ||\n SCREEN_WIDTHS[width].widths.func ||\n SCREEN_WIDTHS.xl.widths.func ||\n 0;\n widthSum += (this.columnsVisibility as Record<string, number>)[id];\n } else {\n (this.columnsVisibility as Record<string, number>)[id] = 0;\n }\n }),\n );\n }\n this.adapterColumns.sort((a, b) => (a.id > b.id ? -1 : a.id < b.id ? 1 : 0));\n this.columnsVisibility.val = columns.includes('val')\n ? columnsWidths.val || WIDTHS.val || SCREEN_WIDTHS.xl.widths.val\n : 0;\n\n // do not show buttons if not desired\n if (!this.props.columns || this.props.columns.includes('buttons')) {\n this.columnsVisibility.buttons = columns.includes('buttons')\n ? columnsWidths.buttons || WIDTHS.buttons || SCREEN_WIDTHS.xl.widths.buttons\n : 0;\n widthSum += this.columnsVisibility.buttons || 0;\n }\n\n if (this.columnsVisibility.name && !columnsWidths.name) {\n widthSum += this.columnsVisibility.val || 0;\n this.columnsVisibility.name = `calc(100% - ${widthSum}px)`;\n this.columnsVisibility.nameHeader = `calc(100% - ${widthSum + 5 + this.state.scrollBarWidth}px)`;\n } else {\n const newWidth = Object.keys(this.columnsVisibility).reduce((accumulator: number, name: string) => {\n // do not summarize strings\n if (\n name === 'id' ||\n typeof (this.columnsVisibility as Record<string, number | string>)[name] === 'string' ||\n !(this.columnsVisibility as Record<string, number | string>)[name]\n ) {\n return accumulator;\n }\n return accumulator + (this.columnsVisibility as Record<string, number>)[name];\n }, 0);\n this.columnsVisibility.id = `calc(100% - ${newWidth}px)`;\n }\n }\n }\n\n resizerMouseMove = (e: MouseEvent): void => {\n if (this.resizerActiveDiv) {\n let width: number;\n let widthNext: number;\n if (this.resizeLeft) {\n width = this.resizerOldWidth - e.clientX + this.resizerPosition;\n widthNext = this.resizerOldWidthNext + e.clientX - this.resizerPosition;\n } else {\n width = this.resizerOldWidth + e.clientX - this.resizerPosition;\n widthNext = this.resizerOldWidthNext - e.clientX + this.resizerPosition;\n }\n\n if (\n this.resizerActiveName &&\n this.resizerNextName &&\n (!this.resizerMin || width > this.resizerMin) &&\n (!this.resizerNextMin || widthNext > this.resizerNextMin)\n ) {\n this.resizerCurrentWidths[this.resizerActiveName] = width;\n this.resizerCurrentWidths[this.resizerNextName] = widthNext;\n\n this.resizerActiveDiv.style.width = `${width}px`;\n if (this.resizerNextDiv) {\n this.resizerNextDiv.style.width = `${widthNext}px`;\n }\n\n (this.columnsVisibility as Record<string, number | string>)[this.resizerActiveName] = width;\n (this.columnsVisibility as Record<string, number | string>)[this.resizerNextName] = widthNext;\n if (this.resizerNextName === 'nameHeader') {\n this.columnsVisibility.name = widthNext - this.state.scrollBarWidth;\n this.resizerCurrentWidths.name = widthNext - this.state.scrollBarWidth;\n } else if (this.resizerActiveName === 'nameHeader') {\n this.columnsVisibility.name = width - this.state.scrollBarWidth;\n this.resizerCurrentWidths.name = width - this.state.scrollBarWidth;\n }\n this.customWidth = true;\n if (this.resizeTimeout) {\n clearTimeout(this.resizeTimeout);\n }\n this.resizeTimeout = setTimeout(() => {\n this.resizeTimeout = null;\n this.forceUpdate();\n }, 200);\n }\n }\n };\n\n resizerMouseUp = (): void => {\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.table`, JSON.stringify(this.resizerCurrentWidths));\n this.resizerActiveName = null;\n this.resizerNextName = null;\n this.resizerActiveDiv = null;\n this.resizerNextDiv = null;\n window.removeEventListener('mousemove', this.resizerMouseMove);\n window.removeEventListener('mouseup', this.resizerMouseUp);\n };\n\n resizerMouseDown = (e: React.MouseEvent<HTMLDivElement>): void => {\n this.storedWidths ||= JSON.parse(JSON.stringify(SCREEN_WIDTHS[this.props.width || 'lg'])) as ScreenWidthOne;\n\n this.resizerCurrentWidths ||= {};\n this.resizerActiveDiv = (e.target as HTMLDivElement).parentNode as HTMLDivElement;\n this.resizerActiveName = this.resizerActiveDiv.dataset.name || null;\n if (this.resizerActiveName) {\n let i = 0;\n if ((e.target as HTMLDivElement).dataset.left === 'true') {\n this.resizeLeft = true;\n this.resizerNextDiv = this.resizerActiveDiv.previousElementSibling as HTMLDivElement;\n let handle: HTMLDivElement | null = this.resizerNextDiv.querySelector('.iob-ob-resize-handler');\n while (this.resizerNextDiv && !handle && i < 10) {\n this.resizerNextDiv = this.resizerNextDiv.previousElementSibling as HTMLDivElement;\n handle = this.resizerNextDiv.querySelector('.iob-ob-resize-handler');\n i++;\n }\n if (handle?.dataset.left !== 'true') {\n this.resizerNextDiv = this.resizerNextDiv.nextElementSibling as HTMLDivElement;\n }\n } else {\n this.resizeLeft = false;\n this.resizerNextDiv = this.resizerActiveDiv.nextElementSibling as HTMLDivElement;\n /* while (this.resizerNextDiv && !this.resizerNextDiv.querySelector('.iob-ob-resize-handler') && i < 10) {\n this.resizerNextDiv = this.resizerNextDiv.nextElementSibling;\n i++;\n } */\n }\n this.resizerNextName = this.resizerNextDiv.dataset.name || null;\n\n this.resizerMin = parseInt(this.resizerActiveDiv.dataset.min, 10) || 0;\n this.resizerNextMin = parseInt(this.resizerNextDiv.dataset.min, 10) || 0;\n\n this.resizerPosition = e.clientX;\n\n this.resizerCurrentWidths[this.resizerActiveName] = this.resizerActiveDiv.offsetWidth;\n this.resizerOldWidth = this.resizerCurrentWidths[this.resizerActiveName];\n\n if (this.resizerNextName) {\n this.resizerCurrentWidths[this.resizerNextName] = this.resizerNextDiv.offsetWidth;\n this.resizerOldWidthNext = this.resizerCurrentWidths[this.resizerNextName];\n }\n\n window.addEventListener('mousemove', this.resizerMouseMove);\n window.addEventListener('mouseup', this.resizerMouseUp);\n }\n };\n\n /**\n * Handle keyboard events for navigation\n */\n navigateKeyPress(event: React.KeyboardEvent): void {\n const selectedId = this.state.selectedNonObject || this.state.selected[0];\n\n if (!selectedId) {\n return;\n }\n\n if (event.code === 'ArrowUp' || event.code === 'ArrowDown') {\n event.preventDefault();\n const ids: string[] = [];\n this.tableRef.current?.childNodes.forEach((node: any) => ids.push((node as HTMLDivElement).id));\n const idx = ids.indexOf(selectedId);\n const newIdx = event.code === 'ArrowDown' ? idx + 1 : idx - 1;\n const newId = ids[newIdx] || selectedId;\n this.onSelect(newId);\n this.scrollToItem(newId);\n }\n\n if (event.code === 'ArrowRight' || event.code === 'ArrowLeft') {\n this.toggleExpanded(selectedId);\n }\n\n if (event.code === 'Delete' && this.root && selectedId) {\n const item = ObjectBrowserClass.getItemFromRoot(this.root, selectedId);\n if (item) {\n const { obj } = item.data;\n if (obj && !obj.common?.dontDelete) {\n this.showDeleteDialog({ id: selectedId, obj, item });\n }\n }\n }\n }\n\n /**\n * Find the id from the root\n *\n * @param root The current root\n * @param id The object id to find\n */\n private static getItemFromRoot(root: TreeItem, id: string): TreeItem | null {\n const idArr = id.split('.');\n let currId = '';\n let _root: TreeItem | null | undefined = root;\n\n for (let i = 0; i < idArr.length; i++) {\n const idEntry = idArr[i];\n currId = currId ? `${currId}.${idEntry}` : idEntry;\n let found = false;\n if (_root.children) {\n for (let j = 0; j < _root.children.length; j++) {\n if (_root.children[j].data.id === currId) {\n _root = _root.children[j];\n found = true;\n break;\n }\n }\n }\n if (!found) {\n return null;\n }\n }\n\n return _root || null;\n }\n\n resizerReset = (): void => {\n this.customWidth = false;\n SCREEN_WIDTHS[this.props.width || 'lg'] = JSON.parse(JSON.stringify(this.storedWidths));\n this.calculateColumnsVisibility();\n this.localStorage.removeItem(`${this.props.dialogName || 'App'}.table`);\n this.forceUpdate();\n };\n\n /**\n * Render the right handle for resizing\n */\n renderHandleRight(): JSX.Element {\n return (\n <Box\n component=\"div\"\n className=\"iob-ob-resize-handler\"\n sx={{ ...styles.resizeHandle, ...styles.resizeHandleRight }}\n onMouseDown={this.resizerMouseDown}\n onDoubleClick={this.resizerReset}\n title={this.props.t('ra_Double click to reset table layout')}\n />\n );\n }\n\n private renderHeader(): JSX.Element {\n let filterClearInValue = null;\n\n if (!this.columnsVisibility.buttons && !this.isFilterEmpty()) {\n filterClearInValue = (\n <IconButton\n onClick={() => this.clearFilter()}\n style={styles.buttonClearFilter}\n title={this.props.t('ra_Clear filter')}\n size=\"large\"\n >\n <IconClearFilter />\n <IconClose style={styles.buttonClearFilterIcon} />\n </IconButton>\n );\n }\n\n if (this.props.width === 'xs') {\n return (\n <div style={styles.headerRow}>\n <div style={{ ...styles.headerCell, width: '100%' }}>{this.getFilterInput('id')}</div>\n </div>\n );\n }\n\n return (\n <div style={styles.headerRow}>\n <div\n style={{ ...styles.headerCell, width: this.columnsVisibility.id, position: 'relative' }}\n data-min={240}\n data-name=\"id\"\n >\n {this.getFilterInput('id')}\n {this.renderHandleRight()}\n </div>\n {this.columnsVisibility.name ? (\n <div\n style={{ ...styles.headerCell, width: this.columnsVisibility.nameHeader, position: 'relative' }}\n data-min={100}\n data-name=\"nameHeader\"\n >\n {this.getFilterInput('name')}\n {this.renderHandleRight()}\n </div>\n ) : null}\n {!this.state.statesView && (\n <>\n {this.columnsVisibility.type ? (\n <div\n style={{\n ...styles.headerCell,\n width: this.columnsVisibility.type,\n position: 'relative',\n }}\n data-min={100}\n data-name=\"type\"\n >\n {this.getFilterSelectType()}\n {this.renderHandleRight()}\n </div>\n ) : null}\n {this.columnsVisibility.role ? (\n <div\n style={{\n ...styles.headerCell,\n width: this.columnsVisibility.role,\n position: 'relative',\n }}\n data-min={100}\n data-name=\"role\"\n >\n {this.getFilterSelectRole()}\n {this.renderHandleRight()}\n </div>\n ) : null}\n {this.columnsVisibility.room ? (\n <div\n style={{\n ...styles.headerCell,\n width: this.columnsVisibility.room,\n position: 'relative',\n }}\n data-min={100}\n data-name=\"room\"\n >\n {this.getFilterSelectRoom()}\n {this.renderHandleRight()}\n </div>\n ) : null}\n {this.columnsVisibility.func ? (\n <div\n style={{\n ...styles.headerCell,\n width: this.columnsVisibility.func,\n position: 'relative',\n }}\n data-min={100}\n data-name=\"func\"\n >\n {this.getFilterSelectFunction()}\n {this.renderHandleRight()}\n </div>\n ) : null}\n </>\n )}\n {this.state.statesView && (\n <>\n <div\n style={{\n ...styles.headerCell,\n ...styles.headerCellValue,\n width: this.columnsVisibility.changedFrom,\n position: 'relative',\n }}\n data-min={100}\n data-name=\"changedFrom\"\n >\n {this.props.t('ra_Changed from')}\n {this.renderHandleRight()}\n </div>\n <div\n style={{\n ...styles.headerCell,\n ...styles.headerCellValue,\n width: this.columnsVisibility.qualityCode,\n position: 'relative',\n }}\n data-min={100}\n data-name=\"qualityCode\"\n >\n {this.props.t('ra_Quality code')}\n {this.renderHandleRight()}\n </div>\n <div\n style={{\n ...styles.headerCell,\n ...styles.headerCellValue,\n width: this.columnsVisibility.timestamp,\n position: 'relative',\n }}\n data-min={100}\n data-name=\"timestamp\"\n >\n {this.props.t('ra_Timestamp')}\n {this.renderHandleRight()}\n </div>\n <div\n style={{\n ...styles.headerCell,\n ...styles.headerCellValue,\n width: this.columnsVisibility.lastChange,\n position: 'relative',\n }}\n data-min={100}\n data-name=\"lastChange\"\n >\n {this.props.t('ra_Last change')}\n {this.renderHandleRight()}\n </div>\n </>\n )}\n {this.adapterColumns.map(item => (\n <div\n style={{\n ...styles.headerCell,\n ...styles.headerCellValue,\n width: (this.columnsVisibility as Record<string, number | string>)[item.id],\n }}\n title={item.adapter}\n key={item.id}\n data-min={100}\n data-name={item.id}\n >\n {item.name}\n </div>\n ))}\n {this.columnsVisibility.val ? (\n <div\n style={{\n ...styles.headerCell,\n ...styles.headerCellValue,\n width: this.columnsVisibility.val,\n position: 'relative',\n }}\n data-min={120}\n data-name=\"val\"\n >\n {this.props.t('ra_Value')}\n {filterClearInValue}\n </div>\n ) : null}\n {this.columnsVisibility.buttons ? (\n <div\n title={this.texts.filter_custom}\n style={{ ...styles.headerCell, width: this.columnsVisibility.buttons }}\n >\n {' '}\n {this.getFilterSelectCustoms()}\n </div>\n ) : null}\n </div>\n );\n }\n\n private renderToast(): JSX.Element {\n return (\n <Snackbar\n open={!!this.state.toast}\n autoHideDuration={3000}\n onClick={() => this.setState({ toast: '' })}\n onClose={() => this.setState({ toast: '' })}\n message={this.state.toast}\n action={\n <IconButton\n size=\"small\"\n aria-label=\"close\"\n color=\"inherit\"\n onClick={() => this.setState({ toast: '' })}\n >\n <IconClose fontSize=\"small\" />\n </IconButton>\n }\n />\n );\n }\n\n /**\n * Called when component is updated.\n */\n componentDidUpdate(): void {\n if (this.tableRef.current) {\n const scrollBarWidth = this.tableRef.current.offsetWidth - this.tableRef.current.clientWidth;\n if (this.state.scrollBarWidth !== scrollBarWidth) {\n setTimeout(() => this.setState({ scrollBarWidth }), 100);\n } else if (this.selectFirst) {\n this.scrollToItem(this.selectFirst);\n }\n }\n }\n\n scrollToItem(id: string): void {\n this.selectFirst = '';\n\n const node = window.document.getElementById(id);\n node?.scrollIntoView({\n behavior: 'auto',\n block: 'center',\n inline: 'center',\n });\n }\n\n private renderCustomDialog(): JSX.Element | null {\n if (this.state.customDialog && this.props.objectCustomDialog) {\n const ObjectCustomDialog = this.props.objectCustomDialog;\n\n return (\n <ObjectCustomDialog\n reportChangedIds={(changedIds: string[]) => (this.changedIds = [...changedIds])}\n objectIDs={this.state.customDialog}\n allVisibleObjects={!!this.state.customDialogAll}\n expertMode={this.state.filter.expertMode}\n isFloatComma={\n this.props.isFloatComma === undefined\n ? this.systemConfig.common.isFloatComma\n : this.props.isFloatComma\n }\n t={this.props.t}\n lang={this.props.lang}\n socket={this.props.socket}\n themeName={this.props.themeName}\n themeType={this.props.themeType}\n theme={this.props.theme}\n objects={this.objects}\n customsInstances={this.info.customs}\n onClose={() => {\n this.pauseSubscribe(false);\n this.setState({ customDialog: null });\n if (this.changedIds) {\n this.changedIds = null;\n // update all changed IDs\n this.forceUpdate();\n }\n\n this.props.router?.doNavigate('tab-objects');\n }}\n systemConfig={this.systemConfig}\n />\n );\n }\n return null;\n }\n\n private onUpdate(valAck: {\n val: ioBroker.StateValue;\n ack: boolean;\n q: ioBroker.STATE_QUALITY[keyof ioBroker.STATE_QUALITY];\n expire: number | undefined;\n }): void {\n this.props.socket\n .setState(this.edit.id, {\n val: valAck.val,\n ack: valAck.ack,\n q: valAck.q || 0,\n expire: valAck.expire || undefined,\n })\n .catch(e => this.showError(`Cannot write value: ${e}`));\n }\n\n private renderEditObjectDialog(): JSX.Element | null {\n if (!this.state.editObjectDialog || !this.props.objectBrowserEditObject) {\n return null;\n }\n\n const ObjectBrowserEditObject = this.props.objectBrowserEditObject;\n\n return (\n <ObjectBrowserEditObject\n key={this.state.editObjectDialog}\n obj={this.objects[this.state.editObjectDialog]}\n roleArray={this.info.roles}\n objects={this.objects}\n dateFormat={this.props.dateFormat || this.systemConfig.common.dateFormat}\n isFloatComma={\n this.props.isFloatComma === undefined\n ? this.systemConfig.common.isFloatComma\n : this.props.isFloatComma\n }\n themeType={this.props.themeType}\n theme={this.props.theme}\n socket={this.props.socket}\n dialogName={this.props.dialogName}\n aliasTab={this.state.editObjectAlias}\n t={this.props.t}\n expertMode={!!this.state.filter.expertMode}\n onNewObject={(obj: ioBroker.AnyObject) =>\n this.props.socket\n .setObject(obj._id, obj)\n .then(() =>\n this.setState({ editObjectDialog: obj._id, editObjectAlias: false }, () =>\n this.onSelect(obj._id),\n ),\n )\n .catch(e => this.showError(`Cannot write object: ${e}`))\n }\n onClose={(obj?: ioBroker.AnyObject) => {\n if (obj) {\n let updateAlias: string;\n if (this.state.editObjectDialog.startsWith('alias.')) {\n if (\n JSON.stringify(this.objects[this.state.editObjectDialog].common?.alias) !==\n JSON.stringify((obj as ioBroker.StateObject).common?.alias)\n ) {\n updateAlias = this.state.editObjectDialog;\n }\n }\n\n this.props.socket\n .setObject(obj._id, obj)\n .then(() => {\n if (updateAlias && this.subscribes.includes(updateAlias)) {\n this.unsubscribe(updateAlias);\n setTimeout(() => this.subscribe(updateAlias), 100);\n }\n })\n .catch(e => this.showError(`Cannot write object: ${e}`));\n }\n this.setState({ editObjectDialog: '', editObjectAlias: false });\n }}\n width={this.props.width}\n />\n );\n }\n\n private renderViewObjectFileDialog(): JSX.Element | null {\n if (!this.state.viewFileDialog || !this.props.objectBrowserViewFile) {\n return null;\n }\n const ObjectBrowserViewFile = this.props.objectBrowserViewFile;\n\n return (\n <ObjectBrowserViewFile\n key=\"viewFile\"\n obj={this.objects[this.state.viewFileDialog]}\n socket={this.props.socket}\n t={this.props.t}\n onClose={() => this.setState({ viewFileDialog: '' })}\n />\n );\n }\n\n private renderAliasEditorDialog(): JSX.Element | null {\n if (!this.props.objectBrowserAliasEditor || !this.state.showAliasEditor) {\n return null;\n }\n const ObjectBrowserAliasEditor = this.props.objectBrowserAliasEditor;\n\n return (\n <ObjectBrowserAliasEditor\n key=\"editAlias\"\n obj={this.objects[this.state.showAliasEditor]}\n roleArray={this.info.roles}\n objects={this.objects}\n socket={this.props.socket}\n t={this.props.t}\n onClose={() => this.setState({ showAliasEditor: '' })}\n onRedirect={(id: string, timeout?: number) =>\n setTimeout(\n () =>\n this.onSelect(id, false, () =>\n this.expandAllSelected(() => {\n this.scrollToItem(id);\n setTimeout(\n () =>\n this.setState({\n editObjectDialog: id,\n showAliasEditor: '',\n editObjectAlias: true,\n }),\n 300,\n );\n }),\n ),\n timeout || 0,\n )\n }\n />\n );\n }\n\n showAddDataPointDialog(id: string, initialType: ioBroker.ObjectType, initialStateType?: ioBroker.CommonType): void {\n this.setState({\n showContextMenu: null,\n modalNewObj: {\n id,\n initialType,\n initialStateType,\n },\n });\n }\n\n /** Renders the aliases list for one state (if more than 2) */\n private renderAliasMenu(): JSX.Element | null {\n if (!this.state.aliasMenu) {\n return null;\n }\n\n return (\n <Menu\n key=\"aliasmenu\"\n open={!0}\n anchorEl={window.document.getElementById(`alias_${this.state.aliasMenu}`)}\n onClose={() => this.setState({ aliasMenu: '' })}\n >\n {this.info.aliasesMap[this.state.aliasMenu].map((aliasId, i) => (\n <MenuItem\n key={aliasId}\n onClick={() => this.onSelect(aliasId)}\n >\n <ListItemText>\n {this.renderAliasLink(this.state.aliasMenu, i, {\n '& .admin-browser-arrow': {\n mr: '8px',\n },\n })}\n </ListItemText>\n </MenuItem>\n ))}\n </Menu>\n );\n }\n\n /**\n * Renders the right mouse button context menu\n */\n private renderContextMenu(): JSX.Element | null {\n if (!this.state.showContextMenu) {\n return null;\n }\n const item = this.state.showContextMenu.item;\n const id = item.data.id;\n const items: JSX.Element[] = [];\n // const ctrl = isIOS() ? '⌘' : (this.props.lang === 'de' ? 'Strg+' : 'Ctrl+');\n\n const obj = item.data.obj;\n\n let showACL = '';\n if (this.props.objectEditOfAccessControl && this.state.filter.expertMode) {\n if (!obj) {\n showACL = '---';\n } else {\n const acl = obj.acl ? (obj.type === 'state' ? obj.acl.state : obj.acl.object) : 0;\n const aclSystemConfig =\n obj.acl &&\n (obj.type === 'state'\n ? this.systemConfig.common.defaultNewAcl.state\n : this.systemConfig.common.defaultNewAcl.object);\n showACL = Number.isNaN(Number(acl)) ? Number(aclSystemConfig).toString(16) : Number(acl).toString(16);\n }\n }\n\n const enumEditable =\n !this.props.notEditable &&\n obj &&\n (this.state.filter.expertMode || obj.type === 'state' || obj.type === 'channel' || obj.type === 'device');\n\n const createStateVisible =\n !item.data.obj ||\n item.data.obj.type === 'folder' ||\n item.data.obj.type === 'channel' ||\n item.data.obj.type === 'device' ||\n item.data.id === '0_userdata.0' ||\n item.data.obj.type === 'meta';\n const createChannelVisible =\n !item.data.obj ||\n item.data.obj.type === 'folder' ||\n item.data.obj.type === 'device' ||\n item.data.id === '0_userdata.0' ||\n item.data.obj.type === 'meta';\n const createDeviceVisible =\n !item.data.obj ||\n item.data.obj.type === 'folder' ||\n item.data.id === '0_userdata.0' ||\n item.data.obj.type === 'meta';\n const createFolderVisible =\n !item.data.obj ||\n item.data.obj.type === 'folder' ||\n item.data.id === '0_userdata.0' ||\n item.data.obj.type === 'meta';\n\n const ITEMS: Record<string, ContextMenuItem> = {\n EDIT: {\n key: '0',\n visibility: !!(\n this.props.objectBrowserEditObject &&\n obj &&\n (this.state.filter.expertMode || ObjectBrowserClass.isNonExpertId(id))\n ),\n icon: (\n <IconEdit\n fontSize=\"small\"\n style={this.styles.contextMenuEdit}\n />\n ),\n label: this.texts.editObject,\n onClick: () =>\n this.setState({ editObjectDialog: item.data.id, showContextMenu: null, editObjectAlias: false }),\n },\n EDIT_VALUE: {\n key: '1',\n visibility: !!(\n this.states &&\n !this.props.notEditable &&\n obj &&\n obj.type === 'state' &&\n // @ts-expect-error deprecated from js-controller 6\n obj.common?.type !== 'file' &&\n (this.state.filter.expertMode || obj.common.write !== false)\n ),\n icon: (\n <IconValueEdit\n fontSize=\"small\"\n style={this.styles.contextMenuEditValue}\n />\n ),\n label: this.props.t('ra_Edit value'),\n onClick: () => {\n this.edit = {\n val: this.states[id] ? this.states[id].val : '',\n q: this.states[id]?.q || 0,\n ack: false,\n id,\n };\n this.setState({ updateOpened: true, showContextMenu: null });\n },\n },\n VIEW: {\n visibility:\n !!this.props.objectBrowserViewFile &&\n obj?.type === 'state' &&\n // @ts-expect-error deprecated from js-controller 6\n obj.common?.type === 'file',\n icon: (\n <FindInPage\n fontSize=\"small\"\n style={this.styles.contextMenuView}\n />\n ),\n label: this.props.t('ra_View file'),\n onClick: () => this.setState({ viewFileDialog: obj?._id || '', showContextMenu: null }),\n },\n CUSTOM: {\n key: '2',\n visibility: !(\n this.props.objectCustomDialog &&\n this.info.hasSomeCustoms &&\n obj &&\n obj.type === 'state' &&\n // @ts-expect-error deprecated from js-controller 6\n obj.common?.type !== 'file'\n ),\n icon: (\n <IconConfig\n fontSize=\"small\"\n style={\n item.data.hasCustoms\n ? this.styles.cellButtonsButtonWithCustoms\n : styles.cellButtonsButtonWithoutCustoms\n }\n />\n ),\n style: this.styles.contextMenuCustom,\n label: this.texts.customConfig,\n onClick: () => {\n this.pauseSubscribe(true);\n this.props.router?.doNavigate(null, 'customs', id);\n this.setState({ customDialog: [id], showContextMenu: null });\n },\n },\n ACL: {\n key: '3',\n visibility: !!showACL,\n icon: showACL,\n iconStyle: { fontSize: 'smaller' },\n listItemIconStyle: this.styles.contextMenuACL,\n style: this.styles.contextMenuACL,\n label: this.props.t('ra_Edit ACL'),\n onClick: () =>\n this.setState({\n showContextMenu: null,\n modalEditOfAccess: true,\n modalEditOfAccessObjData: item.data,\n }),\n },\n ROLE: {\n key: '4',\n visibility: !!(this.state.filter.expertMode && enumEditable && this.props.objectBrowserEditRole),\n icon: (\n <BorderColor\n fontSize=\"small\"\n style={this.styles.contextMenuRole}\n />\n ),\n label: this.props.t('ra_Edit role'),\n onClick: () => this.setState({ roleDialog: item.data.id, showContextMenu: null }),\n },\n FUNCTION: {\n key: '5',\n visibility: !!enumEditable,\n icon: (\n <BedroomParent\n fontSize=\"small\"\n style={this.styles.contextMenuRole}\n />\n ),\n label: this.props.t('ra_Edit function'),\n onClick: () => {\n const enums = findEnumsForObjectAsIds(this.info, item.data.id, 'funcEnums');\n this.setState({\n enumDialogEnums: enums,\n enumDialog: {\n item,\n type: 'func',\n enumsOriginal: JSON.stringify(enums),\n },\n showContextMenu: null,\n });\n },\n },\n ROOM: {\n key: '6',\n visibility: !!enumEditable,\n icon: (\n <Construction\n fontSize=\"small\"\n style={this.styles.contextMenuRoom}\n />\n ),\n label: this.props.t('ra_Edit room'),\n onClick: () => {\n const enums = findEnumsForObjectAsIds(this.info, item.data.id, 'roomEnums');\n this.setState({\n enumDialogEnums: enums,\n enumDialog: {\n item,\n type: 'room',\n enumsOriginal: JSON.stringify(enums),\n },\n showContextMenu: null,\n });\n },\n },\n ALIAS: {\n key: '7',\n visibility: !!(\n !this.props.notEditable &&\n this.props.objectBrowserAliasEditor &&\n this.props.objectBrowserEditObject &&\n obj?.type === 'state' &&\n // @ts-expect-error deprecated from js-controller 6\n obj.common?.type !== 'file'\n ),\n icon: (\n <IconLink\n style={\n obj?.common?.alias\n ? this.styles.cellButtonsButtonWithCustoms\n : styles.cellButtonsButtonWithoutCustoms\n }\n />\n ),\n label:\n this.info.aliasesMap[item.data.id] || item.data.id.startsWith('alias.0.')\n ? this.props.t('ra_Edit alias')\n : this.props.t('ra_Create alias'),\n onClick: () => {\n if (obj?.common?.alias) {\n this.setState({ showContextMenu: null, editObjectDialog: item.data.id, editObjectAlias: true });\n } else {\n this.setState({ showContextMenu: null, showAliasEditor: item.data.id });\n }\n },\n },\n CREATE: {\n key: '+',\n visibility:\n (item.data.id.startsWith('0_userdata.0') || item.data.id.startsWith('javascript.')) &&\n (createStateVisible || createChannelVisible || createDeviceVisible || createFolderVisible),\n icon: (\n <AddIcon\n fontSize=\"small\"\n style={this.styles.cellButtonsButtonWithCustoms}\n />\n ),\n style: styles.contextMenuWithSubMenu,\n label: this.texts.create,\n subMenu: [\n {\n label: this.texts.createBooleanState,\n visibility: createStateVisible,\n icon: <IconState fontSize=\"small\" />,\n onClick: () => this.showAddDataPointDialog(item.data.id, 'state', 'boolean'),\n },\n {\n label: this.texts.createNumberState,\n visibility: createStateVisible,\n icon: <IconState fontSize=\"small\" />,\n onClick: () => this.showAddDataPointDialog(item.data.id, 'state', 'number'),\n },\n {\n label: this.texts.createStringState,\n visibility: createStateVisible,\n icon: <IconState fontSize=\"small\" />,\n onClick: () => this.showAddDataPointDialog(item.data.id, 'state', 'string'),\n },\n {\n label: this.texts.createState,\n visibility: createStateVisible,\n icon: <IconState fontSize=\"small\" />,\n onClick: () => this.showAddDataPointDialog(item.data.id, 'state'),\n },\n {\n label: this.texts.createChannel,\n visibility: createChannelVisible,\n icon: <IconChannel fontSize=\"small\" />,\n onClick: () => this.showAddDataPointDialog(item.data.id, 'channel'),\n },\n {\n label: this.texts.createDevice,\n visibility: createDeviceVisible,\n icon: <IconDevice fontSize=\"small\" />,\n onClick: () => this.showAddDataPointDialog(item.data.id, 'device'),\n },\n {\n label: this.texts.createFolder,\n icon: <IconFolder fontSize=\"small\" />,\n visibility: createFolderVisible,\n onClick: () => this.showAddDataPointDialog(item.data.id, 'folder'),\n },\n ],\n },\n RENAME: {\n key: '8',\n visibility: !!(\n !this.props.notEditable &&\n this.props.objectMoveRenameDialog &&\n !item.data.id.startsWith('system.') &&\n item.data.id.split('.').length > 2 &&\n (this.props.expertMode ||\n item.data.id.startsWith('javascript.0.') ||\n item.data.id.startsWith('0_userdata.0.'))\n ),\n icon: <DriveFileRenameOutline />,\n label: this.props.t('ra_Rename_Move_Copy'),\n onClick: () => {\n const ids = Object.keys(this.objects);\n const parentId = `${item.data.id}.`;\n this.setState({\n showContextMenu: null,\n showRenameDialog: {\n id: item.data.id,\n childrenIds: ids.filter(id => id.startsWith(parentId)),\n },\n });\n },\n },\n DELETE: {\n key: 'Delete',\n visibility: !!(\n this.props.onObjectDelete &&\n (item.children?.length || (obj && !obj.common?.dontDelete))\n ),\n icon: (\n <IconDelete\n fontSize=\"small\"\n style={this.styles.contextMenuDelete}\n />\n ),\n style: this.styles.contextMenuDelete,\n label: this.texts.deleteObject,\n onClick: () =>\n this.setState({ showContextMenu: null }, () =>\n this.showDeleteDialog({\n id,\n obj: obj || ({} as ioBroker.Object),\n item,\n }),\n ),\n },\n };\n\n Object.keys(ITEMS).forEach(key => {\n if (ITEMS[key].visibility) {\n if (ITEMS[key].subMenu) {\n items.push(\n <MenuItem\n key={key}\n href=\"\"\n onClick={(e: React.MouseEvent<HTMLAnchorElement>) =>\n this.state.showContextMenu &&\n this.setState({\n showContextMenu: {\n item: this.state.showContextMenu.item,\n position: this.state.showContextMenu.position,\n subItem: key,\n subAnchor: e.target as HTMLLIElement,\n },\n })\n }\n style={ITEMS[key].style}\n >\n <ListItemIcon style={{ ...ITEMS[key].iconStyle, ...ITEMS[key].listItemIconStyle }}>\n {ITEMS[key].icon}\n </ListItemIcon>\n <ListItemText>\n {ITEMS[key].label}\n ...\n </ListItemText>\n <div style={{ ...styles.contextMenuKeys, opacity: 1 }}>\n <ArrowRightIcon />\n </div>\n </MenuItem>,\n );\n\n if (this.state.showContextMenu?.subItem === key) {\n items.push(\n <Menu\n key=\"subContextMenu\"\n open={!0}\n anchorEl={this.state.showContextMenu.subAnchor}\n onClose={() => {\n if (this.state.showContextMenu) {\n this.setState({\n showContextMenu: {\n item: this.state.showContextMenu.item,\n position: this.state.showContextMenu.position,\n },\n });\n }\n this.contextMenu = null;\n }}\n >\n {ITEMS[key].subMenu?.map(subItem =>\n subItem.visibility ? (\n <MenuItem\n key={subItem.label}\n onClick={subItem.onClick}\n style={subItem.style}\n >\n <ListItemIcon\n style={{\n ...subItem.iconStyle,\n ...(subItem.listItemIconStyle || undefined),\n }}\n >\n {subItem.icon}\n </ListItemIcon>\n <ListItemText>{subItem.label}</ListItemText>\n </MenuItem>\n ) : null,\n )}\n </Menu>,\n );\n }\n } else {\n items.push(\n <MenuItem\n key={key}\n onClick={ITEMS[key].onClick}\n sx={ITEMS[key].style}\n >\n <ListItemIcon style={{ ...ITEMS[key].iconStyle, ...ITEMS[key].listItemIconStyle }}>\n {ITEMS[key].icon}\n </ListItemIcon>\n <ListItemText>{ITEMS[key].label}</ListItemText>\n {ITEMS[key].key ? (\n <div style={styles.contextMenuKeys}>\n {`Alt+${ITEMS[key].key === 'Delete' ? this.props.t('ra_Del') : ITEMS[key].key}`}\n </div>\n ) : null}\n </MenuItem>,\n );\n }\n }\n });\n\n if (!items.length) {\n setTimeout(() => this.setState({ showContextMenu: null }), 100);\n return null;\n }\n\n return (\n <Menu\n key=\"contextMenu\"\n open={!0}\n onKeyUp={e => {\n e.preventDefault();\n if (e.altKey) {\n Object.keys(ITEMS).forEach(key => {\n if (e.key === ITEMS[key].key && ITEMS[key].onClick) {\n ITEMS[key].onClick();\n }\n });\n }\n }}\n anchorReference=\"anchorPosition\"\n anchorPosition={this.state.showContextMenu.position}\n onClose={() => {\n this.setState({ showContextMenu: null });\n this.contextMenu = null;\n }}\n >\n {items}\n </Menu>\n );\n }\n\n private renderEditValueDialog(): JSX.Element | null {\n if (!this.state.updateOpened || !this.props.objectBrowserValue) {\n return null;\n }\n\n if (!this.edit.id) {\n console.error(`Invalid ID for edit: ${JSON.stringify(this.edit)}`);\n return null;\n }\n\n if (!this.objects[this.edit.id]) {\n console.error(`Something went wrong. Possibly the object ${this.edit.id} was deleted.`);\n return null;\n }\n\n const type = this.objects[this.edit.id].common?.type\n ? this.objects[this.edit.id].common.type\n : typeof this.edit.val;\n\n const role = this.objects[this.edit.id].common.role;\n\n const ObjectBrowserValue = this.props.objectBrowserValue;\n\n return (\n <ObjectBrowserValue\n t={this.props.t}\n lang={this.props.lang}\n type={type}\n role={role || ''}\n states={Utils.getStates(this.objects[this.edit.id] as ioBroker.StateObject)}\n themeType={this.props.themeType}\n theme={this.props.theme}\n expertMode={!!this.state.filter.expertMode}\n value={this.edit.val}\n socket={this.props.socket}\n object={this.objects[this.edit.id] as ioBroker.StateObject}\n defaultHistory={this.defaultHistory}\n dateFormat={this.props.dateFormat || this.systemConfig.common.dateFormat}\n isFloatComma={\n this.props.isFloatComma === undefined\n ? this.systemConfig.common.isFloatComma\n : this.props.isFloatComma\n }\n onClose={(res?: {\n val: ioBroker.StateValue;\n ack: boolean;\n q: ioBroker.STATE_QUALITY[keyof ioBroker.STATE_QUALITY];\n expire: number | undefined;\n }) => {\n this.setState({ updateOpened: false });\n if (res) {\n this.onUpdate(res);\n }\n }}\n width={this.props.width}\n />\n );\n }\n\n /**\n * The rendering method of this component.\n */\n render(): JSX.Element {\n this.recordStates = [];\n if (this.unsubscribeTimer) {\n clearTimeout(this.unsubscribeTimer);\n }\n\n if (this.styleTheme !== this.props.themeType) {\n this.styles = {\n cellIdIconFolder: Utils.getStyle(this.props.theme, styles.cellIdIconFolder),\n cellIdIconDocument: Utils.getStyle(this.props.theme, styles.cellIdIconDocument),\n iconDeviceError: Utils.getStyle(this.props.theme, styles.iconDeviceError),\n iconDeviceConnected: Utils.getStyle(this.props.theme, styles.iconDeviceConnected),\n iconDeviceDisconnected: Utils.getStyle(this.props.theme, styles.iconDeviceDisconnected),\n cellButtonsButtonWithCustoms: Utils.getStyle(this.props.theme, styles.cellButtonsButtonWithCustoms),\n invertedBackground: Utils.getStyle(this.props.theme, styles.invertedBackground),\n invertedBackgroundFlex: Utils.getStyle(this.props.theme, styles.invertedBackgroundFlex),\n contextMenuEdit: Utils.getStyle(this.props.theme, styles.contextMenuEdit),\n contextMenuEditValue: Utils.getStyle(this.props.theme, styles.contextMenuEditValue),\n contextMenuView: Utils.getStyle(this.props.theme, styles.contextMenuView),\n contextMenuCustom: Utils.getStyle(this.props.theme, styles.contextMenuCustom),\n contextMenuACL: Utils.getStyle(this.props.theme, styles.contextMenuACL),\n contextMenuRoom: Utils.getStyle(this.props.theme, styles.contextMenuRoom),\n contextMenuRole: Utils.getStyle(this.props.theme, styles.contextMenuRole),\n contextMenuDelete: Utils.getStyle(this.props.theme, styles.contextMenuDelete),\n filterInput: Utils.getStyle(this.props.theme, styles.headerCellInput, styles.filterInput),\n iconCopy: Utils.getStyle(\n this.props.theme,\n styles.cellButtonsValueButton,\n styles.cellButtonsValueButtonCopy,\n ),\n aliasReadWrite: Utils.getStyle(this.props.theme, styles.cellIdAlias, styles.cellIdAliasReadWrite),\n aliasAlone: Utils.getStyle(this.props.theme, styles.cellIdAlias, styles.cellIdAliasAlone),\n };\n this.styleTheme = this.props.themeType;\n }\n\n // apply filter if changed\n const jsonFilter = JSON.stringify(this.state.filter);\n\n if (this.lastAppliedFilter !== jsonFilter && this.objects && this.root) {\n const counter = { count: 0 };\n\n applyFilter(\n this.root,\n this.state.filter,\n this.props.lang,\n this.objects,\n undefined,\n counter,\n this.props.customFilter,\n this.props.types,\n );\n\n if (counter.count < 500 && !this.state.expandAllVisible) {\n setTimeout(() => this.setState({ expandAllVisible: true }));\n } else if (counter.count >= 500 && this.state.expandAllVisible) {\n setTimeout(() => this.setState({ expandAllVisible: false }));\n }\n\n this.lastAppliedFilter = jsonFilter;\n }\n\n this.unsubscribeTimer = setTimeout(() => {\n this.unsubscribeTimer = null;\n this.checkUnsubscribes();\n }, 200);\n\n if (!this.state.loaded) {\n return <CircularProgress key={`${this.props.dialogName}_c`} />;\n }\n const items = this.root ? this.renderItem(this.root, undefined) : null;\n\n return (\n <TabContainer key={this.props.dialogName}>\n <style>\n {`\n@keyframes newValueAnimation-light {\n 0% {\n color: #00f900;\n }\n 80% {\n color: #008000;\n }\n 100% {\n color: #000;\n }\n}\n@keyframes newValueAnimation-dark {\n 0% {\n color: #00f900;\n }\n 80% {\n color: #008000;\n }\n 100% {\n color: #fff;\n }\n}\n.newValueBrowser-dark {\n animation: newValueAnimation-dark 2s ease-in-out;\n}\n.newValueBrowser-light {\n animation: newValueAnimation-light 2s ease-in-out;\n}\n.highlight-link .iob-link {\n text-decoration: underline;\n cursor: pointer;\n}\n`}\n </style>\n <TabHeader>{this.getToolbar()}</TabHeader>\n <TabContent>\n {this.renderHeader()}\n <Box\n style={styles.tableDiv}\n ref={this.tableRef}\n onKeyDown={event => this.navigateKeyPress(event)}\n >\n {items}\n </Box>\n </TabContent>\n {this.renderContextMenu()}\n {this.renderAliasMenu()}\n {this.renderToast()}\n {this.renderColumnsEditCustomDialog()}\n {this.renderColumnsSelectorDialog()}\n {this.renderCustomDialog()}\n {this.renderEditValueDialog()}\n {this.renderEditObjectDialog()}\n {this.renderViewObjectFileDialog()}\n {this.renderAliasEditorDialog()}\n {this.renderEditRoleDialog()}\n {this.renderEnumDialog()}\n {this.renderErrorDialog()}\n {this.renderExportDialog()}\n {this.renderRenameDialog()}\n {this.state.modalNewObj && this.props.modalNewObject && this.props.modalNewObject(this)}\n {this.state.modalEditOfAccess &&\n this.state.modalEditOfAccessObjData &&\n this.props.modalEditOfAccessControl &&\n this.props.modalEditOfAccessControl(this, this.state.modalEditOfAccessObjData)}\n </TabContainer>\n );\n }\n}\n\nexport const ObjectBrowser = withWidth()(ObjectBrowserClass);\n"]}
1
+ {"version":3,"file":"ObjectBrowser.js","sourceRoot":"./src/","sources":["Components/ObjectBrowser.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright 2020-2025, Denis Haev <dogafox@gmail.com>\n *\n * MIT License\n *\n */\nimport React, { Component, createRef, type JSX } from 'react';\nimport SVG from 'react-inlinesvg';\n\nimport {\n Badge,\n Box,\n Button,\n Checkbox,\n CircularProgress,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n Fab,\n FormControl,\n FormControlLabel,\n Grid2,\n IconButton,\n Input,\n List,\n ListItem,\n ListItemButton,\n ListItemIcon,\n ListItemText,\n Menu,\n MenuItem,\n Paper,\n Select,\n Snackbar,\n Switch,\n TextField,\n type Theme,\n Tooltip,\n} from '@mui/material';\n\n// Icons\nimport {\n Add as AddIcon,\n ArrowRight as ArrowRightIcon,\n BedroomParent,\n BorderColor,\n Build as BuildIcon,\n CalendarToday as IconSchedule,\n Check as IconCheck,\n Close as IconClose,\n Code as IconScript,\n Construction,\n CreateNewFolder as IconFolder,\n Delete as IconDelete,\n Description as IconMeta,\n Edit as IconEdit,\n Error as IconError,\n FindInPage,\n FormatItalic as IconValueEdit,\n Info as IconInfo,\n Link as IconLink,\n ListAlt as IconEnum,\n LooksOne as LooksOneIcon,\n PersonOutlined as IconUser,\n Publish as PublishIcon,\n Refresh as RefreshIcon,\n Router as IconHost,\n Settings as IconConfig,\n SettingsApplications as IconSystem,\n DataObject as IconData,\n ShowChart as IconChart,\n SupervisedUserCircle as IconGroup,\n TextFields as TextFieldsIcon,\n ViewColumn as IconColumns,\n Wifi as IconConnection,\n WifiOff as IconDisconnected,\n DriveFileRenameOutline,\n} from '@mui/icons-material';\n\nimport { IconExpert } from '../icons/IconExpert';\nimport { IconAdapter } from '../icons/IconAdapter';\nimport { IconChannel } from '../icons/IconChannel';\nimport { IconCopy } from '../icons/IconCopy';\nimport { IconDevice } from '../icons/IconDevice';\nimport { IconDocument } from '../icons/IconDocument';\nimport { IconDocumentReadOnly } from '../icons/IconDocumentReadOnly';\nimport { IconInstance } from '../icons/IconInstance';\nimport { IconState } from '../icons/IconState';\nimport { IconClosed } from '../icons/IconClosed';\nimport { IconOpen } from '../icons/IconOpen';\nimport { IconClearFilter } from '../icons/IconClearFilter';\n\n// own\nimport type { ThemeType, ThemeName, IobTheme, Translate } from '../types';\nimport type { Router } from './Router';\nimport { Connection } from '../Connection';\nimport { Icon } from './Icon';\nimport { withWidth } from './withWidth';\nimport { Utils } from './Utils'; // @iobroker/adapter-react-v5/Components/Utils\nimport { TabContainer } from './TabContainer';\nimport { TabContent } from './TabContent';\nimport { TabHeader } from './TabHeader';\n\ndeclare global {\n interface Window {\n sparkline: {\n sparkline: (el: HTMLDivElement, data: number[]) => JSX.Element;\n };\n }\n}\ndeclare module '@mui/material/Button' {\n interface ButtonPropsColorOverrides {\n grey: true;\n }\n}\n\nconst ICON_SIZE = 24;\nconst ROW_HEIGHT = 32;\nconst ITEM_LEVEL = 16;\nconst SMALL_BUTTON_SIZE = 20;\nconst COLOR_NAME_USERDATA = (themeType: ThemeType): string => (themeType === 'dark' ? '#62ff25' : '#37c400');\nconst COLOR_NAME_ALIAS = (themeType: ThemeType): string => (themeType === 'dark' ? '#ee56ff' : '#a204b4');\nconst COLOR_NAME_JAVASCRIPT = (themeType: ThemeType): string => (themeType === 'dark' ? '#fff46e' : '#b89101');\nconst COLOR_NAME_SYSTEM = (themeType: ThemeType): string => (themeType === 'dark' ? '#ff6d69' : '#ff6d69');\nconst COLOR_NAME_SYSTEM_ADAPTER = (themeType: ThemeType): string => (themeType === 'dark' ? '#5773ff' : '#5773ff');\nconst COLOR_NAME_ERROR_DARK = '#ff413c';\nconst COLOR_NAME_ERROR_LIGHT = '#86211f';\nconst COLOR_NAME_CONNECTED_DARK = '#57ff45';\nconst COLOR_NAME_CONNECTED_LIGHT = '#098c04';\nconst COLOR_NAME_DISCONNECTED_DARK = '#f3ad11';\nconst COLOR_NAME_DISCONNECTED_LIGHT = '#6c5008';\n\ntype ObjectEventType = 'new' | 'changed' | 'deleted';\n\ninterface ObjectEvent {\n id: string;\n obj?: ioBroker.Object;\n type: ObjectEventType;\n oldObj?: ioBroker.Object;\n}\n\ninterface ObjectsWorker {\n getObjects(update?: boolean): Promise<void | Record<string, ioBroker.Object>>;\n registerHandler(cb: (events: ObjectEvent[]) => void): void;\n unregisterHandler(cb: (events: ObjectEvent[]) => void, doNotUnsubscribe?: boolean): void;\n}\n\ninterface CustomAdminColumnStored {\n path: string;\n name: string;\n objTypes?: ioBroker.ObjectType[];\n width?: number;\n edit?: boolean;\n type?: ioBroker.CommonType;\n}\n\ninterface ContextMenuItem {\n /** hotkey */\n key?: string;\n visibility: boolean;\n icon: JSX.Element | string;\n label: string;\n onClick?: () => void;\n listItemIconStyle?: React.CSSProperties;\n style?: React.CSSProperties;\n subMenu?: {\n label: string;\n visibility: boolean;\n icon: JSX.Element;\n onClick: () => void;\n iconStyle?: React.CSSProperties;\n style?: React.CSSProperties;\n listItemIconStyle?: React.CSSProperties;\n }[];\n iconStyle?: React.CSSProperties;\n}\n\nexport interface TreeItemData {\n id: string;\n name: string;\n obj?: ioBroker.Object;\n /** Object ID in lower case for filtering */\n fID?: string;\n /** translated common.name in lower case for filtering */\n fName?: string;\n /** Link to parent item */\n parent?: TreeItem;\n level?: number;\n icon?: string | JSX.Element | null;\n /** If the item existing object or generated folder */\n generated?: boolean;\n title?: string;\n /** if the item has \"write\" button (value=true, ack=false) */\n button?: boolean;\n /** If the item has read and write and is boolean */\n switch?: boolean;\n /** If the item is url linke */\n url?: boolean;\n /** if the item has custom settings in `common.custom` */\n hasCustoms?: boolean;\n /** If this item is visible */\n visible?: boolean;\n /** Is any of the children visible (not only directly children) */\n hasVisibleChildren?: boolean;\n /** Is any of the parents visible (not only directly parent) */\n hasVisibleParent?: boolean;\n /** Combination of `visible || hasVisibleChildren` */\n sumVisibility?: boolean;\n /** translated names of enumerations (functions) where this object is the member (or the parent), divided by comma */\n funcs?: string;\n /** is if the enums are from parent */\n pef?: boolean;\n /** translated names of enumerations (rooms) where this object is the member (or the parent), divided by comma */\n rooms?: string;\n /** is if the enums are from parent */\n per?: boolean;\n // language in what the rooms and functions where translated\n lang?: ioBroker.Languages;\n state?: {\n valTextRx?: JSX.Element[] | null;\n style?: React.CSSProperties;\n };\n aclTooltip?: null | JSX.Element;\n}\n\ninterface InputSelectItem {\n value: string;\n name: string;\n icon?: null | JSX.Element;\n}\n\ntype ioBrokerObjectForExport = ioBroker.Object & Partial<ioBroker.State>;\n\nexport interface ObjectBrowserCustomFilter {\n type?: ioBroker.ObjectType | ioBroker.ObjectType[];\n common?: {\n type?: ioBroker.CommonType | ioBroker.CommonType[];\n role?: string | string[];\n // If \"_\" - no custom set\n // If \"_dataSources\" - only data sources (history, sql, influxdb, ...)\n // Else \"telegram.\" or something like this\n // `true` - If common.custom not empty\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n custom?: '_' | '_dataSources' | true | string | string[];\n };\n}\n\ninterface FormatValueOptions {\n state: ioBroker.State;\n obj: ioBroker.StateObject;\n texts: Record<string, string>;\n dateFormat: string;\n isFloatComma: boolean;\n full?: boolean;\n}\n\nexport interface TreeItem {\n id?: string;\n data: TreeItemData;\n children?: TreeItem[];\n}\n\ninterface TreeInfo {\n funcEnums: string[];\n roomEnums: string[];\n roles: { role: string; type: ioBroker.CommonType }[];\n ids: string[];\n types: string[];\n objects: Record<string, ioBroker.Object>;\n customs: string[];\n enums: string[];\n hasSomeCustoms: boolean;\n // List of all aliases that shows to this state\n aliasesMap: { [stateId: string]: string[] };\n}\n\ninterface GetValueStyleOptions {\n state: ioBroker.State;\n isExpertMode?: boolean;\n isButton?: boolean;\n}\n\nconst styles: Record<string, any> = {\n toolbar: {\n minHeight: 38, // Theme.toolbar.height,\n // boxShadow: '0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12)'\n },\n toolbarButtons: {\n padding: 4,\n marginLeft: 4,\n },\n switchColumnAuto: {\n marginLeft: 16,\n },\n dialogColumns: {\n transition: 'opacity 1s',\n },\n dialogColumnsLabel: {\n fontSize: 12,\n paddingTop: 8,\n },\n columnCustom: {\n width: '100%',\n display: 'inline-block',\n },\n columnCustomEditable: {\n cursor: 'text',\n },\n columnCustom_center: {\n textAlign: 'center',\n },\n columnCustom_left: {\n textAlign: 'left',\n },\n columnCustom_right: {\n textAlign: 'right',\n },\n width100: {\n width: '100%',\n },\n transparent_10: {\n opacity: 0.1,\n },\n transparent_20: {\n opacity: 0.2,\n },\n transparent_30: {\n opacity: 0.3,\n },\n transparent_40: {\n opacity: 0.4,\n },\n transparent_50: {\n opacity: 0.5,\n },\n transparent_60: {\n opacity: 0.6,\n },\n transparent_70: {\n opacity: 0.7,\n },\n transparent_80: {\n opacity: 0.8,\n },\n transparent_90: {\n opacity: 0.9,\n },\n transparent_100: {\n opacity: 1,\n },\n headerRow: {\n paddingLeft: 8,\n height: 38,\n whiteSpace: 'nowrap',\n userSelect: 'none',\n },\n buttonClearFilter: {\n position: 'relative',\n float: 'right',\n padding: 0,\n },\n buttonClearFilterIcon: {\n zIndex: 2,\n position: 'absolute',\n top: 0,\n left: 0,\n color: '#FF0000',\n opacity: 0.7,\n },\n\n tableDiv: {\n paddingTop: 0,\n paddingLeft: 0,\n width: 'calc(100% - 8px)',\n height: 'calc(100% - 38px)',\n overflow: 'auto',\n },\n tableRow: (theme: IobTheme): any => ({\n pl: 1,\n height: ROW_HEIGHT,\n lineHeight: `${ROW_HEIGHT}px`,\n verticalAlign: 'top',\n userSelect: 'none',\n position: 'relative',\n width: '100%',\n '&:hover': {\n background: `${\n theme.palette.mode === 'dark' ? theme.palette.primary.dark : theme.palette.primary.light\n } !important`,\n color: Utils.invertColor(theme.palette.primary.main, true),\n },\n whiteSpace: 'nowrap',\n flexWrap: 'nowrap',\n }),\n tableRowLines: (theme: IobTheme): any => ({\n borderBottom: `1px solid ${theme.palette.mode === 'dark' ? '#8888882e' : '#8888882e'}`,\n '& > div': {\n borderRight: `1px solid ${theme.palette.mode === 'dark' ? '#8888882e' : '#8888882e'}`,\n },\n }),\n tableRowNoDragging: {\n cursor: 'pointer',\n },\n tableRowAlias: {\n height: ROW_HEIGHT + 10,\n },\n tableRowAliasReadWrite: {\n height: ROW_HEIGHT + 22,\n },\n tableRowFocused: (theme: IobTheme): any => ({\n '&:after': {\n content: '\"\"',\n position: 'absolute',\n top: 1,\n left: 1,\n right: 1,\n bottom: 1,\n border: theme.palette.mode ? '1px dotted #000' : '1px dotted #FFF',\n },\n }),\n checkBox: {\n padding: 0,\n },\n cellId: {\n position: 'relative',\n fontSize: '1rem',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n // verticalAlign: 'top',\n // position: 'relative',\n '& .copyButton': {\n display: 'none',\n },\n '&:hover .copyButton': {\n display: 'block',\n },\n '& .iconOwn': {\n display: 'block',\n width: ROW_HEIGHT - 4,\n height: ROW_HEIGHT - 4,\n mt: '2px',\n float: 'right',\n },\n '&:hover .iconOwn': {\n display: 'none',\n },\n '& *': {\n width: 'initial',\n },\n },\n cellIdSpan: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n // display: 'inline-block',\n // verticalAlign: 'top',\n },\n // This style is used for simple div. Do not migrate it to \"secondary.main\"\n cellIdIconFolder: (theme: IobTheme): React.CSSProperties => ({\n marginRight: 8,\n width: ROW_HEIGHT - 4,\n height: ROW_HEIGHT - 4,\n cursor: 'pointer',\n color: theme.palette.secondary.main || '#fbff7d',\n verticalAlign: 'top',\n }),\n cellIdIconDocument: {\n verticalAlign: 'middle',\n marginLeft: (ROW_HEIGHT - SMALL_BUTTON_SIZE) / 2,\n marginRight: 8,\n width: SMALL_BUTTON_SIZE,\n height: SMALL_BUTTON_SIZE,\n },\n cellIdIconOwn: {},\n cellIdTooltip: {\n fontSize: 14,\n },\n cellIdTooltipLink: {\n color: '#7ec2fd',\n '&:hover': {\n color: '#7ec2fd',\n },\n '&:visited': {\n color: '#7ec2fd',\n },\n },\n cellCopyButton: {\n width: SMALL_BUTTON_SIZE,\n height: SMALL_BUTTON_SIZE,\n top: (ROW_HEIGHT - SMALL_BUTTON_SIZE) / 2,\n opacity: 0.8,\n position: 'absolute',\n right: 3,\n },\n cellCopyButtonInDetails: {\n width: SMALL_BUTTON_SIZE,\n height: SMALL_BUTTON_SIZE,\n top: (ROW_HEIGHT - SMALL_BUTTON_SIZE) / 2,\n opacity: 0.8,\n },\n cellEditButton: {\n width: SMALL_BUTTON_SIZE,\n height: SMALL_BUTTON_SIZE,\n color: 'white',\n position: 'absolute',\n top: (ROW_HEIGHT - SMALL_BUTTON_SIZE) / 2,\n right: SMALL_BUTTON_SIZE + 3,\n opacity: 0.7,\n '&:hover': {\n opacity: 1,\n },\n },\n cellName: {\n display: 'inline-block',\n verticalAlign: 'top',\n fontSize: 14,\n ml: '5px',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n position: 'relative',\n '& .copyButton': {\n display: 'none',\n },\n '&:hover .copyButton': {\n display: 'block',\n },\n },\n cellNameWithDesc: {\n lineHeight: 'normal',\n },\n cellNameDivDiv: {},\n cellDescription: {\n fontSize: 10,\n opacity: 0.5,\n fontStyle: 'italic',\n },\n cellIdAlias: (theme: IobTheme): any => ({\n fontStyle: 'italic',\n fontSize: 12,\n opacity: 0.7,\n '&:hover': {\n color: theme.palette.mode === 'dark' ? '#009900' : '#007700',\n },\n }),\n cellIdAliasReadWriteDiv: {\n height: 24,\n marginTop: -5,\n },\n cellIdAliasAlone: {\n lineHeight: 0,\n },\n cellIdAliasReadWrite: {\n lineHeight: '12px',\n },\n cellType: {\n display: 'inline-block',\n verticalAlign: 'top',\n '& .itemIcon': {\n verticalAlign: 'middle',\n width: ICON_SIZE,\n height: ICON_SIZE,\n display: 'inline-block',\n },\n '& .itemIconFolder': {\n marginLeft: 3,\n },\n },\n cellRole: {\n display: 'inline-block',\n verticalAlign: 'top',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n },\n cellRoom: {\n display: 'inline-block',\n verticalAlign: 'top',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n },\n cellEnumParent: {\n opacity: 0.4,\n },\n cellFunc: {\n display: 'inline-block',\n verticalAlign: 'top',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n },\n cellValue: {\n display: 'inline-block',\n verticalAlign: 'top',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n },\n cellValueButton: {\n marginTop: 5,\n },\n cellValueButtonFalse: {\n opacity: 0.3,\n },\n cellAdapter: {\n display: 'inline-block',\n verticalAlign: 'top',\n },\n cellValueTooltip: {\n fontSize: 12,\n },\n cellValueText: {\n width: '100%',\n height: ROW_HEIGHT,\n fontSize: 16,\n display: 'flex',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n position: 'relative',\n verticalAlign: 'top',\n '& .copyButton': {\n display: 'none',\n },\n '&:hover .copyButton': {\n display: 'block',\n },\n },\n cellValueFile: {\n color: '#2837b9',\n },\n cellValueTooltipTitle: {\n fontStyle: 'italic',\n width: 100,\n display: 'inline-block',\n },\n cellValueTooltipValue: {\n width: 120,\n display: 'inline-block',\n // overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n },\n cellValueTooltipImage: {\n width: 100,\n height: 'auto',\n },\n cellValueTooltipBoth: {\n width: 220,\n display: 'inline-block',\n whiteSpace: 'nowrap',\n },\n cellValueTooltipBox: {\n width: 250,\n overflow: 'hidden',\n pointerEvents: 'none',\n },\n tooltip: {\n pointerEvents: 'none',\n },\n cellValueTextUnit: {\n marginLeft: 4,\n opacity: 0.8,\n display: 'inline-block',\n },\n cellValueTextState: {\n opacity: 0.7,\n },\n cellValueTooltipCopy: {\n position: 'absolute',\n bottom: 3,\n right: 3,\n },\n cellValueTooltipEdit: {\n position: 'absolute',\n bottom: 3,\n right: 15,\n },\n cellButtons: {\n display: 'inline-block',\n verticalAlign: 'top',\n },\n cellButtonsButton: {\n display: 'inline-block',\n opacity: 0.5,\n width: SMALL_BUTTON_SIZE + 4,\n height: SMALL_BUTTON_SIZE + 4,\n '&:hover': {\n opacity: 1,\n },\n p: 0,\n mt: '-2px',\n },\n cellButtonsEmptyButton: {\n fontSize: 12,\n },\n cellButtonMinWidth: {\n minWidth: 40,\n },\n cellButtonsButtonAlone: {\n ml: `${SMALL_BUTTON_SIZE + 6}px`,\n pt: 0,\n mt: '-2px',\n },\n cellButtonsButtonWithCustoms: (theme: IobTheme): React.CSSProperties => ({\n color: theme.palette.mode === 'dark' ? theme.palette.primary.main : theme.palette.secondary.main,\n }),\n cellButtonsButtonWithoutCustoms: {\n opacity: 0.2,\n },\n cellButtonsValueButton: (theme: IobTheme): any => ({\n position: 'absolute',\n top: SMALL_BUTTON_SIZE / 2 - 2,\n opacity: 0.7,\n width: SMALL_BUTTON_SIZE - 2,\n height: SMALL_BUTTON_SIZE - 2,\n color: theme.palette.action.active,\n '&:hover': {\n opacity: 1,\n },\n }),\n cellButtonsValueButtonCopy: {\n right: 8,\n cursor: 'pointer',\n },\n cellButtonsValueButtonEdit: {\n right: SMALL_BUTTON_SIZE / 2 + 16,\n },\n cellDetailsLine: {\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n height: 32,\n fontSize: 16,\n },\n cellDetailsName: {\n fontWeight: 'bold',\n marginRight: 8,\n minWidth: 80,\n },\n\n filteredOut: {\n opacity: 0.5,\n },\n filteredParentOut: {\n opacity: 0.3,\n },\n filterInput: {\n mt: 0,\n mb: 0,\n },\n selectIcon: {\n width: 24,\n height: 24,\n marginRight: 4,\n },\n selectNone: {\n opacity: 0.5,\n },\n itemSelected: (theme: IobTheme): React.CSSProperties => ({\n background: `${theme.palette.primary.main} !important`,\n color: `${Utils.invertColor(theme.palette.primary.main, true)} !important`,\n }),\n header: {\n width: '100%',\n },\n headerCell: {\n display: 'inline-block',\n verticalAlign: 'top',\n },\n headerCellValue: {\n paddingTop: 4,\n // paddingLeft: 5,\n fontSize: 16,\n },\n headerCellInput: {\n width: 'calc(100% - 5px)',\n height: ROW_HEIGHT,\n pt: 0,\n '& .itemIcon': {\n verticalAlign: 'middle',\n width: ICON_SIZE,\n height: ICON_SIZE,\n display: 'inline-block',\n },\n },\n headerCellSelectItem: {\n '& .itemIcon': {\n width: ICON_SIZE,\n height: ICON_SIZE,\n mr: '5px',\n display: 'inline-block',\n },\n },\n visibleButtons: {\n color: '#2196f3',\n opacity: 0.7,\n },\n grow: {\n flexGrow: 1,\n },\n enumIconDiv: {\n marginRight: 8,\n width: 32,\n height: 32,\n borderRadius: 8,\n background: '#FFFFFF',\n },\n enumIcon: {\n marginTop: 4,\n marginLeft: 4,\n width: 24,\n height: 24,\n },\n enumDialog: {\n overflow: 'hidden',\n },\n enumList: {\n minWidth: 250,\n height: 'calc(100% - 50px)',\n overflow: 'auto',\n },\n enumCheckbox: {\n minWidth: 0,\n },\n buttonDiv: {\n display: 'flex',\n height: '100%',\n alignItems: 'center',\n },\n aclText: {\n fontSize: 13,\n marginTop: 6,\n },\n rightsObject: {\n color: '#55ff55',\n paddingLeft: 3,\n },\n rightsState: {\n color: '#86b6ff',\n paddingLeft: 3,\n },\n textCenter: {\n padding: 12,\n textAlign: 'center',\n },\n tooltipAccessControl: {\n display: 'flex',\n flexDirection: 'column',\n },\n fontSizeTitle: {\n '@media screen and (max-width: 465px)': {\n '& *': {\n fontSize: 12,\n },\n },\n },\n draggable: {\n cursor: 'copy',\n },\n nonDraggable: {\n cursor: 'no-drop',\n },\n selectClearButton: {\n position: 'absolute',\n top: 0,\n right: 0,\n borderRadius: 5,\n backgroundColor: 'background.default',\n },\n iconDeviceConnected: (theme: IobTheme): React.CSSProperties => ({\n color: theme.palette.mode === 'dark' ? COLOR_NAME_CONNECTED_DARK : COLOR_NAME_CONNECTED_LIGHT,\n opacity: 0.8,\n position: 'absolute',\n top: 4,\n right: 32,\n width: 20,\n }),\n iconDeviceDisconnected: (theme: IobTheme): React.CSSProperties => ({\n color: theme.palette.mode === 'dark' ? COLOR_NAME_DISCONNECTED_DARK : COLOR_NAME_DISCONNECTED_LIGHT,\n opacity: 0.8,\n position: 'absolute',\n top: 4,\n right: 32,\n width: 20,\n }),\n iconDeviceError: (theme: IobTheme): React.CSSProperties => ({\n color: theme.palette.mode === 'dark' ? COLOR_NAME_ERROR_DARK : COLOR_NAME_ERROR_LIGHT,\n opacity: 0.8,\n position: 'absolute',\n top: 4,\n right: 50,\n width: 20,\n }),\n resizeHandle: {\n display: 'block',\n position: 'absolute',\n cursor: 'col-resize',\n width: 7,\n top: 2,\n bottom: 2,\n zIndex: 1,\n },\n resizeHandleRight: {\n right: 3,\n borderRight: '2px dotted #888',\n '&:hover': {\n borderColor: '#ccc',\n borderRightStyle: 'solid',\n },\n '&.active': {\n borderColor: '#517ea5',\n borderRightStyle: 'solid',\n },\n },\n invertedBackground: (theme: IobTheme): React.CSSProperties => ({\n backgroundColor: theme.palette.mode === 'dark' ? '#9a9a9a' : '#565656',\n padding: '0 3px',\n borderRadius: '2px 0 0 2px',\n }),\n invertedBackgroundFlex: (theme: IobTheme): React.CSSProperties => ({\n backgroundColor: theme.palette.mode === 'dark' ? '#9a9a9a' : '#565656',\n borderRadius: '0 2px 2px 0',\n }),\n contextMenuEdit: (theme: IobTheme): React.CSSProperties => ({\n color: theme.palette.mode === 'dark' ? '#ffee48' : '#cbb801',\n }),\n contextMenuEditValue: (theme: IobTheme): React.CSSProperties => ({\n color: theme.palette.mode === 'dark' ? '#5dff45' : '#1cd301',\n }),\n contextMenuView: (theme: IobTheme): React.CSSProperties => ({\n color: theme.palette.mode === 'dark' ? '#FFF' : '#000',\n }),\n contextMenuCustom: (theme: IobTheme): React.CSSProperties => ({\n color: theme.palette.mode === 'dark' ? '#42eaff' : '#01bbc2',\n }),\n contextMenuACL: (theme: IobTheme): React.CSSProperties => ({\n color: theme.palette.mode === 'dark' ? '#e079ff' : '#500070',\n }),\n contextMenuRoom: (theme: IobTheme): React.CSSProperties => ({\n color: theme.palette.mode === 'dark' ? '#ff9a33' : '#642a00',\n }),\n contextMenuRole: (theme: IobTheme): React.CSSProperties => ({\n color: theme.palette.mode === 'dark' ? '#ffdb43' : '#562d00',\n }),\n contextMenuDelete: (theme: IobTheme): React.CSSProperties => ({\n color: theme.palette.mode === 'dark' ? '#ff4f4f' : '#cf0000',\n }),\n contextMenuKeys: {\n marginLeft: 8,\n opacity: 0.7,\n fontSize: 'smaller',\n },\n contextMenuWithSubMenu: {\n display: 'flex',\n },\n};\n\nfunction ButtonIcon(props?: { style?: React.CSSProperties }): JSX.Element {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 436 436\"\n style={props?.style}\n width=\"24\"\n height=\"24\"\n className=\"admin-button\"\n >\n <g fill=\"currentColor\">\n <path d=\"m195.23077,24.30769c-36,3 -67,12 -96,26c-49,24 -82,61 -93,104l-3,11l-1,50c0,46 0,49 2,59l5,20c21,58 84,103 165,116c16,3 53,4 70,2c60,-6 111,-28 147,-64c21,-21 36,-49 40,-74a866,866 0 0 0 1,-104c-3,-18 -6,-28 -13,-43c-26,-52 -87,-90 -162,-101c-16,-2 -48,-3 -63,-2l1,0zm60,23c36,5 70,18 95,35c31,20 51,47 59,77c2,7 2,11 2,25c1,15 0,18 -2,26c-19,69 -104,117 -200,114c-47,-2 -90,-15 -124,-38c-31,-20 -51,-47 -59,-77c-3,-11 -4,-32 -2,-43c8,-42 41,-78 91,-101a260,260 0 0 1 140,-19l0,1zm-221,222c21,26 57,49 95,62c81,27 174,14 239,-32c14,-10 31,-27 41,-41c2,-2 2,-2 2,7c-1,23 -16,50 -38,72c-78,74 -233,74 -311,-1a121,121 0 0 1 -39,-76l0,-6l3,4l8,11z\" />\n <path d=\"m201.23077,47.30769c-40,3 -79,19 -104,44c-55,55 -38,133 37,171c52,26 122,24 172,-5c30,-17 51,-42 58,-71c3,-11 3,-34 0,-45c-6,-23 -21,-44 -40,-60l-27,-16a184,184 0 0 0 -96,-18zm30,21c56,5 100,35 112,75c4,11 4,30 0,41c-8,25 -26,45 -54,59a166,166 0 0 1 -160,-8a98,98 0 0 1 -41,-53c-5,-18 -2,-39 8,-57c23,-39 79,-62 135,-57z\" />\n </g>\n </svg>\n );\n}\n\n/** Converts ioB pattern into regex */\nexport function pattern2RegEx(pattern: string): string {\n pattern = (pattern || '').toString();\n\n const startsWithWildcard = pattern[0] === '*';\n const endsWithWildcard = pattern[pattern.length - 1] === '*';\n\n pattern = pattern.replace(/[-/\\\\^$+?.()|[\\]{}]/g, '\\\\$&').replace(/\\*/g, '.*');\n\n return (startsWithWildcard ? '' : '^') + pattern + (endsWithWildcard ? '' : '$');\n}\n\n/**\n * Function that walks through all keys of an object or array and applies a function to each key.\n */\nfunction walkThroughArray(object: any[], iteratee: (result: any[], value: any, key: number) => void): any[] {\n const copiedObject: any[] = [];\n for (let index = 0; index < object.length; index++) {\n iteratee(copiedObject, object[index], index);\n }\n return copiedObject;\n}\n\n/**\n * Function that walks through all keys of an object or array and applies a function to each key.\n */\nfunction walkThroughObject(\n object: Record<string, any>,\n iteratee: (result: Record<string, any>, value: any, key: string) => void,\n): Record<string, any> {\n const copiedObject: Record<string, any> = {};\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n iteratee(copiedObject, object[key], key);\n }\n }\n return copiedObject;\n}\n\n/**\n * Function to reduce an object primarily by a given list of keys\n */\nfunction filterObject(\n /** The objects which should be filtered */\n obj: Record<string, any> | any[],\n /** The keys which should be excluded */\n filterKeys: string[],\n /** Whether translations should be reduced to only the english value */\n excludeTranslations?: boolean,\n): Record<string, any> | any[] {\n if (Array.isArray(obj)) {\n return walkThroughArray(obj, (result: any[], value: any, key: number) => {\n if (value === undefined || value === null) {\n return;\n }\n // if the key is an object, run it through the inner function - omitFromObject\n const isObject = typeof value === 'object';\n if (excludeTranslations && isObject) {\n if (typeof value.en === 'string' && typeof value.de === 'string') {\n result[key] = value.en;\n return;\n }\n }\n result[key] = isObject ? filterObject(value, filterKeys, excludeTranslations) : value;\n });\n }\n\n return walkThroughObject(obj, (result: Record<string, any>, value: any, key: string) => {\n if (value === undefined || value === null) {\n return;\n }\n if (filterKeys.includes(key)) {\n return;\n }\n // if the key is an object, run it through the inner function - omitFromObject\n const isObject = typeof value === 'object';\n if (excludeTranslations && isObject) {\n if (typeof value.en === 'string' && typeof value.de === 'string') {\n result[key] = value.en;\n return;\n }\n }\n result[key] = isObject ? filterObject(value, filterKeys, excludeTranslations) : value;\n });\n}\n\nexport function filterRoles(\n roleArray: { role: string; type: ioBroker.CommonType }[],\n type: ioBroker.CommonType,\n defaultRoles?: { role: string; type: ioBroker.CommonType }[],\n): string[] {\n const bigRoleArray: string[] = [];\n roleArray.forEach(\n role =>\n (role.type === 'mixed' || role.type) === type &&\n !bigRoleArray.includes(role.role) &&\n bigRoleArray.push(role.role),\n );\n defaultRoles.forEach(\n role =>\n (role.type === 'mixed' || role.type) === type &&\n !bigRoleArray.includes(role.role) &&\n bigRoleArray.push(role.role),\n );\n bigRoleArray.sort();\n return bigRoleArray;\n}\n\n/**\n * Function to generate a json-file for an object and trigger download it\n */\nfunction generateFile(\n /** The desired filename */\n fileName: string,\n /** The objects which should be downloaded */\n obj: Record<string, ioBroker.Object>,\n /** Options to filter/reduce the output */\n options: {\n /** Whether the output should be beautified */\n beautify?: boolean;\n /** Whether \"system.repositories\" should be excluded */\n excludeSystemRepositories?: boolean;\n /** Whether translations should be reduced to only the english value */\n excludeTranslations?: boolean;\n },\n): void {\n const el = document.createElement('a');\n const filterKeys = [];\n if (options.excludeSystemRepositories) {\n filterKeys.push('system.repositories');\n }\n const filteredObject =\n filterKeys.length > 0 || options.excludeTranslations\n ? filterObject(obj, filterKeys, options.excludeTranslations)\n : obj;\n const data = options.beautify ? JSON.stringify(filteredObject, null, 2) : JSON.stringify(filteredObject);\n el.setAttribute('href', `data:application/json;charset=utf-8,${encodeURIComponent(data)}`);\n el.setAttribute('download', fileName);\n\n el.style.display = 'none';\n document.body.appendChild(el);\n\n el.click();\n\n document.body.removeChild(el);\n}\n\n// d=data, t=target, s=start, e=end, m=middle\nfunction binarySearch(list: string[], find: string, _start?: number, _end?: number): boolean {\n _start ||= 0;\n if (_end === undefined) {\n _end = list.length - 1;\n if (!_end) {\n return list[0] === find;\n }\n }\n const middle = Math.floor((_start + _end) / 2);\n if (find === list[middle]) {\n return true;\n }\n if (_end - 1 === _start) {\n return list[_start] === find || list[_end] === find;\n }\n if (find > list[middle]) {\n return binarySearch(list, find, middle, _end);\n }\n if (find < list[middle]) {\n return binarySearch(list, find, _start, middle);\n }\n return false;\n}\n\nfunction getName(name: ioBroker.StringOrTranslated, lang: ioBroker.Languages): string {\n if (typeof name === 'object') {\n if (!name) {\n return '';\n }\n return (name[lang] || name.en || '').toString();\n }\n\n return name ? name.toString() : '';\n}\n\nexport function getSelectIdIconFromObjects(\n objects: Record<string, ioBroker.Object>,\n id: string,\n lang: ioBroker.Languages,\n imagePrefix?: string,\n): string | JSX.Element | null {\n // `admin` has prefix '.' and `web` has '../..'\n imagePrefix ||= '.'; // http://localhost:8081';\n let src: string | JSX.Element = '';\n const _id_ = `system.adapter.${id}`;\n const aIcon = id && objects[_id_]?.common?.icon;\n if (aIcon) {\n // if not BASE64\n if (!aIcon.startsWith('data:image/')) {\n if (aIcon.includes('.')) {\n const name = objects[_id_].common.name;\n if (typeof name === 'object') {\n src = `${imagePrefix}/adapter/${name[lang] || name.en}/${aIcon}`;\n } else {\n src = `${imagePrefix}/adapter/${name}/${aIcon}`;\n }\n } else if (aIcon && aIcon.length < 3) {\n return aIcon; // utf-8\n } else {\n return null; // '<i class=\"material-icons iob-list-icon\">' + objects[_id_].common.icon + '</i>';\n }\n } else if (aIcon.startsWith('data:image/svg')) {\n src = (\n <SVG\n className=\"iconOwn\"\n src={aIcon}\n width={28}\n height={28}\n />\n );\n } else {\n src = aIcon;\n }\n } else {\n const common = objects[id] && objects[id].common;\n\n if (common) {\n const cIcon = common.icon;\n if (cIcon) {\n if (!cIcon.startsWith('data:image/')) {\n if (cIcon.includes('.')) {\n let instance;\n if (objects[id].type === 'instance' || objects[id].type === 'adapter') {\n if (typeof common.name === 'object') {\n src = `${imagePrefix}/adapter/${common.name[lang] || common.name.en}/${cIcon}`;\n } else {\n src = `${imagePrefix}/adapter/${common.name}/${cIcon}`;\n }\n } else if (id && id.startsWith('system.adapter.')) {\n instance = id.split('.', 3);\n if (cIcon[0] === '/') {\n instance[2] += cIcon;\n } else {\n instance[2] += `/${cIcon}`;\n }\n src = `${imagePrefix}/adapter/${instance[2]}`;\n } else {\n instance = id.split('.', 2);\n if (cIcon[0] === '/') {\n instance[0] += cIcon;\n } else {\n instance[0] += `/${cIcon}`;\n }\n src = `${imagePrefix}/adapter/${instance[0]}`;\n }\n } else if (aIcon && aIcon.length < 3) {\n return aIcon; // utf-8\n } else {\n return null;\n }\n } else if (cIcon.startsWith('data:image/svg')) {\n // if base 64 image\n src = (\n <SVG\n className=\"iconOwn\"\n src={cIcon}\n width={28}\n height={28}\n />\n );\n } else {\n src = cIcon;\n }\n }\n }\n }\n\n return src || null;\n}\n\nfunction applyFilter(\n item: TreeItem,\n filters: ObjectBrowserFilter,\n lang: ioBroker.Languages,\n objects: Record<string, ioBroker.Object>,\n context?: {\n id?: string;\n idRx?: RegExp;\n name?: string;\n nameRx?: RegExp;\n type?: string;\n custom?: string;\n role?: string;\n room?: string[];\n func?: string[];\n },\n counter?: { count: number },\n customFilter?: ObjectBrowserCustomFilter,\n selectedTypes?: string[],\n _depth?: number,\n): boolean {\n _depth ||= 0;\n let filteredOut = false;\n if (!context) {\n context = {};\n if (filters.id) {\n const id = filters.id.toLowerCase();\n if (id.includes('*')) {\n context.idRx = new RegExp(pattern2RegEx(filters.id), 'i');\n } else {\n context.id = id;\n }\n }\n if (filters.name) {\n const name = filters.name.toLowerCase();\n if (name.includes('*')) {\n context.nameRx = new RegExp(pattern2RegEx(name), 'i');\n } else {\n context.name = name;\n }\n }\n if (filters.type) {\n context.type = filters.type.toLowerCase();\n }\n if (filters.custom) {\n context.custom = filters.custom.toLowerCase();\n }\n if (filters.role) {\n context.role = filters.role.toLowerCase();\n }\n if (filters.room) {\n context.room = (objects[filters.room] as ioBroker.EnumObject)?.common?.members || [];\n }\n if (filters.func) {\n context.func = (objects[filters.func] as ioBroker.EnumObject)?.common?.members || [];\n }\n }\n\n const data = item.data;\n\n if (data && data.id) {\n const common: ioBroker.StateCommon = data.obj?.common as ioBroker.StateCommon;\n\n if (customFilter) {\n if (customFilter.type) {\n if (typeof customFilter.type === 'string') {\n if (!data.obj || customFilter.type !== data.obj.type) {\n filteredOut = true;\n }\n } else if (Array.isArray(customFilter.type)) {\n if (!data.obj || !customFilter.type.includes(data.obj.type)) {\n filteredOut = true;\n }\n }\n }\n if (!filteredOut && customFilter.common?.type) {\n if (!common?.type) {\n filteredOut = true;\n } else if (typeof customFilter.common.type === 'string') {\n if (customFilter.common.type !== common.type) {\n filteredOut = true;\n }\n } else if (Array.isArray(customFilter.common.type)) {\n if (!customFilter.common.type.includes(common.type)) {\n filteredOut = true;\n }\n }\n }\n if (!filteredOut && customFilter.common?.role) {\n if (!common?.role) {\n filteredOut = true;\n } else if (typeof customFilter.common.role === 'string') {\n if (common.role.startsWith(customFilter.common.role)) {\n filteredOut = true;\n }\n } else if (Array.isArray(customFilter.common.role)) {\n if (!customFilter.common.role.find(role => common.role.startsWith(role))) {\n filteredOut = true;\n }\n }\n }\n\n if (!filteredOut && customFilter.common?.custom === '_' && common?.custom) {\n filteredOut = true;\n } else if (!filteredOut && customFilter.common?.custom && customFilter.common?.custom !== '_') {\n const filterOfCustom = customFilter.common.custom as string | string[] | boolean;\n if (!common?.custom) {\n filteredOut = true;\n } else if (filterOfCustom === '_dataSources') {\n // TODO: make it configurable\n if (\n !Object.keys(common.custom).find(\n id => id.startsWith('history.') || id.startsWith('sql.') || id.startsWith('influxdb.'),\n )\n ) {\n filteredOut = true;\n }\n } else if (Array.isArray(filterOfCustom)) {\n // here are ['influxdb.', 'telegram.']\n const customs = Object.keys(common.custom); // here are ['influxdb.0', 'telegram.2']\n if (filterOfCustom.find(cst => customs.find(id => id.startsWith(cst)))) {\n filteredOut = true;\n }\n } else if (\n filterOfCustom !== true &&\n !Object.keys(common.custom).find(id => id.startsWith(filterOfCustom as string))\n ) {\n filteredOut = true;\n }\n }\n }\n\n if (!filteredOut && !filters.expertMode) {\n filteredOut =\n data.id === 'system' ||\n data.id === 'enum' ||\n // (data.obj && data.obj.type === 'meta') ||\n data.id.startsWith('system.') ||\n data.id.startsWith('enum.') ||\n data.id.startsWith('_design/') ||\n data.id.endsWith('.admin') ||\n !!common?.expert;\n }\n if (!filteredOut && context.id) {\n if (data.fID === undefined) {\n data.fID = data.id.toLowerCase();\n }\n filteredOut = !data.fID.includes(context.id);\n }\n if (!filteredOut && context.idRx) {\n filteredOut = !context.idRx.test(data.id);\n }\n if (!filteredOut && context.name) {\n if (common) {\n if (data.fName === undefined) {\n data.fName = getName(common.name, lang) || '';\n data.fName = data.fName.toLowerCase();\n }\n filteredOut = !data.fName.includes(context.name);\n } else {\n filteredOut = true;\n }\n }\n if (!filteredOut && context.nameRx) {\n if (common) {\n if (data.fName === undefined) {\n data.fName = getName(common.name, lang) || '';\n data.fName = data.fName.toLowerCase();\n }\n filteredOut = !context.nameRx.test(data.fName);\n }\n }\n\n if (!filteredOut && filters.role && common) {\n if (common) {\n filteredOut = !(typeof common.role === 'string' && common.role.startsWith(context.role));\n } else {\n filteredOut = true;\n }\n }\n if (!filteredOut && context.room) {\n filteredOut = !context.room.find(id => id === data.id || data.id.startsWith(`${id}.`));\n }\n if (!filteredOut && context.func) {\n filteredOut = !context.func.find(id => id === data.id || data.id.startsWith(`${id}.`));\n }\n if (!filteredOut && context.type) {\n filteredOut = !(data.obj && data.obj.type && data.obj.type === context.type);\n }\n if (!filteredOut && selectedTypes) {\n filteredOut = !(data.obj && data.obj.type && selectedTypes.includes(data.obj.type));\n }\n if (!filteredOut && context.custom) {\n if (common) {\n if (context.custom === '_') {\n filteredOut = !!common.custom;\n } else {\n filteredOut = !common.custom?.[context.custom];\n }\n } else {\n filteredOut = true;\n }\n }\n }\n\n data.visible = !filteredOut;\n\n data.hasVisibleChildren = false;\n if (item.children && _depth < 20) {\n item.children.forEach(_item => {\n const visible = applyFilter(\n _item,\n filters,\n lang,\n objects,\n context,\n counter,\n customFilter,\n selectedTypes,\n _depth + 1,\n );\n if (visible) {\n data.hasVisibleChildren = true;\n }\n });\n }\n\n // const visible = data.visible || data.hasVisibleChildren;\n data.sumVisibility = data.visible || data.hasVisibleChildren; // || data.hasVisibleParent;\n if (counter && data.sumVisibility) {\n counter.count++;\n }\n\n // show all children of visible object with opacity 0.5\n if (data.id && data.sumVisibility && item.children) {\n item.children.forEach(_item => (_item.data.hasVisibleParent = true));\n }\n\n return data.visible || data.hasVisibleChildren;\n}\n\nfunction getVisibleItems(\n item: TreeItem,\n type: ioBroker.ObjectType,\n objects: Record<string, ioBroker.Object>,\n _result?: string[],\n): string[] {\n _result ||= [];\n const data = item.data;\n if (data.sumVisibility) {\n if (data.id && objects[data.id] && (!type || objects[data.id].type === type)) {\n _result.push(data.id);\n }\n item.children?.forEach(_item => getVisibleItems(_item, type, objects, _result));\n }\n\n return _result;\n}\n\nfunction getSystemIcon(\n objects: Record<string, ioBroker.Object>,\n id: string,\n level: number,\n themeType: ThemeType,\n lang: ioBroker.Languages,\n imagePrefix?: string,\n): string | JSX.Element | null {\n let icon;\n\n // system or design has special icons\n if (id === 'alias' || id === 'alias.0') {\n icon = (\n <IconLink\n className=\"iconOwn\"\n style={{ color: COLOR_NAME_ALIAS(themeType) }}\n />\n );\n } else if (id === '0_userdata' || id === '0_userdata.0') {\n icon = (\n <IconData\n className=\"iconOwn\"\n style={{ color: COLOR_NAME_USERDATA(themeType) }}\n />\n );\n } else if (id.startsWith('_design/') || id === 'system') {\n icon = (\n <IconSystem\n className=\"iconOwn\"\n style={{ color: COLOR_NAME_SYSTEM(themeType) }}\n />\n );\n } else if (id === 'system.adapter') {\n icon = (\n <IconSystem\n className=\"iconOwn\"\n style={{ color: COLOR_NAME_SYSTEM_ADAPTER(themeType) }}\n />\n );\n } else if (id === 'system.group') {\n icon = <IconGroup className=\"iconOwn\" />;\n } else if (id === 'system.user') {\n icon = <IconUser className=\"iconOwn\" />;\n } else if (id === 'system.host') {\n icon = <IconHost className=\"iconOwn\" />;\n } else if (id.endsWith('.connection') || id.endsWith('.connected')) {\n icon = <IconConnection className=\"iconOwn\" />;\n } else if (id.endsWith('.info')) {\n icon = <IconInfo className=\"iconOwn\" />;\n } else if (objects[id] && objects[id].type === 'meta') {\n icon = <IconMeta className=\"iconOwn\" />;\n } else if (level < 2) {\n // detect \"cloud.0\"\n if (objects[`system.adapter.${id}`]) {\n icon = getSelectIdIconFromObjects(objects, `system.adapter.${id}`, lang, imagePrefix);\n }\n }\n\n return icon || null;\n}\n\nfunction getObjectTooltip(data: TreeItemData, lang: ioBroker.Languages): string | null {\n if (data?.obj?.common?.desc) {\n return getName(data.obj.common.desc, lang) || null;\n }\n\n return null;\n}\n\nfunction getIdFieldTooltip(data: TreeItemData, lang: ioBroker.Languages): JSX.Element {\n const tooltip = getObjectTooltip(data, lang);\n if (tooltip?.startsWith('http')) {\n return (\n <Box\n component=\"a\"\n sx={styles.cellIdTooltipLink}\n href={tooltip}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n {tooltip}\n </Box>\n );\n }\n return <span style={styles.cellIdTooltip}>{tooltip || data.id || ''}</span>;\n}\n\nfunction buildTree(\n objects: Record<string, ioBroker.Object>,\n options: {\n imagePrefix?: string;\n root?: string;\n lang: ioBroker.Languages;\n themeType: ThemeType;\n },\n): { root: TreeItem; info: TreeInfo } {\n const imagePrefix = options.imagePrefix || '.';\n\n let ids = Object.keys(objects);\n\n ids.sort((a, b) => {\n if (a === b) {\n return 0;\n }\n a = a.replace(/\\./g, '!!!');\n b = b.replace(/\\./g, '!!!');\n if (a > b) {\n return 1;\n }\n return -1;\n });\n\n if (options.root) {\n ids = ids.filter(id => id === options.root || id.startsWith(`${options.root}.`));\n }\n\n // find empty nodes and create names for it\n let currentPathArr: string[] = [];\n let currentPath = '';\n let currentPathLen = 0;\n const root: TreeItem = {\n data: {\n name: '',\n id: '',\n },\n children: [],\n };\n\n const info: TreeInfo = {\n funcEnums: [],\n roomEnums: [],\n roles: [],\n ids: [],\n types: [],\n objects,\n customs: ['_'],\n enums: [],\n hasSomeCustoms: false,\n aliasesMap: {},\n };\n\n let cRoot: TreeItem = root;\n\n for (let i = 0; i < ids.length; i++) {\n const id = ids[i];\n if (!id) {\n continue;\n }\n const obj = objects[id];\n const parts = id.split('.');\n\n if (obj.type && !info.types.includes(obj.type)) {\n info.types.push(obj.type);\n }\n\n if (obj) {\n const common = obj.common;\n const role = common?.role;\n if (role && !info.roles.find(it => it.role === role)) {\n if (typeof role !== 'string') {\n console.warn(`Invalid role type \"${typeof role}\" in \"${obj._id}\"`);\n } else {\n info.roles.push({ role, type: common.type });\n }\n } else if (id.startsWith('enum.rooms.')) {\n info.roomEnums.push(id);\n info.enums.push(id);\n } else if (id.startsWith('enum.functions.')) {\n info.funcEnums.push(id);\n info.enums.push(id);\n } else if (obj.type === 'enum') {\n info.enums.push(id);\n } else if (obj.type === 'instance' && common && (common.supportCustoms || common.adminUI?.custom)) {\n info.hasSomeCustoms = true;\n info.customs.push(id.substring('system.adapter.'.length));\n }\n\n // Build a map of aliases\n if (id.startsWith('alias.') && obj.common.alias?.id) {\n if (typeof obj.common.alias.id === 'string') {\n const usedId = obj.common.alias.id;\n if (!info.aliasesMap[usedId]) {\n info.aliasesMap[usedId] = [id];\n } else if (!info.aliasesMap[usedId].includes(id)) {\n info.aliasesMap[usedId].push(id);\n }\n } else {\n const readId = obj.common.alias.id.read;\n if (readId) {\n if (!info.aliasesMap[readId]) {\n info.aliasesMap[readId] = [id];\n } else if (!info.aliasesMap[readId].includes(id)) {\n info.aliasesMap[readId].push(id);\n }\n }\n const writeId = obj.common.alias.id.write;\n if (writeId) {\n if (!info.aliasesMap[writeId]) {\n info.aliasesMap[writeId] = [id];\n } else if (!info.aliasesMap[writeId].includes(id)) {\n info.aliasesMap[writeId].push(id);\n }\n }\n }\n }\n }\n\n info.ids.push(id);\n\n let repeat;\n\n // if next level\n do {\n repeat = false;\n\n // If the current level is still OK, and we can add ID to children\n if (!currentPath || id.startsWith(`${currentPath}.`)) {\n // if more than one level added\n if (parts.length - currentPathLen > 1) {\n let curPath = currentPath;\n // generate missing levels\n for (let k = currentPathLen; k < parts.length - 1; k++) {\n curPath += (curPath ? '.' : '') + parts[k];\n // level does not exist\n if (!binarySearch(info.ids, curPath)) {\n const _cRoot: TreeItem = {\n data: {\n name: parts[k],\n parent: cRoot,\n id: curPath,\n obj: objects[curPath],\n level: k,\n icon: getSystemIcon(\n objects,\n curPath,\n k,\n options.themeType,\n options.lang,\n imagePrefix,\n ),\n generated: true,\n },\n };\n\n cRoot.children ||= [];\n cRoot.children.push(_cRoot);\n cRoot = _cRoot;\n info.ids.push(curPath); // IDs will be added by alphabet\n } else if (cRoot.children) {\n cRoot = cRoot.children.find(item => item.data.name === parts[k]);\n }\n }\n }\n\n const _cRoot: TreeItem = {\n data: {\n name: parts[parts.length - 1],\n title: getName(obj?.common?.name, options.lang),\n obj,\n parent: cRoot,\n icon:\n getSelectIdIconFromObjects(objects, id, options.lang, imagePrefix) ||\n getSystemIcon(objects, id, 0, options.themeType, options.lang, imagePrefix),\n id,\n hasCustoms: !!(obj.common?.custom && Object.keys(obj.common.custom).length),\n level: parts.length - 1,\n generated: false,\n button:\n obj.type === 'state' &&\n !!obj.common?.role &&\n typeof obj.common.role === 'string' &&\n obj.common.role.startsWith('button') &&\n obj.common?.write !== false,\n switch:\n obj.type === 'state' &&\n obj.common?.type === 'boolean' &&\n obj.common?.write !== false &&\n obj.common?.read !== false,\n url:\n !!obj.common?.role &&\n typeof obj.common.role === 'string' &&\n obj.common.role.startsWith('url'),\n },\n };\n\n cRoot.children ||= [];\n cRoot.children.push(_cRoot);\n cRoot = _cRoot;\n\n currentPathLen = parts.length;\n currentPathArr = parts;\n currentPath = id;\n } else {\n let u = 0;\n\n while (currentPathArr[u] === parts[u]) {\n u++;\n }\n\n if (u > 0) {\n let move = currentPathArr.length;\n currentPathArr = currentPathArr.splice(0, u);\n currentPathLen = u;\n currentPath = currentPathArr.join('.');\n while (move > u) {\n if (cRoot.data.parent) {\n cRoot = cRoot.data.parent;\n } else {\n console.error(`Parent is null for ${id} ${currentPath} ${currentPathArr.join('.')}`);\n }\n move--;\n }\n } else {\n cRoot = root;\n currentPathArr = [];\n currentPath = '';\n currentPathLen = 0;\n }\n repeat = true;\n }\n } while (repeat);\n }\n\n info.roomEnums.sort((a, b) => {\n const aName: string = getName(objects[a]?.common?.name, options.lang) || a.split('.').pop();\n const bName: string = getName(objects[b]?.common?.name, options.lang) || b.split('.').pop();\n if (aName > bName) {\n return 1;\n }\n if (aName < bName) {\n return -1;\n }\n return 0;\n });\n info.funcEnums.sort((a, b) => {\n const aName: string = getName(objects[a]?.common?.name, options.lang) || a.split('.').pop();\n const bName: string = getName(objects[b]?.common?.name, options.lang) || b.split('.').pop();\n if (aName > bName) {\n return 1;\n }\n if (aName < bName) {\n return -1;\n }\n return 0;\n });\n info.roles.sort((a, b) => a.role.localeCompare(b.role));\n info.types.sort();\n\n return { info, root };\n}\n\nfunction findNode(root: TreeItem, id: string, _parts?: string[], _path?: string, _level?: number): TreeItem | null {\n if (root.data.id === id) {\n return root;\n }\n if (!_parts) {\n _parts = id.split('.');\n _level = 0;\n _path = _parts[_level];\n }\n if (!root.children && root.data.id !== id) {\n return null;\n }\n let found;\n if (root.children) {\n for (let i = 0; i < root.children.length; i++) {\n const _id = root.children[i].data.id;\n if (_id === _path) {\n found = root.children[i];\n break;\n } else if (_id > _path) {\n break;\n }\n }\n }\n if (found) {\n _level ||= 0;\n return findNode(found, id, _parts, `${_path}.${_parts[_level + 1]}`, _level + 1);\n }\n\n return null;\n}\n\nfunction findRoomsForObject(\n info: TreeInfo,\n id: string,\n lang: ioBroker.Languages,\n rooms?: string[],\n): { rooms: string[]; per: boolean } {\n if (!id) {\n return { rooms: [], per: false };\n }\n rooms ||= [];\n for (const room of info.roomEnums) {\n const common = info.objects[room]?.common;\n\n if (!common) {\n continue;\n }\n\n const name = getName(common.name, lang);\n\n if (common.members?.includes(id) && !rooms.includes(name)) {\n rooms.push(name);\n }\n }\n\n let ownEnums;\n\n // Check parent\n const parts = id.split('.');\n parts.pop();\n id = parts.join('.');\n if (info.objects[id]) {\n ownEnums = rooms.length;\n findRoomsForObject(info, id, lang, rooms);\n }\n\n return { rooms, per: !ownEnums }; // per is if the enums are from parent\n}\n\nfunction findEnumsForObjectAsIds(\n info: TreeInfo,\n id: string,\n enumName: 'roomEnums' | 'funcEnums',\n funcs?: string[],\n): string[] {\n if (!id) {\n return [];\n }\n funcs ||= [];\n for (let i = 0; i < info[enumName].length; i++) {\n const common = info.objects[info[enumName][i]]?.common;\n if (common?.members?.includes(id) && !funcs.includes(info[enumName][i])) {\n funcs.push(info[enumName][i]);\n }\n }\n funcs.sort();\n\n return funcs;\n}\n\nfunction findFunctionsForObject(\n info: TreeInfo,\n id: string,\n lang: ioBroker.Languages,\n funcs?: string[],\n): { funcs: string[]; pef: boolean } {\n if (!id) {\n return { funcs: [], pef: false };\n }\n funcs ||= [];\n for (let i = 0; i < info.funcEnums.length; i++) {\n const common = info.objects[info.funcEnums[i]]?.common;\n\n if (!common) {\n continue;\n }\n\n const name = getName(common.name, lang);\n if (common.members?.includes(id) && !funcs.includes(name)) {\n funcs.push(name);\n }\n }\n\n let ownEnums;\n\n // Check parent\n const parts = id.split('.');\n parts.pop();\n id = parts.join('.');\n if (info.objects[id]) {\n ownEnums = funcs.length;\n findFunctionsForObject(info, id, lang, funcs);\n }\n\n return { funcs, pef: !ownEnums };\n}\n\n/*\nfunction quality2text(q) {\n if (!q) {\n return 'ok';\n }\n const custom = q & 0xFFFF0000;\n let text = '';\n if (q & 0x40) text += 'device';\n if (q & 0x80) text += 'sensor';\n if (q & 0x01) text += ' bad';\n if (q & 0x02) text += ' not connected';\n if (q & 0x04) text += ' error';\n\n return text + (custom ? '|0x' + (custom >> 16).toString(16).toUpperCase() : '') + ' [0x' + q.toString(16).toUpperCase() + ']';\n}\n*/\n\n/**\n * Format a state value for visualization\n */\nfunction formatValue(options: FormatValueOptions): {\n valText: {\n /** value as string */\n v: string;\n /** value unit */\n u?: string;\n /** value isn't replaced by `common.states` */\n s?: string;\n /** Text for copy to clipboard */\n c?: string;\n };\n valFull:\n | {\n /** label */\n t: string;\n /** value */\n v: string;\n /** no break */\n nbr?: boolean;\n }[]\n | undefined;\n fileViewer: 'image' | 'text' | 'json' | 'html' | 'pdf' | 'audio' | 'video' | undefined;\n} {\n const { dateFormat, state, isFloatComma, texts, obj } = options;\n const states = Utils.getStates(obj);\n const isCommon = obj.common;\n let fileViewer: 'image' | 'text' | 'json' | 'html' | 'pdf' | 'audio' | 'video' | undefined;\n\n let v: any =\n // @ts-expect-error deprecated from js-controller 6\n isCommon?.type === 'file'\n ? '[file]'\n : !state || state.val === null\n ? '(null)'\n : state.val === undefined\n ? '[undef]'\n : state.val;\n\n const type = typeof v;\n\n if (isCommon?.role && typeof isCommon.role === 'string' && isCommon.role.match(/^value\\.time|^date/)) {\n if (v && typeof v === 'string') {\n if (Utils.isStringInteger(v)) {\n // we assume a unix ts\n v = new Date(parseInt(v, 10)).toString();\n } else {\n // check if parsable by new date\n try {\n const parsedDate = new Date(v);\n\n if (Utils.isValidDate(parsedDate)) {\n v = parsedDate.toString();\n }\n } catch {\n // ignore\n }\n }\n } else {\n if (v > 946681200 && v < 946681200000) {\n // '2000-01-01T00:00:00' => 946681200000\n v *= 1_000; // maybe the time is in seconds (UNIX time)\n }\n // \"null\" and undefined could not be here. See `let v = (isCommon && isCommon.type === 'file') ....` above\n v = v ? new Date(v).toString() : v;\n }\n } else if (isCommon?.role && typeof isCommon.role === 'string' && isCommon.role.match(/^value\\.duration/)) {\n // Format duration values in HH:mm:ss format\n if (typeof v === 'number' && v >= 0) {\n const hours = Math.floor(v / 3600);\n const minutes = Math.floor((v % 3600) / 60);\n const seconds = Math.floor(v % 60);\n v = `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;\n } else if (typeof v === 'string' && Utils.isStringInteger(v)) {\n const numValue = parseInt(v, 10);\n if (numValue >= 0) {\n const hours = Math.floor(numValue / 3600);\n const minutes = Math.floor((numValue % 3600) / 60);\n const seconds = Math.floor(numValue % 60);\n v = `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;\n }\n }\n } else {\n if (type === 'number') {\n if (!Number.isInteger(v)) {\n v = Math.round(v * 100_000_000) / 100_000_000; // remove 4.00000000000000001\n if (isFloatComma) {\n v = v.toString().replace('.', ',');\n }\n }\n } else if (type === 'object') {\n v = JSON.stringify(v);\n } else if (type !== 'string') {\n v = v.toString();\n } else if (v.startsWith('data:image/')) {\n fileViewer = 'image';\n }\n\n if (typeof v !== 'string') {\n v = v.toString();\n }\n }\n\n const valText: {\n /** value as string */\n v: string;\n /** value unit */\n u?: string;\n /** value not replaced by `common.states` */\n s?: string;\n /** Text for copy to clipboard */\n c?: string;\n } = { v: v as string };\n\n // try to replace number with \"common.states\"\n if (states && states[v] !== undefined) {\n if (v !== states[v]) {\n valText.s = v;\n v = states[v];\n valText.v = v;\n }\n }\n\n if (valText.v?.length > 40) {\n valText.c = valText.v;\n valText.v = `${valText.v.substring(0, 40)}...`;\n }\n\n if (isCommon?.unit) {\n valText.u = isCommon.unit;\n }\n\n let valFull:\n | {\n /** label */\n t: string;\n /** value */\n v: string;\n nbr?: boolean;\n }[]\n | undefined;\n if (options.full) {\n if (typeof v === 'string' && v.length > 100) {\n valFull = [{ t: texts.value, v: `${v.substring(0, 100)}...` }];\n } else {\n valFull = [{ t: texts.value, v }];\n }\n\n if (state) {\n if (state.ack !== undefined && state.ack !== null) {\n valFull.push({ t: texts.ack, v: state.ack.toString() });\n }\n if (state.ts) {\n valFull.push({ t: texts.ts, v: state.ts ? Utils.formatDate(new Date(state.ts), dateFormat) : '' });\n }\n if (state.lc) {\n valFull.push({ t: texts.lc, v: state.lc ? Utils.formatDate(new Date(state.lc), dateFormat) : '' });\n }\n if (state.from) {\n let from = state.from.toString();\n if (from.startsWith('system.adapter.')) {\n from = from.substring(15);\n }\n valFull.push({ t: texts.from, v: from });\n }\n if (state.user) {\n let user = state.user.toString();\n if (user.startsWith('system.user.')) {\n user = user.substring(12);\n }\n valFull.push({ t: texts.user, v: user });\n }\n if (state.c) {\n valFull.push({ t: texts.c, v: state.c });\n }\n valFull.push({ t: texts.quality, v: Utils.quality2text(state.q || 0).join(', '), nbr: true });\n }\n }\n\n return {\n valText,\n valFull,\n fileViewer,\n };\n}\n\n/**\n * Get CSS style for given state value\n */\nfunction getValueStyle(options: GetValueStyleOptions): { color: string } {\n const { state /* , isExpertMode, isButton */ } = options;\n const color = state?.ack ? (state.q ? '#ffa500' : '') : '#ff2222c9';\n\n // do not show the color of the button in non-expert mode\n // if (!isExpertMode && isButton) {\n // color = '';\n // }\n\n return { color };\n}\n\nfunction prepareSparkData(values: ioBroker.GetHistoryResult, from: number): number[] {\n // set one point every hour\n let time = from;\n let i = 1;\n const v = [];\n\n while (i < values.length && time < from + 25 * 3600000) {\n // find the interval\n while (values[i - 1].ts < time && time <= values[i].ts && i < values.length) {\n i++;\n }\n if (i === 1 && values[i - 1].ts >= time) {\n // assume the value was always null\n v.push(0);\n } else if (i < values.length) {\n if (typeof values[i].val === 'boolean' || typeof values[i - 1].val === 'boolean') {\n v.push(values[i].val ? 1 : 0);\n } else {\n // remove nulls\n values[i - 1].val ||= 0;\n values[i].val ||= 0;\n // interpolate\n const nm1: number = values[i - 1].val as number;\n const n: number = values[i].val as number;\n const val = nm1 + ((n - nm1) * (time - values[i - 1].ts)) / (values[i].ts - values[i - 1].ts);\n\n v.push(val);\n }\n }\n\n time += 3600000;\n }\n\n return v;\n}\n\nexport const ITEM_IMAGES: Record<string, JSX.Element> = {\n state: (\n <IconState\n className=\"itemIcon\"\n style={{ verticalAlign: 'middle' }}\n />\n ),\n channel: (\n <IconChannel\n className=\"itemIcon\"\n style={{ verticalAlign: 'middle' }}\n />\n ),\n device: (\n <IconDevice\n className=\"itemIcon\"\n style={{ verticalAlign: 'middle' }}\n />\n ),\n adapter: (\n <IconAdapter\n className=\"itemIcon\"\n style={{ verticalAlign: 'middle' }}\n />\n ),\n meta: (\n <IconMeta\n className=\"itemIcon\"\n style={{ verticalAlign: 'middle' }}\n />\n ),\n instance: (\n <IconInstance\n className=\"itemIcon\"\n style={{ color: '#7da7ff', verticalAlign: 'middle' }}\n />\n ),\n enum: (\n <IconEnum\n className=\"itemIcon\"\n style={{ verticalAlign: 'middle' }}\n />\n ),\n chart: (\n <IconChart\n className=\"itemIcon\"\n style={{ verticalAlign: 'middle' }}\n />\n ),\n config: (\n <IconConfig\n className=\"itemIcon\"\n style={{ verticalAlign: 'middle' }}\n />\n ),\n group: (\n <IconGroup\n className=\"itemIcon\"\n style={{ verticalAlign: 'middle' }}\n />\n ),\n user: (\n <IconUser\n className=\"itemIcon\"\n style={{ verticalAlign: 'middle' }}\n />\n ),\n host: (\n <IconHost\n className=\"itemIcon\"\n style={{ verticalAlign: 'middle' }}\n />\n ),\n schedule: (\n <IconSchedule\n className=\"itemIcon\"\n style={{ verticalAlign: 'middle' }}\n />\n ),\n script: (\n <IconScript\n className=\"itemIcon\"\n style={{ verticalAlign: 'middle' }}\n />\n ),\n folder: (\n <IconClosed\n className=\"itemIcon itemIconFolder\"\n style={{ verticalAlign: 'middle' }}\n />\n ),\n};\n\ninterface ScreenWidthOne {\n idWidth: string | number;\n widths: {\n room?: number;\n val?: number;\n name?: number;\n func?: number;\n buttons?: number;\n type?: number;\n role?: number;\n changedFrom?: number;\n qualityCode?: number;\n timestamp?: number;\n lastChange?: number;\n };\n fields: ObjectBrowserPossibleColumns[];\n}\n\ninterface ScreenWidth {\n xs: ScreenWidthOne;\n sm: ScreenWidthOne;\n md: ScreenWidthOne;\n lg: ScreenWidthOne;\n xl: ScreenWidthOne;\n}\n\nconst SCREEN_WIDTHS: ScreenWidth = {\n // extra-small: 0px\n xs: { idWidth: '100%', fields: [], widths: {} },\n // small: 600px\n sm: { idWidth: 300, fields: ['room', 'val'], widths: { room: 100, val: 200 } },\n // medium: 960px\n md: {\n idWidth: 300,\n fields: ['room', 'func', 'val', 'buttons'],\n widths: {\n name: 200,\n room: 150,\n func: 150,\n val: 120,\n buttons: 120,\n },\n },\n // large: 1280px\n lg: {\n idWidth: 300,\n fields: [\n 'name',\n 'type',\n 'role',\n 'room',\n 'func',\n 'val',\n 'buttons',\n 'changedFrom',\n 'qualityCode',\n 'timestamp',\n 'lastChange',\n ],\n widths: {\n name: 300,\n type: 80,\n role: 120,\n room: 180,\n func: 180,\n val: 140,\n buttons: 120,\n changedFrom: 120,\n qualityCode: 100,\n timestamp: 165,\n lastChange: 165,\n },\n },\n // /////////////\n // extra-large: 1920px\n xl: {\n idWidth: 550,\n fields: [\n 'name',\n 'type',\n 'role',\n 'room',\n 'func',\n 'val',\n 'buttons',\n 'changedFrom',\n 'qualityCode',\n 'timestamp',\n 'lastChange',\n ],\n widths: {\n name: 400,\n type: 80,\n role: 120,\n room: 180,\n func: 180,\n val: 140,\n buttons: 120,\n changedFrom: 120,\n qualityCode: 100,\n timestamp: 170,\n lastChange: 170,\n },\n },\n};\n\nlet objectsAlreadyLoaded = false;\n\nexport interface ObjectBrowserFilter {\n id?: string;\n name?: string;\n room?: string;\n func?: string;\n role?: string;\n type?: string;\n custom?: string;\n expertMode?: boolean;\n}\n\nconst DEFAULT_FILTER: ObjectBrowserFilter = {\n id: '',\n name: '',\n room: '',\n func: '',\n role: '',\n type: '',\n custom: '',\n expertMode: false,\n};\n\ninterface AdapterColumn {\n adapter: string;\n id: string;\n name: string;\n path: string[];\n pathText: string;\n edit?: boolean;\n type?: 'boolean' | 'string' | 'number';\n objTypes?: ioBroker.ObjectType[];\n align?: 'center' | 'left' | 'right';\n}\n\ninterface ObjectBrowserEditRoleProps {\n roleArray: { role: string; type: ioBroker.CommonType }[];\n id: string;\n socket: Connection;\n onClose: (obj?: ioBroker.Object | null) => void;\n t: Translate;\n commonType: ioBroker.CommonType;\n}\n\ninterface ObjectViewFileDialogProps {\n t: Translate;\n socket: Connection;\n obj: ioBroker.AnyObject;\n onClose: () => void;\n}\n\ninterface DragWrapperProps {\n item: TreeItem;\n className?: string;\n style?: React.CSSProperties;\n children: JSX.Element | null;\n}\n\ninterface ObjectCustomDialogProps {\n allVisibleObjects: boolean;\n customsInstances: string[];\n expertMode?: boolean;\n isFloatComma: boolean;\n lang: ioBroker.Languages;\n objectIDs: string[];\n objects: Record<string, ioBroker.Object>;\n onClose: () => void;\n reportChangedIds: (ids: string[]) => void;\n socket: Connection;\n systemConfig: ioBroker.SystemConfigObject;\n t: Translate;\n theme: IobTheme;\n themeName: ThemeName;\n themeType: ThemeType;\n}\n\ninterface ObjectMoveRenameDialogProps {\n childrenIds: string[];\n expertMode: boolean;\n id: string;\n objectType: ioBroker.ObjectType | undefined;\n onClose: () => void;\n socket: Connection;\n t: Translate;\n theme: IobTheme;\n}\n\ninterface ObjectBrowserValueProps {\n /** State type */\n type: 'states' | 'string' | 'number' | 'boolean' | 'json';\n /** State role */\n role: string;\n /** common.states */\n states: Record<string, string> | null;\n /** The state value */\n value: string | number | boolean | null;\n /** If expert mode is enabled */\n expertMode: boolean;\n onClose: (newValue?: {\n val: ioBroker.StateValue;\n ack: boolean;\n q: ioBroker.STATE_QUALITY[keyof ioBroker.STATE_QUALITY];\n expire: number | undefined;\n }) => void;\n /** Configured theme */\n themeType: ThemeType;\n theme: IobTheme;\n socket: Connection;\n defaultHistory: string;\n dateFormat: string;\n object: ioBroker.StateObject;\n isFloatComma: boolean;\n t: Translate;\n lang: ioBroker.Languages;\n width?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n}\n\ninterface ObjectBrowserEditObjectProps {\n socket: Connection;\n obj: ioBroker.AnyObject;\n roleArray: { role: string; type: ioBroker.CommonType }[];\n expertMode: boolean;\n themeType: ThemeType;\n theme: IobTheme;\n aliasTab: boolean;\n onClose: (obj?: ioBroker.AnyObject) => void;\n dialogName?: string;\n objects: Record<string, ioBroker.AnyObject>;\n dateFormat: string;\n isFloatComma: boolean;\n onNewObject: (obj: ioBroker.AnyObject) => void;\n t: Translate;\n width?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n}\n\nexport interface ObjectAliasEditorProps {\n t: Translate;\n roleArray: { role: string; type: ioBroker.CommonType }[];\n socket: Connection;\n objects: Record<string, ioBroker.AnyObject>;\n onRedirect: (id: string, delay?: number) => void;\n obj: ioBroker.AnyObject;\n onClose: () => void;\n}\n\nexport type ObjectBrowserColumn = 'name' | 'type' | 'role' | 'room' | 'func' | 'val' | 'buttons';\n\ntype ObjectBrowserPossibleColumns =\n | 'name'\n | 'type'\n | 'role'\n | 'room'\n | 'func'\n | 'val'\n | 'buttons'\n | 'changedFrom'\n | 'qualityCode'\n | 'timestamp'\n | 'lastChange'\n | 'id';\n\nexport interface ObjectBrowserProps {\n /** where to store settings in localStorage */\n dialogName?: string;\n defaultFilters?: ObjectBrowserFilter;\n selected?: string | string[];\n onSelect?: (selected: string | string[], name: string | null, isDouble?: boolean) => void;\n onFilterChanged?: (newFilter: ObjectBrowserFilter) => void;\n socket: Connection;\n showExpertButton?: boolean;\n expertMode?: boolean;\n imagePrefix?: string;\n themeName: ThemeName;\n themeType: ThemeType;\n /** will be filled by withWidth */\n width?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n theme: IobTheme;\n t: Translate;\n lang: ioBroker.Languages;\n multiSelect?: boolean;\n notEditable?: boolean;\n foldersFirst?: boolean;\n disableColumnSelector?: boolean;\n isFloatComma?: boolean;\n dateFormat?: string;\n levelPadding?: number;\n /** Allow selection of non-objects (virtual branches) */\n allowNonObjects?: boolean;\n /** Called when all objects are loaded */\n onAllLoaded?: () => void;\n\n // components\n objectCustomDialog?: React.FC<ObjectCustomDialogProps>;\n objectMoveRenameDialog?: React.FC<ObjectMoveRenameDialogProps>;\n objectAddBoolean?: boolean; // optional toolbar button\n objectEditBoolean?: boolean; // optional toolbar button\n objectStatesView?: boolean; // optional toolbar button\n objectImportExport?: boolean; // optional toolbar button\n objectEditOfAccessControl?: boolean; // Access Control\n /** modal add object */\n modalNewObject?: (oBrowser: ObjectBrowserClass) => JSX.Element;\n /** modal Edit Of Access Control */\n modalEditOfAccessControl: (oBrowser: ObjectBrowserClass, data: TreeItemData) => JSX.Element;\n onObjectDelete?: (id: string, hasChildren: boolean, objectExists: boolean, childrenCount: number) => void;\n\n /**\n * Optional filter\n * `{common: {custom: true}}` - show only objects with some custom settings\n * `{common: {custom: 'sql.0'}}` - show only objects with sql.0 custom settings (only of the specific instance)\n * `{common: {custom: '_dataSources'}}` - show only objects of adapters `influxdb' or 'sql' or 'history'\n * `{common: {custom: 'adapterName.'}}` - show only objects of custom settings of specific adapter (all instances)\n * `{type: 'channel'}` - show only channels\n * `{type: ['channel', 'device']}` - show only channels and devices\n * `{common: {type: 'number'}` - show only states of type 'number\n * `{common: {type: ['number', 'string']}` - show only states of type 'number and string\n * `{common: {role: ['switch']}` - show only states with roles starting from switch\n * `{common: {role: ['switch', 'button']}` - show only states with roles starting from `switch` and `button`\n */\n customFilter: ObjectBrowserCustomFilter;\n objectBrowserValue?: React.FC<ObjectBrowserValueProps>;\n objectBrowserEditObject?: React.FC<ObjectBrowserEditObjectProps>;\n /** on edit alias */\n objectBrowserAliasEditor?: React.FC<ObjectAliasEditorProps>;\n /** on Edit role */\n objectBrowserEditRole?: React.FC<ObjectBrowserEditRoleProps>;\n /** on view file state */\n objectBrowserViewFile?: React.FC<ObjectViewFileDialogProps>;\n router?: typeof Router;\n types?: ioBroker.ObjectType[];\n /** Possible columns: ['name', 'type', 'role', 'room', 'func', 'val', 'buttons'] */\n columns?: ObjectBrowserColumn[];\n /** Shows only elements of this root */\n root?: string;\n\n /** cache of objects */\n objectsWorker?: ObjectsWorker;\n /**\n * function to filter out all unnecessary objects. It cannot be used together with \"types\"\n * Example for function: `obj => obj.common?.type === 'boolean'` to show only boolean states\n */\n filterFunc?: (obj: ioBroker.Object) => boolean;\n /** Used for enums dragging */\n DragWrapper?: React.FC<DragWrapperProps>;\n /** let DragWrapper know about objects to get the icons */\n setObjectsReference?: (objects: Record<string, ioBroker.Object>) => void;\n dragEnabled?: boolean;\n}\n\ninterface ObjectBrowserState {\n loaded: boolean;\n foldersFirst: boolean;\n selected: string[];\n focused: string;\n selectedNonObject: string;\n filter: ObjectBrowserFilter;\n filterKey: number;\n depth: number;\n expandAllVisible: boolean;\n expanded: string[];\n toast: string;\n scrollBarWidth: number;\n customDialog: null | string[];\n customDialogAll?: boolean;\n editObjectDialog: string;\n editObjectAlias: boolean; // open the edit object dialog on alias tab\n viewFileDialog: string;\n showAliasEditor: string;\n enumDialog: null | {\n item: TreeItem;\n type: 'room' | 'func';\n enumsOriginal: string;\n };\n enumDialogEnums?: null | string[];\n roleDialog: null | string;\n statesView: boolean;\n /** ['name', 'type', 'role', 'room', 'func', 'val', 'buttons'] */\n columns: ObjectBrowserPossibleColumns[] | null;\n columnsForAdmin: Record<string, CustomAdminColumnStored[]> | null;\n columnsSelectorShow: boolean;\n columnsAuto: boolean;\n columnsWidths: Record<string, number>;\n columnsDialogTransparent: number;\n columnsEditCustomDialog: null | {\n obj: ioBroker.Object;\n item: TreeItem;\n it: AdapterColumn;\n };\n customColumnDialogValueChanged: boolean;\n showExportDialog: false | number;\n showAllExportOptions: boolean;\n linesEnabled: boolean;\n showDescription: boolean;\n showContextMenu: {\n item: TreeItem;\n position: { left: number; top: number };\n subItem?: string;\n subAnchor?: HTMLLIElement;\n } | null;\n noStatesByExportImport: boolean;\n beautifyJsonExport: boolean;\n excludeSystemRepositoriesFromExport: boolean;\n excludeTranslations: boolean;\n updating?: boolean;\n modalNewObj?: null | { id: string; initialType?: ioBroker.ObjectType; initialStateType?: ioBroker.CommonType };\n error?: any;\n modalEditOfAccess?: boolean;\n modalEditOfAccessObjData?: TreeItemData;\n updateOpened?: boolean;\n tooltipInfo: null | { el: JSX.Element[]; id: string };\n /** Show the menu with aliases for state */\n aliasMenu: string;\n /** Show rename dialog */\n showRenameDialog: {\n id: string;\n childrenIds: string[];\n } | null;\n}\n\nexport class ObjectBrowserClass extends Component<ObjectBrowserProps, ObjectBrowserState> {\n // do not define the type as null to save the performance, so we must check it every time\n private info: TreeInfo = {\n funcEnums: [],\n roomEnums: [],\n roles: [],\n ids: [],\n types: [],\n objects: {},\n customs: [],\n enums: [],\n hasSomeCustoms: false,\n aliasesMap: {},\n };\n\n private localStorage: Storage = ((window as any)._localStorage as Storage) || window.localStorage;\n\n private lastAppliedFilter: string | null = null;\n\n private readonly tableRef: React.RefObject<HTMLDivElement>;\n\n private readonly filterRefs: Record<string, React.RefObject<HTMLSelectElement>>;\n\n private pausedSubscribes: boolean = false;\n\n private selectFirst: string;\n\n private root: TreeItem | null = null;\n\n private readonly states: Record<string, ioBroker.State> = {};\n\n private subscribes: string[] = [];\n\n private unsubscribeTimer: ReturnType<typeof setTimeout> | null = null;\n\n private statesUpdateTimer: ReturnType<typeof setTimeout> | null = null;\n\n private objectsUpdateTimer: ReturnType<typeof setTimeout> | null = null;\n\n private filterTimer: ReturnType<typeof setTimeout> | null = null;\n\n private readonly visibleCols: ObjectBrowserPossibleColumns[];\n\n private readonly texts: Record<string, string>;\n\n private readonly possibleCols: ObjectBrowserPossibleColumns[];\n\n private readonly imagePrefix: string;\n\n private adapterColumns: AdapterColumn[] = [];\n\n private styleTheme: string = '';\n\n private edit: {\n val: string | number | boolean | null;\n q: number;\n ack: boolean;\n id: string;\n } = {\n id: '',\n val: '',\n q: 0,\n ack: false,\n };\n\n private readonly levelPadding: number;\n\n private customWidth: boolean = false;\n\n private resizeTimeout: ReturnType<typeof setTimeout> | null = null;\n\n private resizerNextName: string | null = null;\n\n private resizerActiveName: string | null = null;\n\n private resizerCurrentWidths: Record<string, number> = {};\n\n private resizeLeft: boolean = false;\n\n private resizerOldWidth: number = 0;\n\n private resizerMin: number = 0;\n\n private resizerNextMin: number = 0;\n\n private resizerOldWidthNext: number = 0;\n\n private resizerPosition: number = 0;\n\n private resizerActiveDiv: HTMLDivElement | null = null;\n\n private resizerNextDiv: HTMLDivElement | null = null;\n\n private storedWidths: ScreenWidthOne | null = null;\n\n private systemConfig: ioBroker.SystemConfigObject;\n\n public objects: Record<string, ioBroker.Object>;\n\n private defaultHistory: string = '';\n\n private cltrPressed = false;\n\n private columnsVisibility: {\n id?: number | string;\n name?: number | string;\n nameHeader?: number | string;\n type?: number;\n role?: number;\n room?: number;\n func?: number;\n changedFrom?: number;\n qualityCode?: number;\n timestamp?: number;\n lastChange?: number;\n val?: number;\n buttons?: number;\n } = {};\n\n private changedIds: null | string[] = null;\n\n private contextMenu: null | { item: any; ts: number } = null;\n\n private recordStates: string[] = [];\n\n private styles: {\n cellIdIconFolder?: React.CSSProperties;\n cellIdIconDocument?: React.CSSProperties;\n iconDeviceError?: React.CSSProperties;\n iconDeviceConnected?: React.CSSProperties;\n iconDeviceDisconnected?: React.CSSProperties;\n cellButtonsButtonWithCustoms?: React.CSSProperties;\n invertedBackground?: React.CSSProperties;\n invertedBackgroundFlex?: React.CSSProperties;\n contextMenuEdit?: React.CSSProperties;\n contextMenuEditValue?: React.CSSProperties;\n contextMenuView?: React.CSSProperties;\n contextMenuCustom?: React.CSSProperties;\n contextMenuACL?: React.CSSProperties;\n contextMenuRoom?: React.CSSProperties;\n contextMenuRole?: React.CSSProperties;\n contextMenuDelete?: React.CSSProperties;\n filterInput?: React.CSSProperties;\n iconCopy?: React.CSSProperties;\n aliasReadWrite?: React.CSSProperties;\n aliasAlone?: React.CSSProperties;\n } = {};\n\n private customColumnDialog: null | {\n value: boolean | number | string;\n type: 'boolean' | 'number' | 'string';\n initValue: boolean | number | string;\n } = null;\n\n /** Namespaces which are allowed to be edited by non-expert users */\n static #NON_EXPERT_NAMESPACES = ['0_userdata.0.', 'alias.0.'];\n\n constructor(props: ObjectBrowserProps) {\n super(props);\n\n const lastSelectedItemStr: string =\n this.localStorage.getItem(`${props.dialogName || 'App'}.objectSelected`) || '';\n\n this.selectFirst = '';\n\n if (lastSelectedItemStr.startsWith('[')) {\n try {\n const lastSelectedItems = JSON.parse(lastSelectedItemStr) as string[];\n this.selectFirst = lastSelectedItems[0] || '';\n } catch {\n // ignore\n }\n } else {\n this.selectFirst = lastSelectedItemStr;\n }\n\n let expanded: string[];\n const expandedStr = this.localStorage.getItem(`${props.dialogName || 'App'}.objectExpanded`) || '[]';\n try {\n expanded = JSON.parse(expandedStr);\n } catch {\n expanded = [];\n }\n\n let filter: ObjectBrowserFilter;\n const filterStr: string = props.defaultFilters\n ? ''\n : this.localStorage.getItem(`${props.dialogName || 'App'}.objectFilter`) || '';\n if (filterStr) {\n try {\n filter = JSON.parse(filterStr);\n } catch {\n filter = { ...DEFAULT_FILTER };\n }\n } else if (props.defaultFilters && typeof props.defaultFilters === 'object') {\n filter = { ...props.defaultFilters };\n } else {\n filter = { ...DEFAULT_FILTER };\n }\n\n filter.expertMode =\n props.expertMode !== undefined\n ? props.expertMode\n : (((window as any)._sessionStorage as Storage) || window.sessionStorage).getItem('App.expertMode') ===\n 'true';\n this.tableRef = createRef();\n this.filterRefs = {};\n\n Object.keys(DEFAULT_FILTER).forEach(name => (this.filterRefs[name] = createRef()));\n\n this.visibleCols = props.columns || SCREEN_WIDTHS[props.width || 'lg'].fields;\n // remove type column if only one type must be selected\n if (props.types && props.types.length === 1) {\n const pos = this.visibleCols.indexOf('type');\n if (pos !== -1) {\n this.visibleCols.splice(pos, 1);\n }\n }\n\n this.possibleCols = SCREEN_WIDTHS.xl.fields;\n\n let customDialog = null;\n\n if (props.router) {\n const location = props.router.getLocation();\n if (location.id && location.dialog === 'customs') {\n customDialog = [location.id];\n this.pauseSubscribe(true);\n }\n }\n\n let selected: string[];\n if (!Array.isArray(props.selected)) {\n selected = [props.selected || ''];\n } else {\n selected = props.selected;\n }\n selected = selected.map(id => id.replace(/[\"']/g, '')).filter(id => id);\n\n this.selectFirst = selected.length && selected[0] ? selected[0] : this.selectFirst;\n\n const columnsStr = this.localStorage.getItem(`${props.dialogName || 'App'}.columns`);\n let columns: ObjectBrowserPossibleColumns[] | null;\n try {\n columns = columnsStr ? JSON.parse(columnsStr) : null;\n } catch {\n columns = null;\n }\n\n let columnsWidths = null; // this.localStorage.getItem(`${props.dialogName || 'App'}.columnsWidths`);\n try {\n columnsWidths = columnsWidths ? JSON.parse(columnsWidths) : {};\n } catch {\n columnsWidths = {};\n }\n\n this.imagePrefix = props.imagePrefix || '.';\n let foldersFirst: boolean;\n const foldersFirstStr = this.localStorage.getItem(`${props.dialogName || 'App'}.foldersFirst`);\n\n if (foldersFirstStr === 'false') {\n foldersFirst = false;\n } else if (foldersFirstStr === 'true') {\n foldersFirst = true;\n } else {\n foldersFirst = props.foldersFirst === undefined ? true : props.foldersFirst;\n }\n\n let statesView = false;\n try {\n statesView = this.props.objectStatesView\n ? JSON.parse(this.localStorage.getItem(`${props.dialogName || 'App'}.objectStatesView`) || '') || false\n : false;\n } catch {\n // ignore\n }\n\n this.state = {\n loaded: false,\n foldersFirst,\n selected,\n selectedNonObject: this.localStorage.getItem(`${props.dialogName || 'App'}.selectedNonObject`) || '',\n filter,\n filterKey: 0,\n focused: this.localStorage.getItem(`${props.dialogName || 'App'}.focused`) || '',\n depth: 0,\n expandAllVisible: false,\n expanded,\n toast: '',\n scrollBarWidth: 16,\n customDialog,\n editObjectDialog: '',\n editObjectAlias: false, // open the edit object dialog on alias tab\n viewFileDialog: '',\n showAliasEditor: '',\n enumDialog: null,\n roleDialog: null,\n statesView,\n columns,\n columnsForAdmin: null,\n columnsSelectorShow: false,\n columnsAuto: this.localStorage.getItem(`${props.dialogName || 'App'}.columnsAuto`) !== 'false',\n columnsWidths,\n columnsDialogTransparent: 100,\n columnsEditCustomDialog: null,\n customColumnDialogValueChanged: false,\n showExportDialog: false,\n showAllExportOptions: false,\n linesEnabled: this.localStorage.getItem(`${props.dialogName || 'App'}.lines`) === 'true',\n showDescription: this.localStorage.getItem(`${props.dialogName || 'App'}.desc`) !== 'false',\n showContextMenu: null,\n noStatesByExportImport: false,\n beautifyJsonExport: true,\n excludeSystemRepositoriesFromExport: true,\n excludeTranslations: false,\n tooltipInfo: null,\n aliasMenu: '',\n showRenameDialog: null,\n };\n\n this.texts = {\n name: props.t('ra_Name'),\n categories: props.t('ra_Categories'),\n value: props.t('ra_tooltip_value'),\n ack: props.t('ra_tooltip_ack'),\n ts: props.t('ra_tooltip_ts'),\n lc: props.t('ra_tooltip_lc'),\n from: props.t('ra_tooltip_from'),\n user: props.t('ra_tooltip_user'),\n c: props.t('ra_tooltip_comment'),\n quality: props.t('ra_tooltip_quality'),\n editObject: props.t('ra_tooltip_editObject'),\n deleteObject: props.t('ra_tooltip_deleteObject'),\n customConfig: props.t('ra_tooltip_customConfig'),\n copyState: props.t('ra_tooltip_copyState'),\n editState: props.t('ra_tooltip_editState'),\n ctrlForLink: props.t('ra_tooltip_ctrlForLink'),\n close: props.t('ra_Close'),\n filter_id: props.t('ra_filter_id'),\n filter_name: props.t('ra_filter_name'),\n filter_type: props.t('ra_filter_type'),\n filter_role: props.t('ra_filter_role'),\n filter_room: props.t('ra_filter_room'),\n filter_func: props.t('ra_filter_func'),\n filter_custom: props.t('ra_filter_customs'), //\n filterCustomsWithout: props.t('ra_filter_customs_without'), //\n objectChangedByUser: props.t('ra_object_changed_by_user'), // Object last changed at\n objectChangedBy: props.t('ra_object_changed_by'), // Object changed by\n objectChangedFrom: props.t('ra_state_changed_from'), // Object changed from\n stateChangedBy: props.t('ra_state_changed_by'), // State changed by\n stateChangedFrom: props.t('ra_state_changed_from'), // State changed from\n ownerGroup: props.t('ra_Owner group'),\n ownerUser: props.t('ra_Owner user'),\n showAll: props.t('ra_show_all'),\n deviceError: props.t('ra_Error'),\n deviceDisconnected: props.t('ra_Disconnected'),\n deviceConnected: props.t('ra_Connected'),\n\n aclOwner_read_object: props.t('ra_aclOwner_read_object'),\n aclOwner_read_state: props.t('ra_aclOwner_read_state'),\n aclOwner_write_object: props.t('ra_aclOwner_write_object'),\n aclOwner_write_state: props.t('ra_aclOwner_write_state'),\n aclGroup_read_object: props.t('ra_aclGroup_read_object'),\n aclGroup_read_state: props.t('ra_aclGroup_read_state'),\n aclGroup_write_object: props.t('ra_aclGroup_write_object'),\n aclGroup_write_state: props.t('ra_aclGroup_write_state'),\n aclEveryone_read_object: props.t('ra_aclEveryone_read_object'),\n aclEveryone_read_state: props.t('ra_aclEveryone_read_state'),\n aclEveryone_write_object: props.t('ra_aclEveryone_write_object'),\n aclEveryone_write_state: props.t('ra_aclEveryone_write_state'),\n\n create: props.t('ra_Create'),\n createBooleanState: props.t('ra_create_boolean_state'),\n createNumberState: props.t('ra_create_number_state'),\n createStringState: props.t('ra_create_string_state'),\n createState: props.t('ra_create_state'),\n createChannel: props.t('ra_create_channel'),\n createDevice: props.t('ra_create_device'),\n createFolder: props.t('ra_Create folder'),\n };\n\n this.levelPadding = props.levelPadding || ITEM_LEVEL;\n\n const resizerCurrentWidthsStr = this.localStorage.getItem(`${this.props.dialogName || 'App'}.table`);\n if (resizerCurrentWidthsStr) {\n try {\n const resizerCurrentWidths = JSON.parse(resizerCurrentWidthsStr);\n const width = this.props.width || 'lg';\n this.storedWidths = JSON.parse(JSON.stringify(SCREEN_WIDTHS[width]));\n Object.keys(resizerCurrentWidths).forEach(id => {\n if (id === 'id') {\n SCREEN_WIDTHS[width].idWidth = resizerCurrentWidths.id;\n } else if (id === 'nameHeader') {\n SCREEN_WIDTHS[width].widths.name = resizerCurrentWidths[id];\n } else if ((SCREEN_WIDTHS[width].widths as Record<string, number>)[id] !== undefined) {\n (SCREEN_WIDTHS[width].widths as Record<string, number>)[id] = resizerCurrentWidths[id];\n }\n });\n\n this.customWidth = true;\n } catch {\n // ignore\n }\n }\n\n this.calculateColumnsVisibility();\n }\n\n async loadAllObjects(update?: boolean): Promise<void> {\n const props = this.props;\n\n try {\n await new Promise<void>(resolve => {\n this.setState({ updating: true }, () => resolve());\n });\n\n const objects =\n (props.objectsWorker\n ? await props.objectsWorker.getObjects(update)\n : await props.socket.getObjects(update, true)) || {};\n if (props.types && Connection.isWeb()) {\n for (let i = 0; i < props.types.length; i++) {\n // admin has ALL objects\n // web has only state, channel, device, enum, and system.config\n if (\n props.types[i] === 'state' ||\n props.types[i] === 'channel' ||\n props.types[i] === 'device' ||\n props.types[i] === 'enum'\n ) {\n continue;\n }\n const moreObjects = await props.socket.getObjectViewSystem(props.types[i]);\n Object.assign(objects || {}, moreObjects as Record<string, ioBroker.Object>);\n }\n }\n\n this.systemConfig =\n this.systemConfig ||\n (objects?.['system.config'] as ioBroker.SystemConfigObject) ||\n (await props.socket.getObject('system.config'));\n\n this.systemConfig.common = this.systemConfig.common || ({} as ioBroker.SystemConfigCommon);\n this.systemConfig.common.defaultNewAcl = this.systemConfig.common.defaultNewAcl || {\n object: 0,\n state: 0,\n file: 0,\n owner: 'system.user.admin',\n ownerGroup: 'system.group.administrator',\n };\n this.systemConfig.common.defaultNewAcl.owner =\n this.systemConfig.common.defaultNewAcl.owner || 'system.user.admin';\n this.systemConfig.common.defaultNewAcl.ownerGroup =\n this.systemConfig.common.defaultNewAcl.ownerGroup || 'system.group.administrator';\n if (typeof this.systemConfig.common.defaultNewAcl.state !== 'number') {\n // TODO: may be convert here from string\n this.systemConfig.common.defaultNewAcl.state = 0x664;\n }\n if (typeof this.systemConfig.common.defaultNewAcl.object !== 'number') {\n // TODO: may be convert here from string\n this.systemConfig.common.defaultNewAcl.state = 0x664;\n }\n\n if (typeof props.filterFunc === 'function') {\n this.objects = {};\n const filterFunc: (obj: ioBroker.Object) => boolean = props.filterFunc;\n\n Object.keys(objects).forEach(id => {\n try {\n if (filterFunc(objects[id])) {\n this.objects[id] = objects[id];\n } else {\n const type = objects[id] && objects[id].type;\n // include \"folder\" types too for icons and names of nodes\n if (\n type &&\n (type === 'channel' ||\n type === 'device' ||\n type === 'folder' ||\n type === 'adapter' ||\n type === 'instance')\n ) {\n this.objects[id] = objects[id];\n }\n }\n } catch (e) {\n console.log(`Error by filtering of \"${id}\": ${e}`);\n }\n });\n } else if (props.types) {\n this.objects = {};\n const propsTypes = props.types;\n\n Object.keys(objects).forEach(id => {\n const type = objects[id]?.type;\n // include \"folder\" types too\n if (\n type &&\n (type === 'channel' ||\n type === 'device' ||\n type === 'enum' ||\n type === 'folder' ||\n type === 'adapter' ||\n type === 'instance' ||\n propsTypes.includes(type))\n ) {\n this.objects[id] = objects[id];\n }\n });\n } else {\n this.objects = objects;\n }\n\n if (props.setObjectsReference) {\n props.setObjectsReference(this.objects);\n }\n\n // read default history\n this.defaultHistory = this.systemConfig.common.defaultHistory;\n if (this.defaultHistory) {\n props.socket\n .getState(`system.adapter.${this.defaultHistory}.alive`)\n .then(state => {\n if (!state?.val) {\n this.defaultHistory = '';\n }\n })\n .catch(e => window.alert(`Cannot get state: ${e}`));\n }\n\n const columnsForAdmin = await this.getAdditionalColumns();\n this.calculateColumnsVisibility(null, null, columnsForAdmin);\n\n const { info, root } = buildTree(this.objects, {\n imagePrefix: props.imagePrefix,\n root: props.root,\n lang: props.lang,\n themeType: props.themeType,\n });\n this.root = root;\n this.info = info;\n\n // Show first selected item\n const node = this.state.selected?.length && findNode(this.root, this.state.selected[0]);\n\n this.lastAppliedFilter = null;\n\n // If the selected ID is not visible, reset filter\n if (\n node &&\n !applyFilter(\n node,\n this.state.filter,\n props.lang,\n this.objects,\n undefined,\n undefined,\n props.customFilter,\n props.types,\n )\n ) {\n // reset filter\n this.setState({ filter: { ...DEFAULT_FILTER }, columnsForAdmin }, () => {\n this.setState({ loaded: true, updating: false }, () =>\n this.expandAllSelected(() => this.onAfterSelect()),\n );\n });\n } else {\n this.setState({ loaded: true, updating: false, columnsForAdmin }, () =>\n this.expandAllSelected(() => this.onAfterSelect()),\n );\n }\n } catch (error) {\n this.showError(error);\n }\n }\n\n /**\n * Check if it is a non-expert id\n */\n static isNonExpertId(\n /** id to test */\n id: string,\n ): boolean {\n return !!ObjectBrowserClass.#NON_EXPERT_NAMESPACES.find(saveNamespace => id.startsWith(saveNamespace));\n }\n\n private expandAllSelected(cb?: () => void): void {\n const expanded = [...this.state.expanded];\n let changed = false;\n this.state.selected.forEach(id => {\n const parts = id.split('.');\n const path = [];\n for (let i = 0; i < parts.length - 1; i++) {\n path.push(parts[i]);\n if (!expanded.includes(path.join('.'))) {\n expanded.push(path.join('.'));\n changed = true;\n }\n }\n });\n if (changed) {\n expanded.sort();\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectExpanded`, JSON.stringify(expanded));\n this.setState({ expanded }, cb);\n } else if (cb) {\n cb();\n }\n }\n\n /**\n * @param isDouble is double click\n */\n private onAfterSelect(isDouble?: boolean): void {\n if (this.state.selected?.length && this.state.selected[0]) {\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectSelected`, this.state.selected[0]);\n\n // remove a task to select the pre-selected item if now we want to see another object\n if (this.selectFirst && this.selectFirst !== this.state.selected[0]) {\n this.selectFirst = '';\n }\n\n // If the this.state.selected[0] filtered out, disable the filter\n const item = this.findItem(this.state.selected[0]);\n if (item?.data && !item.data.visible && !item.data.hasVisibleChildren) {\n // If the selected ID is not visible, reset filter\n this.clearFilter();\n }\n\n if (this.state.selected.length === 1 && this.objects[this.state.selected[0]]) {\n const name = Utils.getObjectName(this.objects, this.state.selected[0], null, {\n language: this.props.lang,\n });\n this.props.onSelect?.(this.state.selected, name, isDouble);\n } else if (this.state.selected.length === 1 && this.props.allowNonObjects) {\n this.props.onSelect?.(this.state.selected, null, isDouble);\n }\n } else {\n this.localStorage.removeItem(`${this.props.dialogName || 'App'}.objectSelected`);\n\n if (this.state.selected.length) {\n this.setState({ selected: [] }, () => {\n if (this.props.onSelect) {\n if (this.state.focused && this.props.allowNonObjects) {\n // remove a task to select the pre-selected item if now we want to see another object\n if (this.selectFirst && this.selectFirst !== this.state.selected[0]) {\n this.selectFirst = '';\n }\n this.props.onSelect([this.state.focused], null, isDouble);\n } else {\n this.props.onSelect([], '');\n }\n }\n });\n } else if (this.props.onSelect) {\n if (this.state.focused && this.props.allowNonObjects) {\n // remove a task to select the pre-selected item if now we want to see another object\n if (this.selectFirst && this.selectFirst !== this.state.selected[0]) {\n this.selectFirst = '';\n }\n this.props.onSelect([this.state.focused], null, isDouble);\n } else {\n this.props.onSelect([], '');\n }\n }\n }\n }\n\n private static getDerivedStateFromProps(\n props: ObjectBrowserProps,\n state: ObjectBrowserState,\n ): Partial<ObjectBrowserState> | null {\n const newState: Partial<ObjectBrowserState> = {};\n let changed = false;\n if (props.expertMode !== undefined && props.expertMode !== state.filter.expertMode) {\n changed = true;\n newState.filter = { ...state.filter };\n newState.filter.expertMode = props.expertMode;\n }\n return changed ? newState : null;\n }\n\n /**\n * Called when component is mounted.\n */\n async componentDidMount(): Promise<void> {\n await this.loadAllObjects(!objectsAlreadyLoaded);\n if (this.props.objectsWorker) {\n this.props.objectsWorker.registerHandler(this.onObjectChangeFromWorker);\n } else {\n await this.props.socket.subscribeObject('*', this.onObjectChange);\n }\n\n objectsAlreadyLoaded = true;\n\n window.addEventListener('contextmenu', this.onContextMenu, true);\n window.addEventListener('keydown', this.onKeyPress, true);\n window.addEventListener('keyup', this.onKeyPress, true);\n\n // Inform dialog that all objects are loaded\n if (this.props.onAllLoaded) {\n setTimeout(() => {\n this.props.onAllLoaded?.();\n }, 100);\n }\n }\n\n onKeyPress = (event: KeyboardEvent): void => {\n if (event.type === 'keydown' && event.ctrlKey && !this.cltrPressed) {\n this.cltrPressed = true;\n if (this.tableRef.current) {\n this.tableRef.current.className = 'highlight-link';\n }\n } else if (event.type === 'keyup' && !event.ctrlKey && this.cltrPressed) {\n this.cltrPressed = false;\n if (this.tableRef.current) {\n this.tableRef.current.className = '';\n }\n }\n };\n\n /**\n * Called when component is unmounted.\n */\n componentWillUnmount(): void {\n if (this.filterTimer) {\n clearTimeout(this.filterTimer);\n this.filterTimer = null;\n }\n window.removeEventListener('contextmenu', this.onContextMenu, true);\n window.removeEventListener('keydown', this.onKeyPress, true);\n window.removeEventListener('keyup', this.onKeyPress, true);\n\n if (this.props.objectsWorker) {\n this.props.objectsWorker.unregisterHandler(this.onObjectChangeFromWorker, true);\n } else {\n void this.props.socket\n .unsubscribeObject('*', this.onObjectChange)\n .catch(e => console.error(`Cannot unsubscribe *: ${e}`));\n }\n\n // remove all subscribes\n this.subscribes.forEach(pattern => {\n // console.log(`- unsubscribe ${pattern}`);\n this.props.socket.unsubscribeState(pattern, this.onStateChange);\n });\n\n this.subscribes = [];\n this.objects = {};\n }\n\n /**\n * Show the deletion dialog for a given object\n */\n showDeleteDialog(options: { id: string; obj: ioBroker.Object; item: TreeItem }): void {\n const { id, obj, item } = options;\n\n // calculate the number of children\n const keys = Object.keys(this.objects);\n keys.sort();\n let count = 0;\n const start = `${id}.`;\n for (let i = 0; i < keys.length; i++) {\n if (keys[i].startsWith(start)) {\n count++;\n } else if (keys[i] > start) {\n break;\n }\n }\n\n this.props.onObjectDelete?.(id, !!item.children?.length, !obj.common?.dontDelete, count + 1);\n }\n\n /**\n * Context menu handler.\n */\n onContextMenu = (e: MouseEvent): void => {\n // console.log(`CONTEXT MENU: ${this.contextMenu ? Date.now() - this.contextMenu.ts : 'false'}`);\n if (this.contextMenu && Date.now() - this.contextMenu.ts < 2000) {\n e.preventDefault();\n this.setState({\n showContextMenu: {\n item: this.contextMenu.item,\n position: { left: e.clientX + 2, top: e.clientY - 6 },\n },\n });\n } else if (this.state.showContextMenu) {\n e.preventDefault();\n this.setState({ showContextMenu: null });\n }\n this.contextMenu = null;\n };\n\n /**\n * Called when component is mounted.\n */\n refreshComponent(): void {\n // remove all subscribes\n this.subscribes.forEach(pattern => {\n // console.log(`- unsubscribe ${pattern}`);\n this.props.socket.unsubscribeState(pattern, this.onStateChange);\n });\n\n this.subscribes = [];\n\n this.loadAllObjects(true)\n .then(() => console.log('updated!'))\n .catch(e => this.showError(e));\n }\n\n /**\n * Renders the error dialog.\n */\n renderErrorDialog(): JSX.Element | null {\n return this.state.error ? (\n <Dialog\n open={!0}\n maxWidth=\"sm\"\n fullWidth\n onClose={() => this.setState({ error: '' })}\n aria-labelledby=\"error-dialog-title\"\n aria-describedby=\"error-dialog-description\"\n >\n <DialogTitle id=\"alert-dialog-title\">{this.props.t('ra_Error')}</DialogTitle>\n <DialogContent>\n <DialogContentText id=\"alert-dialog-description\">{this.state.error}</DialogContentText>\n </DialogContent>\n <DialogActions>\n <Button\n variant=\"contained\"\n onClick={() => this.setState({ error: '' })}\n color=\"primary\"\n autoFocus\n startIcon={<IconCheck />}\n >\n {this.props.t('ra_Ok')}\n </Button>\n </DialogActions>\n </Dialog>\n ) : null;\n }\n\n /**\n * Show the error dialog.\n */\n showError(error: any): void {\n this.setState({\n error:\n typeof error === 'object'\n ? error && typeof error.toString === 'function'\n ? error.toString()\n : JSON.stringify(error)\n : error,\n });\n }\n\n /**\n * Called when an item is selected/deselected.\n */\n onSelect(toggleItem: string, isDouble?: boolean, cb?: () => void): void {\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.focused`, toggleItem);\n\n if (!this.props.multiSelect) {\n if (\n this.objects[toggleItem] &&\n (!this.props.types || this.props.types.includes(this.objects[toggleItem].type))\n ) {\n this.localStorage.removeItem(`${this.props.dialogName || 'App'}.selectedNonObject`);\n if (this.state.selected[0] !== toggleItem) {\n this.setState({ selected: [toggleItem], selectedNonObject: '', focused: toggleItem }, () => {\n this.onAfterSelect(isDouble);\n if (cb) {\n cb();\n }\n });\n } else if (isDouble && this.props.onSelect) {\n this.onAfterSelect(isDouble);\n }\n } else {\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.selectedNonObject`, toggleItem);\n this.setState({ selected: [], selectedNonObject: toggleItem, focused: toggleItem }, () => {\n this.onAfterSelect();\n if (cb) {\n cb();\n }\n });\n }\n } else if (\n this.objects[toggleItem] &&\n (!this.props.types || this.props.types.includes(this.objects[toggleItem].type))\n ) {\n this.localStorage.removeItem(`${this.props.dialogName || 'App'}.selectedNonObject`);\n\n const selected = [...this.state.selected];\n const pos = selected.indexOf(toggleItem);\n if (pos === -1) {\n selected.push(toggleItem);\n selected.sort();\n } else if (!isDouble) {\n selected.splice(pos, 1);\n }\n\n this.setState({ selected, selectedNonObject: '', focused: toggleItem }, () => {\n this.onAfterSelect(isDouble);\n if (cb) {\n cb();\n }\n });\n }\n }\n\n private _renderDefinedList(isLast: boolean): JSX.Element[] {\n const cols = [...this.possibleCols];\n cols.unshift('id');\n if (this.props.columns && !this.props.columns.includes('buttons')) {\n const pos = cols.indexOf('buttons');\n if (pos !== -1) {\n cols.splice(pos, 1);\n }\n }\n return cols\n .filter(\n id => (isLast && (id === 'val' || id === 'buttons')) || (!isLast && id !== 'val' && id !== 'buttons'),\n )\n .map(id => (\n <ListItemButton\n onClick={() => {\n if (!this.state.columnsAuto && id !== 'id') {\n const columns = [...(this.state.columns || [])];\n const pos = columns.indexOf(id);\n if (pos === -1) {\n columns.push(id);\n columns.sort();\n } else {\n columns.splice(pos, 1);\n }\n this.localStorage.setItem(\n `${this.props.dialogName || 'App'}.columns`,\n JSON.stringify(columns),\n );\n this.calculateColumnsVisibility(null, columns);\n this.setState({ columns });\n }\n }}\n key={id}\n >\n <Checkbox\n edge=\"start\"\n disabled={id === 'id' || this.state.columnsAuto}\n checked={\n id === 'id' ||\n !!(this.state.columnsAuto\n ? this.visibleCols.includes(id)\n : this.state.columns?.includes(id))\n }\n disableRipple\n />\n <ListItemText primary={this.texts[`filter_${id}`] || this.props.t(`ra_${id}`)} />\n {/*\n <ListItemSecondaryAction>\n <FormControl\n variant=\"standard\"\n style={{ ...styles.columnsDialogInputWidth, marginTop: 0, marginBottom: 0 }}\n margin=\"dense\"\n >\n <Input\n classes={{ underline: 'no-underline' }}\n placeholder={this.props.t('ra_Width')}\n value={this.state.columnsWidths[id] || ''}\n onChange={e => {\n const columnsWidths = JSON.parse(JSON.stringify(this.state.columnsWidths));\n columnsWidths[id] = e.target.value;\n this.localStorage.setItem((this.props.dialogName || 'App') + '.columnsWidths', JSON.stringify(columnsWidths));\n this.calculateColumnsVisibility(null, null, null, columnsWidths);\n this.setState({ columnsWidths });\n }}\n autoComplete=\"off\"\n />\n </FormControl>\n </ListItemSecondaryAction>\n */}\n </ListItemButton>\n ));\n }\n\n /**\n * Renders the columns' selector.\n */\n renderColumnsSelectorDialog(): JSX.Element | null {\n if (!this.state.columnsSelectorShow) {\n return null;\n }\n return (\n <Dialog\n onClose={() => this.setState({ columnsSelectorShow: false })}\n open={!0}\n sx={{\n '& .MuiPaper-root': Utils.getStyle(\n this.props.theme,\n styles.dialogColumns,\n styles[`transparent_${this.state.columnsDialogTransparent}`],\n ),\n }}\n >\n <DialogTitle sx={styles.fontSizeTitle}>{this.props.t('ra_Configure')}</DialogTitle>\n <DialogContent sx={styles.fontSizeTitle}>\n <FormControlLabel\n style={styles.switchColumnAuto}\n control={\n <Switch\n checked={this.state.foldersFirst}\n onChange={() => {\n this.localStorage.setItem(\n `${this.props.dialogName || 'App'}.foldersFirst`,\n this.state.foldersFirst ? 'false' : 'true',\n );\n this.setState({ foldersFirst: !this.state.foldersFirst });\n }}\n />\n }\n label={this.props.t('ra_Folders always first')}\n />\n <FormControlLabel\n style={styles.switchColumnAuto}\n control={\n <Switch\n checked={this.state.linesEnabled}\n onChange={() => {\n this.localStorage.setItem(\n `${this.props.dialogName || 'App'}.lines`,\n this.state.linesEnabled ? 'false' : 'true',\n );\n this.setState({ linesEnabled: !this.state.linesEnabled });\n }}\n />\n }\n label={this.props.t('ra_Show lines between rows')}\n />\n <FormControlLabel\n style={styles.switchColumnAuto}\n control={\n <Switch\n checked={this.state.columnsAuto}\n onChange={() => {\n this.localStorage.setItem(\n `${this.props.dialogName || 'App'}.columnsAuto`,\n this.state.columnsAuto ? 'false' : 'true',\n );\n if (!this.state.columnsAuto) {\n this.calculateColumnsVisibility(true);\n this.setState({ columnsAuto: true });\n } else if (!this.state.columns) {\n this.calculateColumnsVisibility(false, [...this.visibleCols]);\n this.setState({ columnsAuto: false, columns: [...this.visibleCols] });\n } else {\n this.calculateColumnsVisibility(false);\n this.setState({ columnsAuto: false });\n }\n }}\n />\n }\n label={this.props.t('ra_Auto (no custom columns)')}\n />\n {/*\n <Typography classes={{ root: styles.dialogColumnsLabel }}>{this.props.t('ra_Transparent dialog')}</Typography>\n <Slider classes={{ root: styles.width100 }} value={this.state.columnsDialogTransparent} min={20} max={100} step={10} onChange={(event, newValue) =>\n this.setState({ columnsDialogTransparent: newValue })\n } />\n */}\n <List>\n {this._renderDefinedList(false)}\n\n {this.state.columnsForAdmin &&\n Object.keys(this.state.columnsForAdmin)\n .sort()\n .map(adapter =>\n this.state.columnsForAdmin?.[adapter].map(column => (\n <ListItemButton\n onClick={() => {\n if (!this.state.columnsAuto) {\n const columns = [...(this.state.columns || [])];\n const id: ObjectBrowserPossibleColumns =\n `_${adapter}_${column.path}` as ObjectBrowserPossibleColumns;\n const pos = columns.indexOf(id);\n if (pos === -1) {\n columns.push(id);\n columns.sort();\n } else {\n columns.splice(pos, 1);\n }\n this.calculateColumnsVisibility(null, columns);\n this.localStorage.setItem(\n `${this.props.dialogName || 'App'}.columns`,\n JSON.stringify(columns),\n );\n this.setState({ columns });\n }\n }}\n key={`${adapter}_${column.name}`}\n >\n <ListItemIcon>\n <Checkbox\n disabled={this.state.columnsAuto}\n edge=\"start\"\n checked={\n !this.state.columnsAuto &&\n this.state.columns?.includes(\n `_${adapter}_${column.path}` as ObjectBrowserPossibleColumns,\n )\n }\n disableRipple\n />\n </ListItemIcon>\n <ListItemText primary={`${column.name} (${adapter})`} />\n {/*\n <ListItemSecondaryAction>\n <FormControl\n variant=\"standard\"\n style={{ ...styles.columnsDialogInputWidth, marginTop: 0, marginBottom: 0 }}\n margin=\"dense\"\n >\n <Input\n classes={{ underline: 'no-underline' }}\n placeholder={this.props.t('ra_Width')}\n value={this.state.columnsWidths['_' + adapter + '_' + column.path] || ''}\n onChange={e => {\n const columnsWidths = JSON.parse(JSON.stringify(this.state.columnsWidths));\n columnsWidths['_' + adapter + '_' + column.path] = e.target.value;\n this.localStorage.setItem((this.props.dialogName || 'App') + '.columnsWidths', JSON.stringify(columnsWidths));\n this.calculateColumnsVisibility(null, null, null, columnsWidths);\n this.setState({ columnsWidths });\n }}\n autoComplete=\"off\"\n />\n </FormControl>\n </ListItemSecondaryAction>\n */}\n </ListItemButton>\n )),\n )}\n {this._renderDefinedList(true)}\n </List>\n </DialogContent>\n <DialogActions>\n <Button\n variant=\"contained\"\n onClick={() => this.setState({ columnsSelectorShow: false })}\n color=\"primary\"\n startIcon={<IconClose />}\n >\n {this.texts.close}\n </Button>\n </DialogActions>\n </Dialog>\n );\n }\n\n private async getAdditionalColumns(): Promise<Record<string, CustomAdminColumnStored[]> | null> {\n try {\n const instances = await this.props.socket.getAdapters();\n\n let columnsForAdmin: Record<string, CustomAdminColumnStored[]> | null = null;\n // find all additional columns\n instances.forEach(obj => (columnsForAdmin = this.parseObjectForAdmins(columnsForAdmin, obj)));\n\n return columnsForAdmin;\n } catch (err) {\n // window.alert('Cannot get adapters: ' + e);\n // Object browser in Web has no additional columns\n console.error(`Cannot get adapters: ${err}`);\n return null;\n }\n }\n\n private checkUnsubscribes(): void {\n // Remove unused subscriptions\n for (let i = this.subscribes.length - 1; i >= 0; i--) {\n if (!this.recordStates.includes(this.subscribes[i])) {\n this.unsubscribe(this.subscribes[i]);\n }\n }\n this.recordStates = [];\n }\n\n /**\n * Find an item.\n */\n findItem(id: string, _parts?: string[], _root?: TreeItem | null, _partyId?: string): TreeItem | null {\n _parts ||= id.split('.');\n _root ||= this.root;\n if (!_root || !_parts.length) {\n return null;\n }\n\n _partyId = (_partyId ? `${_partyId}.` : '') + _parts.shift();\n\n if (_root.children) {\n const item = _root.children.find(i => i.data.id === _partyId);\n if (item) {\n if (item.data.id === id) {\n return item;\n }\n if (_parts.length) {\n return this.findItem(id, _parts, item, _partyId);\n }\n } else {\n return null;\n }\n }\n\n return null;\n }\n\n /**\n * Called when a state changes.\n */\n onStateChange = (id: string, state?: ioBroker.State | null): void => {\n // console.log(`> stateChange ${id}`);\n if (this.states[id]) {\n const item = this.findItem(id);\n if (item?.data.state) {\n item.data.state = undefined;\n }\n }\n if (state) {\n this.states[id] = state;\n } else {\n delete this.states[id];\n }\n\n if (!this.pausedSubscribes) {\n if (!this.statesUpdateTimer) {\n this.statesUpdateTimer = setTimeout(() => {\n this.statesUpdateTimer = null;\n this.forceUpdate();\n }, 300);\n }\n } else if (this.statesUpdateTimer) {\n clearTimeout(this.statesUpdateTimer);\n this.statesUpdateTimer = null;\n }\n };\n\n private parseObjectForAdmins(\n columnsForAdmin: Record<string, CustomAdminColumnStored[]> | null,\n obj: ioBroker.AdapterObject,\n ): Record<string, CustomAdminColumnStored[]> | null {\n if (obj.common?.adminColumns && obj.common.name) {\n const columns: string | (string | ioBroker.CustomAdminColumn)[] = obj.common.adminColumns;\n let aColumns: (string | ioBroker.CustomAdminColumn)[] | undefined;\n if (columns && typeof columns !== 'object') {\n aColumns = [columns];\n } else if (columns) {\n aColumns = columns as (string | ioBroker.CustomAdminColumn)[];\n }\n let cColumns: CustomAdminColumnStored[] | null;\n if (columns) {\n cColumns = aColumns\n .map((_item: string | ioBroker.CustomAdminColumn) => {\n if (typeof _item !== 'object') {\n return { path: _item, name: _item.split('.').pop() };\n }\n const item: ioBroker.CustomAdminColumn = _item;\n // string => array\n if (item.objTypes && typeof item.objTypes !== 'object') {\n item.objTypes = [item.objTypes];\n } else if (!item.objTypes) {\n item.objTypes = undefined;\n }\n\n if (!item.name && item.path) {\n return {\n path: item.path,\n name: item.path.split('.').pop(),\n width: item.width,\n edit: !!item.edit,\n type: item.type,\n objTypes: item.objTypes,\n } as CustomAdminColumnStored;\n }\n if (!item.path) {\n console.warn(`Admin columns for ${obj._id} ignored, because path not found`);\n return null;\n }\n return {\n path: item.path,\n name: getName(item.name || '', this.props.lang),\n width: item.width,\n edit: !!item.edit,\n type: item.type,\n objTypes: item.objTypes,\n } as CustomAdminColumnStored;\n })\n .filter((item: CustomAdminColumnStored) => item);\n } else {\n cColumns = null;\n }\n\n if (cColumns?.length) {\n columnsForAdmin ||= {};\n columnsForAdmin[obj.common.name] = cColumns.sort((a, b) =>\n a.path > b.path ? -1 : a.path < b.path ? 1 : 0,\n );\n }\n } else if (obj.common && obj.common.name && columnsForAdmin && columnsForAdmin[obj.common.name]) {\n delete columnsForAdmin[obj.common.name];\n }\n return columnsForAdmin;\n }\n\n onObjectChangeFromWorker = (events: ObjectEvent[]): void => {\n if (Array.isArray(events)) {\n let newState: { columnsForAdmin: Record<string, CustomAdminColumnStored[] | null> | null } | null = null;\n events.forEach(event => {\n const { newInnerState, filtered } = this.processOnObjectChangeElement(event.id, event.obj);\n if (filtered) {\n return;\n }\n if (newInnerState && newState) {\n Object.assign(newState, newInnerState);\n } else {\n newState = newInnerState;\n }\n });\n\n if (newState) {\n this.setState(newState);\n }\n this.afterObjectUpdated();\n }\n };\n\n onObjectChange = (id: string, obj?: ioBroker.Object | null): void => {\n const { newInnerState, filtered } = this.processOnObjectChangeElement(id, obj);\n if (filtered) {\n return;\n }\n\n if (newInnerState) {\n this.setState(newInnerState);\n }\n this.afterObjectUpdated();\n };\n\n afterObjectUpdated(): void {\n if (!this.objectsUpdateTimer && this.objects) {\n this.objectsUpdateTimer = setTimeout(() => {\n this.objectsUpdateTimer = null;\n const { info, root } = buildTree(this.objects, {\n imagePrefix: this.props.imagePrefix,\n root: this.props.root,\n lang: this.props.lang,\n themeType: this.props.themeType,\n });\n this.root = root;\n this.info = info;\n this.lastAppliedFilter = null; // apply filter anew\n\n if (!this.pausedSubscribes) {\n this.forceUpdate();\n }\n // else it will be re-rendered when the dialog will be closed\n }, 500);\n }\n }\n\n // This function is called when the user changes the alias of an object.\n // It updates the aliasMap and returns true if the aliasMap has changed.\n updateAliases(aliasId: string): void {\n if (!this.objects || !this.info?.aliasesMap || !aliasId?.startsWith('alias.')) {\n return;\n }\n // Rebuild aliases map\n const aliasesIds = Object.keys(this.objects).filter(id => id.startsWith('alias.0'));\n\n this.info.aliasesMap = {};\n\n for (const id of aliasesIds) {\n const obj = this.objects[id];\n if (obj?.common?.alias?.id) {\n if (typeof obj.common.alias.id === 'string') {\n const usedId = obj.common.alias.id;\n if (!this.info.aliasesMap[usedId]) {\n this.info.aliasesMap[usedId] = [id];\n } else if (!this.info.aliasesMap[usedId].includes(id)) {\n this.info.aliasesMap[usedId].push(id);\n }\n } else {\n const readId = obj.common.alias.id.read;\n if (readId) {\n if (!this.info.aliasesMap[readId]) {\n this.info.aliasesMap[readId] = [id];\n } else if (!this.info.aliasesMap[readId].includes(id)) {\n this.info.aliasesMap[readId].push(id);\n }\n }\n const writeId = obj.common.alias.id.write;\n if (writeId) {\n if (!this.info.aliasesMap[writeId]) {\n this.info.aliasesMap[writeId] = [id];\n } else if (!this.info.aliasesMap[writeId].includes(id)) {\n this.info.aliasesMap[writeId].push(id);\n }\n }\n }\n }\n }\n }\n\n /**\n * Processes a single element in regard to certain filters, columns for admin and updates object dict\n *\n * @param id The id of the object\n * @param obj The object itself\n * @returns Returns an object containing the new state (if any) and whether the object was filtered.\n */\n processOnObjectChangeElement(\n id: string,\n obj?: ioBroker.Object | null,\n ): {\n filtered: boolean;\n newInnerState: null | { columnsForAdmin: Record<string, CustomAdminColumnStored[]> | null };\n } {\n // console.log(`> objectChange ${id}`);\n const type = obj?.type;\n\n // If the object is filtered out, we don't need to update the React state\n if (\n obj &&\n typeof this.props.filterFunc === 'function' &&\n !this.props.filterFunc(obj) &&\n type !== 'channel' &&\n type !== 'device' &&\n type !== 'folder' &&\n type !== 'adapter' &&\n type !== 'instance'\n ) {\n return { newInnerState: null, filtered: true };\n }\n\n let newInnerState = null;\n if (id.startsWith('system.adapter.') && obj?.type === 'adapter') {\n const columnsForAdmin: Record<string, CustomAdminColumnStored[]> | null = JSON.parse(\n JSON.stringify(this.state.columnsForAdmin),\n );\n\n this.parseObjectForAdmins(columnsForAdmin, obj as ioBroker.AdapterObject);\n\n if (JSON.stringify(this.state.columnsForAdmin) !== JSON.stringify(columnsForAdmin)) {\n newInnerState = { columnsForAdmin };\n }\n }\n\n this.objects ||= {};\n\n if (obj) {\n this.objects[id] = obj;\n } else if (this.objects[id]) {\n delete this.objects[id];\n }\n\n this.updateAliases(id);\n\n return { newInnerState, filtered: false };\n }\n\n private subscribe(id: string): void {\n if (!this.subscribes.includes(id)) {\n this.subscribes.push(id);\n // console.log(`+ subscribe ${id}`);\n if (!this.pausedSubscribes) {\n this.props.socket\n .subscribeState(id, this.onStateChange)\n .catch(e => console.error(`Cannot subscribe on state ${id}: ${e}`));\n }\n }\n }\n\n private unsubscribe(id: string): void {\n const pos = this.subscribes.indexOf(id);\n if (pos !== -1) {\n this.subscribes.splice(pos, 1);\n if (this.states[id]) {\n delete this.states[id];\n }\n // console.log(`- unsubscribe ${id}`);\n this.props.socket.unsubscribeState(id, this.onStateChange);\n\n if (this.pausedSubscribes) {\n console.warn('Unsubscribe during pause?');\n }\n }\n }\n\n private pauseSubscribe(isPause: boolean): void {\n if (!this.pausedSubscribes && isPause) {\n this.pausedSubscribes = true;\n this.subscribes.forEach(id => this.props.socket.unsubscribeState(id, this.onStateChange));\n } else if (this.pausedSubscribes && !isPause) {\n this.pausedSubscribes = false;\n this.subscribes.forEach(id => this.props.socket.subscribeState(id, this.onStateChange));\n }\n }\n\n private onFilter(name?: string, value?: string | boolean): void {\n this.filterTimer = null;\n const filter: ObjectBrowserFilter = { ...this.state.filter };\n\n Object.keys(this.filterRefs).forEach(_name => {\n if (this.filterRefs[_name]?.current) {\n const filterRef: HTMLSelectElement = this.filterRefs[_name].current;\n for (let i = 0; i < filterRef.children.length; i++) {\n if (filterRef.children[i].tagName === 'INPUT') {\n (filter as Record<string, string>)[_name] = (filterRef.children[i] as HTMLInputElement).value;\n break;\n }\n }\n }\n });\n\n if (name) {\n (filter as Record<string, string | boolean | undefined>)[name] = value;\n if (name === 'expertMode') {\n (((window as any)._sessionStorage as Storage) || window.sessionStorage).setItem(\n 'App.expertMode',\n value ? 'true' : 'false',\n );\n }\n }\n\n if (JSON.stringify(this.state.filter) !== JSON.stringify(filter)) {\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectFilter`, JSON.stringify(filter));\n this.setState({ filter }, () => this.props.onFilterChanged && this.props.onFilterChanged(filter));\n }\n }\n\n clearFilter(): void {\n const filter: ObjectBrowserFilter = { ...this.state.filter };\n\n Object.keys(this.filterRefs).forEach(name => {\n if (this.filterRefs[name]?.current) {\n const filterRef: HTMLSelectElement = this.filterRefs[name].current;\n for (let i = 0; i < filterRef.childNodes.length; i++) {\n const item = filterRef.childNodes[i];\n if ((item as HTMLInputElement).tagName === 'INPUT') {\n (filter as Record<string, string>)[name] = '';\n (item as HTMLInputElement).value = '';\n break;\n }\n }\n }\n });\n\n if (JSON.stringify(this.state.filter) !== JSON.stringify(filter)) {\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectFilter`, JSON.stringify(filter));\n this.setState({ filter, filterKey: this.state.filterKey + 1 }, () => this.props.onFilterChanged?.(filter));\n }\n }\n\n isFilterEmpty(): boolean {\n const someNotEmpty = Object.keys(this.state.filter).find(\n attr => attr !== 'expertMode' && (this.state.filter as Record<string, string>)[attr],\n );\n return !someNotEmpty;\n }\n\n private getFilterInput(filterName: string): JSX.Element {\n return (\n <FormControl\n sx={this.styles.filterInput}\n key={`${filterName}_${this.state.filterKey}`}\n title={\n filterName === 'name' || filterName === 'id'\n ? this.props.t('ra_You can use * as wildcard')\n : undefined\n }\n // style={{ marginTop: 0, marginBottom: 0 }}\n margin=\"dense\"\n >\n <Input\n ref={this.filterRefs[filterName]}\n classes={{ underline: 'no-underline' }}\n id={filterName}\n placeholder={this.texts[`filter_${filterName}`]}\n defaultValue={(this.state.filter as Record<string, string>)[filterName] || ''}\n onChange={() => {\n if (this.filterTimer) {\n clearTimeout(this.filterTimer);\n }\n this.filterTimer = setTimeout(() => this.onFilter(), 400);\n }}\n autoComplete=\"off\"\n />\n {(this.filterRefs[filterName]?.current?.firstChild as HTMLInputElement)?.value ? (\n <div\n style={{\n position: 'absolute',\n right: 0,\n }}\n >\n <IconButton\n size=\"small\"\n onClick={() => {\n (this.filterRefs[filterName].current?.firstChild as HTMLInputElement).value = '';\n this.onFilter(filterName, '');\n }}\n >\n <IconClose />\n </IconButton>\n </div>\n ) : null}\n </FormControl>\n );\n }\n\n private getFilterSelect(name: string, values?: (string | InputSelectItem)[]): JSX.Element {\n const hasIcons = !!values?.find(item => (item as InputSelectItem).icon);\n\n return (\n <div style={{ position: 'relative' }}>\n <Select\n variant=\"standard\"\n key={`${name}_${this.state.filterKey}`}\n ref={this.filterRefs[name]}\n sx={styles.headerCellInput}\n className=\"no-underline\"\n onChange={() => {\n if (this.filterTimer) {\n clearTimeout(this.filterTimer);\n }\n this.filterTimer = setTimeout(() => this.onFilter(), 400);\n }}\n defaultValue={(this.state.filter as Record<string, string>)[name] || ''}\n inputProps={{ name, id: name }}\n displayEmpty\n >\n <MenuItem\n key=\"empty\"\n value=\"\"\n >\n <span style={styles.selectNone}>\n {name === 'custom' ? this.texts.showAll : this.texts[`filter_${name}`]}\n </span>\n </MenuItem>\n {values?.map(item => {\n let id: string;\n let _name: string;\n let icon: null | JSX.Element | undefined;\n if (typeof item === 'object') {\n id = item.value;\n _name = item.name;\n icon = item.icon;\n } else {\n id = item;\n _name = item;\n }\n return (\n <MenuItem\n sx={styles.headerCellSelectItem}\n key={id}\n value={id}\n >\n {icon || (hasIcons ? <div className=\"itemIcon\" /> : null)}\n {_name}\n </MenuItem>\n );\n })}\n </Select>\n {(this.filterRefs[name]?.current?.childNodes[1] as HTMLInputElement)?.value ? (\n <Box\n component=\"div\"\n sx={styles.selectClearButton}\n >\n <IconButton\n size=\"small\"\n onClick={() => {\n const newFilter: ObjectBrowserFilter = { ...this.state.filter };\n (newFilter as Record<string, string>)[name] = '';\n (this.filterRefs[name].current?.childNodes[1] as HTMLInputElement).value = '';\n this.localStorage.setItem(\n `${this.props.dialogName || 'App'}.objectFilter`,\n JSON.stringify(newFilter),\n );\n this.setState(\n { filter: newFilter, filterKey: this.state.filterKey + 1 },\n () => this.props.onFilterChanged && this.props.onFilterChanged(newFilter),\n );\n }}\n >\n <IconClose />\n </IconButton>\n </Box>\n ) : null}\n </div>\n );\n }\n\n private getFilterSelectRole(): JSX.Element {\n return this.getFilterSelect(\n 'role',\n this.info.roles.map(it => it.role),\n );\n }\n\n private getFilterSelectRoom(): JSX.Element {\n const rooms: InputSelectItem[] = this.info.roomEnums.map(\n id =>\n ({\n name: getName(this.objects[id]?.common?.name, this.props.lang) || id.split('.').pop(),\n value: id,\n icon: (\n <Icon\n src={this.objects[id]?.common?.icon || ''}\n style={styles.selectIcon}\n />\n ),\n }) as InputSelectItem,\n );\n\n return this.getFilterSelect('room', rooms);\n }\n\n private getFilterSelectFunction(): JSX.Element {\n const func: InputSelectItem[] = this.info.funcEnums.map(\n id =>\n ({\n name: getName(this.objects[id]?.common?.name, this.props.lang) || id.split('.').pop(),\n value: id,\n icon: (\n <Icon\n src={this.objects[id]?.common?.icon || ''}\n style={styles.selectIcon}\n />\n ),\n }) as InputSelectItem,\n );\n\n return this.getFilterSelect('func', func);\n }\n\n private getFilterSelectType(): JSX.Element {\n const types = this.info.types.map(type => ({\n name: type,\n value: type,\n icon: ITEM_IMAGES[type] || null,\n }));\n\n return this.getFilterSelect('type', types);\n }\n\n private getFilterSelectCustoms(): JSX.Element | null {\n if (this.info.customs.length > 1) {\n const customs = this.info.customs.map(id => ({\n name: id === '_' ? this.texts.filterCustomsWithout : id,\n value: id,\n icon:\n id === '_' ? null : (\n <Icon\n src={getSelectIdIconFromObjects(this.objects, id, this.props.lang, this.imagePrefix) || ''}\n style={styles.selectIcon}\n />\n ),\n }));\n return this.getFilterSelect('custom', customs);\n }\n return null;\n }\n\n private onExpandAll(root?: TreeItem, expanded?: string[]): void {\n const _root: TreeItem | null = root || this.root;\n expanded ||= [];\n\n _root?.children?.forEach((item: TreeItem) => {\n if (item.data.sumVisibility) {\n expanded.push(item.data.id);\n this.onExpandAll(item, expanded);\n }\n });\n\n if (_root === this.root) {\n expanded.sort();\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectExpanded`, JSON.stringify(expanded));\n\n this.setState({ expanded });\n }\n }\n\n private onCollapseAll(): void {\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectExpanded`, JSON.stringify([]));\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectSelected`, '[]');\n this.setState({ expanded: [], depth: 0, selected: [] }, () => this.onAfterSelect());\n }\n\n private expandDepth(root: TreeItem, depth: number, expanded: string[]): void {\n root ||= this.root;\n if (depth > 0) {\n root.children?.forEach(item => {\n if (item.data.sumVisibility) {\n if (!binarySearch(expanded, item.data.id)) {\n expanded.push(item.data.id);\n expanded.sort();\n }\n if (depth - 1 > 0) {\n this.expandDepth(item, depth - 1, expanded);\n }\n }\n });\n }\n }\n\n private static collapseDepth(depth: number, expanded: string[]): string[] {\n return expanded.filter(id => id.split('.').length <= depth);\n }\n\n private onExpandVisible(): void {\n if (this.state.depth < 9) {\n const depth = this.state.depth + 1;\n const expanded = [...this.state.expanded];\n if (this.root) {\n this.expandDepth(this.root, depth, expanded);\n }\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectExpanded`, JSON.stringify(expanded));\n this.setState({ depth, expanded });\n }\n }\n\n private onStatesViewVisible(): void {\n const statesView = !this.state.statesView;\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectStatesView`, JSON.stringify(statesView));\n this.setState({ statesView });\n }\n\n private onCollapseVisible(): void {\n if (this.state.depth > 0) {\n const depth = this.state.depth - 1;\n const expanded = ObjectBrowserClass.collapseDepth(depth, this.state.expanded);\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectExpanded`, JSON.stringify(expanded));\n this.setState({ depth, expanded });\n }\n }\n\n private getEnumsForId = (id: string): ioBroker.EnumObject[] | undefined => {\n const result: ioBroker.EnumObject[] = [];\n this.info.enums.forEach(_id => {\n if (this.objects[_id]?.common?.members?.includes(id)) {\n const enumItem: ioBroker.EnumObject = {\n _id: this.objects[_id]._id,\n common: JSON.parse(JSON.stringify(this.objects[_id].common)) as ioBroker.EnumCommon,\n native: this.objects[_id].native,\n type: 'enum',\n } as ioBroker.EnumObject;\n if (enumItem.common) {\n delete enumItem.common.members;\n delete enumItem.common.custom;\n // @ts-expect-error deprecated attribute\n delete enumItem.common.mobile;\n }\n result.push(enumItem);\n }\n });\n\n return result.length ? result : undefined;\n };\n\n private _createAllEnums = async (enums: (string | ioBroker.EnumObject)[], objId: string): Promise<void> => {\n for (let e = 0; e < enums.length; e++) {\n const item: string | ioBroker.EnumObject = enums[e];\n let id: string;\n let newObj: ioBroker.EnumObject | undefined;\n\n // some admin version delivered enums as string\n if (typeof item === 'object') {\n newObj = item;\n id = newObj._id;\n } else {\n id = item;\n }\n\n let oldObj: ioBroker.EnumObject | undefined = this.objects[id] as ioBroker.EnumObject | undefined;\n // if enum does not exist\n if (!oldObj) {\n // create a new one\n oldObj =\n newObj ||\n ({\n _id: id,\n common: {\n name: id.split('.').pop(),\n members: [],\n },\n native: {},\n type: 'enum',\n } as ioBroker.EnumObject);\n\n oldObj.common ||= {} as ioBroker.EnumCommon;\n oldObj.common.members = [objId];\n oldObj.type = 'enum';\n\n await this.props.socket.setObject(id, oldObj);\n } else if (!oldObj.common?.members?.includes(objId)) {\n oldObj.common ||= {} as ioBroker.EnumCommon;\n oldObj.type = 'enum';\n oldObj.common.members ||= [];\n // add the missing object\n oldObj.common.members.push(objId);\n oldObj.common.members.sort();\n await this.props.socket.setObject(id, oldObj);\n }\n }\n };\n\n private async loadObjects(objs: Record<string, ioBrokerObjectForExport>): Promise<void> {\n if (objs) {\n for (const id in objs) {\n if (!Object.prototype.hasOwnProperty.call(objs, id) || !objs[id]) {\n continue;\n }\n const obj = objs[id];\n let enums = null;\n let val;\n let ack;\n if (obj?.common?.enums) {\n enums = obj.common.enums;\n delete obj.common.enums;\n } else {\n enums = null;\n }\n\n if (obj.val || obj.val === 0) {\n val = obj.val;\n delete obj.val;\n }\n if (obj.ack !== undefined) {\n ack = obj.ack;\n delete obj.ack;\n }\n try {\n await this.props.socket.setObject(id, obj);\n if (enums) {\n await this._createAllEnums(enums, obj._id);\n }\n if (obj.type === 'state') {\n if (val !== undefined && val !== null) {\n try {\n await this.props.socket.setState(obj._id, val, ack !== undefined ? ack : true);\n } catch (e) {\n window.alert(`Cannot set state \"${obj._id} with ${val}\": ${e}`);\n }\n } else {\n try {\n const state = await this.props.socket.getState(obj._id);\n if (!state || state.val === null) {\n try {\n await this.props.socket.setState(\n obj._id,\n !obj.common || obj.common.def === undefined ? null : obj.common.def,\n true,\n );\n } catch (e) {\n window.alert(`Cannot set state \"${obj._id}\": ${e}`);\n }\n }\n } catch (e) {\n window.alert(`Cannot read state \"${obj._id}\": ${e}`);\n }\n }\n }\n } catch (error) {\n window.alert(error);\n }\n }\n }\n }\n\n _getSelectedIdsForExport(): string[] {\n if (this.state.selected.length || this.state.selectedNonObject) {\n const result = [];\n const keys = Object.keys(this.objects);\n keys.sort();\n const id = this.state.selected[0] || this.state.selectedNonObject;\n const idDot = `${id}.`;\n const idLen = idDot.length;\n for (let k = 0; k < keys.length; k++) {\n const key = keys[k];\n if (id === key || key.startsWith(idDot)) {\n result.push(key);\n }\n if (key.substring(0, idLen) > idDot) {\n break;\n }\n }\n\n return result;\n }\n return [];\n }\n\n /**\n * Exports the selected objects based on the given options and triggers file generation\n */\n private async _exportObjects(\n /** Options to filter/reduce the output */\n options: {\n /** Whether all objects should be exported or only the selected ones */\n isAll?: boolean;\n /** Whether the output should be beautified */\n beautify?: boolean;\n /** Whether \"system.repositories\" should be excluded */\n excludeSystemRepositories?: boolean;\n /** Whether translations should be reduced to only the english value */\n excludeTranslations?: boolean;\n /** Whether the values of the states should be not included */\n noStatesByExportImport?: boolean;\n },\n ): Promise<void> {\n if (options.isAll) {\n generateFile('allObjects.json', this.objects, options);\n return;\n }\n if (!(this.state.selected.length || this.state.selectedNonObject)) {\n window.alert(this.props.t('ra_Save of objects-tree is not possible'));\n return;\n }\n const result: Record<string, ioBrokerObjectForExport> = {};\n const id = this.state.selected[0] || this.state.selectedNonObject;\n const ids = this._getSelectedIdsForExport();\n\n for (const key of ids) {\n result[key] = JSON.parse(JSON.stringify(this.objects[key])) as ioBrokerObjectForExport;\n // read states values\n if (result[key]?.type === 'state' && !options.noStatesByExportImport) {\n const state = await this.props.socket.getState(key);\n if (state) {\n result[key].val = state.val;\n result[key].ack = state.ack;\n }\n }\n // add enum information\n if (result[key].common) {\n const enums = this.getEnumsForId(key);\n if (enums) {\n result[key].common.enums = enums;\n }\n }\n }\n\n generateFile(`${id}.json`, result, options);\n }\n\n renderExportDialog(): JSX.Element | null {\n if (this.state.showExportDialog === false) {\n return null;\n }\n return (\n <Dialog\n open={!0}\n maxWidth=\"lg\"\n >\n <DialogTitle>{this.props.t('ra_Select type of export')}</DialogTitle>\n <DialogContent>\n <DialogContentText>\n {this.state.filter.expertMode || this.state.showAllExportOptions ? (\n <>\n {this.props.t('ra_You can export all objects or just the selected branch.')}\n <br />\n {this.props.t('ra_Selected %s object(s)', this.state.showExportDialog)}\n <br />\n <FormControlLabel\n control={\n <Checkbox\n checked={this.state.noStatesByExportImport}\n onChange={e => this.setState({ noStatesByExportImport: e.target.checked })}\n />\n }\n label={this.props.t('ra_Do not export values of states')}\n />\n <br />\n {this.props.t('These options can reduce the size of the export file:')}\n <FormControlLabel\n control={\n <Checkbox\n checked={this.state.beautifyJsonExport}\n onChange={e => this.setState({ beautifyJsonExport: e.target.checked })}\n />\n }\n label={this.props.t('Beautify JSON output')}\n />\n <br />\n <FormControlLabel\n control={\n <Checkbox\n checked={this.state.excludeSystemRepositoriesFromExport}\n onChange={e =>\n this.setState({ excludeSystemRepositoriesFromExport: e.target.checked })\n }\n />\n }\n label={this.props.t('Exclude system repositories from export JSON')}\n />\n <FormControlLabel\n control={\n <Checkbox\n checked={this.state.excludeTranslations}\n onChange={e => this.setState({ excludeTranslations: e.target.checked })}\n />\n }\n label={this.props.t('Exclude translations (except english) from export JSON')}\n />\n </>\n ) : null}\n </DialogContentText>\n </DialogContent>\n <DialogActions>\n {this.state.filter.expertMode || this.state.showAllExportOptions ? (\n <Button\n color=\"grey\"\n variant=\"outlined\"\n onClick={() =>\n this.setState({ showExportDialog: false, showAllExportOptions: false }, () =>\n this._exportObjects({\n isAll: true,\n noStatesByExportImport: this.state.noStatesByExportImport,\n beautify: this.state.beautifyJsonExport,\n excludeSystemRepositories: this.state.excludeSystemRepositoriesFromExport,\n excludeTranslations: this.state.excludeTranslations,\n }),\n )\n }\n >\n <span style={{ marginRight: 8 }}>{this.props.t('ra_All objects')}</span>(\n {Object.keys(this.objects).length})\n </Button>\n ) : (\n <Button\n color=\"grey\"\n variant=\"outlined\"\n startIcon={<IconExpert />}\n onClick={() => this.setState({ showAllExportOptions: true })}\n >\n {this.props.t('ra_Advanced options')}\n </Button>\n )}\n <Button\n color=\"primary\"\n variant=\"contained\"\n autoFocus\n onClick={() =>\n this.setState({ showExportDialog: false, showAllExportOptions: false }, () =>\n this._exportObjects({\n isAll: false,\n noStatesByExportImport: this.state.noStatesByExportImport,\n beautify: this.state.beautifyJsonExport,\n excludeSystemRepositories: this.state.excludeSystemRepositoriesFromExport,\n excludeTranslations: this.state.excludeTranslations,\n }),\n )\n }\n >\n <span style={{ marginRight: 8 }}>{this.props.t('ra_Only selected')}</span>(\n {this.state.showExportDialog})\n </Button>\n <Button\n color=\"grey\"\n variant=\"contained\"\n onClick={() => this.setState({ showExportDialog: false, showAllExportOptions: false })}\n startIcon={<IconClose />}\n >\n {this.props.t('ra_Cancel')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n }\n\n renderRenameDialog(): JSX.Element | null {\n if (!this.state.showRenameDialog) {\n return null;\n }\n const ObjectMoveRenameDialog = this.props.objectMoveRenameDialog;\n return (\n <ObjectMoveRenameDialog\n expertMode={this.props.expertMode}\n onClose={() => this.setState({ showRenameDialog: null })}\n id={this.state.showRenameDialog.id}\n childrenIds={this.state.showRenameDialog.childrenIds}\n theme={this.props.theme}\n socket={this.props.socket}\n t={this.props.t}\n objectType={this.objects[this.state.showRenameDialog.id]?.type}\n />\n );\n }\n\n private handleJsonUpload(evt: Event): void {\n const target = evt.target as HTMLInputElement;\n const f = target.files?.length && target.files[0];\n if (f) {\n const r = new FileReader();\n r.onload = async e => {\n const contents = e.target?.result;\n try {\n const json = JSON.parse(contents as string);\n const len = Object.keys(json).length;\n const id = json._id;\n // it could be a single object or many objects\n if (id === undefined && len) {\n // many objects\n await this.loadObjects(json as Record<string, ioBrokerObjectForExport>);\n window.alert(this.props.t('ra_%s object(s) processed', len));\n } else {\n // it is only one object in form\n // {\n // \"_id\": \"xxx\",\n // \"common\": \"yyy\",\n // \"native\": \"zzz\"\n // \"val\": JSON.stringify(value)\n // \"ack\": true\n // }\n if (!id) {\n return window.alert(this.props.t('ra_Invalid structure'));\n }\n try {\n let enums;\n let val;\n let ack;\n if (json.common.enums) {\n enums = json.common.enums;\n delete json.common.enums;\n }\n if (json.val) {\n val = json.val;\n delete json.val;\n }\n if (json.ack !== undefined) {\n ack = json.ack;\n delete json.ack;\n }\n await this.props.socket.setObject(json._id, json);\n\n if (json.type === 'state') {\n if (val !== undefined && val !== null) {\n await this.props.socket.setState(json._id, val, ack === undefined ? true : ack);\n } else {\n const state = await this.props.socket.getState(json._id);\n if (!state || state.val === null || state.val === undefined) {\n await this.props.socket.setState(\n json._id,\n json.common.def === undefined ? null : json.common.def,\n true,\n );\n }\n }\n }\n if (enums) {\n await this._createAllEnums(enums, json._id);\n }\n\n window.alert(this.props.t('ra_%s was imported', json._id));\n } catch (err) {\n window.alert(err);\n }\n }\n } catch (err) {\n window.alert(err);\n }\n return null;\n };\n r.readAsText(f);\n } else {\n window.alert(this.props.t('ra_Failed to open JSON File'));\n }\n }\n\n toolTipObjectCreating = (): JSX.Element[] | string => {\n const { t } = this.props;\n\n let value = [\n <div key={1}>{t('ra_Only following structures of objects are available:')}</div>,\n <div key={2}>{t('ra_Folder → State')}</div>,\n <div key={3}>{t('ra_Folder → Channel → State')}</div>,\n <div key={4}>{t('ra_Folder → Device → Channel → State')}</div>,\n <div key={5}>{t('ra_Device → Channel → State')}</div>,\n <div key={6}>{t('ra_Channel → State')}</div>,\n <div\n key={7}\n style={{ height: 10 }}\n />,\n <div key={8}>{t('ra_Non-experts may create new objects only in \"0_userdata.0\" or \"alias.0\".')}</div>,\n <div key={9}>\n {t(\n 'ra_The experts may create objects everywhere but from second level (e.g. \"vis.0\" or \"javascript.0\").',\n )}\n </div>,\n ];\n\n if (this.state.selected.length || this.state.selectedNonObject) {\n const id = this.state.selected[0] || this.state.selectedNonObject;\n if (id.split('.').length < 2 || (this.objects[id] && this.objects[id]?.type === 'state')) {\n // show default tooltip\n } else if (this.state.filter.expertMode) {\n switch (this.objects[id]?.type) {\n case 'device':\n value = [\n <div key={1}>{t('ra_Only following structures of objects are available:')}</div>,\n <div key={5}>{t('ra_Device → Channel → State')}</div>,\n <div\n key={7}\n style={{ height: 10 }}\n />,\n <div key={8}>\n {t('ra_Non-experts may create new objects only in \"0_userdata.0\" or \"alias.0\".')}\n </div>,\n <div key={9}>\n {t(\n 'ra_The experts may create objects everywhere but from second level (e.g. \"vis.0\" or \"javascript.0\").',\n )}\n </div>,\n ];\n break;\n case 'folder':\n value = [\n <div key={1}>{t('ra_Only following structures of objects are available:')}</div>,\n <div key={2}>{t('ra_Folder → State')}</div>,\n <div key={3}>{t('ra_Folder → Channel → State')}</div>,\n <div key={4}>{t('ra_Folder → Device → Channel → State')}</div>,\n <div\n key={7}\n style={{ height: 10 }}\n />,\n <div key={8}>\n {t('ra_Non-experts may create new objects only in \"0_userdata.0\" or \"alias.0\".')}\n </div>,\n <div key={9}>\n {t(\n 'ra_The experts may create objects everywhere but from second level (e.g. \"vis.0\" or \"javascript.0\").',\n )}\n </div>,\n ];\n break;\n case 'channel':\n value = [\n <div key={1}>{t('ra_Only following structures of objects are available:')}</div>,\n <div key={1}>{t('ra_Channel → State')}</div>,\n <div\n key={7}\n style={{ height: 10 }}\n />,\n <div key={8}>\n {t('ra_Non-experts may create new objects only in \"0_userdata.0\" or \"alias.0\".')}\n </div>,\n <div key={9}>\n {t(\n 'ra_The experts may create objects everywhere but from second level (e.g. \"vis.0\" or \"javascript.0\").',\n )}\n </div>,\n ];\n break;\n default:\n break;\n }\n } else if (id.startsWith('alias.0') || id.startsWith('0_userdata')) {\n value = [\n <div key={1}>{t('ra_Only following structures of objects are available:')}</div>,\n <div key={2}>{t('ra_Folder → State')}</div>,\n <div key={3}>{t('ra_Folder → Channel → State')}</div>,\n <div key={4}>{t('ra_Folder → Device → Channel → State')}</div>,\n <div key={5}>{t('ra_Device → Channel → State')}</div>,\n <div key={6}>{t('ra_Channel → State')}</div>,\n <div\n key={7}\n style={{ height: 10 }}\n />,\n <div key={7}>\n {t('ra_Non-experts may create new objects only in \"0_userdata.0\" or \"alias.0\".')}\n </div>,\n <div key={8}>\n {t(\n 'ra_The experts may create objects everywhere but from second level (e.g. \"vis.0\" or \"javascript.0\").',\n )}\n </div>,\n ];\n }\n }\n\n return value.length ? value : t('ra_Add new child object to selected parent');\n };\n\n /**\n * Renders the toolbar.\n */\n getToolbar(): JSX.Element {\n let allowObjectCreation = false;\n if (this.state.selected.length || this.state.selectedNonObject) {\n const id = this.state.selected[0] || this.state.selectedNonObject;\n\n if (id.split('.').length < 2 || (this.objects[id] && this.objects[id].type === 'state')) {\n allowObjectCreation = false;\n } else if (this.state.filter.expertMode) {\n allowObjectCreation = true;\n } else if (id.startsWith('alias.0') || id.startsWith('0_userdata')) {\n allowObjectCreation = true;\n }\n }\n\n return (\n <div\n style={{\n display: 'flex',\n width: '100%',\n alignItems: 'center',\n overflowX: 'auto',\n }}\n >\n <div\n style={{\n display: 'flex',\n width: '100%',\n alignItems: 'center',\n }}\n >\n <Tooltip\n title={this.props.t('ra_Refresh tree')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <div>\n <IconButton\n onClick={() => this.refreshComponent()}\n disabled={this.state.updating}\n size=\"large\"\n >\n <RefreshIcon />\n </IconButton>\n </div>\n </Tooltip>\n {this.props.showExpertButton && !this.props.expertMode && (\n <Tooltip\n title={this.props.t('ra_expertMode')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n key=\"expertMode\"\n color={this.state.filter.expertMode ? 'secondary' : 'default'}\n onClick={() => this.onFilter('expertMode', !this.state.filter.expertMode)}\n size=\"large\"\n >\n <IconExpert />\n </IconButton>\n </Tooltip>\n )}\n {!this.props.disableColumnSelector && this.props.width !== 'xs' && (\n <Tooltip\n title={this.props.t('ra_Configure')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n key=\"columnSelector\"\n color={this.state.columnsAuto ? 'primary' : 'default'}\n onClick={() => this.setState({ columnsSelectorShow: true })}\n size=\"large\"\n >\n <IconColumns />\n </IconButton>\n </Tooltip>\n )}\n {this.props.width !== 'xs' && this.state.expandAllVisible && (\n <Tooltip\n title={this.props.t('ra_Expand all nodes')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n key=\"expandAll\"\n onClick={() => this.onExpandAll()}\n size=\"large\"\n >\n <IconOpen />\n </IconButton>\n </Tooltip>\n )}\n <Tooltip\n title={this.props.t('ra_Collapse all nodes')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n key=\"collapseAll\"\n onClick={() => this.onCollapseAll()}\n size=\"large\"\n >\n <IconClosed />\n </IconButton>\n </Tooltip>\n {this.props.width !== 'xs' && (\n <Tooltip\n title={this.props.t('ra_Expand one step node')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n key=\"expandVisible\"\n color=\"primary\"\n onClick={() => this.onExpandVisible()}\n size=\"large\"\n >\n <Badge\n badgeContent={this.state.depth}\n color=\"secondary\"\n sx={(theme: Theme) => ({\n badge: {\n right: 3,\n top: 3,\n border: `2px solid ${theme.palette.background.paper}`,\n padding: '0 4px',\n },\n })}\n >\n <IconOpen />\n </Badge>\n </IconButton>\n </Tooltip>\n )}\n {this.props.width !== 'xs' && (\n <Tooltip\n title={this.props.t('ra_Collapse one step node')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n key=\"collapseVisible\"\n color=\"primary\"\n onClick={() => this.onCollapseVisible()}\n size=\"large\"\n >\n <Badge\n sx={(theme: Theme) => ({\n badge: {\n right: 3,\n top: 3,\n border: `2px solid ${theme.palette.background.paper}`,\n padding: '0 4px',\n },\n })}\n badgeContent={this.state.depth}\n color=\"secondary\"\n >\n <IconClosed />\n </Badge>\n </IconButton>\n </Tooltip>\n )}\n {this.props.objectStatesView && (\n <Tooltip\n title={this.props.t('ra_Toggle the states view')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n onClick={() => this.onStatesViewVisible()}\n size=\"large\"\n >\n <LooksOneIcon color={this.state.statesView ? 'primary' : 'inherit'} />\n </IconButton>\n </Tooltip>\n )}\n\n <Tooltip\n title={this.props.t('ra_Show/Hide object descriptions')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n onClick={() => {\n this.localStorage.setItem(\n `${this.props.dialogName || 'App'}.desc`,\n this.state.showDescription ? 'false' : 'true',\n );\n this.setState({ showDescription: !this.state.showDescription });\n }}\n size=\"large\"\n >\n <TextFieldsIcon color={this.state.showDescription ? 'primary' : 'inherit'} />\n </IconButton>\n </Tooltip>\n\n {this.props.objectAddBoolean ? (\n <Tooltip\n title={this.toolTipObjectCreating()}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <div>\n <IconButton\n disabled={!allowObjectCreation}\n onClick={() =>\n this.setState({\n modalNewObj: {\n id: this.state.selected[0] || this.state.selectedNonObject,\n },\n })\n }\n size=\"large\"\n >\n <AddIcon />\n </IconButton>\n </div>\n </Tooltip>\n ) : null}\n\n {this.props.objectImportExport && (\n <Tooltip\n title={this.props.t('ra_Add objects tree from JSON file')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n onClick={() => {\n const input = document.createElement('input');\n input.setAttribute('type', 'file');\n input.setAttribute('id', 'files');\n input.setAttribute('opacity', '0');\n input.addEventListener('change', (e: Event) => this.handleJsonUpload(e), false);\n input.click();\n }}\n size=\"large\"\n >\n <PublishIcon />\n </IconButton>\n </Tooltip>\n )}\n {this.props.objectImportExport &&\n (!!this.state.selected.length || this.state.selectedNonObject) && (\n <Tooltip\n title={this.props.t('ra_Save objects tree as JSON file')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n onClick={() =>\n this.setState({ showExportDialog: this._getSelectedIdsForExport().length })\n }\n size=\"large\"\n >\n <PublishIcon style={{ transform: 'rotate(180deg)' }} />\n </IconButton>\n </Tooltip>\n )}\n </div>\n {!!this.props.objectBrowserEditObject && this.props.width !== 'xs' && (\n <div style={{ display: 'flex', whiteSpace: 'nowrap' }}>\n {`${this.props.t('ra_Objects')}: ${Object.keys(this.info.objects).length}, ${this.props.t(\n 'ra_States',\n )}: ${\n Object.keys(this.info.objects).filter(el => this.info.objects[el].type === 'state').length\n }`}\n </div>\n )}\n {this.props.objectEditBoolean && (\n <Tooltip\n title={this.props.t('ra_Edit custom config')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n onClick={() => {\n // get all visible states\n const ids = this.root ? getVisibleItems(this.root, 'state', this.objects) : [];\n\n if (ids.length) {\n this.pauseSubscribe(true);\n\n if (ids.length === 1) {\n this.localStorage.setItem(\n `${this.props.dialogName || 'App'}.objectSelected`,\n this.state.selected[0],\n );\n this.props.router?.doNavigate(null, 'custom', this.state.selected[0]);\n }\n this.setState({ customDialog: ids, customDialogAll: true });\n } else {\n this.setState({ toast: this.props.t('ra_please select object') });\n }\n }}\n size=\"large\"\n >\n <BuildIcon />\n </IconButton>\n </Tooltip>\n )}\n </div>\n );\n }\n\n private toggleExpanded(id: string): void {\n const expanded: string[] = JSON.parse(JSON.stringify(this.state.expanded));\n const pos = expanded.indexOf(id);\n if (pos === -1) {\n expanded.push(id);\n expanded.sort();\n } else {\n expanded.splice(pos, 1);\n }\n\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectExpanded`, JSON.stringify(expanded));\n\n this.setState({ expanded });\n }\n\n private onCopy(e: React.MouseEvent, text: string | undefined): void {\n e.stopPropagation();\n e.preventDefault();\n if (text) {\n Utils.copyToClipboard(text);\n if (text.length < 50) {\n this.setState({ toast: this.props.t('ra_Copied %s', text) });\n } else {\n this.setState({ toast: this.props.t('ra_Copied') });\n }\n }\n }\n\n renderTooltipAccessControl = (acl: ioBroker.StateACL): null | JSX.Element => {\n // acl ={object,state,owner,ownerGroup}\n if (!acl) {\n return null;\n }\n const check = [\n {\n value: '0x400',\n valueNum: 0x400,\n title: 'read',\n group: 'Owner',\n },\n {\n value: '0x200',\n valueNum: 0x200,\n title: 'write',\n group: 'Owner',\n },\n {\n value: '0x40',\n valueNum: 0x40,\n title: 'read',\n group: 'Group',\n },\n {\n value: '0x20',\n valueNum: 0x20,\n title: 'write',\n group: 'Group',\n },\n {\n value: '0x4',\n valueNum: 0x4,\n title: 'read',\n group: 'Everyone',\n },\n {\n value: '0x2',\n valueNum: 0x2,\n title: 'write',\n group: 'Everyone',\n },\n ];\n const arrayTooltipText = [];\n const funcRenderStateObject = (value: 'object' | 'state'): void => {\n const rights: number = acl[value];\n check.forEach((el, i) => {\n if (rights & el.valueNum) {\n arrayTooltipText.push(\n <span key={value + i}>\n {this.texts[`acl${el.group}_${el.title}_${value}`]},\n <span style={value === 'object' ? styles.rightsObject : styles.rightsState}>\n {el.value}\n </span>\n </span>,\n );\n }\n });\n };\n\n arrayTooltipText.push(\n <span key=\"group\">\n {`${this.texts.ownerGroup}: ${(acl.ownerGroup || '').replace('system.group.', '')}`}\n </span>,\n );\n arrayTooltipText.push(\n <span key=\"owner\">{`${this.texts.ownerUser}: ${(acl.owner || '').replace('system.user.', '')}`}</span>,\n );\n funcRenderStateObject('object');\n if (acl.state) {\n funcRenderStateObject('state');\n }\n\n return arrayTooltipText.length ? (\n <span style={styles.tooltipAccessControl}>{arrayTooltipText.map(el => el)}</span>\n ) : null;\n };\n\n renderColumnButtons(id: string, item: TreeItem): (JSX.Element | null)[] | JSX.Element | null {\n if (!item.data.obj) {\n return this.props.onObjectDelete || this.props.objectEditOfAccessControl ? (\n <div style={styles.buttonDiv}>\n {this.state.filter.expertMode && this.props.objectEditOfAccessControl ? (\n <IconButton\n sx={{\n ...styles.cellButtonsButton,\n ...styles.cellButtonsEmptyButton,\n ...styles.cellButtonMinWidth,\n }}\n onClick={() =>\n this.setState({ modalEditOfAccess: true, modalEditOfAccessObjData: item.data })\n }\n size=\"large\"\n >\n <div style={{ height: 15 }}>---</div>\n </IconButton>\n ) : null}\n {this.props.onObjectDelete && item.children?.length ? (\n <IconButton\n sx={{\n ...styles.cellButtonsButton,\n ...styles.cellButtonsButtonAlone,\n }}\n size=\"small\"\n aria-label=\"delete\"\n title={this.texts.deleteObject}\n onClick={() => {\n // calculate the number of children\n const keys = Object.keys(this.objects);\n keys.sort();\n let count = 0;\n const start = `${id}.`;\n for (let i = 0; i < keys.length; i++) {\n if (keys[i].startsWith(start)) {\n count++;\n } else if (keys[i] > start) {\n break;\n }\n }\n\n if (this.props.onObjectDelete) {\n this.props.onObjectDelete(id, !!item.children?.length, false, count + 1);\n }\n }}\n >\n <IconDelete style={styles.cellButtonsButtonIcon} />\n </IconButton>\n ) : null}\n </div>\n ) : null;\n }\n\n item.data.aclTooltip =\n item.data.aclTooltip || this.renderTooltipAccessControl(item.data.obj.acl as ioBroker.StateACL);\n\n const acl = item.data.obj.acl\n ? item.data.obj.type === 'state'\n ? item.data.obj.acl.state\n : item.data.obj.acl.object\n : 0;\n const aclSystemConfig =\n item.data.obj.acl &&\n (item.data.obj.type === 'state'\n ? this.systemConfig.common.defaultNewAcl.state\n : this.systemConfig.common.defaultNewAcl.object);\n\n const showEdit = this.state.filter.expertMode || ObjectBrowserClass.isNonExpertId(item.data.id);\n\n return [\n this.state.filter.expertMode && this.props.objectEditOfAccessControl ? (\n <Tooltip\n key=\"acl\"\n title={item.data.aclTooltip}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n sx={{\n ...styles.cellButtonsButton,\n ...styles.cellButtonMinWidth,\n opacity: 1,\n }}\n onClick={() => this.setState({ modalEditOfAccess: true, modalEditOfAccessObjData: item.data })}\n size=\"large\"\n >\n <div style={styles.aclText}>\n {Number.isNaN(Number(acl))\n ? Number(aclSystemConfig).toString(16)\n : Number(acl).toString(16)}\n </div>\n </IconButton>\n </Tooltip>\n ) : (\n <div\n key=\"aclEmpty\"\n style={styles.cellButtonMinWidth}\n />\n ),\n\n showEdit ? (\n <IconButton\n key=\"edit\"\n sx={{\n marginRight: '2px',\n ...styles.cellButtonsButton,\n }}\n size=\"small\"\n aria-label=\"edit\"\n title={this.texts.editObject}\n onClick={() => {\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectSelected`, id);\n this.setState({ editObjectDialog: id, editObjectAlias: false });\n }}\n >\n <IconEdit style={styles.cellButtonsButtonIcon} />\n </IconButton>\n ) : (\n <Box\n component=\"div\"\n key=\"editDisabled\"\n sx={styles.cellButtonsButton}\n />\n ),\n\n this.props.onObjectDelete && (item.children?.length || !item.data.obj.common?.dontDelete) ? (\n <IconButton\n key=\"delete\"\n sx={styles.cellButtonsButton}\n size=\"small\"\n aria-label=\"delete\"\n onClick={() => {\n const keys = Object.keys(this.objects);\n keys.sort();\n let count = 0;\n const start = `${id}.`;\n for (let i = 0; i < keys.length; i++) {\n if (keys[i].startsWith(start)) {\n count++;\n } else if (keys[i] > start) {\n break;\n }\n }\n if (this.props.onObjectDelete) {\n this.props.onObjectDelete(\n id,\n !!item.children?.length,\n !item.data.obj?.common?.dontDelete,\n count,\n );\n }\n }}\n title={this.texts.deleteObject}\n >\n <IconDelete style={styles.cellButtonsButtonIcon} />\n </IconButton>\n ) : null,\n\n this.props.objectCustomDialog &&\n this.info.hasSomeCustoms &&\n item.data.obj.type === 'state' &&\n // @ts-expect-error deprecated from js-controller 6\n item.data.obj.common?.type !== 'file' ? (\n <IconButton\n sx={{\n ...styles.cellButtonsButton,\n ...(item.data.hasCustoms\n ? this.styles.cellButtonsButtonWithCustoms\n : styles.cellButtonsButtonWithoutCustoms),\n }}\n key=\"custom\"\n size=\"small\"\n aria-label=\"config\"\n title={this.texts.customConfig}\n onClick={() => {\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectSelected`, id);\n\n this.pauseSubscribe(true);\n this.props.router?.doNavigate(null, 'customs', id);\n this.setState({ customDialog: [id], customDialogAll: false });\n }}\n >\n <IconConfig style={styles.cellButtonsButtonIcon} />\n </IconButton>\n ) : null,\n ];\n }\n\n private readHistory(id: string): void {\n /* interface GetHistoryOptions {\n instance?: string;\n start?: number;\n end?: number;\n step?: number;\n count?: number;\n from?: boolean;\n ack?: boolean;\n q?: boolean;\n addID?: boolean;\n limit?: number;\n ignoreNull?: boolean;\n sessionId?: any;\n aggregate?: 'minmax' | 'min' | 'max' | 'average' | 'total' | 'count' | 'none';\n } */\n if (\n window.sparkline &&\n this.defaultHistory &&\n this.objects[id]?.common?.custom &&\n this.objects[id].common.custom[this.defaultHistory]\n ) {\n const now = new Date();\n now.setHours(now.getHours() - 24);\n now.setMinutes(0);\n now.setSeconds(0);\n now.setMilliseconds(0);\n const nowMs = now.getTime();\n\n this.props.socket\n .getHistory(id, {\n instance: this.defaultHistory,\n start: nowMs,\n end: Date.now(),\n step: 3600000,\n from: false,\n ack: false,\n q: false,\n addId: false,\n aggregate: 'minmax',\n })\n .then(values => {\n const sparks: HTMLDivElement[] = window.document.getElementsByClassName(\n 'sparkline',\n ) as any as HTMLDivElement[];\n\n for (let s = 0; s < sparks.length; s++) {\n if (sparks[s].dataset.id === id) {\n const v = prepareSparkData(values, nowMs);\n\n window.sparkline.sparkline(sparks[s], v);\n break;\n }\n }\n })\n .catch(e => console.warn(`Cannot read history: ${e}`));\n }\n }\n\n private getTooltipInfo(id: string, cb?: () => void): void {\n const obj = this.objects[id];\n const state = this.states[id];\n\n const { valFull, fileViewer } = formatValue({\n state,\n obj: obj as ioBroker.StateObject,\n texts: this.texts,\n dateFormat: this.props.dateFormat || this.systemConfig.common.dateFormat,\n isFloatComma:\n this.props.isFloatComma === undefined ? this.systemConfig.common.isFloatComma : this.props.isFloatComma,\n full: true,\n });\n const valFullRx: JSX.Element[] = [];\n\n valFull?.forEach(_item => {\n if (_item.t === this.texts.quality && state.q) {\n valFullRx.push(\n <div\n style={styles.cellValueTooltipBoth}\n key={_item.t}\n >\n {_item.t}\n :&nbsp;\n {_item.v}\n </div>,\n );\n // <div style={styles.cellValueTooltipValue} key={item.t + '_v'}>{item.v}</div>,\n if (!_item.nbr) {\n valFullRx.push(<br key={`${_item.t}_br`} />);\n }\n } else {\n valFullRx.push(\n <div\n style={styles.cellValueTooltipTitle}\n key={_item.t}\n >\n {_item.t}\n :&nbsp;\n </div>,\n );\n valFullRx.push(\n <div\n style={styles.cellValueTooltipValue}\n key={`${_item.t}_v`}\n >\n {_item.v}\n </div>,\n );\n if (!_item.nbr) {\n valFullRx.push(<br key={`${_item.t}_br`} />);\n }\n }\n });\n const role = obj?.common?.role || '';\n\n if (fileViewer === 'image') {\n valFullRx.push(\n <img\n style={styles.cellValueTooltipImage}\n src={state.val as string}\n alt={id}\n />,\n );\n } else if (role === 'url' || obj.common.role === 'url.self' || obj.common.role === 'url.blank') {\n // Show comment about \"Hold Ctrl/⌘ key to open the link\"\n valFullRx.unshift(\n <div\n key=\"ctrl\"\n style={{ textDecoration: 'underline', fontWeight: 'bold' }}\n >\n {this.texts.ctrlForLink}\n </div>,\n );\n } else if (this.defaultHistory && obj?.common?.custom?.[this.defaultHistory]) {\n valFullRx.push(\n <svg\n key=\"sparkline\"\n className=\"sparkline\"\n data-id={id}\n style={{ fill: '#3d85de' }}\n width=\"200\"\n height=\"30\"\n strokeWidth=\"3\"\n />,\n );\n }\n\n this.setState({ tooltipInfo: { el: valFullRx, id } }, () => cb && cb());\n }\n\n /**\n * This function renders the value in different forms in the table\n *\n * @param id state ID\n * @param item Item\n * @param narrowStyleWithDetails if use mobile view\n */\n private renderColumnValue(id: string, item: TreeItem, narrowStyleWithDetails?: boolean): JSX.Element | null {\n const obj = item.data.obj;\n if (!obj || !this.states) {\n return null;\n }\n\n if (obj.common?.type === 'file') {\n return (\n <Box\n component=\"div\"\n sx={{ ...styles.cellValueText, ...styles.cellValueFile }}\n >\n [file]\n </Box>\n );\n }\n if (!this.states[id]) {\n if (obj.type === 'state') {\n // we are waiting for state\n if (!this.recordStates.includes(id)) {\n this.recordStates.push(id);\n }\n this.states[id] = { val: null } as ioBroker.State;\n this.subscribe(id);\n }\n return null;\n }\n if (!this.recordStates.includes(id)) {\n this.recordStates.push(id);\n }\n\n const state = this.states[id];\n\n let info = item.data.state;\n if (!info) {\n const { valText } = formatValue({\n state,\n obj: obj as ioBroker.StateObject,\n texts: this.texts,\n dateFormat: this.props.dateFormat || this.systemConfig.common.dateFormat,\n isFloatComma:\n this.props.isFloatComma === undefined\n ? this.systemConfig.common.isFloatComma\n : this.props.isFloatComma,\n });\n const valTextRx: JSX.Element[] = [];\n item.data.state = { valTextRx };\n\n valTextRx.push(\n <span\n className={`newValueBrowser-${this.props.themeType || 'light'}`}\n key={`${valText.v.toString()}valText`}\n style={{\n whiteSpace: 'nowrap',\n display: 'inline-block',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }}\n >\n {valText.v.toString()}\n </span>,\n );\n if (valText.u) {\n valTextRx.push(\n <span\n className={`newValueBrowser-${this.props.themeType || 'light'}`}\n style={styles.cellValueTextUnit}\n key={`${valText.v.toString()}unit`}\n >\n {valText.u}\n </span>,\n );\n }\n if (valText.s !== undefined) {\n valTextRx.push(\n <span\n style={styles.cellValueTextState}\n className={`newValueBrowser-${this.props.themeType || 'light'}`}\n key={`${valText.v.toString()}states`}\n >\n ({valText.s})\n </span>,\n );\n }\n if (!narrowStyleWithDetails) {\n const copyText = valText.c !== undefined ? valText.c : valText.v || '';\n valTextRx.push(\n <IconCopy\n className=\"copyButton\"\n style={this.styles.iconCopy}\n onClick={e => this.onCopy(e, copyText)}\n key=\"cc\"\n />,\n );\n }\n // <IconEdit className=\"copyButton\" style={{{ ...styles.cellButtonsValueButton, styles.cellButtonsValueButtonEdit)} key=\"ce\" />\n\n info = item.data.state;\n }\n\n info.style = getValueStyle({ state, isExpertMode: this.state.filter.expertMode, isButton: item.data.button });\n\n let val: JSX.Element[] = info.valTextRx;\n if (!this.state.filter.expertMode) {\n if (item.data.button) {\n val = [\n <ButtonIcon\n key=\"button\"\n style={{ color: info.style.color, ...styles.cellValueButton }}\n />,\n ];\n } else if (item.data.switch) {\n val = [\n <Switch\n key=\"switch\"\n sx={{\n '& .MuiSwitch-thumb': { color: info.style.color },\n '& .MuiSwitch-track': {\n backgroundColor:\n !!this.states[id].val && this.state.selected.includes(id)\n ? this.props.themeType === 'dark'\n ? '#FFF !important'\n : '#111 !important'\n : undefined,\n },\n }}\n checked={!!this.states[id].val}\n />,\n ];\n }\n }\n\n return (\n <Tooltip\n key=\"value\"\n title={this.state.tooltipInfo?.el}\n slotProps={{\n popper: { sx: styles.cellValueTooltipBox },\n tooltip: { sx: styles.cellValueTooltip },\n }}\n onOpen={() => this.getTooltipInfo(id, () => this.readHistory(id))}\n onClose={() => this.state.tooltipInfo?.id === id && this.setState({ tooltipInfo: null })}\n >\n <Box\n component=\"div\"\n style={info.style}\n className={item.data.url ? 'iob-link' : undefined}\n sx={{\n ...styles.cellValueText,\n height: narrowStyleWithDetails ? undefined : ROW_HEIGHT,\n '& .admin-button:active': {\n transform: 'translate(0, 2px)',\n },\n }}\n >\n {val}\n </Box>\n </Tooltip>\n );\n }\n\n private _syncEnum(id: string, enumIds: string[], newArray: string[], cb: () => void): void {\n if (!enumIds?.length) {\n if (cb) {\n cb();\n }\n return;\n }\n const enumId = enumIds.pop() || '';\n const promises = [];\n if (this.info.objects[enumId]?.common) {\n if (this.info.objects[enumId].common.members?.length) {\n const pos = this.info.objects[enumId].common.members.indexOf(id);\n if (pos !== -1 && !newArray.includes(enumId)) {\n // delete it from members\n const obj: ioBroker.Object = JSON.parse(JSON.stringify(this.info.objects[enumId]));\n obj.common.members.splice(pos, 1);\n promises.push(\n this.props.socket\n .setObject(enumId, obj)\n .then(() => (this.info.objects[enumId] = obj))\n .catch(e => this.showError(e)),\n );\n }\n }\n\n // add to it\n if (newArray.includes(enumId) && !this.info.objects[enumId].common.members?.includes(id)) {\n // add to object\n const obj: ioBroker.Object = JSON.parse(JSON.stringify(this.info.objects[enumId]));\n obj.common.members ||= [];\n obj.common.members.push(id);\n obj.common.members.sort();\n promises.push(\n this.props.socket\n .setObject(enumId, obj)\n .then(() => (this.info.objects[enumId] = obj))\n .catch(e => this.showError(e)),\n );\n }\n }\n\n void Promise.all(promises).then(() => {\n setTimeout(() => this._syncEnum(id, enumIds, newArray, cb), 0);\n });\n }\n\n private syncEnum(id: string, enumName: 'func' | 'room', newArray: string[]): Promise<void> {\n const toCheck = [...this.info[enumName === 'func' ? 'funcEnums' : 'roomEnums']];\n\n return new Promise<void>(resolve => {\n this._syncEnum(id, toCheck, newArray, () => {\n // force update of an object\n resolve();\n });\n });\n }\n\n private renderEnumDialog(): JSX.Element | null {\n if (!this.state.enumDialog) {\n return null;\n }\n const type = this.state.enumDialog.type;\n const item = this.state.enumDialog.item;\n const itemEnums: string[] = this.state.enumDialogEnums;\n const enumsOriginal = this.state.enumDialog.enumsOriginal;\n\n const enums = (type === 'room' ? this.info.roomEnums : this.info.funcEnums)\n .map(id => ({\n name: getName(this.objects[id]?.common?.name || id.split('.').pop() || '', this.props.lang),\n value: id,\n icon: getSelectIdIconFromObjects(this.objects, id, this.props.lang, this.imagePrefix),\n }))\n .sort((a, b) => (a.name > b.name ? 1 : -1));\n\n enums.forEach(_item => {\n if (_item.icon && typeof _item.icon === 'string') {\n _item.icon = (\n <Box style={styles.enumIconDiv}>\n <img\n src={_item.icon}\n style={styles.enumIcon}\n alt={_item.name}\n />\n </Box>\n );\n }\n });\n\n // const hasIcons = !!enums.find(item => item.icon);\n\n return (\n <Dialog\n sx={{ '& .MuiPaper-root': styles.enumDialog }}\n onClose={() => this.setState({ enumDialog: null })}\n aria-labelledby=\"enum-dialog-title\"\n open={!0} // true\n >\n <DialogTitle\n id=\"enum-dialog-title\"\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n width: '100%',\n flexWrap: 'nowrap',\n gap: 8,\n paddingRight: 12,\n }}\n >\n {type === 'func' ? this.props.t('ra_Define functions') : this.props.t('ra_Define rooms')}\n <Fab\n color=\"primary\"\n disabled={enumsOriginal === JSON.stringify(itemEnums)}\n size=\"small\"\n onClick={() =>\n this.syncEnum(item.data.id, type, itemEnums).then(() =>\n this.setState({ enumDialog: null, enumDialogEnums: null }),\n )\n }\n >\n <IconCheck />\n </Fab>\n </DialogTitle>\n <List sx={{ '&.MuiList-root': styles.enumList }}>\n {enums.map(_item => {\n let id;\n let name;\n let icon;\n\n if (typeof _item === 'object') {\n id = _item.value;\n name = _item.name;\n icon = _item.icon;\n } else {\n id = _item;\n name = _item;\n }\n const labelId = `checkbox-list-label-${id}`;\n\n return (\n <ListItem\n sx={styles.headerCellSelectItem}\n key={id}\n onClick={() => {\n const pos = itemEnums.indexOf(id);\n const enumDialogEnums: string[] = JSON.parse(\n JSON.stringify(this.state.enumDialogEnums),\n );\n if (pos === -1) {\n enumDialogEnums.push(id);\n enumDialogEnums.sort();\n } else {\n enumDialogEnums.splice(pos, 1);\n }\n this.setState({ enumDialogEnums });\n }}\n secondaryAction={icon}\n >\n <ListItemIcon sx={{ '&.MuiListItemIcon-root': styles.enumCheckbox }}>\n <Checkbox\n edge=\"start\"\n checked={itemEnums.includes(id)}\n tabIndex={-1}\n disableRipple\n inputProps={{ 'aria-labelledby': labelId }}\n />\n </ListItemIcon>\n <ListItemText id={labelId}>{name}</ListItemText>\n </ListItem>\n );\n })}\n </List>\n </Dialog>\n );\n }\n\n private renderEditRoleDialog(): JSX.Element | null {\n if (!this.state.roleDialog || !this.props.objectBrowserEditRole) {\n return null;\n }\n\n if (this.state.roleDialog && this.props.objectBrowserEditRole) {\n const ObjectBrowserEditRole = this.props.objectBrowserEditRole;\n\n return (\n <ObjectBrowserEditRole\n key=\"objectBrowserEditRole\"\n id={this.state.roleDialog}\n socket={this.props.socket}\n t={this.props.t}\n roleArray={this.info.roles}\n commonType={this.info.objects[this.state.roleDialog]?.common?.type}\n onClose={(obj?: ioBroker.Object | null) => {\n if (obj) {\n this.info.objects[this.state.roleDialog] = obj;\n }\n this.setState({ roleDialog: null });\n }}\n />\n );\n }\n return null;\n }\n\n private onColumnsEditCustomDialogClose(isSave?: boolean): void {\n // cannot be null\n const customColumnDialog: {\n value: boolean | number | string;\n type: 'boolean' | 'number' | 'string';\n initValue: boolean | number | string;\n } = this.customColumnDialog as {\n value: boolean | number | string;\n type: 'boolean' | 'number' | 'string';\n initValue: boolean | number | string;\n };\n\n if (isSave) {\n let value: string | number | boolean = customColumnDialog.value;\n if (customColumnDialog.type === 'boolean') {\n value = value === 'true' || value === true;\n } else if (customColumnDialog.type === 'number') {\n value = parseFloat(value as any as string);\n }\n this.customColumnDialog = null;\n this.props.socket\n .getObject(this.state.columnsEditCustomDialog?.obj?._id || '')\n .then(obj => {\n if (obj && ObjectBrowserClass.setCustomValue(obj, this.state.columnsEditCustomDialog?.it, value)) {\n return this.props.socket.setObject(obj._id, obj);\n }\n throw new Error(this.props.t('ra_Cannot update attribute, because not found in the object'));\n })\n .then(() => this.setState({ columnsEditCustomDialog: null }))\n .catch(e => this.showError(e));\n } else {\n this.customColumnDialog = null;\n this.setState({ columnsEditCustomDialog: null });\n }\n }\n\n private renderColumnsEditCustomDialog(): JSX.Element | null {\n if (!this.state.columnsEditCustomDialog) {\n return null;\n }\n if (!this.customColumnDialog) {\n const value = ObjectBrowserClass.getCustomValue(\n this.state.columnsEditCustomDialog.obj,\n this.state.columnsEditCustomDialog.it,\n );\n this.customColumnDialog = {\n type: (this.state.columnsEditCustomDialog.it.type || typeof value) as 'boolean' | 'string' | 'number',\n initValue: (value === null || value === undefined ? '' : value).toString(),\n value: (value === null || value === undefined ? '' : value).toString(),\n };\n }\n\n return (\n <Dialog\n onClose={() => this.setState({ columnsEditCustomDialog: null })}\n maxWidth=\"md\"\n aria-labelledby=\"custom-dialog-title\"\n open={!0}\n >\n <DialogTitle id=\"custom-dialog-title\">\n {`${this.props.t('ra_Edit object field')}: ${this.state.columnsEditCustomDialog.obj._id}`}\n </DialogTitle>\n <DialogContent>\n <DialogContentText id=\"alert-dialog-description\">\n {this.customColumnDialog.type === 'boolean' ? (\n <FormControlLabel\n control={\n <Checkbox\n onKeyUp={e => e.key === 'Enter' && this.onColumnsEditCustomDialogClose(true)}\n defaultChecked={this.customColumnDialog.value === 'true'}\n onChange={e => {\n const customColumnDialog: {\n value: boolean | number | string;\n type: 'boolean' | 'number' | 'string';\n initValue: boolean | number | string;\n } = this.customColumnDialog as {\n value: boolean | number | string;\n type: 'boolean' | 'number' | 'string';\n initValue: boolean | number | string;\n };\n\n customColumnDialog.value = e.target.checked.toString();\n const changed = customColumnDialog.value !== customColumnDialog.initValue;\n if (changed === !this.state.customColumnDialogValueChanged) {\n this.setState({ customColumnDialogValueChanged: changed });\n }\n }}\n />\n }\n label={`${this.state.columnsEditCustomDialog.it.name} (${this.state.columnsEditCustomDialog.it.pathText})`}\n />\n ) : (\n <TextField\n variant=\"standard\"\n defaultValue={this.customColumnDialog.value}\n fullWidth\n onKeyUp={e => e.key === 'Enter' && this.onColumnsEditCustomDialogClose(true)}\n label={`${this.state.columnsEditCustomDialog.it.name} (${this.state.columnsEditCustomDialog.it.pathText})`}\n onChange={e => {\n const customColumnDialog: {\n value: boolean | number | string;\n type: 'boolean' | 'number' | 'string';\n initValue: boolean | number | string;\n } = this.customColumnDialog as {\n value: boolean | number | string;\n type: 'boolean' | 'number' | 'string';\n initValue: boolean | number | string;\n };\n\n customColumnDialog.value = e.target.value;\n const changed = customColumnDialog.value !== customColumnDialog.initValue;\n if (changed === !this.state.customColumnDialogValueChanged) {\n this.setState({ customColumnDialogValueChanged: changed });\n }\n }}\n autoFocus\n />\n )}\n </DialogContentText>\n </DialogContent>\n <DialogActions>\n <Button\n variant=\"contained\"\n onClick={() => this.onColumnsEditCustomDialogClose(true)}\n disabled={!this.state.customColumnDialogValueChanged}\n color=\"primary\"\n startIcon={<IconCheck />}\n >\n {this.props.t('ra_Update')}\n </Button>\n <Button\n color=\"grey\"\n variant=\"contained\"\n onClick={() => this.onColumnsEditCustomDialogClose()}\n startIcon={<IconClose />}\n >\n {this.props.t('ra_Cancel')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n }\n\n private static getCustomValue(obj: ioBroker.Object, it: AdapterColumn): string | number | boolean | null {\n if (obj?._id?.startsWith(`${it.adapter}.`) && it.path.length > 1) {\n const p = it.path;\n let value;\n const anyObj: Record<string, any> = obj as Record<string, any>;\n if (anyObj[p[0]] && typeof anyObj[p[0]] === 'object') {\n if (p.length === 2) {\n // most common case\n value = anyObj[p[0]][p[1]];\n } else if (p.length === 3) {\n value =\n anyObj[p[0]][p[1]] && typeof anyObj[p[0]][p[1]] === 'object' ? anyObj[p[0]][p[1]][p[2]] : null;\n } else if (p.length === 4) {\n value =\n anyObj[p[0]][p[1]] && typeof anyObj[p[0]][p[1]] === 'object' && anyObj[p[0]][p[1]][p[2]]\n ? anyObj[p[0]][p[1]][p[2]][p[3]]\n : null;\n } else if (p.length === 5) {\n value =\n anyObj[p[0]][p[1]] &&\n typeof anyObj[p[0]][p[1]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]] &&\n anyObj[p[0]][p[1]][p[2]][p[3]]\n ? anyObj[p[0]][p[1]][p[2]][p[3]][p[4]]\n : null;\n } else if (p.length === 6) {\n value =\n anyObj[p[0]][p[1]] &&\n typeof anyObj[p[0]][p[1]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]] &&\n anyObj[p[0]][p[1]][p[2]][p[3]] &&\n anyObj[p[0]][p[1]][p[2]][p[3]][p[4]]\n ? anyObj[p[0]][p[1]][p[2]][p[3]][p[4]][p[5]]\n : null;\n }\n if (value === undefined || value === null) {\n return null;\n }\n return value;\n }\n }\n\n return null;\n }\n\n private static setCustomValue(obj: ioBroker.Object, it: AdapterColumn, value: string | number | boolean): boolean {\n if (obj?._id?.startsWith(`${it.adapter}.`) && it.path.length > 1) {\n const p = it.path;\n const anyObj: Record<string, any> = obj as Record<string, any>;\n if (anyObj[p[0]] && typeof anyObj[p[0]] === 'object') {\n if (p.length === 2) {\n // most common case\n anyObj[p[0]][p[1]] = value;\n return true;\n }\n if (p.length === 3) {\n if (anyObj[p[0]][p[1]] && typeof anyObj[p[0]][p[1]] === 'object') {\n anyObj[p[0]][p[1]][p[2]] = value;\n return true;\n }\n } else if (p.length === 4) {\n if (\n anyObj[p[0]][p[1]] &&\n typeof anyObj[p[0]][p[1]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]] &&\n typeof anyObj[p[0]][p[1]][p[2]] === 'object'\n ) {\n anyObj[p[0]][p[1]][p[2]][p[3]] = value;\n return true;\n }\n } else if (p.length === 5) {\n if (\n anyObj[p[0]][p[1]] &&\n typeof anyObj[p[0]][p[1]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]] &&\n typeof anyObj[p[0]][p[1]][p[2]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]][p[3]] &&\n typeof anyObj[p[0]][p[1]][p[2]][p[3]] === 'object'\n ) {\n anyObj[p[0]][p[1]][p[2]][p[3]][p[4]] = value;\n return true;\n }\n } else if (p.length === 6) {\n if (\n anyObj[p[0]][p[1]] &&\n typeof anyObj[p[0]][p[1]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]] &&\n typeof anyObj[p[0]][p[1]][p[2]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]][p[3]] &&\n typeof anyObj[p[0]][p[1]][p[2]][p[3]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]][p[3]][p[4]] &&\n typeof anyObj[p[0]][p[1]][p[2]][p[3]][p[4]] === 'object'\n ) {\n anyObj[p[0]][p[1]][p[2]][p[3]][p[4]][p[5]] = value;\n return true;\n }\n }\n }\n }\n return false;\n }\n\n /**\n * Renders a custom value.\n */\n renderCustomValue(obj: ioBroker.Object, it: AdapterColumn, item: TreeItem): JSX.Element | null {\n const text = ObjectBrowserClass.getCustomValue(obj, it);\n if (text !== null && text !== undefined) {\n if (it.edit && !this.props.notEditable && (!it.objTypes || it.objTypes.includes(obj.type))) {\n return (\n <Box\n component=\"div\"\n style={{\n ...styles.columnCustom,\n ...styles.columnCustomEditable,\n ...styles[`columnCustom_${it.align}`],\n }}\n onClick={() =>\n this.setState({\n columnsEditCustomDialog: { item, it, obj },\n customColumnDialogValueChanged: false,\n })\n }\n >\n {text}\n </Box>\n );\n }\n return (\n <Box\n component=\"div\"\n style={{\n ...styles.columnCustom,\n ...styles[`columnCustom_${it.align}`],\n }}\n >\n {text}\n </Box>\n );\n }\n return null;\n }\n\n renderAliasLink(id: string, index?: number, customStyle?: Record<string, any>): JSX.Element | null {\n const _index = index || 0;\n // read the type of operation\n const aliasObj = this.objects[this.info.aliasesMap[id][_index]].common.alias.id;\n if (aliasObj) {\n return (\n <Box\n component=\"div\"\n onClick={e => {\n e.stopPropagation();\n e.preventDefault();\n const aliasId = this.info.aliasesMap[id][_index];\n // if more than one alias, close the menu\n if (this.info.aliasesMap[id].length > 1) {\n this.setState({ aliasMenu: '' });\n }\n this.onSelect(aliasId);\n setTimeout(() => this.expandAllSelected(() => this.scrollToItem(aliasId)), 100);\n }}\n sx={customStyle || this.styles.aliasAlone}\n >\n <span className=\"admin-browser-arrow\">\n {typeof aliasObj === 'string' || (aliasObj.read === id && aliasObj.write === id)\n ? '↔'\n : aliasObj.read === id\n ? '→'\n : '←'}\n </span>\n {this.info.aliasesMap[id][_index]}\n </Box>\n );\n }\n\n return null;\n }\n\n /**\n * Renders a leaf.\n */\n renderLeaf(\n item: TreeItem,\n isExpanded: boolean | undefined,\n counter: { count: number },\n ): { row: JSX.Element; details: JSX.Element | null } {\n const id = item.data.id;\n counter.count++;\n isExpanded = isExpanded === undefined ? this.state.expanded.includes(id) : isExpanded;\n\n // icon\n let iconFolder;\n const obj = item.data.obj;\n const itemType = obj?.type;\n\n if (\n item.children ||\n itemType === 'folder' ||\n itemType === 'device' ||\n itemType === 'channel' ||\n itemType === 'meta'\n ) {\n iconFolder = isExpanded ? (\n <IconOpen\n style={this.styles.cellIdIconFolder}\n onClick={() => this.toggleExpanded(id)}\n />\n ) : (\n <IconClosed\n style={this.styles.cellIdIconFolder}\n onClick={() => this.toggleExpanded(id)}\n />\n );\n } else if (obj && obj.common && obj.common.write === false && obj.type === 'state') {\n iconFolder = <IconDocumentReadOnly style={this.styles.cellIdIconDocument} />;\n } else {\n iconFolder = <IconDocument style={this.styles.cellIdIconDocument} />;\n }\n\n let iconItem = null;\n if (item.data.icon) {\n if (typeof item.data.icon === 'string') {\n if (item.data.icon.length < 3) {\n iconItem = (\n <span\n className=\"iconOwn\"\n style={styles.cellIdIconOwn}\n >\n {item.data.icon}\n </span>\n ); // utf-8 char\n } else {\n iconItem = (\n <Icon\n style={styles.cellIdIconOwn}\n className=\"iconOwn\"\n src={item.data.icon}\n alt=\"\"\n />\n );\n }\n } else {\n iconItem = item.data.icon;\n }\n }\n\n const common = obj?.common;\n\n const typeImg = (obj?.type && ITEM_IMAGES[obj.type]) || <div className=\"itemIcon\" />;\n\n const paddingLeft = this.levelPadding * (item.data.level || 0);\n\n // recalculate rooms and function names if the language changed\n if (item.data.lang !== this.props.lang) {\n const { rooms, per } = findRoomsForObject(this.info, id, this.props.lang);\n item.data.rooms = rooms.join(', ');\n item.data.per = per;\n const { funcs, pef } = findFunctionsForObject(this.info, id, this.props.lang);\n item.data.funcs = funcs.join(', ');\n item.data.pef = pef;\n item.data.lang = this.props.lang;\n }\n\n const checkbox =\n this.props.multiSelect &&\n this.objects[id] &&\n (!this.props.types || this.props.types.includes(this.objects[id].type)) ? (\n <Checkbox\n style={styles.checkBox}\n checked={this.state.selected.includes(id)}\n />\n ) : null;\n\n let valueEditable =\n !this.props.notEditable &&\n itemType === 'state' &&\n (this.state.filter.expertMode || common?.write !== false);\n if (this.props.objectBrowserViewFile && common?.type === 'file') {\n valueEditable = true;\n }\n\n const enumEditable =\n !this.props.notEditable &&\n this.objects[id] &&\n (this.state.filter.expertMode || itemType === 'state' || itemType === 'channel' || itemType === 'device');\n\n const checkVisibleObjectType =\n this.state.statesView && (itemType === 'state' || itemType === 'channel' || itemType === 'device');\n\n let newValue = '';\n const newValueTitle = [];\n if (checkVisibleObjectType) {\n newValue = this.states[id]?.from;\n if (newValue === undefined) {\n newValue = '&nbsp;';\n } else {\n newValue = newValue ? newValue.replace(/^system\\.adapter\\.|^system\\./, '') : '';\n newValueTitle.push(`${this.texts.stateChangedFrom} ${newValue}`);\n }\n if (obj?.user) {\n const user = obj.user.replace('system.user.', '');\n newValue += `/${user}`;\n newValueTitle.push(`${this.texts.stateChangedBy} ${user}`);\n }\n }\n\n if (obj) {\n if (obj.from) {\n newValueTitle.push(\n `${this.texts.objectChangedFrom} ${obj.from.replace(/^system\\.adapter\\.|^system\\./, '')}`,\n );\n }\n if (obj.user) {\n newValueTitle.push(`${this.texts.objectChangedBy} ${obj.user.replace(/^system\\.user\\./, '')}`);\n }\n if (obj.ts) {\n newValueTitle.push(\n `${this.texts.objectChangedByUser} ${Utils.formatDate(new Date(obj.ts), this.props.dateFormat || this.systemConfig.common.dateFormat)}`,\n );\n }\n }\n\n let readWriteAlias = false;\n let alias: JSX.Element | null = null;\n if (id.startsWith('alias.') && common?.alias?.id) {\n readWriteAlias = typeof common.alias.id === 'object';\n if (readWriteAlias) {\n alias = (\n <div style={styles.cellIdAliasReadWriteDiv}>\n {common.alias.id.read ? (\n <Box\n component=\"div\"\n onClick={e => {\n e.stopPropagation();\n e.preventDefault();\n this.onSelect(common.alias.id.read);\n setTimeout(\n () => this.expandAllSelected(() => this.scrollToItem(common.alias.id.read)),\n 100,\n );\n }}\n sx={this.styles.aliasReadWrite}\n >\n ←{common.alias.id.read}\n </Box>\n ) : null}\n {common.alias.id.write ? (\n <Box\n component=\"div\"\n onClick={e => {\n e.stopPropagation();\n e.preventDefault();\n this.onSelect(common.alias.id.write);\n setTimeout(\n () => this.expandAllSelected(() => this.scrollToItem(common.alias.id.write)),\n 100,\n );\n }}\n sx={this.styles.aliasReadWrite}\n >\n →{common.alias.id.write}\n </Box>\n ) : null}\n </div>\n );\n } else {\n alias = (\n <Box\n component=\"div\"\n onClick={e => {\n e.stopPropagation();\n e.preventDefault();\n this.onSelect(common.alias.id);\n setTimeout(() => this.expandAllSelected(() => this.scrollToItem(common.alias.id)), 100);\n }}\n sx={this.styles.aliasAlone}\n >\n →{common.alias.id}\n </Box>\n );\n }\n } else if (this.info.aliasesMap[id]) {\n // Some alias points to this object. It can be more than one\n if (this.info.aliasesMap[id].length > 1) {\n // Show number of aliases and open a menu by click\n alias = (\n <Box\n component=\"div\"\n id={`alias_${id}`}\n onClick={e => {\n e.stopPropagation();\n e.preventDefault();\n this.setState({ aliasMenu: id });\n }}\n sx={this.styles.aliasAlone}\n >\n {this.props.t('ra_%s links from aliases', this.info.aliasesMap[id].length)}\n </Box>\n );\n } else {\n // Show name of alias and open it by click\n alias = this.renderAliasLink(id, 0);\n }\n }\n\n let checkColor = common?.color;\n let invertBackground;\n if (checkColor && !this.state.selected.includes(id)) {\n const background =\n this.props.themeName === 'dark' ? '#1f1f1f' : this.props.themeName === 'blue' ? '#222a2e' : '#FFFFFF';\n const distance = Utils.colorDistance(checkColor, background);\n // console.log(`Distance: ${checkColor} - ${background} = ${distance}`);\n if (distance < 1000) {\n invertBackground = this.props.themeType === 'dark' ? '#9a9a9a' : '#565656';\n }\n }\n let bold = false;\n if (id === '0_userdata') {\n checkColor = COLOR_NAME_USERDATA(this.props.themeType);\n bold = true;\n } else if (id === 'alias') {\n checkColor = COLOR_NAME_ALIAS(this.props.themeType);\n bold = true;\n } else if (id === 'javascript') {\n checkColor = COLOR_NAME_JAVASCRIPT(this.props.themeType);\n bold = true;\n } else if (id === 'system') {\n checkColor = COLOR_NAME_SYSTEM(this.props.themeType);\n bold = true;\n } else if (id === 'system.adapter') {\n checkColor = COLOR_NAME_SYSTEM_ADAPTER(this.props.themeType);\n } else if (!checkColor || this.state.selected.includes(id)) {\n checkColor = 'inherit';\n }\n\n const icons = [];\n\n if (common?.statusStates) {\n const ids: Record<string, string> = {};\n Object.keys(common.statusStates).forEach(name => {\n let _id = common.statusStates[name];\n if (_id.split('.').length < 3) {\n _id = `${id}.${_id}`;\n }\n ids[name] = _id;\n\n if (!this.states[_id]) {\n if (this.objects[_id]?.type === 'state') {\n if (!this.recordStates.includes(_id)) {\n this.recordStates.push(_id);\n }\n this.states[_id] = { val: null } as ioBroker.State;\n this.subscribe(_id);\n }\n } else if (!this.recordStates.includes(_id)) {\n this.recordStates.push(_id);\n }\n });\n // calculate color\n // errorId has priority\n let colorSet = false;\n if (common.statusStates.errorId && this.states[ids.errorId] && this.states[ids.errorId].val) {\n checkColor = this.props.themeType === 'dark' ? COLOR_NAME_ERROR_DARK : COLOR_NAME_ERROR_LIGHT;\n colorSet = true;\n icons.push(\n <IconError\n key=\"error\"\n // title={this.texts.deviceError}\n style={this.styles.iconDeviceError}\n />,\n );\n }\n\n if (ids.onlineId && this.states[ids.onlineId]) {\n if (!colorSet) {\n if (this.states[ids.onlineId].val) {\n checkColor =\n this.props.themeType === 'dark' ? COLOR_NAME_CONNECTED_DARK : COLOR_NAME_CONNECTED_LIGHT;\n icons.push(\n <IconConnection\n key=\"conn\"\n // title={this.texts.deviceError}\n style={this.styles.iconDeviceConnected}\n />,\n );\n } else {\n checkColor =\n this.props.themeType === 'dark'\n ? COLOR_NAME_DISCONNECTED_DARK\n : COLOR_NAME_DISCONNECTED_LIGHT;\n icons.push(\n <IconDisconnected\n key=\"disc\"\n // title={this.texts.deviceError}\n style={this.styles.iconDeviceDisconnected}\n />,\n );\n }\n } else if (this.states[ids.onlineId].val) {\n icons.push(\n <IconConnection\n key=\"conn\"\n // title={this.texts.deviceError}\n style={this.styles.iconDeviceConnected}\n />,\n );\n } else {\n icons.push(\n <IconDisconnected\n key=\"disc\"\n // title={this.texts.deviceError}\n style={this.styles.iconDeviceDisconnected}\n />,\n );\n }\n } else if (ids.offlineId && this.states[ids.offlineId]) {\n if (!colorSet) {\n if (this.states[ids.offlineId].val) {\n checkColor =\n this.props.themeType === 'dark'\n ? COLOR_NAME_DISCONNECTED_DARK\n : COLOR_NAME_DISCONNECTED_LIGHT;\n icons.push(\n <IconDisconnected\n key=\"disc\"\n // title={this.texts.deviceError}\n style={this.styles.iconDeviceDisconnected}\n />,\n );\n } else {\n checkColor =\n this.props.themeType === 'dark' ? COLOR_NAME_CONNECTED_DARK : COLOR_NAME_CONNECTED_LIGHT;\n icons.push(\n <IconConnection\n key=\"conn\"\n // title={this.texts.deviceError}\n style={this.styles.iconDeviceConnected}\n />,\n );\n }\n } else if (this.states[ids.offlineId].val) {\n icons.push(\n <IconDisconnected\n key=\"disc\"\n // title={this.texts.deviceError}\n style={this.styles.iconDeviceDisconnected}\n />,\n );\n } else {\n icons.push(\n <IconConnection\n key=\"conn\"\n // title={this.texts.deviceError}\n style={this.styles.iconDeviceConnected}\n />,\n );\n }\n }\n }\n\n const q = checkVisibleObjectType ? Utils.quality2text(this.states[id]?.q || 0).join(', ') : null;\n\n let name: JSX.Element[] | string = item.data?.title || '';\n let useDesc = false;\n if (this.state.showDescription) {\n const oTooltip: string | null = getObjectTooltip(item.data, this.props.lang);\n if (oTooltip) {\n name = [\n <div\n key=\"name\"\n style={styles.cellNameDivDiv}\n >\n {name}\n </div>,\n <div\n key=\"desc\"\n style={styles.cellDescription}\n >\n {oTooltip}\n </div>,\n ];\n useDesc = !!oTooltip;\n }\n }\n\n const narrowStyleWithDetails = this.props.width === 'xs' && this.state.focused === id;\n\n const colID = (\n <Grid2\n container\n wrap=\"nowrap\"\n direction=\"row\"\n sx={styles.cellId}\n style={{ width: this.columnsVisibility.id, paddingLeft }}\n >\n <Grid2\n container\n alignItems=\"center\"\n >\n {checkbox}\n {iconFolder}\n </Grid2>\n <Grid2\n style={{\n ...styles.cellIdSpan,\n ...(invertBackground ? this.styles.invertedBackground : undefined),\n color: checkColor,\n fontWeight: bold ? 'bold' : undefined,\n }}\n >\n <Tooltip\n title={getIdFieldTooltip(item.data, this.props.lang)}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <div>{item.data.name}</div>\n </Tooltip>\n {alias}\n {icons}\n </Grid2>\n <div style={{ ...styles.grow, ...(invertBackground ? this.styles.invertedBackgroundFlex : {}) }} />\n <Grid2\n container\n alignItems=\"center\"\n >\n {iconItem}\n </Grid2>\n {this.props.width !== 'xs' ? (\n <div>\n <IconCopy\n className={narrowStyleWithDetails ? '' : 'copyButton'}\n style={styles.cellCopyButton}\n onClick={e => this.onCopy(e, id)}\n />\n </div>\n ) : null}\n </Grid2>\n );\n\n let colName =\n (narrowStyleWithDetails && name) || this.columnsVisibility.name ? (\n <Box\n component=\"div\"\n sx={{\n ...styles.cellName,\n ...(useDesc ? styles.cellNameWithDesc : undefined),\n width: this.props.width !== 'xs' ? this.columnsVisibility.name : undefined,\n ml: narrowStyleWithDetails ? 0 : '5px',\n }}\n >\n {name}\n {!narrowStyleWithDetails && item.data?.title ? (\n <Box style={{ color: checkColor }}>\n <IconCopy\n className=\"copyButton\"\n style={styles.cellCopyButton}\n onClick={e => this.onCopy(e, item.data?.title)}\n />\n </Box>\n ) : null}\n </Box>\n ) : null;\n\n let colMiddle:\n | ({\n el: JSX.Element;\n type:\n | 'filter_type'\n | 'filter_role'\n | 'filter_func'\n | 'filter_room'\n | 'quality'\n | 'from'\n | 'lc'\n | 'ts';\n onClick?: (() => void) | null | undefined;\n } | null)[]\n | null;\n if (!this.state.statesView) {\n colMiddle = [\n (narrowStyleWithDetails && obj?.type) || this.columnsVisibility.type\n ? {\n el: (\n <div\n key=\"type\"\n style={{\n ...styles.cellType,\n width: this.props.width !== 'xs' ? this.columnsVisibility.type : undefined,\n }}\n >\n {typeImg}\n &nbsp;\n {obj?.type}\n </div>\n ),\n type: 'filter_type',\n }\n : null,\n (narrowStyleWithDetails && common) || this.columnsVisibility.role\n ? {\n el: (\n <div\n key=\"role\"\n style={{\n ...styles.cellRole,\n width: this.props.width !== 'xs' ? this.columnsVisibility.role : '100%',\n cursor:\n this.state.filter.expertMode &&\n enumEditable &&\n this.props.objectBrowserEditRole\n ? 'text'\n : 'default',\n }}\n onClick={\n !narrowStyleWithDetails &&\n this.state.filter.expertMode &&\n enumEditable &&\n this.props.objectBrowserEditRole\n ? () => this.setState({ roleDialog: item.data.id })\n : undefined\n }\n >\n {common?.role}\n </div>\n ),\n type: 'filter_role',\n onClick:\n narrowStyleWithDetails &&\n this.state.filter.expertMode &&\n enumEditable &&\n this.props.objectBrowserEditRole\n ? () => this.setState({ roleDialog: item.data.id })\n : undefined,\n }\n : null,\n (narrowStyleWithDetails && common) || this.columnsVisibility.room\n ? {\n el: (\n <div\n key=\"room\"\n style={{\n ...styles.cellRoom,\n ...(item.data.per ? styles.cellEnumParent : {}),\n width: this.props.width !== 'xs' ? this.columnsVisibility.room : '100%',\n cursor: enumEditable ? 'text' : 'default',\n }}\n onClick={\n !narrowStyleWithDetails && enumEditable\n ? () => {\n const enums = findEnumsForObjectAsIds(\n this.info,\n item.data.id,\n 'roomEnums',\n );\n this.setState({\n enumDialogEnums: enums,\n enumDialog: {\n item,\n type: 'room',\n enumsOriginal: JSON.stringify(enums),\n },\n });\n }\n : undefined\n }\n >\n {item.data.rooms}\n </div>\n ),\n type: 'filter_room',\n onClick:\n narrowStyleWithDetails && enumEditable\n ? () => {\n const enums = findEnumsForObjectAsIds(this.info, item.data.id, 'roomEnums');\n this.setState({\n enumDialogEnums: enums,\n enumDialog: {\n item,\n type: 'room',\n enumsOriginal: JSON.stringify(enums),\n },\n });\n }\n : undefined,\n }\n : null,\n (narrowStyleWithDetails && common) || this.columnsVisibility.func\n ? {\n el: (\n <div\n key=\"func\"\n style={{\n ...styles.cellFunc,\n ...(item.data.pef ? styles.cellEnumParent : {}),\n width: this.props.width !== 'xs' ? this.columnsVisibility.func : '100%',\n cursor: enumEditable ? 'text' : 'default',\n }}\n onClick={\n !narrowStyleWithDetails && enumEditable\n ? () => {\n const enums = findEnumsForObjectAsIds(\n this.info,\n item.data.id,\n 'funcEnums',\n );\n this.setState({\n enumDialogEnums: enums,\n enumDialog: {\n item,\n type: 'func',\n enumsOriginal: JSON.stringify(enums),\n },\n });\n }\n : undefined\n }\n >\n {item.data.funcs}\n </div>\n ),\n type: 'filter_func',\n onClick:\n narrowStyleWithDetails && enumEditable\n ? () => {\n const enums = findEnumsForObjectAsIds(this.info, item.data.id, 'funcEnums');\n this.setState({\n enumDialogEnums: enums,\n enumDialog: {\n item,\n type: 'func',\n enumsOriginal: JSON.stringify(enums),\n },\n });\n }\n : undefined,\n }\n : null,\n ];\n } else {\n colMiddle = [\n (narrowStyleWithDetails && checkVisibleObjectType && this.states[id]?.from) ||\n this.columnsVisibility.changedFrom\n ? {\n el: (\n <div\n key=\"from\"\n style={{\n ...styles.cellRole,\n width: this.props.width !== 'xs' ? this.columnsVisibility.changedFrom : undefined,\n }}\n title={newValueTitle.join('\\n')}\n >\n {checkVisibleObjectType && this.states[id]?.from ? newValue : null}\n </div>\n ),\n type: 'from',\n }\n : null,\n (narrowStyleWithDetails && q) || this.columnsVisibility.qualityCode\n ? {\n el: (\n <div\n key=\"q\"\n style={{\n ...styles.cellRole,\n width: this.props.width !== 'xs' ? this.columnsVisibility.qualityCode : undefined,\n }}\n title={q || ''}\n >\n {q}\n </div>\n ),\n type: 'quality',\n }\n : null,\n (narrowStyleWithDetails && checkVisibleObjectType && this.states[id]?.ts) ||\n this.columnsVisibility.timestamp\n ? {\n el: (\n <div\n key=\"ts\"\n style={{\n ...styles.cellRole,\n width: this.props.width !== 'xs' ? this.columnsVisibility.timestamp : undefined,\n }}\n >\n {checkVisibleObjectType && this.states[id]?.ts\n ? Utils.formatDate(\n new Date(this.states[id].ts),\n this.props.dateFormat || this.systemConfig.common.dateFormat,\n )\n : null}\n </div>\n ),\n type: 'ts',\n }\n : null,\n (narrowStyleWithDetails && checkVisibleObjectType && this.states[id]?.lc) ||\n this.columnsVisibility.lastChange\n ? {\n el: (\n <div\n key=\"lc\"\n style={{\n ...styles.cellRole,\n width: this.props.width !== 'xs' ? this.columnsVisibility.lastChange : undefined,\n }}\n >\n {checkVisibleObjectType && this.states[id]?.lc\n ? Utils.formatDate(\n new Date(this.states[id].lc),\n this.props.dateFormat || this.systemConfig.common.dateFormat,\n )\n : null}\n </div>\n ),\n type: 'lc',\n }\n : null,\n ];\n }\n\n let colCustom: JSX.Element[] | null =\n this.adapterColumns?.map(it => (\n <div\n style={{\n ...styles.cellAdapter,\n width:\n this.props.width !== 'xs'\n ? (this.columnsVisibility as Record<string, number>)[it.id]\n : undefined,\n }}\n key={it.id}\n title={`${it.adapter} => ${it.pathText}`}\n >\n {obj ? this.renderCustomValue(obj, it, item) : null}\n </div>\n )) || null;\n\n const columnValue =\n narrowStyleWithDetails || this.columnsVisibility.val\n ? this.renderColumnValue(id, item, narrowStyleWithDetails)\n : null;\n\n let colValue =\n (narrowStyleWithDetails && columnValue) || this.columnsVisibility.val ? (\n <div\n style={{\n ...styles.cellValue,\n width: this.props.width !== 'xs' ? this.columnsVisibility.val : 'calc(100% - 100px)',\n cursor: valueEditable\n ? common?.type === 'file'\n ? 'zoom-in'\n : item.data.button\n ? 'grab'\n : 'text'\n : 'default',\n }}\n onClick={e => {\n if (valueEditable) {\n if (!obj || !this.states) {\n // return;\n } else if (common?.type === 'file') {\n this.setState({ viewFileDialog: id });\n } else if (item.data.url && e.ctrlKey) {\n if (this.states[id]?.val && typeof this.states[id].val === 'string') {\n if (common?.role === 'url.self') {\n window.location.href = this.states[id].val;\n } else {\n const opened = window.open(this.states[id].val, '_blank');\n opened?.focus();\n }\n }\n } else if (!this.state.filter.expertMode && item.data.button) {\n // in non-expert mode control button directly\n this.props.socket\n .setState(id, true)\n .catch(e => window.alert(`Cannot write state \"${id}\": ${e}`));\n } else if (!this.state.filter.expertMode && item.data.switch) {\n // in non-expert mode control switch directly\n this.props.socket\n .setState(id, !this.states[id].val)\n .catch(e => window.alert(`Cannot write state \"${id}\": ${e}`));\n } else {\n this.edit = {\n val: this.states[id] ? this.states[id].val : '',\n q: this.states[id] ? this.states[id].q || 0 : 0,\n ack: false,\n id,\n };\n this.setState({ updateOpened: true });\n }\n } else if (common?.role === 'url' || (common?.role === 'url.blank' && e.ctrlKey)) {\n if (this.states[id]?.val && typeof this.states[id].val === 'string') {\n window.open(this.states[id].val, '_blank');\n }\n } else if (common?.role === 'url.self' && e.ctrlKey) {\n if (this.states[id]?.val && typeof this.states[id].val === 'string') {\n window.location.href = this.states[id].val;\n }\n }\n }}\n >\n {columnValue}\n </div>\n ) : null;\n\n let colButtons =\n narrowStyleWithDetails || this.columnsVisibility.buttons ? (\n <div\n style={{\n ...styles.cellButtons,\n width: this.props.width !== 'xs' ? this.columnsVisibility.buttons : undefined,\n }}\n >\n {this.renderColumnButtons(id, item)}\n </div>\n ) : null;\n\n let colDetails: JSX.Element | null = null;\n if (this.props.width === 'xs' && this.state.focused === id) {\n colMiddle = colMiddle.filter(a => a);\n let renderedMiddle: (JSX.Element | null)[] | null;\n if (!colMiddle.length) {\n renderedMiddle = null;\n } else {\n renderedMiddle = colMiddle.map(it => {\n if (!it) {\n return null;\n }\n return (\n <div\n key={it.type}\n style={styles.cellDetailsLine}\n >\n <span style={styles.cellDetailsName}>{this.texts[it.type]}:</span>\n {it.el}\n <div style={{ flexGrow: 1 }} />\n {it.onClick ? (\n <IconEdit\n style={styles.cellCopyButtonInDetails}\n onClick={() => {\n if (it?.onClick) {\n it.onClick();\n }\n }}\n />\n ) : null}\n </div>\n );\n });\n }\n if (!colCustom.length) {\n colCustom = null;\n }\n colDetails = (\n <Paper\n style={{\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n padding: 10,\n backgroundColor: this.props.theme.palette.mode === 'dark' ? '#333' : '#ccc',\n }}\n >\n <div style={styles.cellDetailsLine}>\n <div style={{ flexGrow: 1 }} />\n <IconCopy\n style={styles.cellCopyButtonInDetails}\n onClick={e => this.onCopy(e, id)}\n />\n </div>\n {colName && (\n <div style={styles.cellDetailsLine}>\n <span style={styles.cellDetailsName}>{this.texts.name}:</span>\n {colName}\n <div style={{ flexGrow: 1 }} />\n {item.data?.title ? (\n <IconCopy\n className=\"copyButton\"\n style={styles.cellCopyButtonInDetails}\n onClick={e => this.onCopy(e, item.data?.title)}\n />\n ) : null}\n </div>\n )}\n {renderedMiddle}\n {colCustom && <div style={styles.cellDetailsLine}>{colCustom}</div>}\n {this.objects[id]?.type === 'state' && (\n <div style={styles.cellDetailsLine}>\n <span style={styles.cellDetailsName}>{this.texts.value}:</span>\n {colValue}\n <div style={{ flexGrow: 1 }} />\n <IconCopy\n className=\"copyButton\"\n style={styles.cellCopyButtonInDetails}\n onClick={e => {\n const { valText } = formatValue({\n state: this.states[id],\n obj: this.objects[id] as ioBroker.StateObject,\n texts: this.texts,\n dateFormat: this.props.dateFormat || this.systemConfig.common.dateFormat,\n isFloatComma:\n this.props.isFloatComma === undefined\n ? this.systemConfig.common.isFloatComma\n : this.props.isFloatComma,\n });\n this.onCopy(e, valText.c !== undefined ? valText.c : valText.v.toString());\n }}\n key=\"cc\"\n />\n </div>\n )}\n {colButtons && (\n <div style={{ ...styles.cellDetailsLine, justifyContent: 'right' }}>{colButtons}</div>\n )}\n </Paper>\n );\n\n colName = null;\n colMiddle = null;\n colCustom = null;\n colValue = null;\n colButtons = null;\n }\n\n const row = (\n <Grid2\n container\n direction=\"row\"\n wrap=\"nowrap\"\n sx={Utils.getStyle(\n this.props.theme,\n styles.tableRow,\n this.state.linesEnabled && styles.tableRowLines,\n !this.props.dragEnabled && styles.tableRowNoDragging,\n alias && styles.tableRowAlias,\n readWriteAlias && styles.tableRowAliasReadWrite,\n this.state.focused === id && this.props.multiSelect && styles.tableRowFocused,\n !item.data.visible && styles.filteredOut,\n item.data.hasVisibleParent &&\n !item.data.visible &&\n !item.data.hasVisibleChildren &&\n styles.filteredParentOut,\n this.state.selected.includes(id) && styles.itemSelected,\n this.state.selectedNonObject === id && styles.itemSelected,\n )}\n key={id}\n id={id}\n onMouseDown={e => {\n this.onSelect(id);\n let isRightMB;\n if ('which' in e) {\n // Gecko (Firefox), WebKit (Safari/Chrome) & Opera\n isRightMB = e.which === 3;\n } else if ('button' in e) {\n // IE, Opera\n isRightMB = e.button === 2;\n }\n if (isRightMB) {\n this.contextMenu = {\n item,\n ts: Date.now(),\n };\n } else {\n this.contextMenu = null;\n }\n }}\n onDoubleClick={() => {\n if (!item.children) {\n this.onSelect(id, true);\n } else {\n this.toggleExpanded(id);\n }\n }}\n >\n {colID}\n {colName}\n {colMiddle?.map(it => it?.el)}\n {colCustom}\n {colValue}\n {colButtons}\n </Grid2>\n );\n return { row, details: colDetails };\n }\n\n /**\n * Renders an item.\n */\n renderItem(root: TreeItem, isExpanded: boolean | undefined, counter?: { count: number }): JSX.Element[] {\n const items: (JSX.Element | null)[] = [];\n counter = counter || { count: 0 };\n const result = this.renderLeaf(root, isExpanded, counter);\n let leaf: JSX.Element;\n const DragWrapper = this.props.DragWrapper;\n if (this.props.dragEnabled && DragWrapper) {\n if (root.data.sumVisibility) {\n leaf = (\n <DragWrapper\n key={root.data.id}\n item={root}\n style={styles.draggable}\n >\n {result.row}\n </DragWrapper>\n );\n } else {\n // change cursor\n leaf = (\n <div\n key={root.data.id}\n style={styles.nonDraggable}\n >\n {result.row}\n </div>\n );\n }\n } else {\n leaf = result.row;\n }\n if (root.data.id && leaf) {\n items.push(leaf);\n }\n if (result.details) {\n items.push(result.details);\n }\n\n isExpanded = isExpanded === undefined ? binarySearch(this.state.expanded, root.data.id) : isExpanded;\n\n if (!root.data.id || isExpanded) {\n if (!this.state.foldersFirst) {\n if (root.children) {\n items.push(\n root.children.map(item => {\n // do not render too many items in column editor mode\n if (!this.state.columnsSelectorShow || counter.count < 15) {\n if (item.data.sumVisibility) {\n return this.renderItem(item, undefined, counter);\n }\n }\n return null;\n }) as any as JSX.Element,\n );\n }\n } else if (root.children) {\n // first only folder\n items.push(\n root.children.map(item => {\n if (item.children) {\n // do not render too many items in column editor mode\n if (!this.state.columnsSelectorShow || counter.count < 15) {\n if (item.data.sumVisibility) {\n return this.renderItem(item, undefined, counter);\n }\n }\n }\n\n return null;\n }) as any as JSX.Element,\n );\n\n // then items\n items.push(\n root.children.map(item => {\n if (!item.children) {\n // do not render too many items in column editor mode\n if (!this.state.columnsSelectorShow || counter.count < 15) {\n if (item.data.sumVisibility) {\n return this.renderItem(item, undefined, counter);\n }\n }\n }\n return null;\n }) as any as JSX.Element,\n );\n }\n }\n\n return items;\n }\n\n private calculateColumnsVisibility(\n aColumnsAuto?: boolean | null,\n aColumns?: string[] | null,\n aColumnsForAdmin?: Record<string, CustomAdminColumnStored[]> | null,\n aColumnsWidths?: Record<string, number>,\n ): void {\n let columnsWidths: Record<string, number> = aColumnsWidths || this.state.columnsWidths;\n const columnsForAdmin: Record<string, CustomAdminColumnStored[]> | null =\n aColumnsForAdmin || this.state.columnsForAdmin;\n const columns: string[] = aColumns || this.state.columns || [];\n const columnsAuto: boolean = typeof aColumnsAuto !== 'boolean' ? this.state.columnsAuto : aColumnsAuto;\n\n columnsWidths = JSON.parse(JSON.stringify(columnsWidths));\n Object.keys(columnsWidths).forEach(name => {\n if (columnsWidths[name]) {\n columnsWidths[name] = parseInt(columnsWidths[name] as any as string, 10) || 0;\n }\n });\n\n this.adapterColumns = [];\n const WIDTHS = SCREEN_WIDTHS[this.props.width || 'lg'].widths;\n\n if (columnsAuto) {\n this.columnsVisibility = {\n id: SCREEN_WIDTHS[this.props.width || 'lg'].idWidth,\n name: this.visibleCols.includes('name') ? WIDTHS.name || 0 : 0,\n nameHeader: this.visibleCols.includes('name') ? WIDTHS.name || 0 : 0,\n type: this.visibleCols.includes('type') ? WIDTHS.type || 0 : 0,\n role: this.visibleCols.includes('role') ? WIDTHS.role || 0 : 0,\n room: this.visibleCols.includes('room') ? WIDTHS.room || 0 : 0,\n func: this.visibleCols.includes('func') ? WIDTHS.func || 0 : 0,\n changedFrom: this.visibleCols.includes('changedFrom') ? WIDTHS.changedFrom || 0 : 0,\n qualityCode: this.visibleCols.includes('qualityCode') ? WIDTHS.qualityCode || 0 : 0,\n timestamp: this.visibleCols.includes('timestamp') ? WIDTHS.timestamp || 0 : 0,\n lastChange: this.visibleCols.includes('lastChange') ? WIDTHS.lastChange || 0 : 0,\n val: this.visibleCols.includes('val') ? WIDTHS.val || 0 : 0,\n buttons: this.visibleCols.includes('buttons') ? WIDTHS.buttons || 0 : 0,\n };\n\n // in xs name is not visible\n if (this.columnsVisibility.name && !this.customWidth) {\n let widthSum: number = (this.columnsVisibility.id as number) || 0; // id is always visible\n if (this.state.statesView) {\n widthSum += this.columnsVisibility.changedFrom || 0;\n widthSum += this.columnsVisibility.qualityCode || 0;\n widthSum += this.columnsVisibility.timestamp || 0;\n widthSum += this.columnsVisibility.lastChange || 0;\n } else {\n widthSum += this.columnsVisibility.type || 0;\n widthSum += this.columnsVisibility.role || 0;\n widthSum += this.columnsVisibility.room || 0;\n widthSum += this.columnsVisibility.func || 0;\n }\n widthSum += this.columnsVisibility.val || 0;\n widthSum += this.columnsVisibility.buttons || 0;\n this.columnsVisibility.name = `calc(100% - ${widthSum + 5}px)`;\n this.columnsVisibility.nameHeader = `calc(100% - ${widthSum + 5 + this.state.scrollBarWidth}px)`;\n } else if (!this.customWidth) {\n // Calculate the width of ID\n let widthSum = 0; // id is always visible\n if (this.state.statesView) {\n widthSum += this.columnsVisibility.changedFrom || 0;\n widthSum += this.columnsVisibility.qualityCode || 0;\n widthSum += this.columnsVisibility.timestamp || 0;\n widthSum += this.columnsVisibility.lastChange || 0;\n } else {\n widthSum += this.columnsVisibility.type || 0;\n widthSum += this.columnsVisibility.role || 0;\n widthSum += this.columnsVisibility.room || 0;\n widthSum += this.columnsVisibility.func || 0;\n }\n widthSum += this.columnsVisibility.val || 0;\n widthSum += this.columnsVisibility.buttons || 0;\n this.columnsVisibility.id = `calc(100% - ${widthSum + 5}px)`;\n }\n } else {\n const width = this.props.width || 'lg';\n this.columnsVisibility = {\n id: columnsWidths.id || SCREEN_WIDTHS[width].idWidth,\n name: columns.includes('name')\n ? columnsWidths.name || WIDTHS.name || SCREEN_WIDTHS[width].widths.name || 0\n : 0,\n type: columns.includes('type')\n ? columnsWidths.type || WIDTHS.type || SCREEN_WIDTHS[width].widths.type || 0\n : 0,\n role: columns.includes('role')\n ? columnsWidths.role || WIDTHS.role || SCREEN_WIDTHS[width].widths.role || 0\n : 0,\n room: columns.includes('room')\n ? columnsWidths.room || WIDTHS.room || SCREEN_WIDTHS[width].widths.room || 0\n : 0,\n func: columns.includes('func')\n ? columnsWidths.func || WIDTHS.func || SCREEN_WIDTHS[width].widths.func || 0\n : 0,\n };\n let widthSum: number = this.columnsVisibility.id as number; // id is always visible\n if (this.columnsVisibility.name) {\n widthSum += this.columnsVisibility.type || 0;\n widthSum += this.columnsVisibility.role || 0;\n widthSum += this.columnsVisibility.room || 0;\n widthSum += this.columnsVisibility.func || 0;\n }\n\n if (columnsForAdmin && columns) {\n Object.keys(columnsForAdmin)\n .sort()\n .forEach(adapter =>\n columnsForAdmin[adapter].forEach(column => {\n const id = `_${adapter}_${column.path}`;\n if (columns.includes(id)) {\n const item: AdapterColumn = {\n adapter,\n id: `_${adapter}_${column.path}`,\n name: column.name,\n path: column.path.split('.'),\n pathText: column.path,\n };\n if (column.edit) {\n item.edit = true;\n if (column.type) {\n item.type = column.type as 'number' | 'boolean' | 'string';\n }\n if (column.objTypes) {\n item.objTypes = column.objTypes;\n }\n }\n\n this.adapterColumns.push(item);\n (this.columnsVisibility as Record<string, number>)[id] =\n columnsWidths[item.id] ||\n column.width ||\n SCREEN_WIDTHS[width].widths.func ||\n SCREEN_WIDTHS.xl.widths.func ||\n 0;\n widthSum += (this.columnsVisibility as Record<string, number>)[id];\n } else {\n (this.columnsVisibility as Record<string, number>)[id] = 0;\n }\n }),\n );\n }\n this.adapterColumns.sort((a, b) => (a.id > b.id ? -1 : a.id < b.id ? 1 : 0));\n this.columnsVisibility.val = columns.includes('val')\n ? columnsWidths.val || WIDTHS.val || SCREEN_WIDTHS.xl.widths.val\n : 0;\n\n // do not show buttons if not desired\n if (!this.props.columns || this.props.columns.includes('buttons')) {\n this.columnsVisibility.buttons = columns.includes('buttons')\n ? columnsWidths.buttons || WIDTHS.buttons || SCREEN_WIDTHS.xl.widths.buttons\n : 0;\n widthSum += this.columnsVisibility.buttons || 0;\n }\n\n if (this.columnsVisibility.name && !columnsWidths.name) {\n widthSum += this.columnsVisibility.val || 0;\n this.columnsVisibility.name = `calc(100% - ${widthSum}px)`;\n this.columnsVisibility.nameHeader = `calc(100% - ${widthSum + 5 + this.state.scrollBarWidth}px)`;\n } else {\n const newWidth = Object.keys(this.columnsVisibility).reduce((accumulator: number, name: string) => {\n // do not summarize strings\n if (\n name === 'id' ||\n typeof (this.columnsVisibility as Record<string, number | string>)[name] === 'string' ||\n !(this.columnsVisibility as Record<string, number | string>)[name]\n ) {\n return accumulator;\n }\n return accumulator + (this.columnsVisibility as Record<string, number>)[name];\n }, 0);\n this.columnsVisibility.id = `calc(100% - ${newWidth}px)`;\n }\n }\n }\n\n resizerMouseMove = (e: MouseEvent): void => {\n if (this.resizerActiveDiv) {\n let width: number;\n let widthNext: number;\n if (this.resizeLeft) {\n width = this.resizerOldWidth - e.clientX + this.resizerPosition;\n widthNext = this.resizerOldWidthNext + e.clientX - this.resizerPosition;\n } else {\n width = this.resizerOldWidth + e.clientX - this.resizerPosition;\n widthNext = this.resizerOldWidthNext - e.clientX + this.resizerPosition;\n }\n\n if (\n this.resizerActiveName &&\n this.resizerNextName &&\n (!this.resizerMin || width > this.resizerMin) &&\n (!this.resizerNextMin || widthNext > this.resizerNextMin)\n ) {\n this.resizerCurrentWidths[this.resizerActiveName] = width;\n this.resizerCurrentWidths[this.resizerNextName] = widthNext;\n\n this.resizerActiveDiv.style.width = `${width}px`;\n if (this.resizerNextDiv) {\n this.resizerNextDiv.style.width = `${widthNext}px`;\n }\n\n (this.columnsVisibility as Record<string, number | string>)[this.resizerActiveName] = width;\n (this.columnsVisibility as Record<string, number | string>)[this.resizerNextName] = widthNext;\n if (this.resizerNextName === 'nameHeader') {\n this.columnsVisibility.name = widthNext - this.state.scrollBarWidth;\n this.resizerCurrentWidths.name = widthNext - this.state.scrollBarWidth;\n } else if (this.resizerActiveName === 'nameHeader') {\n this.columnsVisibility.name = width - this.state.scrollBarWidth;\n this.resizerCurrentWidths.name = width - this.state.scrollBarWidth;\n }\n this.customWidth = true;\n if (this.resizeTimeout) {\n clearTimeout(this.resizeTimeout);\n }\n this.resizeTimeout = setTimeout(() => {\n this.resizeTimeout = null;\n this.forceUpdate();\n }, 200);\n }\n }\n };\n\n resizerMouseUp = (): void => {\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.table`, JSON.stringify(this.resizerCurrentWidths));\n this.resizerActiveName = null;\n this.resizerNextName = null;\n this.resizerActiveDiv = null;\n this.resizerNextDiv = null;\n window.removeEventListener('mousemove', this.resizerMouseMove);\n window.removeEventListener('mouseup', this.resizerMouseUp);\n };\n\n resizerMouseDown = (e: React.MouseEvent<HTMLDivElement>): void => {\n this.storedWidths ||= JSON.parse(JSON.stringify(SCREEN_WIDTHS[this.props.width || 'lg'])) as ScreenWidthOne;\n\n this.resizerCurrentWidths ||= {};\n this.resizerActiveDiv = (e.target as HTMLDivElement).parentNode as HTMLDivElement;\n this.resizerActiveName = this.resizerActiveDiv.dataset.name || null;\n if (this.resizerActiveName) {\n let i = 0;\n if ((e.target as HTMLDivElement).dataset.left === 'true') {\n this.resizeLeft = true;\n this.resizerNextDiv = this.resizerActiveDiv.previousElementSibling as HTMLDivElement;\n let handle: HTMLDivElement | null = this.resizerNextDiv.querySelector('.iob-ob-resize-handler');\n while (this.resizerNextDiv && !handle && i < 10) {\n this.resizerNextDiv = this.resizerNextDiv.previousElementSibling as HTMLDivElement;\n handle = this.resizerNextDiv.querySelector('.iob-ob-resize-handler');\n i++;\n }\n if (handle?.dataset.left !== 'true') {\n this.resizerNextDiv = this.resizerNextDiv.nextElementSibling as HTMLDivElement;\n }\n } else {\n this.resizeLeft = false;\n this.resizerNextDiv = this.resizerActiveDiv.nextElementSibling as HTMLDivElement;\n /* while (this.resizerNextDiv && !this.resizerNextDiv.querySelector('.iob-ob-resize-handler') && i < 10) {\n this.resizerNextDiv = this.resizerNextDiv.nextElementSibling;\n i++;\n } */\n }\n this.resizerNextName = this.resizerNextDiv.dataset.name || null;\n\n this.resizerMin = parseInt(this.resizerActiveDiv.dataset.min, 10) || 0;\n this.resizerNextMin = parseInt(this.resizerNextDiv.dataset.min, 10) || 0;\n\n this.resizerPosition = e.clientX;\n\n this.resizerCurrentWidths[this.resizerActiveName] = this.resizerActiveDiv.offsetWidth;\n this.resizerOldWidth = this.resizerCurrentWidths[this.resizerActiveName];\n\n if (this.resizerNextName) {\n this.resizerCurrentWidths[this.resizerNextName] = this.resizerNextDiv.offsetWidth;\n this.resizerOldWidthNext = this.resizerCurrentWidths[this.resizerNextName];\n }\n\n window.addEventListener('mousemove', this.resizerMouseMove);\n window.addEventListener('mouseup', this.resizerMouseUp);\n }\n };\n\n /**\n * Handle keyboard events for navigation\n */\n navigateKeyPress(event: React.KeyboardEvent): void {\n const selectedId = this.state.selectedNonObject || this.state.selected[0];\n\n if (!selectedId) {\n return;\n }\n\n if (event.code === 'ArrowUp' || event.code === 'ArrowDown') {\n event.preventDefault();\n const ids: string[] = [];\n this.tableRef.current?.childNodes.forEach((node: any) => ids.push((node as HTMLDivElement).id));\n const idx = ids.indexOf(selectedId);\n const newIdx = event.code === 'ArrowDown' ? idx + 1 : idx - 1;\n const newId = ids[newIdx] || selectedId;\n this.onSelect(newId);\n this.scrollToItem(newId);\n }\n\n if (event.code === 'ArrowRight' || event.code === 'ArrowLeft') {\n this.toggleExpanded(selectedId);\n }\n\n if (event.code === 'Delete' && this.root && selectedId) {\n const item = ObjectBrowserClass.getItemFromRoot(this.root, selectedId);\n if (item) {\n const { obj } = item.data;\n if (obj && !obj.common?.dontDelete) {\n this.showDeleteDialog({ id: selectedId, obj, item });\n }\n }\n }\n }\n\n /**\n * Find the id from the root\n *\n * @param root The current root\n * @param id The object id to find\n */\n private static getItemFromRoot(root: TreeItem, id: string): TreeItem | null {\n const idArr = id.split('.');\n let currId = '';\n let _root: TreeItem | null | undefined = root;\n\n for (let i = 0; i < idArr.length; i++) {\n const idEntry = idArr[i];\n currId = currId ? `${currId}.${idEntry}` : idEntry;\n let found = false;\n if (_root.children) {\n for (let j = 0; j < _root.children.length; j++) {\n if (_root.children[j].data.id === currId) {\n _root = _root.children[j];\n found = true;\n break;\n }\n }\n }\n if (!found) {\n return null;\n }\n }\n\n return _root || null;\n }\n\n resizerReset = (): void => {\n this.customWidth = false;\n SCREEN_WIDTHS[this.props.width || 'lg'] = JSON.parse(JSON.stringify(this.storedWidths));\n this.calculateColumnsVisibility();\n this.localStorage.removeItem(`${this.props.dialogName || 'App'}.table`);\n this.forceUpdate();\n };\n\n /**\n * Render the right handle for resizing\n */\n renderHandleRight(): JSX.Element {\n return (\n <Box\n component=\"div\"\n className=\"iob-ob-resize-handler\"\n sx={{ ...styles.resizeHandle, ...styles.resizeHandleRight }}\n onMouseDown={this.resizerMouseDown}\n onDoubleClick={this.resizerReset}\n title={this.props.t('ra_Double click to reset table layout')}\n />\n );\n }\n\n private renderHeader(): JSX.Element {\n let filterClearInValue = null;\n\n if (!this.columnsVisibility.buttons && !this.isFilterEmpty()) {\n filterClearInValue = (\n <IconButton\n onClick={() => this.clearFilter()}\n style={styles.buttonClearFilter}\n title={this.props.t('ra_Clear filter')}\n size=\"large\"\n >\n <IconClearFilter />\n <IconClose style={styles.buttonClearFilterIcon} />\n </IconButton>\n );\n }\n\n if (this.props.width === 'xs') {\n return (\n <div style={styles.headerRow}>\n <div style={{ ...styles.headerCell, width: '100%' }}>{this.getFilterInput('id')}</div>\n </div>\n );\n }\n\n return (\n <div style={styles.headerRow}>\n <div\n style={{ ...styles.headerCell, width: this.columnsVisibility.id, position: 'relative' }}\n data-min={240}\n data-name=\"id\"\n >\n {this.getFilterInput('id')}\n {this.renderHandleRight()}\n </div>\n {this.columnsVisibility.name ? (\n <div\n style={{ ...styles.headerCell, width: this.columnsVisibility.nameHeader, position: 'relative' }}\n data-min={100}\n data-name=\"nameHeader\"\n >\n {this.getFilterInput('name')}\n {this.renderHandleRight()}\n </div>\n ) : null}\n {!this.state.statesView && (\n <>\n {this.columnsVisibility.type ? (\n <div\n style={{\n ...styles.headerCell,\n width: this.columnsVisibility.type,\n position: 'relative',\n }}\n data-min={100}\n data-name=\"type\"\n >\n {this.getFilterSelectType()}\n {this.renderHandleRight()}\n </div>\n ) : null}\n {this.columnsVisibility.role ? (\n <div\n style={{\n ...styles.headerCell,\n width: this.columnsVisibility.role,\n position: 'relative',\n }}\n data-min={100}\n data-name=\"role\"\n >\n {this.getFilterSelectRole()}\n {this.renderHandleRight()}\n </div>\n ) : null}\n {this.columnsVisibility.room ? (\n <div\n style={{\n ...styles.headerCell,\n width: this.columnsVisibility.room,\n position: 'relative',\n }}\n data-min={100}\n data-name=\"room\"\n >\n {this.getFilterSelectRoom()}\n {this.renderHandleRight()}\n </div>\n ) : null}\n {this.columnsVisibility.func ? (\n <div\n style={{\n ...styles.headerCell,\n width: this.columnsVisibility.func,\n position: 'relative',\n }}\n data-min={100}\n data-name=\"func\"\n >\n {this.getFilterSelectFunction()}\n {this.renderHandleRight()}\n </div>\n ) : null}\n </>\n )}\n {this.state.statesView && (\n <>\n <div\n style={{\n ...styles.headerCell,\n ...styles.headerCellValue,\n width: this.columnsVisibility.changedFrom,\n position: 'relative',\n }}\n data-min={100}\n data-name=\"changedFrom\"\n >\n {this.props.t('ra_Changed from')}\n {this.renderHandleRight()}\n </div>\n <div\n style={{\n ...styles.headerCell,\n ...styles.headerCellValue,\n width: this.columnsVisibility.qualityCode,\n position: 'relative',\n }}\n data-min={100}\n data-name=\"qualityCode\"\n >\n {this.props.t('ra_Quality code')}\n {this.renderHandleRight()}\n </div>\n <div\n style={{\n ...styles.headerCell,\n ...styles.headerCellValue,\n width: this.columnsVisibility.timestamp,\n position: 'relative',\n }}\n data-min={100}\n data-name=\"timestamp\"\n >\n {this.props.t('ra_Timestamp')}\n {this.renderHandleRight()}\n </div>\n <div\n style={{\n ...styles.headerCell,\n ...styles.headerCellValue,\n width: this.columnsVisibility.lastChange,\n position: 'relative',\n }}\n data-min={100}\n data-name=\"lastChange\"\n >\n {this.props.t('ra_Last change')}\n {this.renderHandleRight()}\n </div>\n </>\n )}\n {this.adapterColumns.map(item => (\n <div\n style={{\n ...styles.headerCell,\n ...styles.headerCellValue,\n width: (this.columnsVisibility as Record<string, number | string>)[item.id],\n }}\n title={item.adapter}\n key={item.id}\n data-min={100}\n data-name={item.id}\n >\n {item.name}\n </div>\n ))}\n {this.columnsVisibility.val ? (\n <div\n style={{\n ...styles.headerCell,\n ...styles.headerCellValue,\n width: this.columnsVisibility.val,\n position: 'relative',\n }}\n data-min={120}\n data-name=\"val\"\n >\n {this.props.t('ra_Value')}\n {filterClearInValue}\n </div>\n ) : null}\n {this.columnsVisibility.buttons ? (\n <div\n title={this.texts.filter_custom}\n style={{ ...styles.headerCell, width: this.columnsVisibility.buttons }}\n >\n {' '}\n {this.getFilterSelectCustoms()}\n </div>\n ) : null}\n </div>\n );\n }\n\n private renderToast(): JSX.Element {\n return (\n <Snackbar\n open={!!this.state.toast}\n autoHideDuration={3000}\n onClick={() => this.setState({ toast: '' })}\n onClose={() => this.setState({ toast: '' })}\n message={this.state.toast}\n action={\n <IconButton\n size=\"small\"\n aria-label=\"close\"\n color=\"inherit\"\n onClick={() => this.setState({ toast: '' })}\n >\n <IconClose fontSize=\"small\" />\n </IconButton>\n }\n />\n );\n }\n\n /**\n * Called when component is updated.\n */\n componentDidUpdate(): void {\n if (this.tableRef.current) {\n const scrollBarWidth = this.tableRef.current.offsetWidth - this.tableRef.current.clientWidth;\n if (this.state.scrollBarWidth !== scrollBarWidth) {\n setTimeout(() => this.setState({ scrollBarWidth }), 100);\n } else if (this.selectFirst) {\n this.scrollToItem(this.selectFirst);\n }\n }\n }\n\n scrollToItem(id: string): void {\n this.selectFirst = '';\n\n const node = window.document.getElementById(id);\n node?.scrollIntoView({\n behavior: 'auto',\n block: 'center',\n inline: 'center',\n });\n }\n\n private renderCustomDialog(): JSX.Element | null {\n if (this.state.customDialog && this.props.objectCustomDialog) {\n const ObjectCustomDialog = this.props.objectCustomDialog;\n\n return (\n <ObjectCustomDialog\n reportChangedIds={(changedIds: string[]) => (this.changedIds = [...changedIds])}\n objectIDs={this.state.customDialog}\n allVisibleObjects={!!this.state.customDialogAll}\n expertMode={this.state.filter.expertMode}\n isFloatComma={\n this.props.isFloatComma === undefined\n ? this.systemConfig.common.isFloatComma\n : this.props.isFloatComma\n }\n t={this.props.t}\n lang={this.props.lang}\n socket={this.props.socket}\n themeName={this.props.themeName}\n themeType={this.props.themeType}\n theme={this.props.theme}\n objects={this.objects}\n customsInstances={this.info.customs}\n onClose={() => {\n this.pauseSubscribe(false);\n this.setState({ customDialog: null });\n if (this.changedIds) {\n this.changedIds = null;\n // update all changed IDs\n this.forceUpdate();\n }\n\n this.props.router?.doNavigate('tab-objects');\n }}\n systemConfig={this.systemConfig}\n />\n );\n }\n return null;\n }\n\n private onUpdate(valAck: {\n val: ioBroker.StateValue;\n ack: boolean;\n q: ioBroker.STATE_QUALITY[keyof ioBroker.STATE_QUALITY];\n expire: number | undefined;\n }): void {\n this.props.socket\n .setState(this.edit.id, {\n val: valAck.val,\n ack: valAck.ack,\n q: valAck.q || 0,\n expire: valAck.expire || undefined,\n })\n .catch(e => this.showError(`Cannot write value: ${e}`));\n }\n\n private renderEditObjectDialog(): JSX.Element | null {\n if (!this.state.editObjectDialog || !this.props.objectBrowserEditObject) {\n return null;\n }\n\n const ObjectBrowserEditObject = this.props.objectBrowserEditObject;\n\n return (\n <ObjectBrowserEditObject\n key={this.state.editObjectDialog}\n obj={this.objects[this.state.editObjectDialog]}\n roleArray={this.info.roles}\n objects={this.objects}\n dateFormat={this.props.dateFormat || this.systemConfig.common.dateFormat}\n isFloatComma={\n this.props.isFloatComma === undefined\n ? this.systemConfig.common.isFloatComma\n : this.props.isFloatComma\n }\n themeType={this.props.themeType}\n theme={this.props.theme}\n socket={this.props.socket}\n dialogName={this.props.dialogName}\n aliasTab={this.state.editObjectAlias}\n t={this.props.t}\n expertMode={!!this.state.filter.expertMode}\n onNewObject={(obj: ioBroker.AnyObject) =>\n this.props.socket\n .setObject(obj._id, obj)\n .then(() =>\n this.setState({ editObjectDialog: obj._id, editObjectAlias: false }, () =>\n this.onSelect(obj._id),\n ),\n )\n .catch(e => this.showError(`Cannot write object: ${e}`))\n }\n onClose={(obj?: ioBroker.AnyObject) => {\n if (obj) {\n let updateAlias: string;\n if (this.state.editObjectDialog.startsWith('alias.')) {\n if (\n JSON.stringify(this.objects[this.state.editObjectDialog].common?.alias) !==\n JSON.stringify((obj as ioBroker.StateObject).common?.alias)\n ) {\n updateAlias = this.state.editObjectDialog;\n }\n }\n\n this.props.socket\n .setObject(obj._id, obj)\n .then(() => {\n if (updateAlias && this.subscribes.includes(updateAlias)) {\n this.unsubscribe(updateAlias);\n setTimeout(() => this.subscribe(updateAlias), 100);\n }\n })\n .catch(e => this.showError(`Cannot write object: ${e}`));\n }\n this.setState({ editObjectDialog: '', editObjectAlias: false });\n }}\n width={this.props.width}\n />\n );\n }\n\n private renderViewObjectFileDialog(): JSX.Element | null {\n if (!this.state.viewFileDialog || !this.props.objectBrowserViewFile) {\n return null;\n }\n const ObjectBrowserViewFile = this.props.objectBrowserViewFile;\n\n return (\n <ObjectBrowserViewFile\n key=\"viewFile\"\n obj={this.objects[this.state.viewFileDialog]}\n socket={this.props.socket}\n t={this.props.t}\n onClose={() => this.setState({ viewFileDialog: '' })}\n />\n );\n }\n\n private renderAliasEditorDialog(): JSX.Element | null {\n if (!this.props.objectBrowserAliasEditor || !this.state.showAliasEditor) {\n return null;\n }\n const ObjectBrowserAliasEditor = this.props.objectBrowserAliasEditor;\n\n return (\n <ObjectBrowserAliasEditor\n key=\"editAlias\"\n obj={this.objects[this.state.showAliasEditor]}\n roleArray={this.info.roles}\n objects={this.objects}\n socket={this.props.socket}\n t={this.props.t}\n onClose={() => this.setState({ showAliasEditor: '' })}\n onRedirect={(id: string, timeout?: number) =>\n setTimeout(\n () =>\n this.onSelect(id, false, () =>\n this.expandAllSelected(() => {\n this.scrollToItem(id);\n setTimeout(\n () =>\n this.setState({\n editObjectDialog: id,\n showAliasEditor: '',\n editObjectAlias: true,\n }),\n 300,\n );\n }),\n ),\n timeout || 0,\n )\n }\n />\n );\n }\n\n showAddDataPointDialog(id: string, initialType: ioBroker.ObjectType, initialStateType?: ioBroker.CommonType): void {\n this.setState({\n showContextMenu: null,\n modalNewObj: {\n id,\n initialType,\n initialStateType,\n },\n });\n }\n\n /** Renders the aliases list for one state (if more than 2) */\n private renderAliasMenu(): JSX.Element | null {\n if (!this.state.aliasMenu) {\n return null;\n }\n\n return (\n <Menu\n key=\"aliasmenu\"\n open={!0}\n anchorEl={window.document.getElementById(`alias_${this.state.aliasMenu}`)}\n onClose={() => this.setState({ aliasMenu: '' })}\n >\n {this.info.aliasesMap[this.state.aliasMenu].map((aliasId, i) => (\n <MenuItem\n key={aliasId}\n onClick={() => this.onSelect(aliasId)}\n >\n <ListItemText>\n {this.renderAliasLink(this.state.aliasMenu, i, {\n '& .admin-browser-arrow': {\n mr: '8px',\n },\n })}\n </ListItemText>\n </MenuItem>\n ))}\n </Menu>\n );\n }\n\n /**\n * Renders the right mouse button context menu\n */\n private renderContextMenu(): JSX.Element | null {\n if (!this.state.showContextMenu) {\n return null;\n }\n const item = this.state.showContextMenu.item;\n const id = item.data.id;\n const items: JSX.Element[] = [];\n // const ctrl = isIOS() ? '⌘' : (this.props.lang === 'de' ? 'Strg+' : 'Ctrl+');\n\n const obj = item.data.obj;\n\n let showACL = '';\n if (this.props.objectEditOfAccessControl && this.state.filter.expertMode) {\n if (!obj) {\n showACL = '---';\n } else {\n const acl = obj.acl ? (obj.type === 'state' ? obj.acl.state : obj.acl.object) : 0;\n const aclSystemConfig =\n obj.acl &&\n (obj.type === 'state'\n ? this.systemConfig.common.defaultNewAcl.state\n : this.systemConfig.common.defaultNewAcl.object);\n showACL = Number.isNaN(Number(acl)) ? Number(aclSystemConfig).toString(16) : Number(acl).toString(16);\n }\n }\n\n const enumEditable =\n !this.props.notEditable &&\n obj &&\n (this.state.filter.expertMode || obj.type === 'state' || obj.type === 'channel' || obj.type === 'device');\n\n const createStateVisible =\n !item.data.obj ||\n item.data.obj.type === 'folder' ||\n item.data.obj.type === 'channel' ||\n item.data.obj.type === 'device' ||\n item.data.id === '0_userdata.0' ||\n item.data.obj.type === 'meta';\n const createChannelVisible =\n !item.data.obj ||\n item.data.obj.type === 'folder' ||\n item.data.obj.type === 'device' ||\n item.data.id === '0_userdata.0' ||\n item.data.obj.type === 'meta';\n const createDeviceVisible =\n !item.data.obj ||\n item.data.obj.type === 'folder' ||\n item.data.id === '0_userdata.0' ||\n item.data.obj.type === 'meta';\n const createFolderVisible =\n !item.data.obj ||\n item.data.obj.type === 'folder' ||\n item.data.id === '0_userdata.0' ||\n item.data.obj.type === 'meta';\n\n const ITEMS: Record<string, ContextMenuItem> = {\n EDIT: {\n key: '0',\n visibility: !!(\n this.props.objectBrowserEditObject &&\n obj &&\n (this.state.filter.expertMode || ObjectBrowserClass.isNonExpertId(id))\n ),\n icon: (\n <IconEdit\n fontSize=\"small\"\n style={this.styles.contextMenuEdit}\n />\n ),\n label: this.texts.editObject,\n onClick: () =>\n this.setState({ editObjectDialog: item.data.id, showContextMenu: null, editObjectAlias: false }),\n },\n EDIT_VALUE: {\n key: '1',\n visibility: !!(\n this.states &&\n !this.props.notEditable &&\n obj &&\n obj.type === 'state' &&\n // @ts-expect-error deprecated from js-controller 6\n obj.common?.type !== 'file' &&\n (this.state.filter.expertMode || obj.common.write !== false)\n ),\n icon: (\n <IconValueEdit\n fontSize=\"small\"\n style={this.styles.contextMenuEditValue}\n />\n ),\n label: this.props.t('ra_Edit value'),\n onClick: () => {\n this.edit = {\n val: this.states[id] ? this.states[id].val : '',\n q: this.states[id]?.q || 0,\n ack: false,\n id,\n };\n this.setState({ updateOpened: true, showContextMenu: null });\n },\n },\n VIEW: {\n visibility:\n !!this.props.objectBrowserViewFile &&\n obj?.type === 'state' &&\n // @ts-expect-error deprecated from js-controller 6\n obj.common?.type === 'file',\n icon: (\n <FindInPage\n fontSize=\"small\"\n style={this.styles.contextMenuView}\n />\n ),\n label: this.props.t('ra_View file'),\n onClick: () => this.setState({ viewFileDialog: obj?._id || '', showContextMenu: null }),\n },\n CUSTOM: {\n key: '2',\n visibility: !(\n this.props.objectCustomDialog &&\n this.info.hasSomeCustoms &&\n obj &&\n obj.type === 'state' &&\n // @ts-expect-error deprecated from js-controller 6\n obj.common?.type !== 'file'\n ),\n icon: (\n <IconConfig\n fontSize=\"small\"\n style={\n item.data.hasCustoms\n ? this.styles.cellButtonsButtonWithCustoms\n : styles.cellButtonsButtonWithoutCustoms\n }\n />\n ),\n style: this.styles.contextMenuCustom,\n label: this.texts.customConfig,\n onClick: () => {\n this.pauseSubscribe(true);\n this.props.router?.doNavigate(null, 'customs', id);\n this.setState({ customDialog: [id], showContextMenu: null });\n },\n },\n ACL: {\n key: '3',\n visibility: !!showACL,\n icon: showACL,\n iconStyle: { fontSize: 'smaller' },\n listItemIconStyle: this.styles.contextMenuACL,\n style: this.styles.contextMenuACL,\n label: this.props.t('ra_Edit ACL'),\n onClick: () =>\n this.setState({\n showContextMenu: null,\n modalEditOfAccess: true,\n modalEditOfAccessObjData: item.data,\n }),\n },\n ROLE: {\n key: '4',\n visibility: !!(this.state.filter.expertMode && enumEditable && this.props.objectBrowserEditRole),\n icon: (\n <BorderColor\n fontSize=\"small\"\n style={this.styles.contextMenuRole}\n />\n ),\n label: this.props.t('ra_Edit role'),\n onClick: () => this.setState({ roleDialog: item.data.id, showContextMenu: null }),\n },\n FUNCTION: {\n key: '5',\n visibility: !!enumEditable,\n icon: (\n <BedroomParent\n fontSize=\"small\"\n style={this.styles.contextMenuRole}\n />\n ),\n label: this.props.t('ra_Edit function'),\n onClick: () => {\n const enums = findEnumsForObjectAsIds(this.info, item.data.id, 'funcEnums');\n this.setState({\n enumDialogEnums: enums,\n enumDialog: {\n item,\n type: 'func',\n enumsOriginal: JSON.stringify(enums),\n },\n showContextMenu: null,\n });\n },\n },\n ROOM: {\n key: '6',\n visibility: !!enumEditable,\n icon: (\n <Construction\n fontSize=\"small\"\n style={this.styles.contextMenuRoom}\n />\n ),\n label: this.props.t('ra_Edit room'),\n onClick: () => {\n const enums = findEnumsForObjectAsIds(this.info, item.data.id, 'roomEnums');\n this.setState({\n enumDialogEnums: enums,\n enumDialog: {\n item,\n type: 'room',\n enumsOriginal: JSON.stringify(enums),\n },\n showContextMenu: null,\n });\n },\n },\n ALIAS: {\n key: '7',\n visibility: !!(\n !this.props.notEditable &&\n this.props.objectBrowserAliasEditor &&\n this.props.objectBrowserEditObject &&\n obj?.type === 'state' &&\n // @ts-expect-error deprecated from js-controller 6\n obj.common?.type !== 'file'\n ),\n icon: (\n <IconLink\n style={\n obj?.common?.alias\n ? this.styles.cellButtonsButtonWithCustoms\n : styles.cellButtonsButtonWithoutCustoms\n }\n />\n ),\n label:\n this.info.aliasesMap[item.data.id] || item.data.id.startsWith('alias.0.')\n ? this.props.t('ra_Edit alias')\n : this.props.t('ra_Create alias'),\n onClick: () => {\n if (obj?.common?.alias) {\n this.setState({ showContextMenu: null, editObjectDialog: item.data.id, editObjectAlias: true });\n } else {\n this.setState({ showContextMenu: null, showAliasEditor: item.data.id });\n }\n },\n },\n CREATE: {\n key: '+',\n visibility:\n (item.data.id.startsWith('0_userdata.0') || item.data.id.startsWith('javascript.')) &&\n (createStateVisible || createChannelVisible || createDeviceVisible || createFolderVisible),\n icon: (\n <AddIcon\n fontSize=\"small\"\n style={this.styles.cellButtonsButtonWithCustoms}\n />\n ),\n style: styles.contextMenuWithSubMenu,\n label: this.texts.create,\n subMenu: [\n {\n label: this.texts.createBooleanState,\n visibility: createStateVisible,\n icon: <IconState fontSize=\"small\" />,\n onClick: () => this.showAddDataPointDialog(item.data.id, 'state', 'boolean'),\n },\n {\n label: this.texts.createNumberState,\n visibility: createStateVisible,\n icon: <IconState fontSize=\"small\" />,\n onClick: () => this.showAddDataPointDialog(item.data.id, 'state', 'number'),\n },\n {\n label: this.texts.createStringState,\n visibility: createStateVisible,\n icon: <IconState fontSize=\"small\" />,\n onClick: () => this.showAddDataPointDialog(item.data.id, 'state', 'string'),\n },\n {\n label: this.texts.createState,\n visibility: createStateVisible,\n icon: <IconState fontSize=\"small\" />,\n onClick: () => this.showAddDataPointDialog(item.data.id, 'state'),\n },\n {\n label: this.texts.createChannel,\n visibility: createChannelVisible,\n icon: <IconChannel fontSize=\"small\" />,\n onClick: () => this.showAddDataPointDialog(item.data.id, 'channel'),\n },\n {\n label: this.texts.createDevice,\n visibility: createDeviceVisible,\n icon: <IconDevice fontSize=\"small\" />,\n onClick: () => this.showAddDataPointDialog(item.data.id, 'device'),\n },\n {\n label: this.texts.createFolder,\n icon: <IconFolder fontSize=\"small\" />,\n visibility: createFolderVisible,\n onClick: () => this.showAddDataPointDialog(item.data.id, 'folder'),\n },\n ],\n },\n RENAME: {\n key: '8',\n visibility: !!(\n !this.props.notEditable &&\n this.props.objectMoveRenameDialog &&\n !item.data.id.startsWith('system.') &&\n item.data.id.split('.').length > 2 &&\n (this.props.expertMode ||\n item.data.id.startsWith('javascript.0.') ||\n item.data.id.startsWith('0_userdata.0.'))\n ),\n icon: <DriveFileRenameOutline />,\n label: this.props.t('ra_Rename_Move_Copy'),\n onClick: () => {\n const ids = Object.keys(this.objects);\n const parentId = `${item.data.id}.`;\n this.setState({\n showContextMenu: null,\n showRenameDialog: {\n id: item.data.id,\n childrenIds: ids.filter(id => id.startsWith(parentId)),\n },\n });\n },\n },\n DELETE: {\n key: 'Delete',\n visibility: !!(\n this.props.onObjectDelete &&\n (item.children?.length || (obj && !obj.common?.dontDelete))\n ),\n icon: (\n <IconDelete\n fontSize=\"small\"\n style={this.styles.contextMenuDelete}\n />\n ),\n style: this.styles.contextMenuDelete,\n label: this.texts.deleteObject,\n onClick: () =>\n this.setState({ showContextMenu: null }, () =>\n this.showDeleteDialog({\n id,\n obj: obj || ({} as ioBroker.Object),\n item,\n }),\n ),\n },\n };\n\n Object.keys(ITEMS).forEach(key => {\n if (ITEMS[key].visibility) {\n if (ITEMS[key].subMenu) {\n items.push(\n <MenuItem\n key={key}\n href=\"\"\n onClick={(e: React.MouseEvent<HTMLAnchorElement>) =>\n this.state.showContextMenu &&\n this.setState({\n showContextMenu: {\n item: this.state.showContextMenu.item,\n position: this.state.showContextMenu.position,\n subItem: key,\n subAnchor: e.target as HTMLLIElement,\n },\n })\n }\n style={ITEMS[key].style}\n >\n <ListItemIcon style={{ ...ITEMS[key].iconStyle, ...ITEMS[key].listItemIconStyle }}>\n {ITEMS[key].icon}\n </ListItemIcon>\n <ListItemText>\n {ITEMS[key].label}\n ...\n </ListItemText>\n <div style={{ ...styles.contextMenuKeys, opacity: 1 }}>\n <ArrowRightIcon />\n </div>\n </MenuItem>,\n );\n\n if (this.state.showContextMenu?.subItem === key) {\n items.push(\n <Menu\n key=\"subContextMenu\"\n open={!0}\n anchorEl={this.state.showContextMenu.subAnchor}\n onClose={() => {\n if (this.state.showContextMenu) {\n this.setState({\n showContextMenu: {\n item: this.state.showContextMenu.item,\n position: this.state.showContextMenu.position,\n },\n });\n }\n this.contextMenu = null;\n }}\n >\n {ITEMS[key].subMenu?.map(subItem =>\n subItem.visibility ? (\n <MenuItem\n key={subItem.label}\n onClick={subItem.onClick}\n style={subItem.style}\n >\n <ListItemIcon\n style={{\n ...subItem.iconStyle,\n ...(subItem.listItemIconStyle || undefined),\n }}\n >\n {subItem.icon}\n </ListItemIcon>\n <ListItemText>{subItem.label}</ListItemText>\n </MenuItem>\n ) : null,\n )}\n </Menu>,\n );\n }\n } else {\n items.push(\n <MenuItem\n key={key}\n onClick={ITEMS[key].onClick}\n sx={ITEMS[key].style}\n >\n <ListItemIcon style={{ ...ITEMS[key].iconStyle, ...ITEMS[key].listItemIconStyle }}>\n {ITEMS[key].icon}\n </ListItemIcon>\n <ListItemText>{ITEMS[key].label}</ListItemText>\n {ITEMS[key].key ? (\n <div style={styles.contextMenuKeys}>\n {`Alt+${ITEMS[key].key === 'Delete' ? this.props.t('ra_Del') : ITEMS[key].key}`}\n </div>\n ) : null}\n </MenuItem>,\n );\n }\n }\n });\n\n if (!items.length) {\n setTimeout(() => this.setState({ showContextMenu: null }), 100);\n return null;\n }\n\n return (\n <Menu\n key=\"contextMenu\"\n open={!0}\n onKeyUp={e => {\n e.preventDefault();\n if (e.altKey) {\n Object.keys(ITEMS).forEach(key => {\n if (e.key === ITEMS[key].key && ITEMS[key].onClick) {\n ITEMS[key].onClick();\n }\n });\n }\n }}\n anchorReference=\"anchorPosition\"\n anchorPosition={this.state.showContextMenu.position}\n onClose={() => {\n this.setState({ showContextMenu: null });\n this.contextMenu = null;\n }}\n >\n {items}\n </Menu>\n );\n }\n\n private renderEditValueDialog(): JSX.Element | null {\n if (!this.state.updateOpened || !this.props.objectBrowserValue) {\n return null;\n }\n\n if (!this.edit.id) {\n console.error(`Invalid ID for edit: ${JSON.stringify(this.edit)}`);\n return null;\n }\n\n if (!this.objects[this.edit.id]) {\n console.error(`Something went wrong. Possibly the object ${this.edit.id} was deleted.`);\n return null;\n }\n\n const type = this.objects[this.edit.id].common?.type\n ? this.objects[this.edit.id].common.type\n : typeof this.edit.val;\n\n const role = this.objects[this.edit.id].common.role;\n\n const ObjectBrowserValue = this.props.objectBrowserValue;\n\n return (\n <ObjectBrowserValue\n t={this.props.t}\n lang={this.props.lang}\n type={type}\n role={role || ''}\n states={Utils.getStates(this.objects[this.edit.id] as ioBroker.StateObject)}\n themeType={this.props.themeType}\n theme={this.props.theme}\n expertMode={!!this.state.filter.expertMode}\n value={this.edit.val}\n socket={this.props.socket}\n object={this.objects[this.edit.id] as ioBroker.StateObject}\n defaultHistory={this.defaultHistory}\n dateFormat={this.props.dateFormat || this.systemConfig.common.dateFormat}\n isFloatComma={\n this.props.isFloatComma === undefined\n ? this.systemConfig.common.isFloatComma\n : this.props.isFloatComma\n }\n onClose={(res?: {\n val: ioBroker.StateValue;\n ack: boolean;\n q: ioBroker.STATE_QUALITY[keyof ioBroker.STATE_QUALITY];\n expire: number | undefined;\n }) => {\n this.setState({ updateOpened: false });\n if (res) {\n this.onUpdate(res);\n }\n }}\n width={this.props.width}\n />\n );\n }\n\n /**\n * The rendering method of this component.\n */\n render(): JSX.Element {\n this.recordStates = [];\n if (this.unsubscribeTimer) {\n clearTimeout(this.unsubscribeTimer);\n }\n\n if (this.styleTheme !== this.props.themeType) {\n this.styles = {\n cellIdIconFolder: Utils.getStyle(this.props.theme, styles.cellIdIconFolder),\n cellIdIconDocument: Utils.getStyle(this.props.theme, styles.cellIdIconDocument),\n iconDeviceError: Utils.getStyle(this.props.theme, styles.iconDeviceError),\n iconDeviceConnected: Utils.getStyle(this.props.theme, styles.iconDeviceConnected),\n iconDeviceDisconnected: Utils.getStyle(this.props.theme, styles.iconDeviceDisconnected),\n cellButtonsButtonWithCustoms: Utils.getStyle(this.props.theme, styles.cellButtonsButtonWithCustoms),\n invertedBackground: Utils.getStyle(this.props.theme, styles.invertedBackground),\n invertedBackgroundFlex: Utils.getStyle(this.props.theme, styles.invertedBackgroundFlex),\n contextMenuEdit: Utils.getStyle(this.props.theme, styles.contextMenuEdit),\n contextMenuEditValue: Utils.getStyle(this.props.theme, styles.contextMenuEditValue),\n contextMenuView: Utils.getStyle(this.props.theme, styles.contextMenuView),\n contextMenuCustom: Utils.getStyle(this.props.theme, styles.contextMenuCustom),\n contextMenuACL: Utils.getStyle(this.props.theme, styles.contextMenuACL),\n contextMenuRoom: Utils.getStyle(this.props.theme, styles.contextMenuRoom),\n contextMenuRole: Utils.getStyle(this.props.theme, styles.contextMenuRole),\n contextMenuDelete: Utils.getStyle(this.props.theme, styles.contextMenuDelete),\n filterInput: Utils.getStyle(this.props.theme, styles.headerCellInput, styles.filterInput),\n iconCopy: Utils.getStyle(\n this.props.theme,\n styles.cellButtonsValueButton,\n styles.cellButtonsValueButtonCopy,\n ),\n aliasReadWrite: Utils.getStyle(this.props.theme, styles.cellIdAlias, styles.cellIdAliasReadWrite),\n aliasAlone: Utils.getStyle(this.props.theme, styles.cellIdAlias, styles.cellIdAliasAlone),\n };\n this.styleTheme = this.props.themeType;\n }\n\n // apply filter if changed\n const jsonFilter = JSON.stringify(this.state.filter);\n\n if (this.lastAppliedFilter !== jsonFilter && this.objects && this.root) {\n const counter = { count: 0 };\n\n applyFilter(\n this.root,\n this.state.filter,\n this.props.lang,\n this.objects,\n undefined,\n counter,\n this.props.customFilter,\n this.props.types,\n );\n\n if (counter.count < 500 && !this.state.expandAllVisible) {\n setTimeout(() => this.setState({ expandAllVisible: true }));\n } else if (counter.count >= 500 && this.state.expandAllVisible) {\n setTimeout(() => this.setState({ expandAllVisible: false }));\n }\n\n this.lastAppliedFilter = jsonFilter;\n }\n\n this.unsubscribeTimer = setTimeout(() => {\n this.unsubscribeTimer = null;\n this.checkUnsubscribes();\n }, 200);\n\n if (!this.state.loaded) {\n return <CircularProgress key={`${this.props.dialogName}_c`} />;\n }\n const items = this.root ? this.renderItem(this.root, undefined) : null;\n\n return (\n <TabContainer key={this.props.dialogName}>\n <style>\n {`\n@keyframes newValueAnimation-light {\n 0% {\n color: #00f900;\n }\n 80% {\n color: #008000;\n }\n 100% {\n color: #000;\n }\n}\n@keyframes newValueAnimation-dark {\n 0% {\n color: #00f900;\n }\n 80% {\n color: #008000;\n }\n 100% {\n color: #fff;\n }\n}\n.newValueBrowser-dark {\n animation: newValueAnimation-dark 2s ease-in-out;\n}\n.newValueBrowser-light {\n animation: newValueAnimation-light 2s ease-in-out;\n}\n.highlight-link .iob-link {\n text-decoration: underline;\n cursor: pointer;\n}\n`}\n </style>\n <TabHeader>{this.getToolbar()}</TabHeader>\n <TabContent>\n {this.renderHeader()}\n <Box\n style={styles.tableDiv}\n ref={this.tableRef}\n onKeyDown={event => this.navigateKeyPress(event)}\n >\n {items}\n </Box>\n </TabContent>\n {this.renderContextMenu()}\n {this.renderAliasMenu()}\n {this.renderToast()}\n {this.renderColumnsEditCustomDialog()}\n {this.renderColumnsSelectorDialog()}\n {this.renderCustomDialog()}\n {this.renderEditValueDialog()}\n {this.renderEditObjectDialog()}\n {this.renderViewObjectFileDialog()}\n {this.renderAliasEditorDialog()}\n {this.renderEditRoleDialog()}\n {this.renderEnumDialog()}\n {this.renderErrorDialog()}\n {this.renderExportDialog()}\n {this.renderRenameDialog()}\n {this.state.modalNewObj && this.props.modalNewObject && this.props.modalNewObject(this)}\n {this.state.modalEditOfAccess &&\n this.state.modalEditOfAccessObjData &&\n this.props.modalEditOfAccessControl &&\n this.props.modalEditOfAccessControl(this, this.state.modalEditOfAccessObjData)}\n </TabContainer>\n );\n }\n}\n\nexport const ObjectBrowser = withWidth()(ObjectBrowserClass);\n"]}