@iobroker/adapter-react-v5 8.0.7 → 8.0.9

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"objectBrowserUtils.js","sourceRoot":"./src/","sources":["Components/objectBrowserUtils.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { Component, type JSX } from 'react';\n\nimport { Box, FormControl, IconButton, Input, MenuItem, Select } from '@mui/material';\nimport SVG from 'react-inlinesvg';\n\nimport {\n Description as IconMeta,\n PersonOutlined as IconUser,\n Router as IconHost,\n SupervisedUserCircle as IconGroup,\n SettingsApplications as IconSystem,\n DataObject as IconData,\n Info as IconInfo,\n Link as IconLink,\n Close as IconClose,\n Wifi as IconConnection,\n} from '@mui/icons-material';\nimport type { ThemeType } from '../types';\nimport { Utils } from './Utils';\nimport type {\n FormatValueOptions,\n InputSelectItem,\n TreeItem,\n ObjectBrowserCustomFilter,\n TreeInfo,\n GetValueStyleOptions,\n AdapterColumn,\n ObjectBrowserFilter,\n TreeItemData,\n} from './objectBrowser.types';\n\nexport const ICON_SIZE = 24;\nexport const ROW_HEIGHT = 32;\n\nexport const COLOR_NAME_USERDATA = (themeType: ThemeType): string => (themeType === 'dark' ? '#62ff25' : '#37c400');\nexport const COLOR_NAME_ALIAS = (themeType: ThemeType): string => (themeType === 'dark' ? '#ee56ff' : '#a204b4');\nexport const COLOR_NAME_JAVASCRIPT = (themeType: ThemeType): string => (themeType === 'dark' ? '#fff46e' : '#b89101');\nexport const COLOR_NAME_SYSTEM = (themeType: ThemeType): string => (themeType === 'dark' ? '#ff6d69' : '#ff6d69');\nexport const COLOR_NAME_SYSTEM_ADAPTER = (themeType: ThemeType): string =>\n themeType === 'dark' ? '#5773ff' : '#5773ff';\n\n/** Namespaces which are allowed to be edited by non-expert users */\nconst NON_EXPERT_NAMESPACES = ['0_userdata.0.', 'alias.0.'];\n\nexport const styles: Record<string, any> = {\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 selectNone: {\n opacity: 0.5,\n },\n selectClearButton: {\n position: 'absolute',\n top: 0,\n right: 0,\n borderRadius: 5,\n backgroundColor: 'background.default',\n },\n cellIdTooltipLink: {\n color: '#7ec2fd',\n '&:hover': {\n color: '#7ec2fd',\n },\n '&:visited': {\n color: '#7ec2fd',\n },\n },\n cellIdTooltip: {\n fontSize: 14,\n },\n};\n\nexport function 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 */\nexport function 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 */\nexport function 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 */\nexport function 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\n// It is an export function and used somewhere else\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 */\nexport function 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\ninterface CustomFilterSelectProps {\n name: 'room' | 'func' | 'type' | 'role' | 'custom';\n texts: Record<string, string>;\n initialValue: string[] | undefined;\n onChange: (name: 'room' | 'func' | 'type' | 'role' | 'custom', value: string[] | undefined) => void;\n values: (string | InputSelectItem)[];\n}\n\ninterface CustomFilterSelectState {\n value: string[];\n}\n\nexport class CustomFilterSelect extends Component<CustomFilterSelectProps, CustomFilterSelectState> {\n private readonly hasIcons: boolean;\n private timer: ReturnType<typeof setTimeout> | null = null;\n constructor(props: CustomFilterSelectProps) {\n super(props);\n this.state = {\n value: props.initialValue || [],\n };\n this.hasIcons = !!props.values?.find(item => (item as InputSelectItem).icon);\n }\n\n componentWillUnmount(): void {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n }\n\n render(): React.JSX.Element {\n return (\n <div style={{ position: 'relative' }}>\n <Select\n variant=\"standard\"\n key={this.props.name}\n sx={styles.headerCellInput}\n className=\"no-underline\"\n multiple\n renderValue={value => {\n if (!value?.length) {\n return this.props.name === 'custom'\n ? this.props.texts.showAll\n : this.props.texts[`filter_${this.props.name}`];\n }\n return value.map(val => {\n const item = this.props.values.find(i =>\n typeof i === 'object' ? i.value === val : i === val,\n );\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 <Box\n component=\"span\"\n sx={styles.headerCellSelectItem}\n key={id}\n >\n {icon || (this.hasIcons ? <div className=\"itemIcon\" /> : null)}\n {_name}\n </Box>\n );\n });\n }}\n value={this.state.value}\n onChange={event => {\n let selectedValues = event.target.value as string[];\n // '_' may be selected only alone\n if (this.state.value[0] === '_' && selectedValues.includes('_') && selectedValues.length > 1) {\n const pos = selectedValues.indexOf('_');\n if (pos !== -1) {\n selectedValues.splice(pos, 1);\n }\n } else if (this.state.value[0] !== '_' && selectedValues.includes('_')) {\n selectedValues = ['_'];\n }\n\n // '_' may be selected only alone\n if (selectedValues.includes('')) {\n selectedValues = [];\n }\n\n this.setState({ value: selectedValues }, () => {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n this.timer = setTimeout(() => {\n this.timer = null;\n this.props.onChange(this.props.name, selectedValues);\n }, 400);\n });\n }}\n onClose={() => {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n this.props.onChange(this.props.name, this.state.value);\n }\n }}\n inputProps={{ name: this.props.name, id: this.props.name }}\n displayEmpty\n >\n <MenuItem\n key=\"empty\"\n value=\"\"\n >\n <span style={styles.selectNone}>\n {this.props.name === 'custom'\n ? this.props.texts.showAll\n : this.props.texts[`filter_${this.props.name}`]}\n </span>\n </MenuItem>\n {this.props.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 || (this.hasIcons ? <div className=\"itemIcon\" /> : null)}\n {_name}\n </MenuItem>\n );\n })}\n </Select>\n {this.state.value.length ? (\n <Box\n component=\"div\"\n sx={styles.selectClearButton}\n >\n <IconButton\n size=\"small\"\n onClick={() => {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n this.setState({ value: [] }, () => this.props.onChange(this.props.name, undefined));\n }}\n >\n <IconClose />\n </IconButton>\n </Box>\n ) : null}\n </div>\n );\n }\n}\n\ninterface CustomFilterInputProps {\n name: 'name' | 'id';\n texts: Record<string, string>;\n initialValue: string | undefined;\n onChange: (name: 'name' | 'id', value: string | undefined) => void;\n t: (text: string) => string;\n styles?: React.CSSProperties;\n}\n\ninterface CustomFilterInputState {\n value: string;\n}\n\nexport class CustomFilterInput extends Component<CustomFilterInputProps, CustomFilterInputState> {\n private timer: ReturnType<typeof setTimeout> | null = null;\n constructor(props: CustomFilterInputProps) {\n super(props);\n this.state = {\n value: props.initialValue || '',\n };\n }\n\n componentWillUnmount(): void {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n }\n\n render(): React.JSX.Element {\n return (\n <FormControl\n sx={this.props.styles}\n key={this.props.name}\n title={this.props.t('ra_You can use * as wildcard')}\n margin=\"dense\"\n >\n <Input\n classes={{ underline: 'no-underline' }}\n id={this.props.name}\n placeholder={this.props.texts[`filter_${this.props.name}`]}\n value={this.state.value}\n onChange={event => {\n const selectedValues = event.target.value;\n this.setState({ value: selectedValues }, () => {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n this.timer = setTimeout(() => {\n this.timer = null;\n this.props.onChange(this.props.name, selectedValues);\n }, 400);\n });\n }}\n onBlur={() => {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n this.props.onChange(this.props.name, this.state.value);\n }\n }}\n autoComplete=\"off\"\n />\n {this.state.value ? (\n <div\n style={{\n position: 'absolute',\n right: 0,\n }}\n >\n <IconButton\n size=\"small\"\n onClick={() => {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n this.setState({ value: '' }, () => this.props.onChange(this.props.name, undefined));\n }}\n >\n <IconClose />\n </IconButton>\n </div>\n ) : null}\n </FormControl>\n );\n }\n}\n\n// d=data, t=target, s=start, e=end, m=middle\nexport function 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\nexport function 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\nexport function 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?.length) {\n context.type = filters.type.map(f => f.toLowerCase());\n }\n if (filters.custom?.length) {\n context.custom = filters.custom.map(c => c.toLowerCase());\n }\n if (filters.role?.length) {\n context.role = filters.role.map(r => r.toLowerCase());\n }\n if (filters.room?.length) {\n context.room = [];\n filters.room.forEach(room => {\n context.room = context.room.concat((objects[room] as ioBroker.EnumObject)?.common?.members || []);\n });\n }\n if (filters.func?.length) {\n context.func = [];\n filters.func.forEach(func => {\n context.func = context.func.concat((objects[func] as ioBroker.EnumObject)?.common?.members || []);\n });\n }\n }\n\n const data = item.data;\n\n if (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?.length && common) {\n filteredOut = !(typeof common.role === 'string' && context.role.find(role => common.role.startsWith(role)));\n }\n if (!filteredOut && context.room?.length) {\n filteredOut = !context.room.find(id => id === data.id || data.id.startsWith(`${id}.`));\n }\n if (!filteredOut && context.func?.length) {\n filteredOut = !context.func.find(id => id === data.id || data.id.startsWith(`${id}.`));\n }\n if (!filteredOut && context.type?.length) {\n filteredOut = !(data.obj?.type && context.type.includes(data.obj.type));\n }\n if (!filteredOut && selectedTypes) {\n filteredOut = !(data.obj?.type && selectedTypes.includes(data.obj.type));\n }\n if (!filteredOut && context.custom?.length) {\n if (common) {\n if (context.custom[0] === '_') {\n filteredOut = !!common.custom;\n } else if (common.custom) {\n filteredOut = !context.custom.find(custom => common.custom[custom]);\n } else {\n filteredOut = true;\n }\n } else {\n filteredOut = context.custom[0] !== '_';\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\nexport function 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\nexport function 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\nexport function 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\nexport function 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\nexport function findNode(\n root: TreeItem,\n id: string,\n _parts?: string[],\n _path?: string,\n _level?: number,\n): 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\nexport function 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\nexport function 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\nexport function 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 */\nexport function 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 */\nexport function 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\nexport function 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 function 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 = 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\nexport function 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 * Check if it is a non-expert id\n *\n * @param id id to test\n */\nexport function isNonExpertId(id: string): boolean {\n return !!NON_EXPERT_NAMESPACES.find(saveNamespace => id.startsWith(saveNamespace));\n}\n"]}
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import { Component, type JSX } from 'react';
8
8
  import type { Connection } from '../Connection';
9
- import { type ObjectBrowserColumn, type ObjectBrowserCustomFilter } from '../Components/ObjectBrowser';
9
+ import { type ObjectBrowserColumn, type ObjectBrowserCustomFilter } from '../Components/objectBrowser.types';
10
10
  import type { IobTheme } from '../types';
11
11
  export interface SelectIDFilters {
12
12
  id?: string;
@@ -8,7 +8,7 @@ import React, { Component } from 'react';
8
8
  import { Button, DialogTitle, DialogContent, DialogActions, Dialog } from '@mui/material';
9
9
  import { Cancel as IconCancel, Check as IconOk } from '@mui/icons-material';
10
10
  import { I18n } from '../i18n';
11
- import { ObjectBrowser, } from '../Components/ObjectBrowser';
11
+ import { ObjectBrowser } from '../Components/ObjectBrowser';
12
12
  export class DialogSelectID extends Component {
13
13
  dialogName;
14
14
  filters;
@@ -1 +1 @@
1
- {"version":3,"file":"SelectID.js","sourceRoot":"./src/","sources":["Dialogs/SelectID.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright 2018-2025 Denis Haev (bluefox) <dogafox@gmail.com>\n *\n * MIT License\n *\n */\nimport React, { Component, type JSX } from 'react';\n\nimport { Button, DialogTitle, DialogContent, DialogActions, Dialog } from '@mui/material';\n\nimport { Cancel as IconCancel, Check as IconOk } from '@mui/icons-material';\n\nimport type { Connection } from '../Connection';\n\nimport { I18n } from '../i18n';\nimport {\n ObjectBrowser,\n type ObjectBrowserFilter,\n type ObjectBrowserColumn,\n type ObjectBrowserCustomFilter,\n} from '../Components/ObjectBrowser';\nimport type { IobTheme } from '../types';\n\nexport interface SelectIDFilters {\n id?: string;\n name?: string;\n room?: string[];\n func?: string[];\n role?: string[];\n type?: string[];\n custom?: string[];\n}\n\ninterface DialogSelectIDProps {\n /** The internal name of the dialog; default: \"default\". Used to store settings in local storage */\n dialogName?: string;\n /** The dialog title; default: Please select object ID... (translated) */\n title?: string;\n /** Set to true to allow the selection of multiple IDs. */\n multiSelect?: boolean;\n /** Show folders before any leaves. */\n foldersFirst?: boolean;\n /** Path prefix for images (default: '.') */\n imagePrefix?: string;\n /** @deprecated same as imagePrefix */\n prefix?: string;\n /** Show the expert button */\n showExpertButton?: boolean;\n /** Force expert mode */\n expertMode?: boolean;\n /** optional ['name', 'type', 'role', 'room', 'func', 'val', 'buttons'] */\n columns?: ObjectBrowserColumn[];\n /** Object types to show; default: 'state' only */\n types?: ioBroker.ObjectType | ioBroker.ObjectType[];\n /** The language. */\n lang?: ioBroker.Languages;\n /** The socket connection. */\n socket: Connection;\n /** Can't objects be edited? (default: true) */\n notEditable?: boolean;\n /** Theme name. */\n themeName?: string;\n /** Theme type: dark or light */\n themeType?: string;\n /** The theme object */\n theme: IobTheme;\n /** The date format for the date columns */\n dateFormat?: string;\n /** Is use comma or point for displaying of float numbers */\n isFloatComma?: boolean;\n /** Custom filter. */\n customFilter?: ObjectBrowserCustomFilter;\n /** The selected IDs. */\n selected?: string | string[];\n /** The ok button text; default: OK (translated) */\n ok?: string;\n /** The cancel button text; default: Cancel (translated) */\n cancel?: string;\n /** Close handler that is always called when the dialog is closed. */\n onClose: () => void;\n /** Handler that is called when the user presses OK. */\n onOk: (selected: string | string[] | undefined, name: string | null) => void;\n /**\n * Function to filter out all unnecessary objects. Can be string or function.\n * It cannot be used together with \"types\".\n * Example for function: `obj => obj.common?.type === 'boolean'` to show only boolean states\n * In case of string, it must look like `obj.common && obj.common.type === 'boolean'`\n */\n filterFunc?: string | ((obj: ioBroker.Object) => boolean);\n /** predefined filter fields, like {\"id\":\"\",\"name\":\"\",\"room\":\"\",\"func\":\"\",\"role\":\"level\",\"type\":\"\",\"custom\":\"\"} */\n filters?: SelectIDFilters;\n /** Show elements only of this root ID */\n root?: string;\n /** Allow selection of non-objects (virtual branches) */\n allowNonObjects?: boolean;\n /** Will be called by selection, so the decision could be done if the OK button is available or not */\n onSelectConfirm?: (\n selected: string | string[],\n objects: Record<string, ioBroker.Object | null | undefined>,\n ) => Promise<boolean>;\n /** The z-index of the dialog; default: 1300 */\n zIndex?: number;\n}\n\ninterface DialogSelectIDState {\n selected: string[];\n name: string | null;\n selectionBlocked: boolean;\n allLoaded?: boolean; // used to detect if all objects are loaded\n}\n\nexport class DialogSelectID extends Component<DialogSelectIDProps, DialogSelectIDState> {\n private readonly dialogName: string;\n\n private filters: ObjectBrowserFilter;\n\n private readonly filterFunc?: (obj: ioBroker.Object) => boolean;\n\n constructor(props: DialogSelectIDProps) {\n super(props);\n this.dialogName = this.props.dialogName || 'default';\n this.dialogName = `SelectID.${this.dialogName}`;\n\n const filters: string = ((window as any)._localStorage || window.localStorage).getItem(this.dialogName) || '{}';\n\n try {\n this.filters = JSON.parse(filters);\n } catch {\n this.filters = {};\n }\n\n if (props.filters) {\n this.filters = { ...this.filters, ...(props.filters || {}) };\n }\n\n let selected = this.props.selected || [];\n if (!Array.isArray(selected)) {\n selected = [selected];\n }\n selected = selected.filter(id => id);\n\n if (props.filterFunc) {\n if (typeof props.filterFunc === 'string') {\n try {\n this.filterFunc = new Function('obj', props.filterFunc) as (obj: ioBroker.Object) => boolean;\n } catch {\n console.error(`Cannot parse filter function: \"obj => ${props.filterFunc}\"`);\n this.filterFunc = undefined;\n }\n } else {\n this.filterFunc = props.filterFunc;\n }\n }\n\n this.state = {\n selected,\n name: '',\n selectionBlocked: false,\n };\n }\n\n handleCancel(): void {\n this.props.onClose();\n }\n\n handleOk(): void {\n this.props.onOk(this.props.multiSelect ? this.state.selected : this.state.selected[0] || '', this.state.name);\n this.props.onClose();\n }\n\n render(): JSX.Element {\n let title;\n if (this.state.name || this.state.selected.length) {\n if (this.state.selected.length === 1) {\n title = [\n <span key=\"selected\">\n {I18n.t('ra_Selected')}\n &nbsp;\n </span>,\n <span\n key=\"id\"\n style={{ fontWeight: 'bold', fontStyle: 'italic' }}\n >\n {(this.state.name || this.state.selected[0]) +\n (this.state.name ? ` [${this.state.selected[0]}]` : '')}\n </span>,\n ];\n } else {\n title = [\n <span key=\"selected\">\n {I18n.t('ra_Selected')}\n &nbsp;\n </span>,\n <span\n key=\"id\"\n style={{ fontWeight: 'bold', fontStyle: 'italic' }}\n >\n {I18n.t('%s items', this.state.selected.length.toString())}\n </span>,\n ];\n }\n } else {\n title = this.props.title || I18n.t('ra_Please select object ID...');\n }\n\n return (\n <Dialog\n onClose={() => {}}\n maxWidth={false}\n style={{ zIndex: this.props.zIndex || undefined }}\n sx={{\n '& .MuiDialog-paper': {\n height: '95%',\n p: '4px',\n width: '100%',\n maxWidth: '100%',\n maxHeight: 'calc(100% - 16px)',\n },\n }}\n fullWidth\n open={!0}\n aria-labelledby=\"ar_dialog_selectid_title\"\n >\n <DialogTitle\n id=\"ar_dialog_selectid_title\"\n style={{\n whiteSpace: 'nowrap',\n width: 'calc(100% - 72px)',\n overflow: 'hidden',\n display: 'inline-block',\n textOverflow: 'ellipsis',\n }}\n >\n {title}\n </DialogTitle>\n <DialogContent\n style={{\n height: '100%',\n overflow: 'hidden',\n padding: '8px 4px',\n }}\n >\n <ObjectBrowser\n foldersFirst={this.props.foldersFirst}\n imagePrefix={this.props.imagePrefix || this.props.prefix} // prefix is for back compatibility\n dateFormat={this.props.dateFormat}\n defaultFilters={this.filters}\n dialogName={this.dialogName}\n isFloatComma={this.props.isFloatComma}\n showExpertButton={\n this.props.showExpertButton !== undefined ? this.props.showExpertButton : true\n }\n expertMode={this.props.expertMode}\n // style={{ width: '100%', height: '100%' }}\n columns={this.props.columns || ['name', 'type', 'role', 'room', 'func', 'val']}\n types={\n this.props.types\n ? Array.isArray(this.props.types)\n ? this.props.types\n : [this.props.types]\n : ['state']\n }\n root={this.props.root}\n t={I18n.t}\n lang={this.props.lang || I18n.getLanguage()}\n socket={this.props.socket}\n selected={this.state.selected}\n multiSelect={this.props.multiSelect}\n notEditable={this.props.notEditable === undefined ? true : this.props.notEditable}\n // name={this.state.name}\n themeName={this.props.themeName}\n themeType={this.props.themeType}\n theme={this.props.theme}\n customFilter={this.props.customFilter}\n allowNonObjects={this.props.allowNonObjects}\n onFilterChanged={(filterConfig: ObjectBrowserFilter) => {\n this.filters = filterConfig;\n ((window as any)._localStorage || window.localStorage).setItem(\n this.dialogName,\n JSON.stringify(filterConfig),\n );\n }}\n onSelect={async (\n _selected: string | string[],\n name: string | null,\n isDouble?: boolean,\n ): Promise<void> => {\n let selected: string[];\n if (!Array.isArray(_selected)) {\n selected = [_selected];\n } else {\n selected = _selected;\n }\n\n if (JSON.stringify(selected) !== JSON.stringify(this.state.selected)) {\n let selectionAllowed = true;\n if (this.props.onSelectConfirm) {\n const objects: Record<string, ioBroker.Object | null | undefined> = {};\n for (const id of selected) {\n try {\n objects[id] = await this.props.socket.getObject(id);\n } catch {\n // ignore\n }\n }\n\n selectionAllowed = await this.props.onSelectConfirm(selected, objects);\n }\n\n this.setState(\n { selected, name, selectionBlocked: !selectionAllowed },\n () => isDouble && this.handleOk(),\n );\n } else if (isDouble) {\n this.handleOk();\n }\n }}\n filterFunc={this.filterFunc}\n title=\"\"\n onAllLoaded={() => this.setState({ allLoaded: true })}\n />\n </DialogContent>\n <DialogActions>\n <Button\n id={`ar_dialog_selectid_ok_${this.props.dialogName || ''}`}\n variant=\"contained\"\n onClick={() => this.handleOk()}\n startIcon={<IconOk />}\n disabled={!this.state.allLoaded || !this.state.selected.length || this.state.selectionBlocked}\n color=\"primary\"\n >\n {this.props.ok || I18n.t('ra_Ok')}\n </Button>\n <Button\n id={`ar_dialog_selectid_cancel_${this.props.dialogName || ''}`}\n color=\"grey\"\n variant=\"contained\"\n onClick={() => this.handleCancel()}\n startIcon={<IconCancel />}\n >\n {this.props.cancel || I18n.t('ra_Cancel')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"SelectID.js","sourceRoot":"./src/","sources":["Dialogs/SelectID.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright 2018-2025 Denis Haev (bluefox) <dogafox@gmail.com>\n *\n * MIT License\n *\n */\nimport React, { Component, type JSX } from 'react';\n\nimport { Button, DialogTitle, DialogContent, DialogActions, Dialog } from '@mui/material';\n\nimport { Cancel as IconCancel, Check as IconOk } from '@mui/icons-material';\n\nimport type { Connection } from '../Connection';\n\nimport { I18n } from '../i18n';\nimport { ObjectBrowser } from '../Components/ObjectBrowser';\nimport {\n type ObjectBrowserFilter,\n type ObjectBrowserColumn,\n type ObjectBrowserCustomFilter,\n} from '../Components/objectBrowser.types';\nimport type { IobTheme } from '../types';\n\nexport interface SelectIDFilters {\n id?: string;\n name?: string;\n room?: string[];\n func?: string[];\n role?: string[];\n type?: string[];\n custom?: string[];\n}\n\ninterface DialogSelectIDProps {\n /** The internal name of the dialog; default: \"default\". Used to store settings in local storage */\n dialogName?: string;\n /** The dialog title; default: Please select object ID... (translated) */\n title?: string;\n /** Set to true to allow the selection of multiple IDs. */\n multiSelect?: boolean;\n /** Show folders before any leaves. */\n foldersFirst?: boolean;\n /** Path prefix for images (default: '.') */\n imagePrefix?: string;\n /** @deprecated same as imagePrefix */\n prefix?: string;\n /** Show the expert button */\n showExpertButton?: boolean;\n /** Force expert mode */\n expertMode?: boolean;\n /** optional ['name', 'type', 'role', 'room', 'func', 'val', 'buttons'] */\n columns?: ObjectBrowserColumn[];\n /** Object types to show; default: 'state' only */\n types?: ioBroker.ObjectType | ioBroker.ObjectType[];\n /** The language. */\n lang?: ioBroker.Languages;\n /** The socket connection. */\n socket: Connection;\n /** Can't objects be edited? (default: true) */\n notEditable?: boolean;\n /** Theme name. */\n themeName?: string;\n /** Theme type: dark or light */\n themeType?: string;\n /** The theme object */\n theme: IobTheme;\n /** The date format for the date columns */\n dateFormat?: string;\n /** Is use comma or point for displaying of float numbers */\n isFloatComma?: boolean;\n /** Custom filter. */\n customFilter?: ObjectBrowserCustomFilter;\n /** The selected IDs. */\n selected?: string | string[];\n /** The ok button text; default: OK (translated) */\n ok?: string;\n /** The cancel button text; default: Cancel (translated) */\n cancel?: string;\n /** Close handler that is always called when the dialog is closed. */\n onClose: () => void;\n /** Handler that is called when the user presses OK. */\n onOk: (selected: string | string[] | undefined, name: string | null) => void;\n /**\n * Function to filter out all unnecessary objects. Can be string or function.\n * It cannot be used together with \"types\".\n * Example for function: `obj => obj.common?.type === 'boolean'` to show only boolean states\n * In case of string, it must look like `obj.common && obj.common.type === 'boolean'`\n */\n filterFunc?: string | ((obj: ioBroker.Object) => boolean);\n /** predefined filter fields, like {\"id\":\"\",\"name\":\"\",\"room\":\"\",\"func\":\"\",\"role\":\"level\",\"type\":\"\",\"custom\":\"\"} */\n filters?: SelectIDFilters;\n /** Show elements only of this root ID */\n root?: string;\n /** Allow selection of non-objects (virtual branches) */\n allowNonObjects?: boolean;\n /** Will be called by selection, so the decision could be done if the OK button is available or not */\n onSelectConfirm?: (\n selected: string | string[],\n objects: Record<string, ioBroker.Object | null | undefined>,\n ) => Promise<boolean>;\n /** The z-index of the dialog; default: 1300 */\n zIndex?: number;\n}\n\ninterface DialogSelectIDState {\n selected: string[];\n name: string | null;\n selectionBlocked: boolean;\n allLoaded?: boolean; // used to detect if all objects are loaded\n}\n\nexport class DialogSelectID extends Component<DialogSelectIDProps, DialogSelectIDState> {\n private readonly dialogName: string;\n\n private filters: ObjectBrowserFilter;\n\n private readonly filterFunc?: (obj: ioBroker.Object) => boolean;\n\n constructor(props: DialogSelectIDProps) {\n super(props);\n this.dialogName = this.props.dialogName || 'default';\n this.dialogName = `SelectID.${this.dialogName}`;\n\n const filters: string = ((window as any)._localStorage || window.localStorage).getItem(this.dialogName) || '{}';\n\n try {\n this.filters = JSON.parse(filters);\n } catch {\n this.filters = {};\n }\n\n if (props.filters) {\n this.filters = { ...this.filters, ...(props.filters || {}) };\n }\n\n let selected = this.props.selected || [];\n if (!Array.isArray(selected)) {\n selected = [selected];\n }\n selected = selected.filter(id => id);\n\n if (props.filterFunc) {\n if (typeof props.filterFunc === 'string') {\n try {\n this.filterFunc = new Function('obj', props.filterFunc) as (obj: ioBroker.Object) => boolean;\n } catch {\n console.error(`Cannot parse filter function: \"obj => ${props.filterFunc}\"`);\n this.filterFunc = undefined;\n }\n } else {\n this.filterFunc = props.filterFunc;\n }\n }\n\n this.state = {\n selected,\n name: '',\n selectionBlocked: false,\n };\n }\n\n handleCancel(): void {\n this.props.onClose();\n }\n\n handleOk(): void {\n this.props.onOk(this.props.multiSelect ? this.state.selected : this.state.selected[0] || '', this.state.name);\n this.props.onClose();\n }\n\n render(): JSX.Element {\n let title;\n if (this.state.name || this.state.selected.length) {\n if (this.state.selected.length === 1) {\n title = [\n <span key=\"selected\">\n {I18n.t('ra_Selected')}\n &nbsp;\n </span>,\n <span\n key=\"id\"\n style={{ fontWeight: 'bold', fontStyle: 'italic' }}\n >\n {(this.state.name || this.state.selected[0]) +\n (this.state.name ? ` [${this.state.selected[0]}]` : '')}\n </span>,\n ];\n } else {\n title = [\n <span key=\"selected\">\n {I18n.t('ra_Selected')}\n &nbsp;\n </span>,\n <span\n key=\"id\"\n style={{ fontWeight: 'bold', fontStyle: 'italic' }}\n >\n {I18n.t('%s items', this.state.selected.length.toString())}\n </span>,\n ];\n }\n } else {\n title = this.props.title || I18n.t('ra_Please select object ID...');\n }\n\n return (\n <Dialog\n onClose={() => {}}\n maxWidth={false}\n style={{ zIndex: this.props.zIndex || undefined }}\n sx={{\n '& .MuiDialog-paper': {\n height: '95%',\n p: '4px',\n width: '100%',\n maxWidth: '100%',\n maxHeight: 'calc(100% - 16px)',\n },\n }}\n fullWidth\n open={!0}\n aria-labelledby=\"ar_dialog_selectid_title\"\n >\n <DialogTitle\n id=\"ar_dialog_selectid_title\"\n style={{\n whiteSpace: 'nowrap',\n width: 'calc(100% - 72px)',\n overflow: 'hidden',\n display: 'inline-block',\n textOverflow: 'ellipsis',\n }}\n >\n {title}\n </DialogTitle>\n <DialogContent\n style={{\n height: '100%',\n overflow: 'hidden',\n padding: '8px 4px',\n }}\n >\n <ObjectBrowser\n foldersFirst={this.props.foldersFirst}\n imagePrefix={this.props.imagePrefix || this.props.prefix} // prefix is for back compatibility\n dateFormat={this.props.dateFormat}\n defaultFilters={this.filters}\n dialogName={this.dialogName}\n isFloatComma={this.props.isFloatComma}\n showExpertButton={\n this.props.showExpertButton !== undefined ? this.props.showExpertButton : true\n }\n expertMode={this.props.expertMode}\n // style={{ width: '100%', height: '100%' }}\n columns={this.props.columns || ['name', 'type', 'role', 'room', 'func', 'val']}\n types={\n this.props.types\n ? Array.isArray(this.props.types)\n ? this.props.types\n : [this.props.types]\n : ['state']\n }\n root={this.props.root}\n t={I18n.t}\n lang={this.props.lang || I18n.getLanguage()}\n socket={this.props.socket}\n selected={this.state.selected}\n multiSelect={this.props.multiSelect}\n notEditable={this.props.notEditable === undefined ? true : this.props.notEditable}\n // name={this.state.name}\n themeName={this.props.themeName}\n themeType={this.props.themeType}\n theme={this.props.theme}\n customFilter={this.props.customFilter}\n allowNonObjects={this.props.allowNonObjects}\n onFilterChanged={(filterConfig: ObjectBrowserFilter) => {\n this.filters = filterConfig;\n ((window as any)._localStorage || window.localStorage).setItem(\n this.dialogName,\n JSON.stringify(filterConfig),\n );\n }}\n onSelect={async (\n _selected: string | string[],\n name: string | null,\n isDouble?: boolean,\n ): Promise<void> => {\n let selected: string[];\n if (!Array.isArray(_selected)) {\n selected = [_selected];\n } else {\n selected = _selected;\n }\n\n if (JSON.stringify(selected) !== JSON.stringify(this.state.selected)) {\n let selectionAllowed = true;\n if (this.props.onSelectConfirm) {\n const objects: Record<string, ioBroker.Object | null | undefined> = {};\n for (const id of selected) {\n try {\n objects[id] = await this.props.socket.getObject(id);\n } catch {\n // ignore\n }\n }\n\n selectionAllowed = await this.props.onSelectConfirm(selected, objects);\n }\n\n this.setState(\n { selected, name, selectionBlocked: !selectionAllowed },\n () => isDouble && this.handleOk(),\n );\n } else if (isDouble) {\n this.handleOk();\n }\n }}\n filterFunc={this.filterFunc}\n title=\"\"\n onAllLoaded={() => this.setState({ allLoaded: true })}\n />\n </DialogContent>\n <DialogActions>\n <Button\n id={`ar_dialog_selectid_ok_${this.props.dialogName || ''}`}\n variant=\"contained\"\n onClick={() => this.handleOk()}\n startIcon={<IconOk />}\n disabled={!this.state.allLoaded || !this.state.selected.length || this.state.selectionBlocked}\n color=\"primary\"\n >\n {this.props.ok || I18n.t('ra_Ok')}\n </Button>\n <Button\n id={`ar_dialog_selectid_cancel_${this.props.dialogName || ''}`}\n color=\"grey\"\n variant=\"contained\"\n onClick={() => this.handleCancel()}\n startIcon={<IconCancel />}\n >\n {this.props.cancel || I18n.t('ra_Cancel')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n }\n}\n"]}