iobroker.admin 7.1.1 → 7.1.2

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 (71) hide show
  1. package/README.md +5 -8
  2. package/adminWww/asset-manifest.json +33 -33
  3. package/adminWww/index.html +1 -1
  4. package/adminWww/static/css/3210.f6c8a5fc.chunk.css.map +1 -1
  5. package/adminWww/static/js/2534.d8fd195b.chunk.js +2 -0
  6. package/adminWww/static/js/2534.d8fd195b.chunk.js.map +1 -0
  7. package/adminWww/static/js/2544.047df092.chunk.js +2 -0
  8. package/adminWww/static/js/2544.047df092.chunk.js.map +1 -0
  9. package/adminWww/static/js/2816.f7bf6ba0.chunk.js +2 -0
  10. package/adminWww/static/js/2816.f7bf6ba0.chunk.js.map +1 -0
  11. package/adminWww/static/js/3210.1be726e7.chunk.js +2 -0
  12. package/adminWww/static/js/3210.1be726e7.chunk.js.map +1 -0
  13. package/adminWww/static/js/4112.9b241792.chunk.js +2 -0
  14. package/adminWww/static/js/4112.9b241792.chunk.js.map +1 -0
  15. package/adminWww/static/js/4579.014de1f1.chunk.js +2 -0
  16. package/adminWww/static/js/4579.014de1f1.chunk.js.map +1 -0
  17. package/adminWww/static/js/{5174.60f22386.chunk.js → 5174.f5aa1074.chunk.js} +2 -2
  18. package/adminWww/static/js/5174.f5aa1074.chunk.js.map +1 -0
  19. package/adminWww/static/js/530.cb8dbcf9.chunk.js +2 -0
  20. package/adminWww/static/js/530.cb8dbcf9.chunk.js.map +1 -0
  21. package/adminWww/static/js/6552.0a447e18.chunk.js +2 -0
  22. package/adminWww/static/js/6552.0a447e18.chunk.js.map +1 -0
  23. package/adminWww/static/js/6938.af058182.chunk.js +2 -0
  24. package/adminWww/static/js/6938.af058182.chunk.js.map +1 -0
  25. package/adminWww/static/js/{8038.cacab580.chunk.js → 8038.ae8b7862.chunk.js} +2 -2
  26. package/adminWww/static/js/8038.ae8b7862.chunk.js.map +1 -0
  27. package/adminWww/static/js/858.f34ea2c6.chunk.js +2 -0
  28. package/adminWww/static/js/858.f34ea2c6.chunk.js.map +1 -0
  29. package/adminWww/static/js/9399.5852b7e7.chunk.js +2 -0
  30. package/adminWww/static/js/9399.5852b7e7.chunk.js.map +1 -0
  31. package/adminWww/static/js/9534.2af54084.chunk.js +2 -0
  32. package/adminWww/static/js/9534.2af54084.chunk.js.map +1 -0
  33. package/adminWww/static/js/9917.3662a807.chunk.js +2 -0
  34. package/adminWww/static/js/9917.3662a807.chunk.js.map +1 -0
  35. package/adminWww/static/js/{main.c1384a82.js → main.423e60b6.js} +2 -2
  36. package/adminWww/static/js/main.423e60b6.js.map +1 -0
  37. package/build-backend/lib/passportSocket.js +8 -10
  38. package/build-backend/lib/translations.js +0 -1
  39. package/build-backend/lib/web.js +101 -81
  40. package/build-backend/main.js +173 -184
  41. package/io-package.json +14 -14
  42. package/package.json +97 -96
  43. package/adminWww/static/js/2534.0bc9912f.chunk.js +0 -2
  44. package/adminWww/static/js/2534.0bc9912f.chunk.js.map +0 -1
  45. package/adminWww/static/js/2544.4fa1eef5.chunk.js +0 -2
  46. package/adminWww/static/js/2544.4fa1eef5.chunk.js.map +0 -1
  47. package/adminWww/static/js/2816.cfab0128.chunk.js +0 -2
  48. package/adminWww/static/js/2816.cfab0128.chunk.js.map +0 -1
  49. package/adminWww/static/js/3210.4c1ccdc2.chunk.js +0 -2
  50. package/adminWww/static/js/3210.4c1ccdc2.chunk.js.map +0 -1
  51. package/adminWww/static/js/4112.8c6e6dae.chunk.js +0 -2
  52. package/adminWww/static/js/4112.8c6e6dae.chunk.js.map +0 -1
  53. package/adminWww/static/js/4579.cd86a1cb.chunk.js +0 -2
  54. package/adminWww/static/js/4579.cd86a1cb.chunk.js.map +0 -1
  55. package/adminWww/static/js/5174.60f22386.chunk.js.map +0 -1
  56. package/adminWww/static/js/530.8eed62a7.chunk.js +0 -2
  57. package/adminWww/static/js/530.8eed62a7.chunk.js.map +0 -1
  58. package/adminWww/static/js/6552.29112fa0.chunk.js +0 -2
  59. package/adminWww/static/js/6552.29112fa0.chunk.js.map +0 -1
  60. package/adminWww/static/js/6938.f4331126.chunk.js +0 -2
  61. package/adminWww/static/js/6938.f4331126.chunk.js.map +0 -1
  62. package/adminWww/static/js/8038.cacab580.chunk.js.map +0 -1
  63. package/adminWww/static/js/858.3a130f69.chunk.js +0 -2
  64. package/adminWww/static/js/858.3a130f69.chunk.js.map +0 -1
  65. package/adminWww/static/js/9399.c959c5de.chunk.js +0 -2
  66. package/adminWww/static/js/9399.c959c5de.chunk.js.map +0 -1
  67. package/adminWww/static/js/9534.68ac37f7.chunk.js +0 -2
  68. package/adminWww/static/js/9534.68ac37f7.chunk.js.map +0 -1
  69. package/adminWww/static/js/9917.28c0dbc2.chunk.js +0 -2
  70. package/adminWww/static/js/9917.28c0dbc2.chunk.js.map +0 -1
  71. package/adminWww/static/js/main.c1384a82.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static/js/2544.047df092.chunk.js","mappings":"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","sources":["assets/sentry.svg","components/CustomModal.tsx","components/CustomSelectButton.tsx","components/State.tsx","helpers/MaterialDynamicIcon.tsx","tabs/Config.tsx","components/Instances/InstanceInfo.tsx","assets/sentryNo.svg","components/Instances/LinksDialog.tsx","components/Instances/InstanceGeneric.tsx","components/Instances/InstanceCard.tsx","components/Instances/InstanceRow.tsx","assets/filter.svg","components/Instances/InstanceFilterDialog.tsx","components/Instances/InstanceCategory.tsx","tabs/Instances.tsx"],"sourcesContent":["var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgSentry(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 256 230\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M251.22 187.856c5.785 10.045 6.345 20.608 1.538 28.958-4.8 8.357-14.192 13.143-25.768 13.143h-21.816c.259-4.068.431-8.17.431-12.302 0-4.628-.215-9.198-.531-13.754l14.35-.014c3.528 0 6.38-2.867 6.38-6.403a6.46 6.46 0 0 0-.768-3.053l-91.46-158.97a6.349 6.349 0 0 0-5.54-3.24 6.374 6.374 0 0 0-5.461 3.09l-14.522 25.243c44.134 33.27 73.804 84.813 77.864 143.333.316 4.548.531 9.119.531 13.753 0 4.132-.172 8.228-.424 12.302h-71.246c.388-4.053.611-8.148.611-12.302 0-4.649-.273-9.233-.776-13.753-3.52-32.206-19.286-60.748-42.503-80.89l-10.003 17.376c17.54 16.325 29.512 38.558 32.767 63.514.59 4.505.92 9.09.92 13.753 0 4.154-.273 8.264-.74 12.302H29.01c-11.576 0-20.968-4.793-25.768-13.15-4.807-8.35-4.247-18.905 1.538-28.958l13.56-23.238a79.42 79.42 0 0 1 20.715 16.052l-8.083 13.768a6.523 6.523 0 0 0-.77 3.054 6.383 6.383 0 0 0 6.382 6.395l32.033.015c-2.687-15.356-9.772-29.21-19.918-40.183-5.979-6.445-12.963-11.9-20.738-16.074l35.77-62.15a151.427 151.427 0 0 1 21.564 14.624c30.827 25.013 51.644 61.955 55.416 103.776h19.172c-3.91-48.892-28.477-92.006-64.937-120.548a171.205 171.205 0 0 0-21.672-14.457l30.532-53.045C109.583 5.77 118.42 0 128.036 0c9.607 0 18.438 5.77 24.223 15.823l98.961 172.033z\",\n fill: \"#FB2D26\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgSentry);\nexport default __webpack_public_path__ + \"static/media/sentry.e732e10c5c1ceed0955b2fec6dab33f8.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useEffect, useState, type JSX } from 'react';\n\nimport {\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n TextField,\n Button,\n InputAdornment,\n type Breakpoint,\n} from '@mui/material';\n\nimport { Check as CheckIcon, Close as CloseIcon, Language as LanguageIcon } from '@mui/icons-material';\n\nimport { I18n, type IobTheme, Utils } from '@iobroker/adapter-react-v5';\n\nconst styles: Record<string, any> = {\n modalDialog: {\n minWidth: 400,\n maxWidth: 800,\n },\n overflowHidden: {\n display: 'flex',\n overflow: 'hidden',\n },\n titleIcon: {\n marginRight: 5,\n },\n content: {\n fontSize: 16,\n },\n languageButton: {\n position: 'absolute',\n right: 8,\n top: 8,\n },\n languageButtonActive: (theme: IobTheme) => ({\n color: theme.palette.primary.main,\n }),\n};\n\ninterface CustomModalProps {\n icon?: React.FC<{ style?: React.CSSProperties }>;\n onClose: () => void;\n children?: JSX.Element | JSX.Element[];\n title?: string;\n titleButtonClose?: string;\n titleButtonApply?: string;\n onApply?: (value: string | number) => void;\n fullWidth?: boolean;\n maxWidth?: Breakpoint;\n applyButton?: boolean;\n disableApplyIfNotChanged?: boolean;\n overflowHidden?: boolean;\n help?: string;\n noTranslation?: boolean;\n toggleTranslation?: () => void;\n textInput?: boolean;\n defaultValue?: string | number;\n progress?: boolean;\n disableApply?: boolean;\n theme: IobTheme;\n}\n\nconst CustomModal = ({\n toggleTranslation,\n noTranslation,\n title,\n fullWidth,\n help,\n maxWidth,\n progress,\n icon,\n disableApplyIfNotChanged,\n applyButton,\n onClose,\n children,\n titleButtonApply,\n titleButtonClose,\n onApply,\n textInput,\n defaultValue,\n overflowHidden,\n disableApply,\n theme,\n}: CustomModalProps): JSX.Element => {\n const [value, setValue] = useState(defaultValue);\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n let Icon: React.FC<{ style?: React.CSSProperties }> | null = null;\n\n if (icon) {\n Icon = icon;\n }\n\n const languageButtonActive = Utils.getStyle(theme, styles.languageButtonActive);\n\n return (\n <Dialog\n open={!0}\n maxWidth={maxWidth || 'md'}\n fullWidth={!!fullWidth}\n disableEscapeKeyDown={false}\n onClose={onClose}\n sx={{ '& .MuiPaper-root': styles.modalDialog /* paper: classes.background */ }}\n >\n {title && (\n <DialogTitle>\n {icon ? <Icon style={styles.titleIcon} /> : null}\n {title}\n {I18n.getLanguage() !== 'en' && toggleTranslation ? (\n <IconButton\n size=\"large\"\n style={{ ...styles.languageButton, ...(noTranslation ? languageButtonActive : undefined) }}\n onClick={() => toggleTranslation()}\n title={I18n.t('Disable/Enable translation')}\n >\n <LanguageIcon />\n </IconButton>\n ) : null}\n </DialogTitle>\n )}\n <DialogContent\n style={{ ...(overflowHidden ? styles.overflowHidden : undefined), ...styles.content, paddingTop: 8 }}\n >\n {textInput && (\n <TextField\n // className={className}\n autoComplete=\"off\"\n fullWidth\n autoFocus\n variant=\"standard\"\n size=\"medium\"\n // rows={10}\n multiline\n value={value}\n onChange={e => setValue(e.target.value)}\n slotProps={{\n input: {\n endAdornment: value ? (\n <InputAdornment position=\"end\">\n <IconButton\n size=\"small\"\n onClick={() => setValue('')}\n >\n <CloseIcon />\n </IconButton>\n </InputAdornment>\n ) : null,\n },\n }}\n // customValue\n />\n )}\n {children}\n {help ? <div>{help}</div> : null}\n </DialogContent>\n <DialogActions>\n {(applyButton === undefined || applyButton) && (\n <Button\n startIcon={<CheckIcon />}\n disabled={disableApply || progress || (disableApplyIfNotChanged && defaultValue === value)}\n onClick={() => onApply && onApply(textInput ? value : '')}\n variant=\"contained\"\n color=\"primary\"\n >\n {I18n.t(titleButtonApply || 'Ok')}\n </Button>\n )}\n <Button\n color=\"grey\"\n onClick={onClose}\n disabled={progress}\n variant=\"contained\"\n startIcon={<CloseIcon />}\n >\n {I18n.t(titleButtonClose || 'Cancel')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nexport default CustomModal;\n","import React, { useState, type JSX } from 'react';\n\nimport { Button, Menu, MenuItem, Tooltip } from '@mui/material';\n\nimport type { Translate } from '@iobroker/adapter-react-v5';\nimport MaterialDynamicIcon from '../helpers/MaterialDynamicIcon';\n\nconst styles: Record<string, React.CSSProperties> = {\n button: {\n marginLeft: 10,\n marginRight: 10,\n },\n icon: {\n marginRight: 5,\n },\n};\n\ninterface CustomSelectButtonProps {\n arrayItem: { name: string | number }[];\n title?: string;\n onClick: (name: string | number) => void;\n value: string | number;\n contained?: boolean;\n buttonIcon?: JSX.Element;\n icons?: boolean;\n t: Translate;\n translateSuffix?: string;\n noTranslation?: boolean;\n}\n\nfunction CustomSelectButton({\n arrayItem,\n title,\n onClick,\n value,\n contained,\n buttonIcon,\n icons,\n t,\n translateSuffix,\n noTranslation,\n}: CustomSelectButtonProps): JSX.Element {\n const [anchorEl, setAnchorEl] = useState(null);\n translateSuffix = translateSuffix || '';\n\n return (\n <>\n <Tooltip\n title={title || ''}\n slotProps={{ popper: { sx: { pointerEvents: 'none' } } }}\n >\n <Button\n style={styles.button}\n variant={contained ? 'contained' : 'outlined'}\n color=\"primary\"\n onClick={e => setAnchorEl(e.currentTarget)}\n >\n {buttonIcon ||\n (icons && (\n <MaterialDynamicIcon\n iconName={value as string}\n style={styles.icon}\n />\n ))}\n {typeof value === 'number' ? value : noTranslation ? value : t(value + translateSuffix)}\n </Button>\n </Tooltip>\n <Menu\n anchorEl={anchorEl}\n keepMounted\n open={Boolean(anchorEl)}\n onClose={() => setAnchorEl(null)}\n >\n {arrayItem.map(({ name }, idx) => (\n <MenuItem\n key={name}\n selected={value ? name === value : value === 0 ? name === value : idx === 0}\n disabled={value ? name === value : value === 0 ? name === value : idx === 0}\n className={`tag-card-${name}`}\n style={{ placeContent: 'space-between' }}\n value={name}\n onClick={() => {\n onClick(name);\n setAnchorEl(null);\n }}\n >\n {icons && (\n <MaterialDynamicIcon\n iconName={name as string}\n style={styles.icon}\n />\n )}\n {typeof name === 'number' ? name : noTranslation ? name : t(name + translateSuffix)}\n </MenuItem>\n ))}\n </Menu>\n </>\n );\n}\n\nexport default CustomSelectButton;\n","import React, { type JSX } from 'react';\n\nimport { Grid2, Typography } from '@mui/material';\n\nimport { CheckCircle as CheckCircleIcon, Cancel as CancelIcon } from '@mui/icons-material';\n\nimport { green, red } from '@mui/material/colors';\n\nconst styles: Record<string, any> = {\n checkIcon: {\n color: green[700],\n },\n cancelIcon: {\n color: red[700],\n },\n wrapperContent: {\n display: 'flex',\n flexFlow: 'nowrap',\n alignItems: 'inherit',\n },\n};\n\ninterface StateProps {\n state: boolean;\n children: JSX.Element | JSX.Element[] | string | string[];\n}\n\nfunction State(props: StateProps): JSX.Element {\n return (\n <Grid2\n container\n style={styles.wrapperContent}\n alignItems=\"center\"\n direction=\"row\"\n spacing={1}\n >\n <Grid2>\n {props.state ? <CheckCircleIcon style={styles.checkIcon} /> : <CancelIcon style={styles.cancelIcon} />}\n </Grid2>\n <Grid2>\n <Typography>{props.children}</Typography>\n </Grid2>\n </Grid2>\n );\n}\n\nexport default State;\n","import React, { useState, useEffect, type JSX } from 'react';\nimport {\n AllInclusive,\n Message,\n WifiTethering,\n Apps,\n VpnKey,\n NotificationsActive,\n SystemUpdateAlt,\n EmojiSymbols,\n PermMedia,\n SettingsEthernet,\n Storage,\n Visibility,\n SettingsBrightness,\n DateRange,\n BatteryChargingFull,\n FilterVintage,\n LocationOn,\n Phonelink,\n Favorite,\n House,\n Apartment,\n EmojiObjects,\n DialerSip,\n PhonelinkSetup,\n AirportShuttle,\n BubbleChart,\n Widgets,\n Brightness6,\n LinearScale,\n Help,\n} from '@mui/icons-material';\nimport { type SvgIconComponent } from '@mui/icons-material';\n\nconst ICON_CACHE: Record<string, Promise<ioBroker.AdapterObject>> = {};\n\nconst objIcon: Record<string, SvgIconComponent> = {\n All: AllInclusive,\n messaging: Message,\n communication: WifiTethering,\n general: Apps,\n logic: VpnKey,\n alarm: NotificationsActive,\n 'iot-systems': SystemUpdateAlt,\n 'misc-data': EmojiSymbols,\n multimedia: PermMedia,\n network: SettingsEthernet,\n storage: Storage,\n visualization: Visibility,\n 'climate-control': SettingsBrightness,\n 'date-and-time': DateRange,\n energy: BatteryChargingFull,\n garden: FilterVintage,\n geoposition: LocationOn,\n hardware: Phonelink,\n health: Favorite,\n household: House,\n infrastructure: Apartment,\n lighting: EmojiObjects,\n protocols: DialerSip,\n utility: PhonelinkSetup,\n vehicle: AirportShuttle,\n 'visualization-icons': BubbleChart,\n 'visualization-widgets': Widgets,\n weather: Brightness6,\n metering: LinearScale,\n};\n\ninterface MaterialDynamicIconProps {\n iconName?: string;\n className?: string;\n style?: React.CSSProperties;\n adapter?: string;\n socket?: any;\n onClick?: (e: React.MouseEvent) => void;\n}\n\nfunction MaterialDynamicIcon({\n iconName,\n className,\n adapter,\n socket,\n onClick,\n style,\n}: MaterialDynamicIconProps): JSX.Element {\n const [url, setUrl] = useState('');\n\n useEffect(() => {\n if (adapter && socket) {\n if (!(ICON_CACHE[adapter] instanceof Promise)) {\n ICON_CACHE[adapter] = socket.getObject(`system.adapter.${adapter}`);\n }\n void ICON_CACHE[adapter].then(\n obj => obj?.common?.icon && setUrl(`../../adapter/${adapter}/${obj.common.icon}`),\n );\n }\n }, [adapter, socket]);\n\n if (adapter) {\n return (\n <img\n onClick={e => onClick && onClick(e)}\n src={url || ''}\n className={className}\n style={style}\n alt=\"\"\n />\n );\n }\n const Element = objIcon[iconName] || Help;\n\n return (\n <Element\n className={className}\n style={style}\n onClick={(e: React.MouseEvent) => onClick && onClick(e)}\n />\n );\n}\n\nexport default MaterialDynamicIcon;\n","import React, { Component, type JSX } from 'react';\n\nimport { green, grey, orange, red } from '@mui/material/colors';\n\nimport {\n AppBar,\n Tooltip,\n Paper,\n Fab,\n Toolbar,\n Typography,\n Checkbox,\n FormControl,\n FormControlLabel,\n FormHelperText,\n IconButton,\n InputLabel,\n MenuItem,\n Select,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n Button,\n} from '@mui/material';\n\nimport {\n Help as HelpIcon,\n Pause as PauseIcon,\n PlayArrow as PlayArrowIcon,\n Refresh as RefreshIcon,\n Edit as EditIcon,\n} from '@mui/icons-material';\n\nimport {\n Router,\n Icon,\n Confirm as ConfirmDialog,\n type IobTheme,\n type AdminConnection,\n type ThemeName,\n type ThemeType,\n type Translate,\n} from '@iobroker/adapter-react-v5';\n\nimport { type DeviceManagerPropsProps, JsonConfig } from '@iobroker/json-config';\nimport DeviceManager from '@iobroker/dm-gui-components';\n\nimport AdminUtils from '../AdminUtils';\n\nconst arrayLogLevel: ioBroker.LogLevel[] = ['silly', 'debug', 'info', 'warn', 'error'];\n\ndeclare global {\n interface Window {\n // @deprecated\n attachEvent: any;\n // @deprecated\n detachEvent: any;\n }\n}\n\nconst styles: Record<string, any> = {\n root: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n },\n scroll: {\n height: '100%',\n overflowY: 'auto',\n },\n instanceIcon: {\n width: 42,\n height: 42,\n marginRight: 16,\n verticalAlign: 'middle',\n },\n button: {\n marginRight: 5,\n width: 36,\n height: 36,\n },\n version: {\n fontSize: 12,\n opacity: 0.8,\n marginLeft: 20,\n marginRight: 10,\n },\n versionAliveConnected: (theme: IobTheme) => ({\n color: theme.palette.mode === 'dark' ? '#23a623' : '#60ff60',\n }),\n versionAliveNotConnected: {\n color: '#a67223',\n },\n buttonControl: {\n padding: '5px',\n transition: 'opacity 0.2s',\n height: 34,\n },\n enabled: {\n color: green[400],\n '&:hover': {\n backgroundColor: green[200],\n },\n },\n disabled: {\n color: red[400],\n '&:hover': {\n backgroundColor: red[200],\n },\n },\n hide: {\n visibility: 'hidden',\n },\n formControl: {\n width: '100%',\n marginBottom: 5,\n },\n logLevel: {\n fontSize: 12,\n marginLeft: 10,\n },\n green: {\n color: green[700],\n },\n red: {\n color: red[700],\n },\n grey: {\n color: grey[700],\n },\n blue: {\n color: '#0055a9',\n },\n orange: {\n color: orange[400],\n },\n orangeDevice: {\n color: orange[300],\n },\n tooltip: {\n pointerEvents: 'none',\n },\n};\n\ninterface ConfigProps {\n adapter: string;\n instance: number;\n materialize: boolean;\n tab?: boolean;\n jsonConfig: boolean;\n socket: AdminConnection;\n themeName: ThemeName;\n themeType: ThemeType;\n t: Translate;\n isFloatComma: boolean;\n dateFormat: string;\n style: Record<string, React.CSSProperties>;\n icon: string;\n lang: ioBroker.Languages;\n easyMode?: boolean;\n adminInstance: string;\n onRegisterIframeRef: (ref: HTMLIFrameElement) => void;\n onUnregisterIframeRef: (ref: HTMLIFrameElement) => void;\n configStored: (allStored: boolean) => void;\n theme: IobTheme;\n width: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n version?: string;\n}\n\ninterface ConfigState {\n checkedExist: boolean | string;\n showStopAdminDialog: boolean;\n running: boolean;\n canStart: boolean;\n alive: boolean;\n connected: boolean | null;\n connectedToHost: boolean;\n logOnTheFlyValue: boolean;\n logLevel: ioBroker.LogLevel;\n logLevelValue: ioBroker.LogLevel;\n tempLogLevel: ioBroker.LogLevel;\n common?: Record<string, any>;\n native?: Record<string, any>;\n adapterDocLangs?: ioBroker.Languages[];\n extension?: boolean | null;\n showLogLevelDialog: boolean;\n}\n\nclass Config extends Component<ConfigProps, ConfigState> {\n private refIframe: HTMLIFrameElement | null;\n\n private registered: boolean;\n\n constructor(props: ConfigProps) {\n super(props);\n\n this.state = {\n checkedExist: false,\n showStopAdminDialog: false,\n running: false,\n canStart: false,\n alive: false,\n connected: false,\n connectedToHost: false,\n logOnTheFlyValue: false,\n logLevel: 'info',\n logLevelValue: 'info',\n tempLogLevel: 'info',\n showLogLevelDialog: false,\n };\n\n this.refIframe = null;\n this.registered = false;\n }\n\n componentDidUpdate(/* prevProps, prevState, snapshot */): void {\n if (!this.registered && this.refIframe?.contentWindow) {\n this.registered = true;\n this.props.onRegisterIframeRef(this.refIframe);\n }\n }\n\n componentDidMount(): void {\n // receive messages from IFRAME\n if (this.props.tab) {\n void this.props.socket.fileExists(`${this.props.adapter}.admin`, 'tab.html').then(exist => {\n if (exist) {\n this.setState({ checkedExist: 'tab.html' });\n } else {\n return this.props.socket\n .fileExists(`${this.props.adapter}.admin`, 'tab_m.html')\n .then(exists =>\n exists\n ? this.setState({ checkedExist: 'tab_m.html' })\n : window.alert('Cannot find tab(_m).html'),\n );\n }\n });\n } else {\n // this.props.socket.getState('system.adapter.' + this.props.adapter + '.' + this.props.instance + '.')\n const instanceId = `system.adapter.${this.props.adapter}.${this.props.instance}`;\n void this.props.socket.subscribeObject(instanceId, this.onObjectChange);\n this.props.socket\n .getObject(instanceId)\n .then(async obj => {\n const tempLogLevel = await this.props.socket.getState(`${instanceId}.logLevel`);\n await this.props.socket.subscribeState(`${instanceId}.logLevel`, this.onStateChange);\n\n const alive = await this.props.socket.getState(`${instanceId}.alive`);\n await this.props.socket.subscribeState(`${instanceId}.alive`, this.onStateChange);\n\n const connectedToHost = await this.props.socket.getState(`${instanceId}.connected`);\n await this.props.socket.subscribeState(`${instanceId}.connected`, this.onStateChange);\n\n let connected;\n try {\n connected = await this.props.socket.getState(\n `${this.props.adapter}.${this.props.instance}.info.connection`,\n );\n void this.props.socket.subscribeState(\n `${this.props.adapter}.${this.props.instance}.info.connection`,\n this.onStateChange,\n );\n } catch {\n // ignore\n connected = null;\n }\n\n let extension;\n try {\n extension = await this.props.socket.getState(\n `${this.props.adapter}.${this.props.instance}.info.extension`,\n );\n void this.props.socket.subscribeState(\n `${this.props.adapter}.${this.props.instance}.info.extension`,\n this.onStateChange,\n );\n } catch {\n // ignore\n extension = null;\n }\n\n this.setState({\n checkedExist: true,\n running: obj?.common?.onlyWWW || obj?.common?.enabled,\n canStart: !obj?.common?.onlyWWW,\n alive: !!alive?.val,\n extension: extension ? !!extension?.val : null,\n connectedToHost: !!connectedToHost?.val,\n connected: connected ? !!connected.val : null,\n logLevel: obj?.common?.loglevel || 'info',\n logLevelValue: obj?.common?.loglevel || 'info',\n tempLogLevel: tempLogLevel?.val || obj?.common?.loglevel || 'info',\n common: obj?.common || {},\n native: obj?.native || {},\n adapterDocLangs: obj?.common?.docs\n ? (Object.keys(obj.common.docs) as ioBroker.Languages[])\n : ['en'],\n });\n })\n .catch(error => {\n console.error(error);\n this.setState({ checkedExist: true, running: false });\n });\n }\n\n if (!this.registered && this.refIframe?.contentWindow) {\n this.registered = true;\n this.props.onRegisterIframeRef(this.refIframe);\n }\n\n (window.addEventListener || window.attachEvent)(\n window.addEventListener ? 'message' : 'onmessage',\n this.closeConfig,\n false,\n );\n }\n\n onObjectChange = (id: string, obj: ioBroker.InstanceObject | null): void => {\n if (id === `system.adapter.${this.props.adapter}.${this.props.instance}`) {\n this.setState({\n running: obj?.common?.onlyWWW || obj?.common?.enabled,\n canStart: !obj?.common?.onlyWWW,\n logLevel: obj?.common?.loglevel || 'info',\n });\n }\n };\n\n // returns:\n // grey - daemon / disabled\n // green - daemon / run,connected,alive\n // blue - schedule\n // orangeDevice - daemon / run, connected to controller, not connected to device\n // orange - daemon / run,not connected\n // red - daemon / not run, not connected\n getInstanceStatus(): string {\n const mode = this.state.common?.mode || '';\n let status = mode === 'daemon' ? 'green' : 'blue';\n\n if (\n this.state.common?.enabled &&\n (!this.state.common.webExtension || !this.state.native?.webInstance || mode === 'daemon')\n ) {\n if (this.state.common.webExtension && this.state.native?.webInstance) {\n if (this.state.extension !== null) {\n return this.state.extension ? 'green' : 'red';\n }\n }\n\n if (!this.state.connectedToHost || !this.state.alive) {\n status = mode === 'daemon' ? 'red' : 'orangeDevice';\n }\n if (this.state.connected !== null && !this.state.connected && status !== 'red') {\n status = 'orange';\n }\n } else {\n status = mode === 'daemon' ? 'grey' : 'blue';\n }\n\n return status;\n }\n\n onStateChange = (id: string, state?: ioBroker.State | null): void => {\n const instanceId = `system.adapter.${this.props.adapter}.${this.props.instance}`;\n if (id === `${instanceId}.alive`) {\n this.setState({ alive: !!state?.val });\n } else if (id === `${instanceId}.connected`) {\n this.setState({ connectedToHost: !!state?.val });\n } else if (id === `${this.props.adapter}.${this.props.instance}.info.connection`) {\n this.setState({ connected: state ? !!state.val : null });\n } else if (id === `${this.props.adapter}.${this.props.instance}.info.extension`) {\n this.setState({ extension: state ? !!state.val : null });\n } else if (id === `${instanceId}.logLevel`) {\n this.setState({ tempLogLevel: state ? (state.val as ioBroker.LogLevel) : null });\n }\n };\n\n componentWillUnmount(): void {\n void this.props.socket.unsubscribeObject(\n `system.adapter.${this.props.adapter}.${this.props.instance}`,\n this.onObjectChange,\n );\n\n (window.removeEventListener || window.detachEvent)(\n window.removeEventListener ? 'message' : 'onmessage',\n this.closeConfig,\n false,\n );\n\n if (this.registered && this.refIframe) {\n this.props.onUnregisterIframeRef(this.refIframe);\n }\n this.refIframe = null;\n }\n\n closeConfig = (event: MessageEvent & { message: string }): void => {\n if (event.origin !== window.location.origin) {\n return;\n }\n\n if (event.data === 'close' || event.message === 'close') {\n if (this.props.easyMode) {\n Router.doNavigate('easy');\n } else {\n Router.doNavigate('tab-instances');\n }\n } else if (event.data === 'change' || event.message === 'change') {\n this.props.configStored(false);\n } else if (event.data === 'nochange' || event.message === 'nochange') {\n this.props.configStored(true);\n } else if (\n (typeof event.data === 'string' && event.data.startsWith('goto:')) ||\n (typeof event.message === 'string' && event.message.startsWith('goto:'))\n ) {\n const [, url] = (event.data || event.message).split(':');\n const [tab, subTab, parameter] = url.split('/');\n Router.doNavigate(tab, subTab, parameter);\n }\n };\n\n renderHelpButton(): JSX.Element | null {\n if (this.props.jsonConfig) {\n return (\n <div\n style={{\n display: 'inline-block',\n position: 'absolute',\n right: 0,\n top: 5,\n }}\n >\n <Tooltip\n title={this.props.t('Show help for this adapter')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <Fab\n sx={{ '&.MuiFab-root': styles.button }}\n onClick={() => {\n const lang = this.state.adapterDocLangs?.includes(this.props.lang)\n ? this.props.lang\n : 'en';\n window.open(\n AdminUtils.getDocsLinkForAdapter({ lang, adapterName: this.props.adapter }),\n 'help',\n );\n }}\n >\n <HelpIcon />\n </Fab>\n </Tooltip>\n </div>\n );\n }\n return null;\n }\n\n getConfigurator(): JSX.Element | null {\n if (this.props.jsonConfig) {\n return (\n <JsonConfig\n theme={this.props.theme}\n width={this.props.width}\n adapterName={this.props.adapter}\n instance={this.props.instance}\n socket={this.props.socket}\n themeName={this.props.themeName}\n themeType={this.props.themeType}\n dateFormat={this.props.dateFormat}\n isFloatComma={this.props.isFloatComma}\n configStored={this.props.configStored}\n t={this.props.t}\n DeviceManager={DeviceManager as unknown as React.FC<DeviceManagerPropsProps>}\n />\n );\n }\n const src =\n `adapter/${this.props.adapter}/` +\n `${this.props.tab ? this.state.checkedExist : this.props.materialize ? 'index_m.html' : 'index.html'}?` +\n `${this.props.instance || 0}&newReact=true&${this.props.instance || 0}&react=${this.props.themeName}`;\n\n if (this.state.checkedExist) {\n return (\n <iframe\n ref={el => this && (this.refIframe = el)}\n title=\"config\"\n style={this.props.style}\n src={src}\n ></iframe>\n );\n }\n return null;\n }\n\n returnStopAdminDialog(): JSX.Element | null {\n return this.state.showStopAdminDialog ? (\n <ConfirmDialog\n title={this.props.t('Please confirm')}\n text={this.props.t('stop_admin', this.props.instance)}\n ok={this.props.t('Stop admin')}\n onClose={result => {\n if (result) {\n this.props.socket\n .extendObject(`system.adapter.${this.props.adapter}.${this.props.instance}`, {\n common: { enabled: false },\n })\n .catch(error => window.alert(error));\n }\n this.setState({ showStopAdminDialog: false });\n }}\n />\n ) : null;\n }\n\n renderLogLevelDialog(): JSX.Element | null {\n if (!this.state.showLogLevelDialog) {\n return null;\n }\n return (\n <Dialog\n open={!0}\n onClose={() => this.setState({ showLogLevelDialog: false })}\n >\n <DialogTitle>\n {this.props.t('Edit log level rule for %s', `${this.props.adapter}.${this.props.instance}`)}\n </DialogTitle>\n <DialogContent>\n <FormControl\n style={{ ...styles.formControl, marginTop: 10 }}\n variant=\"outlined\"\n >\n <InputLabel>{this.props.t('log level')}</InputLabel>\n <Select\n variant=\"standard\"\n value={this.state.logLevelValue}\n fullWidth\n onChange={el => this.setState({ logLevelValue: el.target.value as ioBroker.LogLevel })}\n >\n {arrayLogLevel.map(el => (\n <MenuItem\n key={el}\n value={el}\n >\n {this.props.t(el)}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n <FormControl\n style={styles.formControl}\n variant=\"outlined\"\n >\n <FormControlLabel\n control={\n <Checkbox\n checked={this.state.logOnTheFlyValue}\n onChange={e => this.setState({ logOnTheFlyValue: e.target.checked })}\n />\n }\n label={this.props.t('Without restart')}\n />\n <FormHelperText>\n {this.state.logOnTheFlyValue\n ? this.props.t('Will be reset to the saved log level after restart of adapter')\n : this.props.t('Log level will be saved permanently')}\n </FormHelperText>\n </FormControl>\n </DialogContent>\n <DialogActions>\n <Button\n color=\"primary\"\n variant=\"contained\"\n onClick={() => {\n if (this.state.logOnTheFlyValue) {\n void this.props.socket.setState(\n `system.adapter.${this.props.adapter}.${this.props.instance}.logLevel`,\n this.state.logLevelValue,\n );\n } else {\n this.props.socket\n .extendObject(`system.adapter.${this.props.adapter}.${this.props.instance}`, {\n common: { loglevel: this.state.logLevelValue },\n })\n .catch(error => window.alert(`Cannot set log level: ${error}`));\n }\n this.setState({ showLogLevelDialog: false });\n }}\n >\n {this.props.t('Ok')}\n </Button>\n <Button\n color=\"grey\"\n variant=\"contained\"\n onClick={() => this.setState({ showLogLevelDialog: false })}\n >\n {this.props.t('Cancel')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n }\n\n render(): JSX.Element {\n return (\n <Paper style={styles.root}>\n <AppBar\n color=\"default\"\n position=\"static\"\n >\n <Toolbar variant=\"dense\">\n <Typography\n variant=\"h6\"\n color=\"inherit\"\n >\n {this.props.jsonConfig ? (\n <Icon\n src={this.props.icon}\n style={styles.instanceIcon}\n />\n ) : null}\n {`${this.props.t('Instance settings')}: ${this.props.adapter}.${this.props.instance}`}\n {this.props.version ? (\n <span\n style={{\n ...styles.version,\n ...styles[this.getInstanceStatus()],\n }}\n >\n v{this.props.version}\n </span>\n ) : null}\n <Tooltip\n title={this.props.t('Start/stop')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <span>\n <IconButton\n size=\"small\"\n onClick={event => {\n event.stopPropagation();\n event.preventDefault();\n if (\n this.state.running &&\n `${this.props.adapter}.${this.props.instance}` ===\n this.props.adminInstance\n ) {\n this.setState({ showStopAdminDialog: true });\n } else {\n this.props.socket\n .extendObject(\n `system.adapter.${this.props.adapter}.${this.props.instance}`,\n { common: { enabled: !this.state.running } },\n )\n .catch(error => window.alert(`Cannot set log level: ${error}`));\n }\n }}\n onFocus={event => event.stopPropagation()}\n sx={{\n ...styles.buttonControl,\n ...(this.state.canStart\n ? this.state.running\n ? styles.enabled\n : styles.disabled\n : styles.hide),\n }}\n >\n {this.state.running ? <PauseIcon /> : <PlayArrowIcon />}\n </IconButton>\n </span>\n </Tooltip>\n <Tooltip\n title={this.props.t('Restart')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <span>\n <IconButton\n size=\"small\"\n onClick={event => {\n event.stopPropagation();\n this.props.socket\n .extendObject(\n `system.adapter.${this.props.adapter}.${this.props.instance}`,\n {},\n )\n .catch(error => window.alert(`Cannot set log level: ${error}`));\n }}\n onFocus={event => event.stopPropagation()}\n style={{\n ...styles.buttonControl,\n ...(!this.state.canStart ? styles.hide : undefined),\n }}\n disabled={!this.state.running}\n >\n <RefreshIcon />\n </IconButton>\n </span>\n </Tooltip>\n {this.state.tempLogLevel !== this.state.logLevel ? (\n <Tooltip\n title={this.props.t('temporary log level')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <span style={styles.logLevel}>{this.state.tempLogLevel}</span>\n </Tooltip>\n ) : null}\n <Tooltip\n title={this.props.t('log level')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <span style={styles.logLevel}>\n {this.state.tempLogLevel !== this.state.logLevel\n ? `/ ${this.state.logLevel}`\n : this.state.logLevel}\n </span>\n </Tooltip>\n <Tooltip\n title={this.props.t(\n 'Edit log level rule for %s',\n `${this.props.adapter}.${this.props.instance}`,\n )}\n >\n <IconButton\n size=\"small\"\n onClick={event => {\n event.stopPropagation();\n this.setState({ showLogLevelDialog: true });\n }}\n onFocus={event => event.stopPropagation()}\n style={{\n ...styles.buttonControl,\n ...(!this.state.canStart ? styles.hide : undefined),\n width: 34,\n height: 34,\n }}\n >\n <EditIcon style={{ width: 20, height: 20 }} />\n </IconButton>\n </Tooltip>\n {/* <IsVisible config={item} name=\"allowInstanceLink\">\n <Tooltip title={this.props.t('Instance link %s', this.props.instanceItem?.id)}>\n <span>\n <IconButton\n size=\"small\"\n className={Utils.clsx(classes.buttonControl, (!this.props.instanceItem?.links || !this.props.instanceItem?.links[0]) && classes.hide)}\n disabled={!this.state.running}\n onClick={event => {\n event.stopPropagation();\n if (this.props.instanceItem?.links.length === 1) {\n // replace IPv6 Address with [ipv6]:port\n let url = this.props.instanceItem?.links[0].link;\n url = url.replace(/\\/\\/([0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*)(:\\d+)?\\//i, '//[$1]$2/');\n window.open(url, this.props.instanceItem?.id);\n } else {\n setShowLinks(true);\n }\n }}\n onFocus={event => event.stopPropagation()}\n >\n <InputIcon />\n </IconButton>\n </div>\n </Tooltip>\n </IsVisible> */}\n </Typography>\n {this.renderHelpButton()}\n </Toolbar>\n </AppBar>\n {this.getConfigurator()}\n {this.returnStopAdminDialog()}\n {this.renderLogLevelDialog()}\n </Paper>\n );\n }\n}\n\nexport default Config;\n","import React, { type JSX } from 'react';\nimport { Grid2, Tooltip, Typography } from '@mui/material';\n\nconst styles: Record<string, React.CSSProperties> = {\n nowrap: {\n flexFlow: 'nowrap',\n overflow: 'hidden',\n },\n width: {\n width: '100%',\n overflow: 'hidden',\n },\n tooltip: {\n pointerEvents: 'none',\n },\n};\n\ninterface InstanceInfoProps {\n children: (JSX.Element | string)[] | JSX.Element | string;\n icon?: JSX.Element;\n tooltip?: string;\n style?: React.CSSProperties;\n}\n\nconst InstanceInfo = (props: InstanceInfoProps): JSX.Element => (\n <Grid2\n container\n title={props.icon ? '' : props.tooltip || ''}\n alignItems=\"center\"\n direction=\"row\"\n spacing={1}\n style={styles.nowrap}\n >\n {props.icon && (\n <Grid2 style={{ minWidth: 24 }}>\n <Tooltip\n title={props.tooltip || ''}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n {props.icon}\n </Tooltip>\n </Grid2>\n )}\n <Grid2 style={styles.width}>\n <Tooltip\n title={props.tooltip || ''}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <Typography\n component=\"div\"\n style={props.style}\n >\n {props.children}\n </Typography>\n </Tooltip>\n </Grid2>\n </Grid2>\n);\n\nexport default InstanceInfo;\n","var _path, _line, _line2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgSentryNo(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 256,\n height: 230,\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M251.22 187.856c5.785 10.045 6.345 20.608 1.538 28.958-4.8 8.357-14.192 13.143-25.768 13.143h-21.816c.259-4.068.431-8.17.431-12.302 0-4.628-.215-9.198-.531-13.754l14.35-.014c3.528 0 6.38-2.867 6.38-6.403a6.46 6.46 0 0 0-.768-3.053l-91.46-158.97a6.349 6.349 0 0 0-5.54-3.24 6.374 6.374 0 0 0-5.461 3.09l-14.522 25.243c44.134 33.27 73.804 84.813 77.864 143.333.316 4.548.531 9.119.531 13.753 0 4.132-.172 8.228-.424 12.302h-71.246c.388-4.053.611-8.148.611-12.302 0-4.649-.273-9.233-.776-13.753-3.52-32.206-19.286-60.748-42.503-80.89l-10.003 17.376c17.54 16.325 29.512 38.558 32.767 63.514.59 4.505.92 9.09.92 13.753 0 4.154-.273 8.264-.74 12.302H29.01c-11.576 0-20.968-4.793-25.768-13.15-4.807-8.35-4.247-18.905 1.538-28.958l13.56-23.238a79.42 79.42 0 0 1 20.715 16.052l-8.083 13.768a6.523 6.523 0 0 0-.77 3.054 6.383 6.383 0 0 0 6.382 6.395l32.033.015c-2.687-15.356-9.772-29.21-19.918-40.183-5.979-6.445-12.963-11.9-20.738-16.074l35.77-62.15a151.427 151.427 0 0 1 21.564 14.624c30.827 25.013 51.644 61.955 55.416 103.776h19.172c-3.91-48.892-28.477-92.006-64.937-120.548a171.205 171.205 0 0 0-21.672-14.457l30.532-53.045C109.583 5.77 118.42 0 128.036 0c9.607 0 18.438 5.77 24.223 15.823l98.961 172.033z\",\n fill: \"#FB2D26\"\n })), _line || (_line = /*#__PURE__*/React.createElement(\"line\", {\n strokeWidth: 33,\n y2: 223,\n x2: 250.40002,\n y1: 8,\n x1: 6.40002,\n stroke: \"#FB2D26\",\n fill: \"none\"\n })), _line2 || (_line2 = /*#__PURE__*/React.createElement(\"line\", {\n strokeWidth: 32,\n y2: 224,\n x2: 8.40002,\n y1: 7,\n x1: 247.40002,\n stroke: \"#FB2D26\",\n fill: \"none\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgSentryNo);\nexport default __webpack_public_path__ + \"static/media/sentryNo.40627b40a3bc6107ca445e9a6cec8601.svg\";\nexport { ForwardRef as ReactComponent };","import React, { Component, type JSX } from 'react';\n\nimport { List, ListItemButton, ListItemText, DialogTitle, Dialog, ListItemAvatar, Avatar } from '@mui/material';\n\nimport { I18n, type ThemeType, type Translate, Utils } from '@iobroker/adapter-react-v5';\n\nimport AdminUtils from '../../AdminUtils';\n\nconst styles: Record<string, React.CSSProperties> = {\n img: {\n width: '100%',\n height: '100%',\n },\n};\n\nexport interface InstanceLink {\n name?: ioBroker.StringOrTranslated;\n link: string;\n port?: number;\n color?: string;\n}\n\ninterface LinksDialogProps {\n links: InstanceLink[];\n onClose: () => void;\n t: Translate;\n instanceId: string;\n image: string;\n themeType: ThemeType;\n}\n\nclass LinksDialog extends Component<LinksDialogProps> {\n render(): JSX.Element {\n if (!this.props.links || !this.props.links.length) {\n return null;\n }\n const firstPort = this.props.links[0].port;\n const showPort = this.props.links.find(item => item.port !== firstPort);\n\n return (\n <Dialog\n onClose={() => this.props.onClose()}\n open={!0}\n >\n <DialogTitle style={{ padding: '8px 0 0 0', textAlign: 'center' }}>{this.props.t('Links')}</DialogTitle>\n <List>\n {this.props.links.map(link => (\n <ListItemButton\n style={\n link.color\n ? {\n backgroundColor: link.color,\n color: Utils.getInvertedColor(link.color, this.props.themeType, true),\n }\n : {}\n }\n onClick={e => {\n e.stopPropagation();\n // replace IPv6 Address with [ipv6]:port\n let url = link.link;\n url = url.replace(\n /\\/\\/([0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*)(:\\d+)?\\//i,\n '//[$1]$2/',\n );\n window.open(url, this.props.instanceId);\n this.props.onClose();\n }}\n key={AdminUtils.getText(link.name, I18n.getLanguage())}\n >\n <ListItemAvatar>\n <Avatar variant=\"rounded\">\n <img\n style={styles.img}\n src={this.props.image}\n alt={this.props.instanceId}\n />\n </Avatar>\n </ListItemAvatar>\n <ListItemText\n primary={\n AdminUtils.getText(link.name, I18n.getLanguage()) +\n (showPort ? ` [:${link.port}]` : '')\n }\n />\n </ListItemButton>\n ))}\n </List>\n </Dialog>\n );\n }\n}\n\nexport default LinksDialog;\n","import React, { Component, type JSX } from 'react';\nimport cronstrue from 'cronstrue';\nimport parser from 'cron-parser';\n\nimport 'cronstrue/locales/en';\nimport 'cronstrue/locales/de';\nimport 'cronstrue/locales/es';\nimport 'cronstrue/locales/fr';\nimport 'cronstrue/locales/it';\nimport 'cronstrue/locales/nl';\nimport 'cronstrue/locales/pl';\nimport 'cronstrue/locales/pt_BR';\nimport 'cronstrue/locales/ru';\nimport 'cronstrue/locales/uk';\nimport 'cronstrue/locales/zh_CN';\n\nimport {\n Button,\n CardMedia,\n Checkbox,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n FormControl,\n FormControlLabel,\n FormHelperText,\n IconButton,\n InputLabel,\n MenuItem,\n Select,\n Tooltip,\n} from '@mui/material';\n\nimport {\n Delete as DeleteIcon,\n Close as CloseIcon,\n Warning as WarningIcon,\n Settings as SettingsIcon,\n Schedule as ScheduleIcon,\n Memory as MemoryIcon,\n Pause as PauseIcon,\n PlayArrow as PlayArrowIcon,\n Build as BuildIcon,\n Refresh as RefreshIcon,\n Input as InputIcon,\n Edit as EditIcon,\n ImportExport as ImportExportIcon,\n ViewCompact as ViewCompactIcon,\n LowPriority as LowPriorityIcon,\n Storage as HostIcon,\n} from '@mui/icons-material';\n\nimport {\n Confirm as ConfirmDialog,\n SelectWithIcon,\n ComplexCronDialog as ComplexCron,\n type AdminConnection,\n TextWithIcon,\n Router,\n type IobTheme,\n type ThemeType,\n type Translate,\n} from '@iobroker/adapter-react-v5';\nimport { amber, blue, green, grey, orange, red } from '@mui/material/colors';\n\nimport { isTouchDevice } from '@/helpers/utils';\nimport State from '@/components/State';\nimport InstanceInfo from '@/components/Instances/InstanceInfo';\nimport sentry from '@/assets/sentry.svg';\nimport noSentry from '@/assets/sentryNo.svg';\nimport CustomModal from '../CustomModal';\nimport LinksDialog, { type InstanceLink } from './LinksDialog';\nimport AdminUtils from '../../AdminUtils';\n\nconst arrayLogLevel = ['silly', 'debug', 'info', 'warn', 'error'];\nexport const arrayTier = [\n { value: 1, desc: '1: Logic adapters' },\n { value: 2, desc: '2: Data provider adapters' },\n { value: 3, desc: '3: Other adapters' },\n];\n\nconst boxShadow = '0 2px 2px 0 rgba(0, 0, 0, .14),0 3px 1px -2px rgba(0, 0, 0, .12),0 1px 5px 0 rgba(0, 0, 0, .2)';\nconst boxShadowHover = '0 8px 17px 0 rgba(0, 0, 0, .2),0 6px 20px 0 rgba(0, 0, 0, .19)';\n\nexport const styles: Record<string, any> = {\n root: (theme: IobTheme) => ({\n position: 'relative',\n m: '10px',\n width: 300,\n minHeight: 200,\n background: theme.palette.background.default,\n boxShadow,\n display: 'flex',\n flexDirection: 'column',\n transition: 'box-shadow 0.5s',\n '&:hover': {\n boxShadow: boxShadowHover,\n },\n }),\n imageBlock: {\n background: 'silver',\n minHeight: 60,\n display: 'flex',\n padding: '0 10px 0 10px',\n position: 'relative',\n justifyContent: 'space-between',\n transition: 'background 0.5s',\n },\n logLevel: {\n width: '100%',\n marginBottom: 5,\n },\n hostInfo: {\n width: '100%',\n },\n addCompact: {\n width: '100%',\n marginBottom: 5,\n },\n selectStyle: {\n display: 'flex',\n margin: 5,\n justifyContent: 'space-around',\n },\n hide: {\n visibility: 'hidden',\n },\n tooltip: {\n pointerEvents: 'none',\n },\n deleting: {\n position: 'relative',\n '&:before': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n zIndex: 100,\n opacity: '.3 !important',\n background: 'repeating-linear-gradient(135deg, #333, #333 10px, #888 10px, #888 20px)',\n },\n },\n enabled: {\n color: green[400],\n '&:hover': {\n backgroundColor: green[200],\n },\n },\n disabled: {\n color: red[400],\n '&:hover': {\n backgroundColor: red[200],\n },\n },\n sentry: {\n width: 24,\n height: 24,\n objectFit: 'fill',\n filter: 'invert(0%) sepia(90%) saturate(1267%) hue-rotate(-260deg) brightness(99%) contrast(97%)',\n },\n displayFlex: {\n display: 'flex',\n },\n marginLeft5: {\n marginLeft: 5,\n },\n marginRight5: {\n marginRight: 5,\n },\n instanceStateNotEnabled1: {\n backgroundColor: 'rgba(192, 192, 192, 0.2)',\n },\n instanceStateNotEnabled2: {\n backgroundColor: 'rgba(192, 192, 192, 0.15)',\n },\n instanceStateNotAlive1: {\n backgroundColor: 'rgba(255,14,14,0.2)',\n },\n instanceStateNotAlive2: {\n backgroundColor: 'rgba(255,14,14, 0.15)',\n },\n instanceStateAliveNotConnected1: {\n backgroundColor: 'rgba(255, 177, 0, 0.1)',\n },\n instanceStateAliveNotConnected2: {\n backgroundColor: 'rgba(255, 177, 0, 0.15)',\n },\n instanceStateAliveAndConnected1: {\n backgroundColor: 'rgba(0, 255, 0, 0.1)',\n },\n instanceStateAliveAndConnected2: {\n backgroundColor: 'rgba(0, 255, 0, 0.15)',\n },\n statusIcon_green: {\n // square\n border: '2px solid grey',\n borderRadius: 2,\n },\n statusIcon_red: {\n // circle\n border: '2px solid grey',\n borderRadius: 20,\n },\n statusIcon_orange: {\n // triangle\n border: 0,\n borderRadius: 0,\n },\n statusIcon_orangeDevice: {\n // triangle\n border: 0,\n borderRadius: 0,\n },\n statusIcon_blue: {\n // watch\n border: '2px solid grey',\n borderRadius: 20,\n },\n statusIcon_grey: {\n // circle ?\n border: '2px solid grey',\n borderRadius: 20,\n },\n orangeDevice: {\n // backgroundColor: orange[700]\n color: orange[300],\n },\n button: {\n // used in sx too and in this.styles\n padding: '5px',\n transition: 'opacity 0.2s',\n height: 34,\n },\n hiddenOpacity: {\n opacity: 0,\n cursor: 'default',\n },\n smallAvatar: {\n width: 24,\n height: 24,\n },\n statusIndicator: {\n marginLeft: 8,\n },\n green: {\n // backgroundColor: green[700]\n color: green[700],\n },\n red: {\n // backgroundColor: red[700]\n color: red[700],\n },\n grey: {\n // backgroundColor: grey[700]\n color: grey[700],\n },\n blue: {\n // backgroundColor: blue[700]\n color: '#0055a9', // blue[700]\n },\n orange: {\n // backgroundColor: orange[700]\n color: orange[400],\n },\n\n transparent: {\n color: 'transparent',\n backgroundColor: 'transparent',\n },\n silly: {},\n debug: {\n backgroundColor: grey[700],\n },\n info: {\n backgroundColor: blue[700],\n },\n warn: {\n backgroundColor: amber[700],\n },\n error: {\n backgroundColor: red[700],\n },\n scheduleIcon: {\n color: '#dc8e00',\n },\n memoryIcon: {\n color: '#dc8e00',\n },\n contrast0: {\n filter: 'contrast(0%)',\n },\n hidden: {\n display: 'none',\n },\n okSymbol: {\n width: 20,\n height: 20,\n margin: 2,\n borderRadius: 2,\n // border: '2px solid #00000000',\n },\n okSymbolInner: {\n width: 'calc(100% - 2px)',\n height: 'calc(100% - 2px)',\n borderRadius: 2,\n margin: 1,\n backgroundColor: '#66bb6a',\n },\n editButton: {\n minHeight: 32,\n '& .admin-edit-button': isTouchDevice()\n ? undefined\n : {\n display: 'none',\n maxHeight: 32,\n },\n '&:hover': isTouchDevice()\n ? undefined\n : {\n '& .admin-edit-button': {\n display: 'block',\n },\n },\n },\n};\n\nexport interface InstanceEntry {\n id: string;\n obj: ioBroker.InstanceObject;\n host: string;\n version: string;\n mode: ioBroker.InstanceMode;\n image: string;\n canStart: boolean;\n adapter: string;\n config: boolean;\n links: InstanceLink[];\n jsonConfig: boolean;\n materialize: boolean;\n compactMode: boolean;\n schedule: null | string;\n loglevel: ioBroker.LogLevel;\n stoppedWhenWebExtension: boolean | undefined;\n compact: boolean;\n name: string;\n enabled: boolean;\n}\n\nexport type InstanceStatusType = 'green' | 'red' | 'orangeDevice' | 'orange' | 'grey' | 'blue';\n\nexport interface InstanceItem {\n id: string; // system.adapter.accuweather.0\n nameId: string; // accuweather.0\n logLevel: ioBroker.LogLevel;\n mode: string;\n compactGroup: number | null | string;\n tier: 1 | 2 | 3;\n memoryLimitMB: number;\n name: string;\n stoppedWhenWebExtension: boolean | undefined;\n running: boolean;\n connected: boolean | string;\n connectedToHost: boolean;\n alive: boolean;\n inputOutput: {\n stateInput: number;\n stateOutput: number;\n };\n loglevelIcon: JSX.Element;\n logLevelObject: ioBroker.LogLevel;\n modeSchedule: boolean;\n checkCompact: boolean;\n compact: boolean;\n category: string;\n supportCompact: boolean;\n checkSentry: boolean;\n sentry: boolean;\n host: string;\n status: InstanceStatusType;\n allowInstanceSettings: boolean;\n allowInstanceDelete: boolean;\n allowInstanceLink: boolean;\n}\n\nexport interface InstanceContext {\n adminInstance: string;\n onDeleteInstance: (instance: InstanceEntry, deleteCustom: boolean, deleteAdapter?: boolean) => void;\n deleteCustomSupported: boolean;\n hosts: ioBroker.HostObject[];\n lang: ioBroker.Languages;\n setMaxCompactGroupNumber: (maxCompactGroupNumber: number) => void;\n t: Translate;\n themeType: ThemeType;\n theme: IobTheme;\n getInstanceStatus: (obj: ioBroker.InstanceObject) => InstanceStatusType;\n socket: AdminConnection;\n expertMode: boolean;\n maxCompactGroupNumber: number;\n states: Record<string, ioBroker.State>;\n onToggleExpanded: (inst: string, expanded: boolean) => void;\n onRegisterClose: (inst: string, close: (() => void) | null) => void;\n}\n\nexport interface InstanceGenericProps {\n hidden?: boolean;\n id: string;\n instance: InstanceEntry;\n deleting: boolean;\n item: InstanceItem;\n context: InstanceContext;\n idx: number;\n}\n\nexport interface InstanceGenericState {\n openSelectCompactGroup: boolean;\n\n openDialog: boolean;\n openDialogCron: boolean;\n openDialogSchedule: boolean;\n openDialogName: boolean;\n openDialogLogLevel: boolean;\n openDialogDelete: number | boolean;\n openDialogMemoryLimit: boolean;\n openDialogHost: boolean;\n openDialogCompact: boolean;\n openDialogTier: boolean;\n\n showLinks: boolean;\n showStopAdminDialog: string | false;\n logLevel: ioBroker.LogLevel;\n logOnTheFly: boolean;\n compactGroup: string | number;\n maxCompactGroupNumber: number;\n tier: 1 | 2 | 3;\n host: string;\n deleteCustom: boolean;\n visibleEdit: boolean;\n\n expanded: boolean;\n}\n\nexport default abstract class InstanceGeneric<\n TProps extends InstanceGenericProps,\n TState extends InstanceGenericState,\n> extends Component<TProps, TState> {\n protected abstract styles: Record<string, any>;\n\n componentDidMount(): void {\n this.props.context.onRegisterClose(this.props.id, this.commandClose);\n }\n\n componentWillUnmount(): void {\n this.props.context.onRegisterClose(this.props.id, null);\n }\n\n // eslint-disable-next-line react/no-unused-class-component-methods,class-methods-use-this\n getDefaultState(props: TProps): InstanceGenericState {\n return {\n openDialog: false,\n openSelectCompactGroup: false,\n openDialogCron: false,\n openDialogSchedule: false,\n openDialogName: false,\n openDialogLogLevel: false,\n openDialogDelete: false,\n openDialogMemoryLimit: false,\n openDialogHost: false,\n openDialogCompact: false,\n openDialogTier: false,\n showLinks: false,\n showStopAdminDialog: false,\n logLevel: props.item.logLevel,\n logOnTheFly: false,\n compactGroup: props.item.compactGroup || 0,\n maxCompactGroupNumber: props.context.maxCompactGroupNumber,\n tier: props.item.tier,\n host: props.instance.host,\n deleteCustom: false,\n visibleEdit: false,\n expanded: false,\n };\n }\n\n static isCompact(obj: ioBroker.InstanceObject | null): boolean {\n return obj?.common?.runAsCompactMode || false;\n }\n\n isSentry(): boolean {\n return !!this.props.context.states[`system.adapter.${this.props.instance.id}.plugins.sentry.enabled`]?.val;\n }\n\n static getSchedule(obj: ioBroker.InstanceObject | null): string {\n return obj?.common?.schedule || '';\n }\n\n static isRunning(obj: ioBroker.InstanceObject): boolean {\n return obj?.common?.onlyWWW || obj?.common?.enabled;\n }\n\n static isCompactGroup(obj: ioBroker.InstanceObject): number | null {\n return obj?.common?.compactGroup || null;\n }\n\n static getSentrySettings(obj: ioBroker.InstanceObject): boolean {\n return !!obj?.common?.plugins?.sentry;\n }\n\n static isModeSchedule(obj: ioBroker.InstanceObject): boolean {\n return obj?.common?.mode === 'schedule';\n }\n\n static getMemoryLimitMB(obj: ioBroker.InstanceObject): number {\n return obj?.common?.memoryLimitMB || 0;\n }\n\n static getRestartSchedule(obj: ioBroker.InstanceObject): string {\n return obj?.common?.restartSchedule ? obj.common.restartSchedule : '';\n }\n\n async setCommonValue(id: string, common: Partial<ioBroker.InstanceCommon>): Promise<void> {\n try {\n await this.props.context.socket.extendObject(id, { common });\n } catch (error) {\n window.alert(error);\n }\n }\n\n commandClose = (): void => this.setState({ expanded: false });\n\n toggleSentry(): void {\n const sentryEnabled = !this.isSentry();\n this.props.context.socket\n .setState(`system.adapter.${this.props.instance.id}.plugins.sentry.enabled`, sentryEnabled, true)\n .catch(e => window.alert(`Cannot set sentry: ${e}`));\n }\n\n setTier(instance: InstanceEntry, tier: 1 | 2 | 3): void {\n void this.setCommonValue(`system.adapter.${instance.id}`, { tier });\n }\n\n setName(instance: InstanceEntry, value: string): void {\n void this.setCommonValue(`system.adapter.${instance.id}`, { titleLang: value });\n }\n\n setLogLevel(instance: InstanceEntry, loglevel: ioBroker.LogLevel, logOnTheFlyValue: boolean): void {\n if (logOnTheFlyValue) {\n void this.props.context.socket.setState(`system.adapter.${instance.id}.logLevel`, loglevel);\n } else {\n void this.setCommonValue(`system.adapter.${instance.id}`, { loglevel });\n }\n }\n\n setSchedule(instance: InstanceEntry, schedule: string | null): void {\n if (schedule) {\n void this.setCommonValue(`system.adapter.${instance.id}`, { schedule });\n } else {\n this.props.context.socket\n .getObject(`system.adapter.${instance.id}`)\n .then(obj => {\n if (obj.common.schedule !== '') {\n obj.common.schedule = '';\n this.props.context.socket\n .setObject(obj._id, obj)\n .catch(e => window.alert(`Cannot set schedule: ${e}`));\n }\n })\n .catch(e => window.alert(`Cannot set schedule: ${e}`));\n }\n }\n\n setMemoryLimitMB(instance: InstanceEntry, memoryLimitMB: number): void {\n void this.setCommonValue(`system.adapter.${instance.id}`, { memoryLimitMB });\n }\n\n toggleCompactMode(): void {\n void this.setCommonValue(`system.adapter.${this.props.instance.id}`, {\n runAsCompactMode: !InstanceGeneric.isCompact(this.props.instance.obj),\n });\n }\n\n setRestartSchedule(instance: InstanceEntry, restartSchedule: string): void {\n if (restartSchedule) {\n void this.setCommonValue(`system.adapter.${instance.id}`, { restartSchedule });\n } else {\n void this.props.context.socket.getObject(`system.adapter.${instance.id}`).then(obj => {\n if (obj.common.restartSchedule !== '') {\n obj.common.restartSchedule = '';\n void this.props.context.socket.setObject(obj._id, obj);\n }\n });\n }\n }\n\n setHost(instance: InstanceEntry, host: string): void {\n void this.setCommonValue(`system.adapter.${instance.id}`, { host });\n }\n\n setCompactGroup(instance: InstanceEntry, compactGroup: string | number): void {\n compactGroup =\n compactGroup === 'controller' ? 0 : compactGroup === 'default' ? 1 : parseInt(compactGroup as string, 10);\n\n void this.setCommonValue(`system.adapter.${instance.id}`, { compactGroup });\n if (this.props.context.maxCompactGroupNumber < compactGroup) {\n this.props.context.setMaxCompactGroupNumber(compactGroup);\n }\n }\n\n getMemory(): number {\n const state = this.props.context.states[`${this.props.id}.memRss`];\n return (state?.val as number) || 0;\n }\n\n renderDeleteDialog(): JSX.Element {\n return (\n <Dialog\n onClose={() => this.setState({ openDialogDelete: false, openDialog: false })}\n open={!0}\n >\n <DialogTitle>{this.props.context.t('Please confirm')}</DialogTitle>\n <DialogContent>\n {this.state.openDialogDelete === 1\n ? this.props.context.t(\n 'Are you sure you want to delete the instance \"%s\" or whole adapter \"%s\"?',\n this.props.instance.id,\n this.props.instance.id.split('.')[0],\n )\n : this.props.context.t(\n 'Are you sure you want to delete the instance %s?',\n this.props.instance.id,\n )}\n {this.props.context.deleteCustomSupported && this.props.instance.obj.common.supportCustoms && (\n <br />\n )}\n {this.props.context.deleteCustomSupported && this.props.instance.obj.common.supportCustoms && (\n <FormControlLabel\n control={\n <Checkbox\n checked={this.state.deleteCustom}\n onChange={e => this.setState({ deleteCustom: e.target.checked })}\n />\n }\n label={this.props.context.t('Delete all custom object settings of this adapter too')}\n />\n )}\n </DialogContent>\n <DialogActions>\n {this.state.openDialogDelete === 1 ? (\n <Button\n startIcon={<DeleteIcon />}\n onClick={() => {\n this.props.context.onDeleteInstance(this.props.instance, this.state.deleteCustom, true);\n this.setState({ deleteCustom: false, openDialogDelete: false, openDialog: false });\n }}\n variant=\"contained\"\n style={{ background: 'red', color: 'white' }}\n >\n {this.props.context.t('Delete adapter')}\n </Button>\n ) : null}\n <Button\n startIcon={<DeleteIcon />}\n onClick={() => {\n this.props.context.onDeleteInstance(this.props.instance, this.state.deleteCustom);\n this.setState({ deleteCustom: false, openDialogDelete: false, openDialog: false });\n }}\n variant=\"contained\"\n color=\"primary\"\n >\n {this.props.context.t('Delete instance')}\n </Button>\n <Button\n color=\"grey\"\n onClick={() => this.setState({ openDialogDelete: false, openDialog: false })}\n variant=\"contained\"\n startIcon={<CloseIcon />}\n >\n {this.props.context.t('Cancel')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n }\n\n renderEditNameDialog(): JSX.Element {\n return (\n <CustomModal\n theme={this.props.context.theme}\n title={this.props.context.t('Enter title for %s', this.props.instance.id)}\n disableApplyIfNotChanged\n textInput\n defaultValue={AdminUtils.getText(this.props.item.name, this.props.context.lang)}\n onApply={value => {\n this.setName(this.props.instance, value.toString());\n this.setState({ openDialogName: false, openDialog: false });\n }}\n onClose={() => this.setState({ openDialogName: false, openDialog: false })}\n />\n );\n }\n\n renderEditLogLevelDialog(): JSX.Element {\n return (\n <CustomModal\n theme={this.props.context.theme}\n title={this.props.context.t('Edit log level rule for %s', this.props.instance.id)}\n onApply={() => {\n this.setLogLevel(this.props.instance, this.state.logLevel, this.state.logOnTheFly);\n this.setState({ openDialogLogLevel: false, openDialog: false });\n }}\n disableApply={this.state.logLevel === this.props.item.logLevel}\n onClose={() =>\n this.setState({ openDialogLogLevel: false, logLevel: this.props.item.logLevel, openDialog: false })\n }\n >\n <FormControl\n style={this.styles.logLevel}\n variant=\"standard\"\n >\n <InputLabel>{this.props.context.t('log level')}</InputLabel>\n <Select\n variant=\"standard\"\n value={this.state.logLevel}\n fullWidth\n onChange={el => this.setState({ logLevel: el.target.value as ioBroker.LogLevel })}\n >\n {arrayLogLevel.map(el => (\n <MenuItem\n key={el}\n value={el}\n >\n {this.props.context.t(el)}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n <FormControl variant=\"outlined\">\n <FormControlLabel\n control={\n <Checkbox\n checked={this.state.logOnTheFly}\n onChange={e => this.setState({ logOnTheFly: e.target.checked })}\n />\n }\n label={this.props.context.t('Without restart')}\n />\n <FormHelperText>\n {this.state.logOnTheFly\n ? this.props.context.t('Will be reset to the saved log level after restart of adapter')\n : this.props.context.t('Log level will be saved permanently')}\n </FormHelperText>\n </FormControl>\n </CustomModal>\n );\n }\n\n renderEditMemoryLimitDialog(): JSX.Element {\n return (\n <CustomModal\n theme={this.props.context.theme}\n title={this.props.context.t('Edit memory limit rule for %s', this.props.instance.id)}\n onApply={value => {\n this.setMemoryLimitMB(this.props.instance, parseFloat(value.toString()) || 0);\n this.setState({ openDialogMemoryLimit: false, openDialog: false });\n }}\n disableApplyIfNotChanged\n textInput\n defaultValue={this.props.item.memoryLimitMB}\n help={this.props.context.t(\n 'Default V8 has a memory limit of 512mb on 32-bit systems, and 1gb on 64-bit systems. The limit can be raised by setting --max-old-space-size to a maximum of ~1gb (32-bit) and ~1.7gb (64-bit)',\n )}\n onClose={() => this.setState({ openDialogMemoryLimit: false, openDialog: false })}\n />\n );\n }\n\n renderEditHostDialog(): JSX.Element {\n return (\n <CustomModal\n theme={this.props.context.theme}\n title={this.props.context.t('Edit host for %s', this.props.instance.id)}\n onApply={() => {\n this.setHost(this.props.instance, this.state.host);\n this.setState({ openDialogHost: false, openDialog: false });\n }}\n disableApply={this.state.host === this.props.instance.host}\n onClose={() =>\n this.setState({ openDialogHost: false, host: this.props.instance.host, openDialog: false })\n }\n >\n <SelectWithIcon\n themeType={this.props.context.themeType}\n value={this.state.host}\n list={this.props.context.hosts}\n removePrefix=\"system.host.\"\n fullWidth\n style={this.styles.hostInfo}\n onChange={(host: string) => this.setState({ host })}\n lang={this.props.context.lang}\n t={this.props.context.t}\n />\n </CustomModal>\n );\n }\n\n renderEditCompactGroupDialog(): JSX.Element {\n return (\n <CustomModal\n theme={this.props.context.theme}\n title={this.props.context.t('Edit compact groups for %s', this.props.instance.id)}\n onApply={() => {\n this.setCompactGroup(this.props.instance, parseInt(this.state.compactGroup.toString(), 10) || 0);\n this.setState({ openDialogCompact: false, openDialog: false });\n }}\n disableApply={this.state.compactGroup === this.props.item.compactGroup}\n onClose={() =>\n this.setState({\n openDialogCompact: false,\n openDialog: false,\n compactGroup: this.props.item.compactGroup,\n maxCompactGroupNumber: this.props.context.maxCompactGroupNumber,\n })\n }\n >\n <FormControl\n style={this.styles.addCompact}\n variant=\"standard\"\n >\n <InputLabel>{this.props.context.t('compact groups')}</InputLabel>\n <Select\n variant=\"standard\"\n autoWidth\n onClose={() => this.setState({ openSelectCompactGroup: false })}\n onOpen={() => this.setState({ openSelectCompactGroup: true })}\n open={this.state.openSelectCompactGroup}\n value={\n (this.state.compactGroup === 1\n ? 'default'\n : (this.state.compactGroup || '').toString() === '0'\n ? 'controller'\n : !this.state.compactGroup\n ? 'default'\n : this.state.compactGroup) || 'default'\n }\n onChange={el => this.setState({ compactGroup: parseInt(el.target.value as string, 10) })}\n >\n <div\n onClick={e => {\n e.preventDefault();\n e.stopPropagation();\n }}\n style={this.styles.selectStyle}\n >\n <Button\n color=\"grey\"\n onClick={() =>\n this.setState({\n openSelectCompactGroup: false,\n compactGroup: this.state.maxCompactGroupNumber + 1,\n maxCompactGroupNumber: this.state.maxCompactGroupNumber + 1,\n })\n }\n variant=\"outlined\"\n >\n {this.props.context.t('Add compact group')}\n </Button>\n </div>\n <MenuItem value=\"controller\">{this.props.context.t('with js-controller')}</MenuItem>\n <MenuItem value=\"default\">{this.props.context.t('default group')}</MenuItem>\n {Array(this.state.maxCompactGroupNumber - 1)\n .fill(0)\n .map((_, idx) => (\n <MenuItem\n key={idx}\n value={(idx + 2).toString()}\n >\n {idx + 2}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n </CustomModal>\n );\n }\n\n renderEditTierDialog(): JSX.Element {\n return (\n <CustomModal\n theme={this.props.context.theme}\n title={this.props.context.t('Set tier for %s', this.props.instance.id)}\n onApply={() => {\n this.setTier(this.props.instance, this.state.tier);\n this.setState({ openDialogTier: false, openDialog: false });\n }}\n help={this.props.context.t('Tiers define the order of adapters when the system starts.')}\n disableApply={this.state.tier === this.props.item.tier}\n onClose={() => this.setState({ openDialogTier: false, tier: this.props.item.tier, openDialog: false })}\n >\n <FormControl\n style={this.styles.logLevel}\n variant=\"standard\"\n >\n <InputLabel>{this.props.context.t('Tiers')}</InputLabel>\n <Select\n variant=\"standard\"\n value={this.state.tier}\n fullWidth\n onChange={el => this.setState({ tier: parseInt(el.target.value as string, 10) as 1 | 2 | 3 })}\n >\n {arrayTier.map(el => (\n <MenuItem\n key={el.value}\n value={el.value}\n >\n {this.props.context.t(el.desc)}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n </CustomModal>\n );\n }\n\n renderStopAdminDialog(): JSX.Element | null {\n if (!this.state.showStopAdminDialog) {\n return null;\n }\n\n return (\n <ConfirmDialog\n title={this.props.context.t('Please confirm')}\n text={this.props.context.t('stop_admin', this.props.context.adminInstance)}\n ok={this.props.context.t('Stop admin')}\n onClose={result => {\n if (result) {\n void this.setCommonValue(this.state.showStopAdminDialog as string, { enabled: false });\n }\n this.setState({ showStopAdminDialog: false });\n }}\n />\n );\n }\n\n renderLinksDialog(): JSX.Element | null {\n if (!this.state.showLinks) {\n return null;\n }\n return (\n <LinksDialog\n image={this.props.instance.image}\n instanceId={this.props.instance.id}\n links={this.props.instance.links}\n onClose={() => this.setState({ showLinks: false, openDialog: false })}\n t={this.props.context.t}\n themeType={this.props.context.themeType}\n />\n );\n }\n\n renderCronDialog(): JSX.Element {\n return (\n <ComplexCron\n title={this.props.context.t('Edit restart rule for %s', this.props.instance.id)}\n clearButton\n cron={InstanceGeneric.getRestartSchedule(this.props.instance.obj)}\n onOk={(cron: string) => this.setRestartSchedule(this.props.instance, cron)}\n onClose={() => this.setState({ openDialogCron: false, openDialog: false })}\n />\n );\n }\n\n renderScheduleDialog(): JSX.Element {\n return (\n <ComplexCron\n title={this.props.context.t('Edit schedule rule for %s', this.props.instance.id)}\n clearButton\n cron={InstanceGeneric.getSchedule(this.props.instance.obj)}\n onOk={(cron: string) => this.setSchedule(this.props.instance, cron)}\n onClose={() => this.setState({ openDialogSchedule: false, openDialog: false })}\n />\n );\n }\n\n // eslint-disable-next-line react/no-unused-class-component-methods\n renderDialogs(): JSX.Element | null {\n if (!this.state.openDialog) {\n return null;\n }\n if (this.state.openDialogDelete) {\n return this.renderDeleteDialog();\n }\n if (this.state.openDialogHost) {\n return this.renderEditHostDialog();\n }\n if (this.state.openDialogTier) {\n return this.renderEditTierDialog();\n }\n if (this.state.openDialogCompact) {\n return this.renderEditCompactGroupDialog();\n }\n if (this.state.openDialogLogLevel) {\n return this.renderEditLogLevelDialog();\n }\n if (this.state.openDialogName) {\n return this.renderEditNameDialog();\n }\n if (this.state.showStopAdminDialog) {\n return this.renderStopAdminDialog();\n }\n if (this.state.openDialogCron) {\n return this.renderCronDialog();\n }\n if (this.state.openDialogSchedule) {\n return this.renderScheduleDialog();\n }\n if (this.state.showLinks) {\n return this.renderLinksDialog();\n }\n if (this.state.openDialogMemoryLimit) {\n return this.renderEditMemoryLimitDialog();\n }\n return null;\n }\n\n // eslint-disable-next-line react/no-unused-class-component-methods\n renderModeIcon(status: InstanceStatusType): JSX.Element {\n return (\n <div\n style={{\n ...this.styles.smallAvatar,\n ...this.styles.statusIndicator,\n ...(this.props.instance.mode === 'daemon' || this.props.instance.mode === 'schedule'\n ? this.styles[status]\n : this.styles.transparent),\n ...(this.props.item.connectedToHost && this.props.item.alive && this.props.item.connected === false\n ? this.styles.orangeDevice\n : undefined),\n }}\n >\n {this.getModeIcon(\n this.props.instance.mode,\n status,\n this.styles[`statusIcon_${status}`],\n this.props.item.stoppedWhenWebExtension,\n )}\n </div>\n );\n }\n\n getModeIcon(\n mode: ioBroker.InstanceMode,\n status: InstanceStatusType,\n style: React.CSSProperties,\n stoppedWhenWebExtension: boolean | undefined,\n ): JSX.Element | null {\n if (mode === 'daemon') {\n if (stoppedWhenWebExtension) {\n return (\n <div style={{ ...style, ...this.styles.okSymbol }}>\n <div style={this.styles.okSymbolInner} />\n </div>\n );\n }\n if (status === 'orange') {\n return <WarningIcon style={style} />;\n }\n if (status === 'green') {\n return (\n <div style={{ ...style, ...this.styles.okSymbol }}>\n <div style={this.styles.okSymbolInner} />\n </div>\n );\n }\n return <SettingsIcon style={style} />;\n }\n if (mode === 'schedule') {\n return <ScheduleIcon style={style} />;\n }\n return null;\n }\n\n // eslint-disable-next-line react/no-unused-class-component-methods\n renderTooltip(): (JSX.Element | string | null)[] {\n const { instance, item } = this.props;\n let next;\n let prev;\n let cronText;\n if (instance.mode === 'schedule' && instance.schedule) {\n try {\n cronText = cronstrue.toString(instance.schedule, { locale: this.props.context.lang });\n } catch {\n cronText = instance.schedule;\n }\n\n if (instance.enabled) {\n try {\n const expr = parser.parseExpression(instance.schedule);\n next = expr.next().toDate();\n prev = expr.prev().toDate();\n } catch {\n next = null;\n prev = null;\n }\n }\n }\n\n return [\n item.stoppedWhenWebExtension !== undefined ? (\n <State\n key={1}\n state\n >\n {this.props.context.t('Runs as web-extension')}\n </State>\n ) : (\n ''\n ),\n instance.mode === 'daemon' && this.props.item.stoppedWhenWebExtension === undefined ? (\n <State\n key={2}\n state={item.connectedToHost}\n >\n {this.props.context.t('Connected to host')}\n </State>\n ) : (\n ''\n ),\n instance.mode === 'daemon' && this.props.item.stoppedWhenWebExtension === undefined ? (\n <State\n key={3}\n state={item.alive}\n >\n {this.props.context.t('Heartbeat')}\n </State>\n ) : (\n ''\n ),\n this.props.item.connected !== null && this.props.item.stoppedWhenWebExtension === undefined ? (\n <State\n key={4}\n state={!!item.connected}\n >\n {typeof item.connected === 'string'\n ? `${this.props.context.t('Connected:')} ${item.connected || '-'}`\n : this.props.context.t('Connected to device or service')}\n </State>\n ) : (\n ''\n ),\n cronText ? (\n <State\n key={5}\n state={instance.enabled}\n >\n CRON:\n {cronText}\n </State>\n ) : null,\n next ? (\n <State\n key={6}\n state\n >\n {this.props.context.t(\n 'Next start: %s',\n `${next.toLocaleDateString(this.props.context.lang)} ${next.toLocaleTimeString(this.props.context.lang)}`,\n )}\n </State>\n ) : null,\n prev ? (\n <State\n key={7}\n state\n >\n {this.props.context.t(\n 'Last start: %s',\n `${prev.toLocaleDateString(this.props.context.lang)} ${prev.toLocaleTimeString(this.props.context.lang)}`,\n )}\n </State>\n ) : null,\n ].filter(el => el);\n }\n\n // eslint-disable-next-line react/no-unused-class-component-methods\n renderMemoryUsage(): JSX.Element {\n return (\n this.props.item.running && (\n <InstanceInfo\n icon={<MemoryIcon />}\n tooltip={this.props.context.t('RAM usage')}\n >\n {`${this.props.instance.mode === 'daemon' && !InstanceGeneric.isCompact(this.props.instance.obj) ? this.getMemory() : '-.--'} MB`}\n </InstanceInfo>\n )\n );\n }\n\n // eslint-disable-next-line react/no-unused-class-component-methods\n renderPlayPause(): JSX.Element {\n return (\n <Tooltip\n title={this.props.context.t('Start/stop')}\n slotProps={{ popper: { sx: this.styles.tooltip } }}\n >\n <div>\n <IconButton\n size=\"small\"\n onClick={event => {\n event.stopPropagation();\n event.preventDefault();\n if (\n this.props.item.running &&\n this.props.instance.id === this.props.context.adminInstance\n ) {\n this.setState({ showStopAdminDialog: `system.adapter.${this.props.instance.id}` });\n } else {\n void this.setCommonValue(`system.adapter.${this.props.instance.id}`, {\n enabled: !this.props.item.running,\n });\n }\n }}\n onFocus={event => event.stopPropagation()}\n sx={{\n ...this.styles.button,\n ...(this.props.instance.canStart\n ? this.props.item.running\n ? this.styles.enabled\n : this.styles.disabled\n : this.styles.hide),\n }}\n >\n {this.props.item.running ? <PauseIcon /> : <PlayArrowIcon />}\n </IconButton>\n </div>\n </Tooltip>\n );\n }\n\n // eslint-disable-next-line react/no-unused-class-component-methods\n renderSettingsButton(): JSX.Element {\n return (\n <Tooltip\n title={this.props.instance.config ? this.props.context.t('Settings') : ''}\n slotProps={{ popper: { sx: this.styles.tooltip } }}\n >\n <div>\n <IconButton\n disabled={!this.props.instance.config}\n size=\"small\"\n style={{\n ...this.styles.button,\n ...(!this.props.instance.config ? this.styles.hiddenOpacity : undefined),\n }}\n onClick={event => {\n event.stopPropagation();\n event.preventDefault();\n Router.doNavigate('tab-instances', 'config', this.props.id);\n }}\n >\n <BuildIcon />\n </IconButton>\n </div>\n </Tooltip>\n );\n }\n\n // eslint-disable-next-line react/no-unused-class-component-methods\n renderRestartButton(): JSX.Element {\n return (\n <Tooltip\n title={this.props.context.t('Restart')}\n slotProps={{ popper: { sx: this.styles.tooltip } }}\n >\n <div>\n <IconButton\n size=\"small\"\n onClick={event => {\n event.stopPropagation();\n event.preventDefault();\n void this.props.context.socket.extendObject(`system.adapter.${this.props.instance.id}`, {});\n }}\n onFocus={event => event.stopPropagation()}\n style={{\n ...this.styles.button,\n ...(!this.props.instance.canStart ? this.styles.hide : undefined),\n }}\n disabled={!this.props.item.running}\n >\n <RefreshIcon />\n </IconButton>\n </div>\n </Tooltip>\n );\n }\n\n // eslint-disable-next-line react/no-unused-class-component-methods\n renderLink(): JSX.Element {\n return (\n <Tooltip\n title={this.props.context.t('Instance link %s', this.props.instance.id)}\n slotProps={{ popper: { sx: this.styles.tooltip } }}\n >\n <div>\n <IconButton\n size=\"small\"\n style={{\n ...this.styles.button,\n ...(!this.props.instance.links || !this.props.instance.links[0]\n ? this.styles.hide\n : undefined),\n }}\n disabled={!this.props.item.running}\n onClick={event => {\n event.stopPropagation();\n event.preventDefault();\n if (this.props.instance.links.length === 1) {\n // replace http://fe80::ed18:8dyy:f65:cexx:8087/get/ with http://[fe80::ed18:8dyy:f65:cexx]:8087/get/\n let url = this.props.instance.links[0].link;\n url = url.replace(\n /\\/\\/([0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*)(:\\d+)?\\//i,\n '//$1$2/',\n );\n window.open(url, this.props.instance.id);\n } else {\n this.setState({ showLinks: true, openDialog: true });\n }\n }}\n onFocus={event => event.stopPropagation()}\n >\n <InputIcon />\n </IconButton>\n </div>\n </Tooltip>\n );\n }\n\n // eslint-disable-next-line react/no-unused-class-component-methods\n renderEditNameButton(): JSX.Element {\n return (\n <Tooltip\n title={this.props.context.t('Edit')}\n slotProps={{ popper: { sx: this.styles.tooltip } }}\n >\n <IconButton\n size=\"small\"\n className=\"admin-edit-button\"\n style={{\n ...this.styles.button,\n ...(!this.state.visibleEdit ? this.styles.hiddenOpacity : undefined),\n }}\n onClick={event => {\n event.stopPropagation();\n event.preventDefault();\n this.setState({ openDialogName: true, openDialog: true });\n }}\n >\n <EditIcon />\n </IconButton>\n </Tooltip>\n );\n }\n\n // eslint-disable-next-line react/no-unused-class-component-methods\n renderInputOutput(): JSX.Element {\n return (\n <InstanceInfo\n icon={<ImportExportIcon />}\n tooltip={this.props.context.t('events')}\n >\n <div style={this.styles.displayFlex}>\n <Tooltip\n title={this.props.context.t('input events')}\n slotProps={{ popper: { sx: this.styles.tooltip } }}\n >\n <div style={this.styles.marginRight5}>⇥{this.props.item.inputOutput.stateInput}</div>\n </Tooltip>\n /\n <Tooltip\n title={this.props.context.t('output events')}\n slotProps={{ popper: { sx: this.styles.tooltip } }}\n >\n <div style={this.styles.marginLeft5}>↦{this.props.item.inputOutput.stateOutput}</div>\n </Tooltip>\n </div>\n </InstanceInfo>\n );\n }\n\n renderHost(): JSX.Element {\n return (\n <TextWithIcon\n value={this.props.instance.host}\n list={this.props.context.hosts}\n removePrefix=\"system.host.\"\n themeType={this.props.context.themeType}\n lang={this.props.context.lang}\n />\n );\n }\n\n renderEditHostButton(): JSX.Element {\n return (\n <Tooltip\n title={this.props.context.t('Edit')}\n slotProps={{ popper: { sx: this.styles.tooltip } }}\n >\n <IconButton\n size=\"small\"\n style={this.styles.button}\n className=\"admin-edit-button\"\n onClick={event => {\n event.stopPropagation();\n event.preventDefault();\n this.setState({ openDialogHost: true, openDialog: true });\n }}\n >\n <EditIcon />\n </IconButton>\n </Tooltip>\n );\n }\n\n // eslint-disable-next-line react/no-unused-class-component-methods\n renderSentry(): JSX.Element {\n return (\n <Tooltip\n title=\"sentry\"\n slotProps={{ popper: { sx: this.styles.tooltip } }}\n >\n <IconButton\n size=\"small\"\n style={this.styles.button}\n onClick={event => {\n event.stopPropagation();\n event.preventDefault();\n this.toggleSentry();\n }}\n >\n <CardMedia\n style={{\n ...this.styles.sentry,\n ...(!this.props.item.sentry ? this.styles.contrast0 : undefined),\n }}\n component=\"img\"\n image={this.props.item.sentry ? sentry : noSentry}\n />\n </IconButton>\n </Tooltip>\n );\n }\n\n // eslint-disable-next-line react/no-unused-class-component-methods\n renderCompactGroupEnabled(): JSX.Element {\n return (\n <Tooltip\n title={this.props.context.t('compact groups')}\n slotProps={{ popper: { sx: this.styles.tooltip } }}\n >\n <IconButton\n size=\"small\"\n style={{\n ...this.styles.button,\n ...(this.props.context.expertMode && this.props.item.checkCompact\n ? undefined\n : this.styles.hide),\n }}\n onClick={event => {\n event.stopPropagation();\n event.preventDefault();\n this.toggleCompactMode();\n }}\n >\n <ViewCompactIcon color={this.props.item.compact ? 'primary' : 'inherit'} />\n </IconButton>\n </Tooltip>\n );\n }\n\n // eslint-disable-next-line react/no-unused-class-component-methods\n renderVersion(): JSX.Element {\n return <InstanceInfo tooltip={this.props.context.t('Installed')}>v{this.props.instance.version}</InstanceInfo>;\n }\n\n // eslint-disable-next-line react/no-unused-class-component-methods\n renderInfo(hideName?: boolean): JSX.Element {\n return (\n <>\n {!hideName ? <span style={this.styles.instanceName}>{this.props.instance.id}</span> : undefined}\n {this.props.item.stoppedWhenWebExtension !== undefined && (\n <State state={this.props.item.stoppedWhenWebExtension}>\n {this.props.context.t('Runs as web-extension')}\n </State>\n )}\n {this.props.item.running &&\n this.props.instance.mode === 'daemon' &&\n this.props.item.stoppedWhenWebExtension === undefined && (\n <State state={this.props.item.connectedToHost}>\n {this.props.context.t('Connected to host')}\n </State>\n )}\n {this.props.item.running &&\n this.props.instance.mode === 'daemon' &&\n this.props.item.stoppedWhenWebExtension === undefined && (\n <State state={this.props.item.alive}>{this.props.context.t('Heartbeat')}</State>\n )}\n {this.props.item.running &&\n this.props.item.connected !== null &&\n this.props.item.stoppedWhenWebExtension === undefined && (\n <State state={!!this.props.item.connected}>\n {typeof this.props.item.connected === 'string'\n ? `${this.props.context.t('Connected:')} ${this.props.item.connected || '-'}`\n : this.props.context.t('Connected to device or service')}\n </State>\n )}\n </>\n );\n }\n\n // eslint-disable-next-line react/no-unused-class-component-methods\n renderLogLevel(): JSX.Element {\n return (\n <>\n <InstanceInfo\n icon={this.props.item.loglevelIcon}\n tooltip={\n this.props.item.logLevelObject === this.props.item.logLevel\n ? `${this.props.context.t('loglevel')} ${this.props.item.logLevel}`\n : `${this.props.context.t('saved:')} ${this.props.item.logLevelObject} / ${this.props.context.t('actual:')} ${this.props.item.logLevel}`\n }\n // className={this.props.classes[ this.props.item.logLevel]}\n >\n {this.props.item.logLevelObject === this.props.item.logLevel\n ? this.props.item.logLevel\n : `${this.props.item.logLevelObject} / ${this.props.item.logLevel}`}\n </InstanceInfo>\n <Tooltip\n title={this.props.context.t('Edit')}\n slotProps={{ popper: { sx: this.styles.tooltip } }}\n >\n <IconButton\n size=\"small\"\n className=\"admin-edit-button\"\n style={this.styles.button}\n onClick={event => {\n event.stopPropagation();\n event.preventDefault();\n this.setState({ openDialogLogLevel: true, openDialog: true });\n }}\n >\n <EditIcon />\n </IconButton>\n </Tooltip>\n </>\n );\n }\n\n // eslint-disable-next-line react/no-unused-class-component-methods\n renderSchedule(): JSX.Element {\n return (\n <>\n <InstanceInfo\n icon={<ScheduleIcon />}\n tooltip={this.props.context.t('schedule_group')}\n >\n {InstanceGeneric.getSchedule(this.props.instance.obj) || '-'}\n </InstanceInfo>\n <Tooltip\n title={this.props.context.t('Edit')}\n slotProps={{ popper: { sx: this.styles.tooltip } }}\n >\n <IconButton\n size=\"small\"\n className=\"admin-edit-button\"\n style={this.styles.button}\n onClick={event => {\n event.stopPropagation();\n event.preventDefault();\n this.setState({ openDialogSchedule: true, openDialog: true });\n }}\n >\n <EditIcon />\n </IconButton>\n </Tooltip>\n </>\n );\n }\n\n // eslint-disable-next-line react/no-unused-class-component-methods\n renderRestartSchedule(): JSX.Element {\n return (\n <>\n <InstanceInfo\n icon={<ScheduleIcon style={this.styles.scheduleIcon} />}\n tooltip={this.props.context.t('restart')}\n >\n {InstanceGeneric.getRestartSchedule(this.props.instance.obj) || '-'}\n </InstanceInfo>\n <Tooltip\n title={this.props.context.t('Edit')}\n slotProps={{ popper: { sx: this.styles.tooltip } }}\n >\n <IconButton\n size=\"small\"\n className=\"admin-edit-button\"\n style={this.styles.button}\n onClick={event => {\n event.stopPropagation();\n event.preventDefault();\n this.setState({ openDialogCron: true, openDialog: true });\n }}\n >\n <EditIcon />\n </IconButton>\n </Tooltip>\n </>\n );\n }\n\n // eslint-disable-next-line react/no-unused-class-component-methods\n renderRamLimit(): JSX.Element {\n return (\n <>\n <InstanceInfo\n icon={<MemoryIcon style={this.styles.memoryIcon} />}\n tooltip={this.props.context.t('RAM limit')}\n >\n {`${this.props.item.memoryLimitMB ? this.props.item.memoryLimitMB : '-.--'} MB`}\n </InstanceInfo>\n <Tooltip\n title={this.props.context.t('Edit')}\n slotProps={{ popper: { sx: this.styles.tooltip } }}\n >\n <IconButton\n size=\"small\"\n className=\"admin-edit-button\"\n style={this.styles.button}\n onClick={event => {\n event.stopPropagation();\n event.preventDefault();\n this.setState({ openDialogMemoryLimit: true, openDialog: true });\n }}\n >\n <EditIcon />\n </IconButton>\n </Tooltip>\n </>\n );\n }\n\n // eslint-disable-next-line react/no-unused-class-component-methods\n renderCompactGroup(): JSX.Element {\n return (\n <>\n <InstanceInfo\n icon={\n <ViewCompactIcon\n style={this.styles.marginRight5}\n color=\"inherit\"\n />\n }\n tooltip={this.props.context.t('compact groups')}\n >\n {(this.props.item.compactGroup === 1\n ? 'default'\n : (this.props.item.compactGroup || '').toString() === '0'\n ? 'controller'\n : !this.props.item.compactGroup\n ? 'default'\n : this.props.item.compactGroup\n ).toString() || 'default'}\n </InstanceInfo>\n <Tooltip\n title={this.props.context.t('Edit')}\n slotProps={{ popper: { sx: this.styles.tooltip } }}\n >\n <IconButton\n size=\"small\"\n className=\"admin-edit-button\"\n style={this.styles.button}\n onClick={event => {\n event.stopPropagation();\n event.preventDefault();\n this.setState({ openDialogCompact: true, openDialog: true });\n }}\n >\n <EditIcon />\n </IconButton>\n </Tooltip>\n </>\n );\n }\n\n // eslint-disable-next-line react/no-unused-class-component-methods\n renderTier(): JSX.Element {\n return (\n <>\n <InstanceInfo\n icon={\n <LowPriorityIcon\n style={this.styles.marginRight5}\n color=\"inherit\"\n />\n }\n tooltip={this.props.context.t('Start order (tier)')}\n >\n {this.props.instance.adapter === 'admin'\n ? this.props.context.t('Always first')\n : this.props.context.t(\n arrayTier.find(el => el.value === this.props.item.tier)?.desc || arrayTier[2].desc,\n )}\n </InstanceInfo>\n {this.props.instance.adapter !== 'admin' ? (\n <Tooltip\n title={this.props.context.t('Edit start order (tier)')}\n slotProps={{ popper: { sx: this.styles.tooltip } }}\n >\n <IconButton\n size=\"small\"\n className=\"admin-edit-button\"\n style={this.styles.button}\n onClick={event => {\n event.stopPropagation();\n event.preventDefault();\n this.setState({ openDialogTier: true, openDialog: true });\n }}\n >\n <EditIcon />\n </IconButton>\n </Tooltip>\n ) : null}\n </>\n );\n }\n\n // eslint-disable-next-line react/no-unused-class-component-methods\n renderHostWithButton(): JSX.Element {\n return (\n <>\n <InstanceInfo\n icon={<HostIcon style={this.styles.marginRight5} />}\n tooltip={this.props.context.t('Host for this instance')}\n >\n {this.renderHost()}\n </InstanceInfo>\n {this.renderEditHostButton()}\n </>\n );\n }\n\n // eslint-disable-next-line react/no-unused-class-component-methods\n renderDeleteButton(): JSX.Element {\n return (\n <Tooltip\n title={this.props.context.t('Delete')}\n slotProps={{ popper: { sx: this.styles.tooltip } }}\n >\n <IconButton\n size=\"small\"\n style={this.styles.button}\n onClick={async event => {\n event.stopPropagation();\n event.preventDefault();\n // Count the number of instances\n const instances = await this.props.context.socket.getAdapterInstances(\n this.props.instance.id.split('.')[0],\n );\n this.setState({ openDialogDelete: instances.length || true, openDialog: true });\n }}\n >\n <DeleteIcon />\n </IconButton>\n </Tooltip>\n );\n }\n\n render(): JSX.Element {\n // this method will be overwritten by the generated class\n return <div>{this.state.expanded}</div>;\n }\n}\n","import React, { type JSX } from 'react';\n\nimport { Box, Card, CardContent, CardMedia, Fab, Typography } from '@mui/material';\n\nimport { MoreVert as MoreVertIcon } from '@mui/icons-material';\n\nimport { Utils, type IobTheme } from '@iobroker/adapter-react-v5';\n\nimport InstanceGeneric, {\n type InstanceGenericProps,\n styles as genericStyles,\n type InstanceGenericState,\n} from './InstanceGeneric';\nimport IsVisible from '../IsVisible';\nimport AdminUtils from '../../AdminUtils';\n\nconst styles: Record<string, any> = {\n ...genericStyles,\n fab: {\n position: 'absolute',\n bottom: -20,\n width: 40,\n height: 40,\n right: 20,\n },\n collapse: (theme: IobTheme) => ({\n height: '100%',\n backgroundColor: theme.palette.mode === 'dark' ? '#4a4a4a' : '#d4d4d4',\n position: 'absolute',\n width: '100%',\n zIndex: 3,\n marginTop: 'auto',\n bottom: 0,\n transition: 'height 0.3s',\n justifyContent: 'space-between',\n display: 'flex',\n flexDirection: 'column',\n }),\n collapseOff: {\n height: 0,\n },\n close: {\n width: 20,\n height: 20,\n opacity: 0.9,\n cursor: 'pointer',\n position: 'relative',\n marginLeft: 'auto',\n mb: '10px',\n transition: 'all 0.6s ease',\n '&:hover': {\n transform: 'rotate(90deg)',\n },\n '&:before': {\n position: 'absolute',\n left: 9,\n content: '\"\"',\n height: 20,\n width: 3,\n backgroundColor: '#ff4f4f',\n transform: 'rotate(45deg)',\n },\n '&:after': {\n position: 'absolute',\n left: 9,\n content: '\"\"',\n height: 20,\n width: 3,\n backgroundColor: '#ff4f4f',\n transform: 'rotate(-45deg)',\n },\n },\n footerBlock: (theme: IobTheme) => ({\n background: theme.palette.background.default,\n p: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n }),\n versionDate: {\n alignSelf: 'center',\n },\n adapter: {\n width: '100%',\n fontWeight: 'bold',\n fontSize: 16,\n verticalAlign: 'middle',\n paddingLeft: 8,\n paddingTop: 16,\n // color: theme.palette.mode === 'dark' ? '#333' : '#555',\n },\n\n cardContent: {\n mt: 2,\n paddingTop: 0,\n },\n cardContentH5: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n },\n marginTop10: {\n marginTop: 10,\n },\n\n overflowAuto: {\n overflow: 'auto',\n },\n collapseIcon: (theme: IobTheme) => ({\n position: 'sticky',\n right: 0,\n top: 0,\n background: theme.palette.mode === 'dark' ? '#4a4a4a' : '#d4d4d4',\n zIndex: 2,\n }),\n enableButton: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n instanceName: {\n fontSize: 16,\n padding: 4,\n paddingBottom: 15,\n fontWeight: 'bold',\n },\n img: {\n width: 45,\n height: 45,\n margin: 'auto 0',\n position: 'relative',\n '&:after': {\n content: '\"\"',\n position: 'absolute',\n zIndex: 2,\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n background: 'url(\"img/no-image.png\") 100% 100% no-repeat',\n backgroundSize: 'cover',\n backgroundColor: '#fff',\n },\n },\n instanceStateNotEnabled1: (theme: IobTheme) => ({\n backgroundColor: 'rgba(192, 192, 192, 0.2)',\n color: theme.palette.mode === 'dark' ? '#CCC' : '#333',\n }),\n instanceStateNotAlive1: (theme: IobTheme) => ({\n backgroundColor: 'rgba(192, 192, 192, 0.7)',\n color: theme.palette.mode === 'dark' ? '#CCC' : '#333',\n }),\n instanceStateAliveNotConnected1: (theme: IobTheme) => ({\n backgroundColor: 'rgba(255, 177, 0, 0.4)',\n color: theme.palette.mode === 'dark' ? '#CCC' : '#333',\n }),\n instanceStateAliveAndConnected1: (theme: IobTheme) => ({\n backgroundColor: 'rgba(0, 255, 0, 0.4)',\n color: theme.palette.mode === 'dark' ? '#CCC' : '#333',\n }),\n};\n\ninterface InstanceCardState extends InstanceGenericState {\n mouseOver: boolean;\n}\n\nclass InstanceCard extends InstanceGeneric<InstanceGenericProps, InstanceCardState> {\n protected styles: Record<string, any> = styles;\n\n constructor(props: InstanceGenericProps) {\n super(props);\n\n this.state = Object.assign(this.getDefaultState(props), { mouseOver: false });\n }\n\n renderSecondCardInfo(): JSX.Element {\n if (this.props.deleting || !this.state.expanded) {\n return null;\n }\n const { item, instance } = this.props;\n return (\n <Box\n component=\"div\"\n sx={Utils.getStyle(\n this.props.context.theme,\n styles.collapse,\n !this.state.expanded ? styles.collapseOff : '',\n this.props.deleting && styles.deleting,\n )}\n >\n <CardContent sx={{ '&.MuiCardContent-root': { ...styles.cardContent, ...styles.overflowAuto } }}>\n <Box\n component=\"div\"\n sx={styles.collapseIcon}\n >\n <Box\n component=\"div\"\n sx={styles.close}\n onClick={() => {\n if (this.state.openDialog) {\n return;\n }\n this.setState({ expanded: false }, () =>\n this.props.context.onToggleExpanded(this.props.id, false),\n );\n }}\n />\n </Box>\n <Typography\n gutterBottom\n component=\"span\"\n variant=\"body2\"\n >\n {this.renderInfo()}\n\n {this.renderVersion()}\n\n {this.renderMemoryUsage()}\n\n {item.running && this.props.context.expertMode && (\n <div style={styles.displayFlex}>{this.renderInputOutput()}</div>\n )}\n\n {this.props.context.expertMode && <div style={styles.displayFlex}>{this.renderRamLimit()}</div>}\n\n {this.props.context.expertMode && <div style={styles.displayFlex}>{this.renderLogLevel()}</div>}\n\n {item.modeSchedule && <div style={styles.displayFlex}>{this.renderSchedule()}</div>}\n\n {this.props.context.expertMode && instance.mode === 'daemon' && (\n <div style={styles.displayFlex}>{this.renderRestartSchedule()}</div>\n )}\n\n {this.props.context.expertMode && item.checkCompact && item.compact && item.supportCompact && (\n <div style={styles.displayFlex}>{this.renderCompactGroup()}</div>\n )}\n\n {this.props.context.expertMode && <div style={styles.displayFlex}>{this.renderTier()}</div>}\n\n {this.props.context.hosts.length > 1 ||\n (this.props.context.hosts.length &&\n this.props.context.hosts[0].common?.name !== instance.host) ? (\n <div style={styles.displayFlex}>{this.renderHostWithButton()}</div>\n ) : null}\n\n <IsVisible\n config={item}\n name=\"allowInstanceSettings\"\n >\n <Box\n component=\"div\"\n sx={{ display: { sm: 'none', xs: 'inline-block' } }}\n >\n {this.renderSettingsButton()}\n </Box>\n </IsVisible>\n </Typography>\n </CardContent>\n\n <Box\n component=\"div\"\n sx={styles.footerBlock}\n >\n <IsVisible\n config={item}\n name=\"allowInstanceDelete\"\n >\n <div style={styles.displayFlex}>{this.renderDeleteButton()}</div>\n </IsVisible>\n\n {this.props.context.expertMode && item.checkSentry && (\n <div style={styles.displayFlex}>{this.renderSentry()}</div>\n )}\n\n {item.supportCompact && this.props.context.expertMode && item.checkCompact && (\n <div style={styles.displayFlex}>{this.renderCompactGroupEnabled()}</div>\n )}\n </Box>\n </Box>\n );\n }\n\n render(): JSX.Element {\n const { item, instance } = this.props;\n\n return (\n <Card sx={Utils.getStyle(this.props.context.theme, styles.root, this.props.hidden && styles.hidden)}>\n {this.state.openDialog && this.renderDialogs()}\n {this.renderSecondCardInfo()}\n <Box\n component=\"div\"\n sx={Utils.getStyle(\n this.props.context.theme,\n styles.imageBlock,\n (!item.running || instance.mode !== 'daemon' || item.stoppedWhenWebExtension !== undefined) &&\n styles.instanceStateNotEnabled1,\n item.running &&\n instance.mode === 'daemon' &&\n item.stoppedWhenWebExtension === undefined &&\n (!item.connectedToHost || !item.alive) &&\n styles.instanceStateNotAlive1,\n item.running &&\n item.connectedToHost &&\n item.alive &&\n item.connected === false &&\n styles.instanceStateAliveNotConnected1,\n item.running &&\n item.connectedToHost &&\n item.alive &&\n item.connected !== false &&\n styles.instanceStateAliveAndConnected1,\n )}\n >\n <CardMedia\n sx={styles.img}\n component=\"img\"\n image={instance.image || 'img/no-image.png'}\n />\n <div style={styles.adapter}>{instance.id}</div>\n <div style={styles.versionDate}>\n {/* {expertMode && item.checkCompact && <Tooltip title={t('compact groups')}>\n <ViewCompactIcon color=\"action\" style={{ margin: 10 }} />\n </Tooltip>} */}\n </div>\n {!this.state.expanded ? (\n <Fab\n onMouseOver={() => this.setState({ mouseOver: true })}\n onMouseOut={() => this.setState({ mouseOver: false })}\n onClick={() =>\n this.setState({ expanded: true }, () =>\n this.props.context.onToggleExpanded(this.props.id, true),\n )\n }\n style={styles.fab}\n color=\"primary\"\n aria-label=\"add\"\n >\n <MoreVertIcon />\n </Fab>\n ) : null}\n </Box>\n\n <CardContent style={styles.cardContentH5}>\n <Typography\n gutterBottom\n variant=\"h5\"\n component=\"h5\"\n >\n <div\n // onMouseMove={() => this.setState({ visibleEdit: true })}\n onMouseEnter={() => this.setState({ visibleEdit: true })}\n onMouseLeave={() => this.setState({ visibleEdit: false })}\n style={styles.displayFlex}\n >\n {AdminUtils.getText(item.name, this.props.context.lang)}\n {this.renderEditNameButton()}\n </div>\n </Typography>\n\n <div style={styles.marginTop10}>\n <Typography\n component=\"span\"\n style={styles.enableButton}\n >\n {this.renderPlayPause()}\n <Box\n component=\"div\"\n sx={{ display: { sm: 'inline-block', xs: 'none' } }}\n >\n {this.renderSettingsButton()}\n </Box>\n {this.renderRestartButton()}\n <IsVisible\n config={item}\n name=\"allowInstanceLink\"\n >\n {this.renderLink()}\n </IsVisible>\n </Typography>\n </div>\n </CardContent>\n </Card>\n );\n }\n}\n\nexport default InstanceCard;\n","import React, { type JSX } from 'react';\n\nimport { Accordion, AccordionDetails, AccordionSummary, Avatar, Grid2, Tooltip, Typography, Box } from '@mui/material';\n\nimport { ExpandMore as ExpandMoreIcon } from '@mui/icons-material';\n\nimport AdminUtils from '@/AdminUtils';\nimport InstanceInfo from './InstanceInfo';\nimport IsVisible from '../IsVisible';\nimport InstanceGeneric, {\n type InstanceGenericProps,\n type InstanceGenericState,\n styles as genericStyles,\n} from './InstanceGeneric';\n\nconst styles: Record<string, any> = {\n ...genericStyles,\n row: {\n pl: 1,\n pr: 2,\n p: 0,\n },\n expanded: {\n minHeight: 64,\n },\n invisible: {\n opacity: 0,\n },\n instanceIcon: {\n height: 42,\n width: 42,\n '@media screen and (max-width: 800px)': {\n height: 28,\n width: 28,\n ml: '4px',\n },\n },\n hidden1250: {\n display: 'flex',\n width: 200,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n '@media screen and (max-width: 1500px)': {\n display: 'none !important',\n },\n },\n visible1250: {\n display: 'flex',\n width: 200,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n '@media screen and (max-width: 1500px)': {\n display: 'flex !important',\n },\n },\n visible1050: {\n display: 'none',\n '@media screen and (max-width: 1120px)': {\n display: 'flex !important',\n },\n },\n hidden1050: {\n display: 'flex',\n '@media screen and (max-width: 1120px)': {\n display: 'none !important',\n },\n },\n hidden800: {\n display: 'flex',\n '@media screen and (max-width: 800px)': {\n display: 'none !important',\n },\n },\n visible800: {\n display: 'none',\n '@media screen and (max-width: 800px)': {\n display: 'flex !important',\n },\n },\n hidden570: {\n display: 'flex',\n '@media screen and (max-width: 650px)': {\n display: 'none !important',\n },\n },\n visible570: {\n display: 'none',\n '@media screen and (max-width: 650px)': {\n display: 'flex !important',\n },\n },\n hidden1230: {\n '@media screen and (max-width: 1300px)': {\n display: 'none !important',\n },\n },\n hidden380: {\n display: 'flex',\n '@media screen and (max-width: 380px)': {\n display: 'none !important',\n },\n },\n instanceId: {\n overflow: 'hidden',\n alignSelf: 'center',\n fontSize: 16,\n ml: '5px',\n maxWidth: 150,\n minWidth: 100,\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n flexGrow: 2,\n '@media screen and (max-width: 380px)': {\n width: '70px !important',\n minWidth: '70px !important',\n },\n '@media screen and (max-width: 480px)': {\n width: 100,\n },\n },\n secondaryHeading: {\n maxWidth: 200,\n fontSize: 12,\n },\n secondaryHeadingDiv: {\n display: 'flex',\n alignItems: 'center',\n width: 200,\n },\n secondaryHeadingDivDiv: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n padding: 5,\n textOverflow: 'ellipsis',\n maxWidth: 200,\n },\n gridStyle: {\n display: 'flex',\n minWidth: 270,\n lineHeight: '34px',\n justifyContent: 'space-around',\n alignItems: 'center',\n '@media screen and (max-width: 480px)': {\n minWidth: 'auto !important',\n ml: '10px',\n },\n '@media screen and (max-width: 335px)': {\n ml: '0px',\n },\n },\n paddingRight200: {\n // paddingRight: 200\n },\n maxWidth300: {\n width: 300,\n '@media screen and (max-width: 480px)': {\n width: '250px !important',\n },\n },\n width150: {\n width: 150,\n },\n\n desktopRow: {\n minHeight: 0,\n },\n desktopIcon: {\n height: 32,\n width: 32,\n mt: 1,\n },\n desktopRowContent: {\n mt: '2px',\n mb: '2px',\n },\n desktopButton: {\n // paddingRight: 12,\n // paddingTop: 4,\n // paddingBottom: 4,\n // paddingLeft: 4,\n },\n rowGridLine: {\n marginTop: -2,\n },\n};\n\nclass InstanceRow extends InstanceGeneric<InstanceGenericProps, InstanceGenericState> {\n private desktop: boolean = window.innerWidth > 1000;\n\n protected styles: Record<string, any> = styles;\n\n constructor(props: InstanceGenericProps) {\n super(props);\n\n this.state = this.getDefaultState(props);\n }\n\n renderDetails(): JSX.Element {\n const { instance, item } = this.props;\n\n return (\n <AccordionDetails>\n <Grid2\n container\n direction=\"row\"\n >\n <Grid2\n container\n direction=\"row\"\n size={{ xs: 10 }}\n >\n <Grid2\n container\n direction=\"column\"\n size={{ xs: 12, sm: 6, md: 4 }}\n >\n {this.renderInfo(true)}\n </Grid2>\n <Grid2\n container\n direction=\"column\"\n size={{ xs: 12, sm: 6, md: 4 }}\n >\n {this.renderVersion()}\n </Grid2>\n <Grid2\n container\n direction=\"column\"\n size={{ xs: 12, sm: 6, md: 4 }}\n style={styles.paddingRight200}\n >\n {this.props.context.expertMode && (\n <Box\n component=\"div\"\n sx={{ ...styles.displayFlex, ...styles.maxWidth300, ...styles.editButton }}\n >\n {this.renderLogLevel()}\n </Box>\n )}\n {item.running && this.props.context.expertMode && (\n <Box\n component=\"div\"\n sx={styles.visible1250}\n >\n {this.renderInputOutput()}\n </Box>\n )}\n <Grid2 sx={styles.visible1050}>{this.renderMemoryUsage()}</Grid2>\n {item.modeSchedule && (\n <Box\n component=\"div\"\n sx={{ ...styles.displayFlex, ...styles.maxWidth300, ...styles.editButton }}\n >\n {this.renderSchedule()}\n </Box>\n )}\n {this.props.context.expertMode && instance.mode === 'daemon' && (\n <Box\n component=\"div\"\n sx={{ ...styles.displayFlex, ...styles.maxWidth300, ...styles.editButton }}\n >\n {this.renderRestartSchedule()}\n </Box>\n )}\n {this.props.context.expertMode && (\n <Box\n component=\"div\"\n sx={{ ...styles.displayFlex, ...styles.maxWidth300, ...styles.editButton }}\n >\n {this.renderRamLimit()}\n </Box>\n )}\n {this.props.context.expertMode &&\n item.checkCompact &&\n item.compact &&\n item.supportCompact && (\n <Box\n component=\"div\"\n sx={{ ...styles.displayFlex, ...styles.maxWidth300, ...styles.editButton }}\n >\n {this.renderCompactGroup()}\n </Box>\n )}\n {this.props.context.expertMode && (\n <Box\n component=\"div\"\n sx={{ ...styles.displayFlex, ...styles.maxWidth300, ...styles.editButton }}\n >\n {this.renderTier()}\n </Box>\n )}\n <Box\n component=\"div\"\n sx={{ ...styles.maxWidth300, ...styles.visible800, ...styles.editButton }}\n >\n <InstanceInfo>{AdminUtils.getText(item.name, this.props.context.lang)}</InstanceInfo>\n {this.renderEditNameButton()}\n </Box>\n {this.props.context.hosts.length > 1 ||\n (this.props.context.hosts.length &&\n this.props.context.hosts[0].common?.name !== instance.host) ? (\n <Box\n component=\"div\"\n sx={{ ...styles.displayFlex, ...styles.maxWidth300, ...styles.editButton }}\n >\n {this.renderHostWithButton()}\n </Box>\n ) : null}\n </Grid2>\n </Grid2>\n <div style={styles.displayFlex}>\n <IsVisible\n config={item}\n name=\"allowInstanceDelete\"\n >\n <Box\n component=\"div\"\n sx={{ display: { xs: 'inline-block', md: 'none' } }}\n >\n {this.renderSettingsButton()}\n </Box>\n </IsVisible>\n <Box\n component=\"div\"\n sx={{ display: { md: 'none', xs: 'inline-block' } }}\n >\n {this.renderRestartButton()}\n </Box>\n <IsVisible\n config={item}\n name=\"allowInstanceLink\"\n >\n <Box\n component=\"div\"\n sx={{ display: { md: 'none', xs: 'inline-block' } }}\n >\n {this.renderLink()}\n </Box>\n </IsVisible>\n <IsVisible\n config={item}\n name=\"allowInstanceDelete\"\n >\n {this.renderDeleteButton()}\n </IsVisible>\n <Box\n component=\"div\"\n sx={styles.visible570}\n >\n {this.renderSentry()}\n </Box>\n <Box\n component=\"div\"\n sx={styles.visible570}\n >\n {this.renderCompactGroupEnabled()}\n </Box>\n </div>\n </Grid2>\n </AccordionDetails>\n );\n }\n\n render(): JSX.Element {\n const { instance, item } = this.props;\n const status = this.props.context.getInstanceStatus(instance.obj);\n\n const stateTooltip = this.renderTooltip();\n\n const rootStyle = {\n ...styles.row,\n ...((!item.running || instance.mode !== 'daemon' || item.stoppedWhenWebExtension !== undefined) &&\n (this.props.idx % 2 === 0 ? styles.instanceStateNotEnabled1 : styles.instanceStateNotEnabled2)),\n ...(item.running &&\n instance.mode === 'daemon' &&\n item.stoppedWhenWebExtension === undefined &&\n (!item.connectedToHost || !item.alive)\n ? this.props.idx % 2 === 0\n ? styles.instanceStateNotAlive1\n : styles.instanceStateNotAlive2\n : undefined),\n ...(item.running && item.connectedToHost && item.alive && item.connected === false\n ? this.props.idx % 2 === 0\n ? styles.instanceStateAliveNotConnected1\n : styles.instanceStateAliveNotConnected2\n : undefined),\n ...(item.running && item.connectedToHost && item.alive && item.connected !== false\n ? this.props.idx % 2 === 0\n ? styles.instanceStateAliveAndConnected1\n : styles.instanceStateAliveAndConnected2\n : undefined),\n ...(this.desktop ? styles.desktopRow : undefined),\n ...(this.state.expanded && !this.props.deleting ? styles.expanded : undefined),\n };\n\n return (\n <Accordion\n square\n sx={{\n '&.MuiAccordion-root': {\n ...(this.props.deleting ? styles.deleting : undefined),\n ...(this.props.hidden ? styles.hidden : undefined),\n },\n }}\n expanded={this.state.expanded && !this.props.deleting}\n onChange={() => {\n if (this.state.openDialog) {\n return;\n }\n this.setState({ expanded: !this.state.expanded }, () =>\n this.props.context.onToggleExpanded(this.props.id, this.state.expanded),\n );\n }}\n >\n <AccordionSummary\n sx={{\n '&.MuiAccordionSummary-root': rootStyle,\n '& .MuiAccordionSummary-content': this.desktop ? styles.desktopRowContent : undefined,\n }}\n expandIcon={<ExpandMoreIcon style={this.desktop ? styles.desktopButton : undefined} />}\n >\n {this.renderDialogs()}\n <Grid2\n container\n spacing={1}\n alignItems=\"center\"\n direction=\"row\"\n wrap=\"nowrap\"\n style={styles.rowGridLine}\n >\n <Box\n component=\"div\"\n style={styles.gridStyle}\n >\n {stateTooltip.length ? (\n <Tooltip\n slotProps={{ popper: { sx: styles.tooltip } }}\n title={\n <span style={{ display: 'flex', flexDirection: 'column' }}>{stateTooltip}</span>\n }\n >\n {this.renderModeIcon(status)}\n </Tooltip>\n ) : (\n this.renderModeIcon(status)\n )}\n <Avatar\n variant=\"square\"\n alt={instance.id}\n src={instance.image}\n sx={{ ...styles.instanceIcon, ...(this.desktop ? styles.desktopIcon : undefined) }}\n />\n <Box\n component=\"div\"\n sx={styles.instanceId}\n >\n {instance.id}\n </Box>\n </Box>\n\n {this.renderPlayPause()}\n\n <IsVisible\n config={item}\n name=\"allowInstanceSettings\"\n >\n <Box\n component=\"div\"\n sx={{ display: { md: 'inline-block', xs: 'none' } }}\n >\n {this.renderSettingsButton()}\n </Box>\n </IsVisible>\n\n <Box\n component=\"div\"\n sx={{ display: { md: 'inline-block', xs: 'none' } }}\n >\n {this.renderRestartButton()}\n </Box>\n\n <IsVisible\n config={item}\n name=\"allowInstanceLink\"\n >\n <Box\n component=\"div\"\n sx={{ display: { md: 'inline-block', xs: 'none' } }}\n >\n {this.renderLink()}\n </Box>\n </IsVisible>\n\n <Typography\n sx={{ ...styles.secondaryHeading, ...styles.hidden800 }}\n component=\"div\"\n >\n <div\n // onMouseMove={() => this.setState({ visibleEdit: true })}\n onMouseEnter={() => this.setState({ visibleEdit: true })}\n onMouseLeave={() => this.setState({ visibleEdit: false })}\n style={styles.secondaryHeadingDiv}\n >\n <div style={styles.secondaryHeadingDivDiv}>\n {AdminUtils.getText(item.name, this.props.context.lang)}\n </div>\n {this.renderEditNameButton()}\n </div>\n </Typography>\n {this.props.context.expertMode && (\n <Box\n component=\"div\"\n sx={{\n ...styles.hidden1250,\n ...(instance.mode !== 'daemon' || !item.running ? styles.invisible : undefined),\n }}\n >\n {this.renderInputOutput()}\n </Box>\n )}\n {this.props.context.expertMode && (\n <Tooltip\n title={\n item.logLevelObject === item.logLevel\n ? `${this.props.context.t('loglevel')} ${item.logLevel}`\n : `${this.props.context.t('saved:')} ${item.logLevelObject} / ${this.props.context.t('actual:')} ${item.logLevel}`\n }\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <Avatar sx={{ ...styles.smallAvatar, ...styles.hidden380, ...styles[item.logLevel] }}>\n {item.loglevelIcon}\n </Avatar>\n </Tooltip>\n )}\n <Grid2\n sx={{\n ...styles.hidden1050,\n ...styles.width150,\n ...(instance.mode !== 'daemon' || !item.running ? styles.invisible : undefined),\n }}\n >\n {this.renderMemoryUsage()}\n </Grid2>\n {this.props.context.hosts.length > 1 ||\n (this.props.context.hosts.length &&\n this.props.context.hosts[0].common?.name !== instance.host) ? (\n <Grid2 sx={styles.hidden1230}>{this.renderHost()}</Grid2>\n ) : null}\n </Grid2>\n <Box\n component=\"div\"\n sx={styles.hidden570}\n >\n {this.renderSentry()}\n </Box>\n <Box\n component=\"div\"\n sx={styles.hidden570}\n >\n {this.renderCompactGroupEnabled()}\n </Box>\n </AccordionSummary>\n {this.state.expanded ? this.renderDetails() : null}\n {this.renderDialogs()}\n </Accordion>\n );\n }\n}\n\nexport default InstanceRow;\n","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgFilter(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n height: \"24px\",\n viewBox: \"0 0 24 24\",\n width: \"24px\",\n fill: \"#FB2D26\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0,0h24 M24,24H0\",\n fill: \"currentColor\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.25,5.61C6.27,8.2,10,13,10,13v6c0,0.55,0.45,1,1,1h2c0.55,0,1-0.45,1-1v-6c0,0,3.72-4.8,5.74-7.39 C20.25,4.95,19.78,4,18.95,4H5.04C4.21,4,3.74,4.95,4.25,5.61z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0,0h24v24H0V0z\",\n fill: \"none\"\n }))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgFilter);\nexport default __webpack_public_path__ + \"static/media/filter.ddf40c28bbf1e138937e53be53e56274.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useState, type JSX } from 'react';\n\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n Avatar,\n Card,\n Checkbox,\n DialogTitle,\n FormControlLabel,\n MenuItem,\n Select,\n} from '@mui/material';\n\nimport {\n Warning as WarningIcon,\n Schedule as ScheduleIcon,\n Lens as SettingsIcon,\n Check as IconCheck,\n Close as IconClose,\n} from '@mui/icons-material';\n\nimport { green, grey, orange, red } from '@mui/material/colors';\n\nimport { I18n } from '@iobroker/adapter-react-v5';\n\nimport filterIcon from '../../assets/filter.svg';\n\nconst styles: Record<string, React.CSSProperties> = {\n root: {\n width: '100%',\n padding: 10,\n },\n paper: {\n // maxWidth: 1000,\n width: '100%',\n maxHeight: 800,\n // height: 'calc(100% - 32px)',\n },\n overflowHidden: {\n display: 'flex',\n overflow: 'hidden',\n },\n pre: {\n overflow: 'auto',\n whiteSpace: 'pre-wrap',\n margin: 0,\n },\n rowBlock: {\n display: 'flex',\n width: '100%',\n justifyContent: 'space-between',\n margin: '10px 0',\n },\n select: {\n minWidth: 200,\n },\n checkbox: {\n minWidth: 160,\n },\n statusIcon_1: {\n // circle\n border: '2px solid grey',\n borderRadius: 20,\n color: 'grey',\n },\n statusIcon_2: {\n // square\n border: '2px solid grey',\n borderRadius: 20,\n color: '#d32f2f',\n },\n statusIcon_3: {\n // triangle\n border: 0,\n borderRadius: 0,\n color: '#ffa726',\n },\n statusIcon_4: {\n // watch\n border: '2px solid grey',\n borderRadius: 20,\n color: '#0055a9',\n },\n statusIcon_5: {\n // circle ?\n border: '2px solid grey',\n borderRadius: 20,\n },\n statusIcon_6: {\n // circle ?\n border: '2px solid grey',\n borderRadius: 20,\n },\n menuWrapper: {\n display: 'flex',\n alignItems: 'center',\n },\n iconWrapper: {\n marginRight: 10,\n },\n textWrapper: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n square: {\n width: 24,\n height: 24,\n marginRight: 10,\n filter: 'invert(0%) sepia(90%) saturate(300%) hue-rotate(-537deg) brightness(99%) contrast(97%)',\n },\n statusIcon_green: {\n // square\n border: '2px solid grey',\n borderRadius: 2,\n },\n statusIcon_red: {\n // circle\n border: '2px solid grey',\n borderRadius: 20,\n },\n statusIcon_orange: {\n // triangle\n border: 0,\n borderRadius: 0,\n },\n statusIcon_orangeDevice: {\n // triangle\n border: 0,\n borderRadius: 0,\n },\n statusIcon_blue: {\n // watch\n border: '2px solid grey',\n borderRadius: 20,\n },\n statusIcon_gray: {\n // circle ?\n border: '2px solid grey',\n borderRadius: 20,\n },\n statusIcon_grey: {\n // circle ?\n border: '2px solid grey',\n borderRadius: 20,\n },\n green: {\n color: green[700],\n },\n red: {\n color: red[700],\n },\n grey: {\n color: grey[700],\n },\n blue: {\n color: '#0055a9',\n },\n orange: {\n color: orange[400],\n },\n orangeDevice: {\n color: orange[300],\n },\n icon: {\n width: 18,\n height: 18,\n marginRight: 8,\n display: 'inline-block',\n },\n menuValue: {\n whiteSpace: 'nowrap',\n },\n};\n\nconst modeArray = ['none', 'daemon', 'schedule', 'once'];\n// const statusArray = [\n// 'none',\n// 'disabled',\n// 'enabled, but not alive',\n// 'enabled, alive, but not connected to controller',\n// 'enabled, alive, connected, but not connected to device or service',\n// 'enabled and OK'\n// ];\n\nconst getModeIcon = (idx: number, style: React.CSSProperties): JSX.Element | null => {\n if (idx === 1) {\n return <SettingsIcon style={style} />;\n }\n if (idx === 2) {\n return <SettingsIcon style={style} />;\n }\n if (idx === 3) {\n return <WarningIcon style={style} />;\n }\n if (idx === 4) {\n return <ScheduleIcon style={style} />;\n }\n if (idx === 5) {\n return (\n <div\n style={{\n ...style,\n width: 20,\n height: 20,\n margin: 2,\n borderRadius: 2,\n }}\n >\n <div\n style={{\n width: 'calc(100% - 2px)',\n height: 'calc(100% - 2px)',\n borderRadius: 2,\n margin: 1,\n backgroundColor: '#66bb6a',\n }}\n />\n </div>\n );\n }\n\n return null;\n};\n\nconst statusArray: Record<string, { text: string; _class: string; status: string }> = {\n none: { text: 'none', _class: '', status: '' },\n disabled: { text: 'disabled', _class: 'statusIcon_grey', status: 'grey' },\n not_alive: { text: 'enabled, but not alive', _class: 'statusIcon_red', status: 'red' },\n alive_not_connected: {\n text: 'enabled, alive, but not connected to controller',\n _class: 'statusIcon_orange',\n status: 'orange',\n },\n alive_no_device: {\n text: 'enabled, alive, but not connected to device or service',\n _class: 'statusIcon_orangeDevice',\n status: 'orange',\n },\n ok: { text: 'enabled and OK', _class: 'statusIcon_green', status: 'green' },\n};\n\ninterface InstanceFilterDialogProps {\n onClose: (filter?: { filterMode: string; filterStatus: string }) => void;\n filterMode: string;\n filterStatus: string;\n}\n\nconst InstanceFilterDialog = ({ onClose, filterMode, filterStatus }: InstanceFilterDialogProps): JSX.Element => {\n const [modeCheck, setModeCheck] = useState(filterMode);\n const [statusCheck, setStatusCheck] = useState(filterStatus);\n\n return (\n <Dialog\n onClose={() => onClose()}\n open={!0}\n sx={{ '& .MuiDialog-paper': styles.paper }}\n >\n <DialogTitle style={{ display: 'flex' }}>\n <div style={{ display: 'flex' }}>\n <Avatar\n variant=\"square\"\n style={styles.square}\n src={filterIcon}\n />\n {I18n.t('Filter instances')}\n </div>\n </DialogTitle>\n <DialogContent\n style={styles.overflowHidden}\n dividers\n >\n <Card style={styles.root}>\n <div style={styles.rowBlock}>\n <FormControlLabel\n style={styles.checkbox}\n control={\n <Checkbox\n checked={!!modeCheck}\n onChange={e => (e.target.checked ? setModeCheck('daemon') : setModeCheck(null))}\n />\n }\n label={I18n.t('Filter by mode')}\n />\n <Select\n disabled={!modeCheck}\n variant=\"standard\"\n value={modeCheck || 'none'}\n style={styles.select}\n onChange={el => {\n if (el.target.value === 'none') {\n setModeCheck(null);\n } else {\n setModeCheck(el.target.value);\n }\n }}\n >\n {modeArray.map(el => (\n <MenuItem\n key={el}\n value={el}\n >\n {I18n.t(el)}\n </MenuItem>\n ))}\n </Select>\n </div>\n <div style={styles.rowBlock}>\n <FormControlLabel\n style={styles.checkbox}\n control={\n <Checkbox\n checked={!!statusCheck}\n onChange={e => (e.target.checked ? setStatusCheck('ok') : setStatusCheck(null))}\n />\n }\n label={I18n.t('Filter by status')}\n />\n <Select\n disabled={!statusCheck}\n variant=\"standard\"\n value={statusCheck || 'none'}\n style={styles.select}\n onChange={el => {\n if (el.target.value === 'none') {\n setStatusCheck(null);\n } else {\n setStatusCheck(el.target.value);\n }\n }}\n >\n {Object.keys(statusArray).map((name, idx) => (\n <MenuItem\n key={name}\n value={name}\n >\n <div style={styles.menuWrapper}>\n {statusArray[name].status ? (\n <div style={styles.iconWrapper}>\n {getModeIcon(idx, styles[`statusIcon_${idx}`])}\n </div>\n ) : null}\n <div style={styles.textWrapper}>{I18n.t(statusArray[name].text)}</div>\n </div>\n </MenuItem>\n ))}\n </Select>\n </div>\n </Card>\n </DialogContent>\n <DialogActions>\n <Button\n variant=\"contained\"\n autoFocus\n disabled={modeCheck === filterMode && filterStatus === statusCheck}\n onClick={() => {\n onClose({\n filterMode: modeCheck,\n filterStatus: statusCheck,\n });\n }}\n color=\"primary\"\n startIcon={<IconCheck />}\n >\n {I18n.t('Apply')}\n </Button>\n <Button\n color=\"grey\"\n variant=\"contained\"\n onClick={() => onClose()}\n startIcon={<IconClose />}\n >\n {I18n.t('Close')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nexport default InstanceFilterDialog;\n","import React, { type JSX } from 'react';\nimport { Accordion, AccordionDetails, AccordionSummary } from '@mui/material';\n\nimport { ExpandMore as ExpandMoreIcon } from '@mui/icons-material';\n\nimport MaterialDynamicIcon from '../../helpers/MaterialDynamicIcon';\n\nconst styles: Record<string, React.CSSProperties> = {\n row: {\n paddingLeft: 8,\n flexDirection: 'row-reverse',\n minHeight: '48px !important',\n height: 48,\n fontWeight: 'bold',\n fontSize: 16,\n },\n iconStyle: {\n marginRight: 10,\n },\n wrapperName: {\n margin: '0 10px',\n display: 'flex',\n alignItems: 'center',\n },\n wrapperChildren: {\n width: '100%',\n },\n accordionDetails: {\n padding: 0,\n },\n accordion: {\n margin: '1px 0 !important',\n },\n};\n\ninterface InstanceCategoryProps {\n name: string;\n key: string;\n children: JSX.Element[] | JSX.Element;\n expanded: boolean;\n onExpand: (expanded: boolean) => void;\n}\n\nfunction InstanceCategory({ name, key, children, expanded, onExpand }: InstanceCategoryProps): JSX.Element {\n return (\n <Accordion\n expanded={!!expanded}\n onChange={() => onExpand(!expanded)}\n style={styles.accordion}\n key={key}\n square\n >\n <AccordionSummary\n style={styles.row}\n expandIcon={<ExpandMoreIcon />}\n >\n <div style={styles.wrapperName}>\n <MaterialDynamicIcon\n iconName={name}\n style={styles.iconStyle}\n />\n {name}\n </div>\n </AccordionSummary>\n <AccordionDetails style={styles.accordionDetails}>\n <div style={styles.wrapperChildren}>{children}</div>\n </AccordionDetails>\n </Accordion>\n );\n}\n\nexport default InstanceCategory;\n","import React, { Component, createRef, type JSX } from 'react';\n\nimport { IconButton, LinearProgress, Tooltip, Paper, InputAdornment, TextField, Box } from '@mui/material';\n\nimport {\n PlayArrow as PlayArrowIcon,\n Refresh as RefreshIcon,\n BugReport as BugReportIcon,\n Info as InfoIcon,\n Warning as WarningIcon,\n Error as ErrorIcon,\n Devices as DevicesIcon,\n ViewList as ViewListIcon,\n ViewModule as ViewModuleIcon,\n Close as CloseIcon,\n ViewCompact as ViewCompactIcon,\n Folder as FolderIcon,\n FolderOpen as FolderOpenIcon,\n List as ListIcon,\n} from '@mui/icons-material';\nimport { FaFilter as FilterListIcon } from 'react-icons/fa';\n\nimport {\n type AdminConnection,\n Router,\n withWidth,\n TabContent,\n TabContainer,\n type IobTheme,\n type ThemeName,\n type ThemeType,\n TabHeader,\n type Translate,\n} from '@iobroker/adapter-react-v5';\n\nimport AdminUtils from '@/AdminUtils';\nimport type InstancesWorker from '@/Workers/InstancesWorker';\nimport type { InstanceLink } from '@/components/Instances/LinksDialog';\nimport Config from './Config';\nimport InstanceGeneric, {\n type InstanceEntry,\n type InstanceItem,\n type InstanceStatusType,\n} from '../components/Instances/InstanceGeneric';\nimport InstanceCard from '../components/Instances/InstanceCard';\nimport InstanceRow from '../components/Instances/InstanceRow';\nimport CustomSelectButton from '../components/CustomSelectButton';\nimport InstanceFilterDialog from '../components/Instances/InstanceFilterDialog';\nimport InstanceCategory from '../components/Instances/InstanceCategory';\n\nconst styles: Record<string, any> = {\n paper: {\n height: '100%',\n },\n iframe: {\n height: '100%',\n width: '100%',\n // backgroundColor: '#FFF',\n color: '#000',\n borderRadius: 4,\n boxShadow:\n '0px 2px 1px -1px rgb(0 0 0 / 20%), 0px 1px 1px 0px rgb(0 0 0 / 14%), 0px 1px 3px 0px rgb(0 0 0 / 12%)',\n border: '0px solid #888',\n },\n cards: {\n display: 'flex',\n flexFlow: 'wrap',\n justifyContent: 'center',\n },\n filterActive: (theme: IobTheme) => ({\n color: theme.palette.primary.main,\n }),\n tooltip: {\n pointerEvents: 'none',\n },\n grow: {\n flexGrow: 1,\n },\n};\n\ninterface InstancesProps {\n t: Translate;\n lang: ioBroker.Languages;\n themeType: ThemeType;\n themeName: ThemeName;\n theme: IobTheme;\n socket: AdminConnection;\n instancesWorker: InstancesWorker;\n executeCommand: (command: string) => void;\n hosts: ioBroker.HostObject[];\n currentHost: string;\n currentHostName: string;\n hostname: string;\n adminInstance: string;\n expertMode: boolean;\n repository: Record<string, any>;\n width: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n isFloatComma: boolean;\n dateFormat: string;\n\n onRegisterIframeRef: (el: HTMLIFrameElement) => void;\n onUnregisterIframeRef: (el: HTMLIFrameElement) => void;\n\n configStored: (allStored: boolean) => void;\n}\n\ninterface HostData {\n 'Disk free': number;\n 'Disk size': number;\n}\n\ninterface InstancesState {\n expertMode: boolean;\n dialog: string | null;\n instances: Record<string, InstanceEntry> | null;\n dialogProp: string | null;\n playArrow: 0 | 1 | 2; // 0 - running or stopped instances, 1 - only running instances, 2 - only stopped instances\n onlyCurrentHost: boolean;\n viewMode: boolean;\n viewCategory: boolean;\n hostData: HostData | null;\n processes: number | null;\n mem: number | null;\n percent: number | null;\n memFree: number | null;\n filterText: string;\n compact: boolean;\n maxCompactGroupNumber: number;\n filterCompactGroup: string | number;\n // sentry: boolean;\n deleting: string | null;\n deleteCustomSupported: boolean;\n currentHost: string;\n expandedFolder: string[];\n filterMode: string | null;\n filterStatus: string | null;\n showFilterDialog: boolean;\n}\n\n// every tab should get their data itself from server\nclass Instances extends Component<InstancesProps, InstancesState> {\n private readonly localStorage: Storage;\n\n private statePromise: Promise<Record<string, ioBroker.State>> | null = null;\n\n private states: Record<string, ioBroker.State>;\n\n private adapters: ioBroker.AdapterObject[];\n\n private statesUpdateTimer: ReturnType<typeof setTimeout> | null = null;\n\n private typingTimer: ReturnType<typeof setTimeout> | null = null;\n\n private hostsTimer: ReturnType<typeof setTimeout> | null = null;\n\n private readonly wordCache: Record<string, string>;\n\n private readonly t: Translate;\n\n private readonly inputRef: React.RefObject<HTMLInputElement>;\n\n private subscribed: boolean = false;\n\n private _cacheList: InstanceItem[] | null = null;\n\n private shouldUpdateAfterDialogClosed: boolean = false;\n\n private expanded = '';\n\n private closeCommands: Record<string, (() => void) | null> = {};\n\n constructor(props: InstancesProps) {\n super(props);\n\n this.localStorage = ((window as any)._localStorage as Storage) || window.localStorage;\n\n let expandedFolder = [];\n if (this.localStorage.getItem('Instances.expandedFolder')) {\n try {\n expandedFolder = JSON.parse(this.localStorage.getItem('Instances.expandedFolder'));\n } catch {\n // ignore\n }\n }\n\n this.state = {\n expertMode: this.props.expertMode,\n dialog: null,\n instances: null,\n dialogProp: null,\n playArrow: 0,\n onlyCurrentHost: false,\n viewMode: false,\n viewCategory: false,\n hostData: null,\n processes: null,\n mem: null,\n percent: null,\n memFree: null,\n filterText: this.localStorage.getItem('instances.filter') || '',\n compact: false,\n maxCompactGroupNumber: 1,\n filterCompactGroup: 'All',\n // sentry: false,\n deleting: null,\n deleteCustomSupported: false,\n currentHost: this.props.currentHost,\n showFilterDialog: false,\n\n expandedFolder,\n\n // filter\n filterMode: this.localStorage.getItem('Instances.filterMode')\n ? this.localStorage.getItem('Instances.filterMode') === 'null'\n ? null\n : this.localStorage.getItem('Instances.filterMode')\n : null,\n filterStatus: this.localStorage.getItem('Instances.filterStatus')\n ? this.localStorage.getItem('Instances.filterStatus') === 'null'\n ? null\n : this.localStorage.getItem('Instances.filterStatus')\n : null,\n };\n\n // this.columns = {\n // instance: { onlyExpert: false },\n // actions: { onlyExpert: false },\n // title: { onlyExpert: false },\n // schedule: { onlyExpert: false },\n // restart: { onlyExpert: true },\n // log: { onlyExpert: true },\n // ramLimit: { onlyExpert: true },\n // events: { onlyExpert: true },\n // ram: { onlyExpert: false },\n // };\n\n this.states = {};\n this.adapters = [];\n this.statesUpdateTimer = null;\n this.wordCache = {};\n\n this.t = this.translate;\n this.inputRef = createRef();\n }\n\n translate = (word: string, arg1?: any, arg2?: any): string => {\n if (arg1 !== undefined) {\n return this.props.t(word, arg1, arg2);\n }\n\n if (!this.wordCache[word]) {\n this.wordCache[word] = this.props.t(word);\n }\n\n return this.wordCache[word];\n };\n\n async componentDidMount(): Promise<void> {\n this.props.instancesWorker.registerHandler(this.getInstances);\n await this.updateData();\n const deleteCustomSupported = await this.props.socket.checkFeatureSupported('DEL_INSTANCE_CUSTOM');\n if (deleteCustomSupported) {\n this.setState({ deleteCustomSupported });\n }\n }\n\n async updateData(): Promise<void> {\n await this.getParamsLocalAndPanel();\n await this.getData();\n await this.getHostsData();\n await this.getInstances();\n }\n\n componentWillUnmount(): void {\n this.subscribeStates(true);\n this.props.instancesWorker.unregisterHandler(this.getInstances);\n }\n\n getStates(update?: boolean): Promise<Record<string, ioBroker.State>> {\n if (update) {\n this.statePromise = null;\n }\n if (!(this.statePromise instanceof Promise)) {\n this.statePromise = this.props.socket.getForeignStates('system.adapter.*');\n }\n\n return this.statePromise;\n }\n\n static getDerivedStateFromProps(props: InstancesProps, state: InstancesState): Partial<InstancesState> | null {\n const location = Router.getLocation();\n\n const newState: Partial<InstancesState> = {\n dialog: location.dialog,\n dialogProp: location.id,\n };\n\n if (props.expertMode !== state.expertMode) {\n newState.expertMode = props.expertMode;\n }\n\n return newState;\n }\n\n getInstances = async (): Promise<void> => {\n const start = Date.now();\n let instances: ioBroker.InstanceObject[] = [];\n const instancesFromWorker = await this.props.instancesWorker.getInstances();\n\n if (!instancesFromWorker) {\n window.alert('Cannot read instances!');\n return;\n }\n\n instances = Object.values(instancesFromWorker);\n\n let memRssId = `${this.state.currentHost}.memRss`;\n this.states[memRssId] = this.states[memRssId] || (await this.props.socket.getState(memRssId));\n\n const host = this.states[memRssId];\n let processes = 1;\n let mem: number = host ? parseFloat(host.val as string) || 0 : 0;\n const hosts: Record<string, ioBroker.HostObject> = {};\n this.props.hosts.forEach(_host => (hosts[_host._id] = _host));\n\n for (let i = 0; i < instances.length; i++) {\n const inst = instances[i];\n if (!inst || !inst.common || inst.common.host !== this.props.currentHostName) {\n continue;\n }\n if (inst.common.enabled && inst.common.mode === 'daemon' && !InstanceGeneric.isCompact(inst)) {\n memRssId = `${inst._id}.memRss`;\n this.states[memRssId] = this.states[memRssId] || (await this.props.socket.getState(memRssId));\n const m = this.states[memRssId];\n mem += m ? parseFloat(m.val as string) || 0 : 0;\n processes++;\n }\n }\n\n const formatted: Record<string, InstanceEntry> = {};\n\n instances.sort((a, b) => {\n const pA = a._id.split('.');\n const pB = b._id.split('.');\n const numA = parseInt(pA[pA.length - 1], 10);\n const numB = parseInt(pB[pB.length - 1], 10);\n const nameA = pA[pA.length - 2];\n const nameB = pB[pB.length - 2];\n\n if (nameA === nameB) {\n return numA > numB ? 1 : numA < numB ? -1 : 0;\n }\n return nameA > nameB ? 1 : nameA < nameB ? -1 : 0;\n });\n\n let maxCompactGroupNumber = 1;\n const newState: Partial<InstancesState> = {};\n\n // Do not make here Object.keys, as we have got an invalid order in this case\n for (let i = 0; i < instances.length; i++) {\n const obj = instances[i];\n const common = obj.common || null;\n const instanceId = parseInt(obj._id.split('.').pop(), 10);\n\n if (\n common.compactGroup &&\n typeof common.compactGroup === 'number' &&\n maxCompactGroupNumber < common.compactGroup\n ) {\n maxCompactGroupNumber = common.compactGroup;\n }\n\n const instance: InstanceEntry = {\n id: obj._id.replace('system.adapter.', ''),\n obj,\n compact: !!common.compact,\n host: common.host,\n name: this.getName(obj),\n image: common.icon ? `adapter/${common.name}/${common.icon}` : 'img/no-image.png',\n enabled: common.enabled,\n canStart: !common.onlyWWW,\n config: common.adminUI.config !== 'none',\n jsonConfig: common.adminUI.config === 'json',\n materialize: common.adminUI.config === 'materialize',\n compactMode: common.runAsCompactMode || false,\n mode: common.mode || null,\n schedule: common.schedule === undefined || common.schedule === null ? null : common.schedule,\n loglevel: common.loglevel || null,\n adapter: common.name || null,\n version: common.version || null,\n stoppedWhenWebExtension:\n obj.common.mode === 'daemon'\n ? obj.common.webExtension !== undefined\n ? !!obj.common.webExtension\n : undefined\n : undefined,\n links: [],\n };\n\n const rawLinks: Record<string, string | ioBroker.LocalLink> | string =\n common.localLinks || common.localLink || '';\n let links: Record<string, string | InstanceLink> | null = null;\n if (rawLinks && typeof rawLinks === 'string') {\n links = { _default: rawLinks };\n } else if (rawLinks && typeof rawLinks === 'object') {\n links = rawLinks as Record<string, string>;\n }\n\n const names = links ? Object.keys(links) : [];\n\n names.forEach(linkName => {\n instance.links = instance.links || [];\n let link: InstanceLink;\n if (typeof links[linkName] === 'string') {\n link = { link: links[linkName] };\n } else {\n link = links[linkName];\n }\n\n const urls =\n AdminUtils.replaceLink(link.link, common.name, instanceId, {\n instances: instancesFromWorker,\n hostname: this.props.hostname,\n hosts,\n adminInstance: this.props.adminInstance,\n }) || [];\n\n let name: ioBroker.StringOrTranslated = link.name || linkName;\n if (name === '_default') {\n name = names.length === 1 ? '' : this.t('default');\n } else if (typeof name === 'object') {\n name = AdminUtils.getText(name, this.props.lang);\n } else {\n name = this.t(name);\n }\n\n if (urls.length === 1) {\n instance.links.push({\n name,\n link: urls[0].url,\n port: urls[0].port,\n color: link.color,\n });\n } else if (urls.length > 1) {\n urls.forEach(item => {\n instance.links.push({\n name,\n link: item.url,\n port: item.port,\n color: link.color,\n });\n });\n }\n });\n\n if (instance.stoppedWhenWebExtension) {\n const eId =\n this.states[`${instance.id}.info.extension`] ||\n (await this.props.socket.getState(`${instance.id}.info.extension`));\n instance.stoppedWhenWebExtension = eId ? !!eId.val : undefined;\n }\n\n console.log(obj._id);\n formatted[obj._id] = instance;\n }\n\n console.log(`getInstances: ${Date.now() - start}`);\n\n for (let c = 1; c <= maxCompactGroupNumber; c++) {\n const compactGroupMemRssId = `${this.state.currentHost}.compactgroup${c}.memRss`;\n this.states[compactGroupMemRssId] =\n this.states[compactGroupMemRssId] || (await this.props.socket.getState(compactGroupMemRssId));\n const m = this.states[compactGroupMemRssId];\n if (m) {\n mem += m ? parseFloat(m.val as string) || 0 : 0;\n processes++;\n }\n }\n\n if (this.state.deleting && !formatted[`system.adapter.${this.state.deleting}`]) {\n newState.deleting = null;\n }\n\n newState.maxCompactGroupNumber = maxCompactGroupNumber;\n newState.processes = processes;\n newState.mem = Math.round(mem);\n newState.instances = formatted;\n\n this._cacheList = null;\n this.setState(newState as InstancesState);\n };\n\n getParamsLocalAndPanel = async (): Promise<void> => {\n let compact = false;\n try {\n const baseSettings = await this.props.socket.readBaseSettings(this.state.currentHost);\n compact = !!baseSettings.config?.system?.compact;\n } catch (error) {\n window.alert(`Cannot read compact mode by host \"${this.state.currentHost}\": ${error}`);\n }\n\n let playArrow: 0 | 1 | 2 = 0;\n let filterCompactGroup: string | number = 'All';\n try {\n playArrow = JSON.parse(this.localStorage.getItem('Instances.playArrow')) as 0 | 1 | 2;\n // back compatibility\n if (playArrow.toString() === 'true') {\n playArrow = 1;\n } else if (playArrow.toString() === 'false') {\n playArrow = 0;\n }\n filterCompactGroup = JSON.parse(this.localStorage.getItem('Instances.filterCompactGroup'));\n } catch {\n // ignore\n }\n\n const onlyCurrentHost = this.localStorage.getItem('Instances.onlyCurrentHost') === 'true';\n const viewMode = this.localStorage.getItem('Instances.viewMode') === 'true';\n const viewCategory = this.localStorage.getItem('Instances.viewCategory') === 'true';\n\n if (!filterCompactGroup && filterCompactGroup !== 0) {\n filterCompactGroup = 'All';\n }\n\n this._cacheList = null;\n this.setState({\n filterCompactGroup,\n compact,\n onlyCurrentHost,\n playArrow,\n viewMode,\n viewCategory,\n });\n };\n\n async getData(update?: boolean): Promise<void> {\n try {\n const adapters = this.props.socket.getAdapters(update);\n const statesProm = this.getStates();\n\n const [states, _adapters] = await Promise.all([statesProm, adapters]);\n this.adapters = _adapters || [];\n this.states = states || {};\n } catch (error) {\n console.log(error);\n }\n\n if (!this.states) {\n return;\n }\n\n if (!this.subscribed) {\n this.subscribed = true;\n this.subscribeStates();\n }\n }\n\n onStateChange = (id: string, state: ioBroker.State | null): void => {\n const oldState = this.states[id];\n this.states[id] = state;\n if ((!oldState && state) || (oldState && !state) || (oldState && state && oldState.val !== state.val)) {\n if (this.state.dialog === 'config' && this.state.dialogProp) {\n if (this.statesUpdateTimer) {\n clearTimeout(this.statesUpdateTimer);\n this.statesUpdateTimer = null;\n }\n this.shouldUpdateAfterDialogClosed = true;\n } else if (!this.statesUpdateTimer) {\n this.statesUpdateTimer = setTimeout(() => {\n this.statesUpdateTimer = null;\n this._cacheList = null;\n this.forceUpdate();\n }, 1000);\n }\n }\n };\n\n subscribeStates(isUnsubscribe?: boolean): void {\n const func = isUnsubscribe ? this.props.socket.unsubscribeState : this.props.socket.subscribeState;\n // func('system.adapter.*', this.onStateChange);\n func.call(this.props.socket, 'system.adapter.*.alive', this.onStateChange);\n func.call(this.props.socket, 'system.adapter.*.connected', this.onStateChange);\n func.call(this.props.socket, 'system.adapter.*.inputCount', this.onStateChange);\n func.call(this.props.socket, 'system.adapter.*.memRss', this.onStateChange);\n func.call(this.props.socket, 'system.adapter.*.outputCount', this.onStateChange);\n func.call(this.props.socket, 'system.adapter.*.logLevel', this.onStateChange);\n func.call(this.props.socket, 'system.adapter.*.plugins.sentry.enabled', this.onStateChange);\n // func('system.host.*', this.onStateChange);\n func.call(this.props.socket, 'system.host.*.diskFree', this.onStateChange);\n func.call(this.props.socket, 'system.host.*.diskSize', this.onStateChange);\n func.call(this.props.socket, 'system.host.*.diskWarning', this.onStateChange);\n func.call(this.props.socket, 'system.host.*.freemem', this.onStateChange);\n func.call(this.props.socket, '*.info.connection', this.onStateChange);\n func.call(this.props.socket, '*.info.extension', this.onStateChange);\n }\n\n // returns:\n // grey - daemon / disabled\n // green - daemon / run, connected, alive\n // blue - schedule\n // orangeDevice - daemon / run, connected to controller, not connected to device\n // orange - daemon / run,not connected\n // red - daemon / not run, not connected\n getInstanceStatus = (obj: ioBroker.InstanceObject): InstanceStatusType => {\n const common = obj ? obj.common : null;\n const mode = common?.mode || '';\n let status: InstanceStatusType = mode === 'daemon' ? 'green' : 'blue';\n\n if (common?.enabled && (!common.webExtension || !obj.native.webInstance || mode === 'daemon')) {\n const alive = this.states[`${obj._id}.alive`];\n const connected = this.states[`${obj._id}.connected`];\n const connection = this.states[`${obj._id.replace('system.adapter.', '')}.info.connection`];\n if (common.webExtension && obj.native.webInstance) {\n const extension = this.states[`${obj._id.replace('system.adapter.', '')}.info.extension`];\n if (extension) {\n return extension.val ? 'green' : 'red';\n }\n }\n\n if (!connected?.val || !alive?.val) {\n status = mode === 'daemon' ? 'red' : 'orangeDevice';\n }\n if (connection && !connection?.val && status !== 'red') {\n status = 'orange';\n }\n } else {\n status = mode === 'daemon' ? 'grey' : 'blue';\n }\n\n return status;\n };\n\n isCompactGroupCheck(id: string): boolean {\n const obj = this.adapters.find(({ _id }) => _id === `system.adapter.${id}`);\n return obj?.common?.compact || false;\n }\n\n getName(obj: ioBroker.InstanceObject): string {\n if (!obj?.common) {\n return '';\n }\n if (obj.common.titleLang) {\n return AdminUtils.getText(obj.common.titleLang, this.props.lang);\n }\n\n return AdminUtils.getText(obj.common.title, this.props.lang);\n }\n\n getInputOutput(id: string): { stateInput: number; stateOutput: number } {\n const stateInput = this.states[`${id}.inputCount`];\n const stateOutput = this.states[`${id}.outputCount`];\n return {\n stateInput: stateInput?.val ? (stateInput.val as number) : 0,\n stateOutput: stateOutput?.val ? (stateOutput.val as number) : 0,\n };\n }\n\n isAlive(id: string): boolean {\n const state = this.states[`${id}.alive`];\n return !!state?.val;\n }\n\n isConnectedToHost(id: string): boolean {\n const state = this.states[`${id}.connected`];\n return !!state?.val;\n }\n\n isConnected(id: string): boolean | string | null {\n const instance = this.state.instances[id];\n return this.states[`${instance.id}.info.connection`]\n ? (this.states[`${instance.id}.info.connection`].val as string | boolean)\n : null;\n }\n\n static getStatusFilter(value: string): InstanceStatusType {\n switch (value) {\n case 'not_alive':\n return 'red';\n\n case 'alive_no_device':\n return 'orangeDevice';\n\n case 'alive_not_connected':\n return 'orange';\n\n case 'ok':\n return 'green';\n\n case 'disabled':\n default:\n return 'grey';\n }\n }\n\n static getLogLevelIcon(level: ioBroker.LogLevel): JSX.Element | null {\n if (level === 'debug') {\n return <BugReportIcon />;\n }\n if (level === 'info') {\n return <InfoIcon />;\n }\n if (level === 'warn') {\n return <WarningIcon />;\n }\n if (level === 'error') {\n return <ErrorIcon />;\n }\n return null;\n }\n\n onDeleteInstance = (instance: InstanceEntry, deleteCustom: boolean, deleteAdapter: boolean): void => {\n this.setState({ deleting: instance.id }, () =>\n this.props.executeCommand(\n `del ${deleteAdapter ? instance.id.split('.')[0] : instance.id}${deleteCustom ? ' --custom' : ''}${this.props.expertMode ? ' --debug' : ''}`,\n ),\n );\n };\n\n isSentry(instanceId: string): boolean {\n return !!this.states[`${instanceId}.plugins.sentry.enabled`]?.val;\n }\n\n cacheInstances(): InstanceItem[] {\n const currentHostNoPrefix = this.state.currentHost.replace(/^system.host./, '');\n\n this._cacheList = Object.keys(this.state.instances).map(id => {\n const instance = this.state.instances[id];\n const running = InstanceGeneric.isRunning(instance.obj);\n const compactGroup = InstanceGeneric.isCompactGroup(instance.obj);\n const checkCompact = this.isCompactGroupCheck(instance.adapter) && this.state.compact;\n const compact = InstanceGeneric.isCompact(instance.obj);\n const supportCompact = instance.compact || false;\n const alive = this.isAlive(id);\n const connectedToHost = this.isConnectedToHost(id);\n const connected = this.isConnected(id);\n const name = this.getName(instance.obj);\n const logLevel = (this.states[`${id}.logLevel`]?.val as ioBroker.LogLevel) || instance.loglevel;\n const logLevelObject = instance.loglevel;\n const tier = instance?.obj?.common?.tier || 3;\n const loglevelIcon = Instances.getLogLevelIcon(logLevel);\n const inputOutput = this.getInputOutput(id);\n const modeSchedule = InstanceGeneric.isModeSchedule(instance.obj);\n const memoryLimitMB = InstanceGeneric.getMemoryLimitMB(instance.obj);\n\n const checkSentry = InstanceGeneric.getSentrySettings(instance.obj); // is it possible to enable/disable sentry for this adapter\n const currentSentry = this.isSentry(id);\n\n const item: InstanceItem = {\n id,\n running,\n host: instance.host,\n nameId: instance.id,\n compactGroup,\n checkCompact,\n mode: instance.mode,\n sentry: currentSentry,\n category: instance.obj.common.type || 'other',\n status: this.getInstanceStatus(instance.obj),\n alive,\n compact,\n supportCompact,\n connectedToHost,\n connected,\n name,\n logLevel,\n logLevelObject,\n tier,\n loglevelIcon,\n inputOutput,\n modeSchedule,\n checkSentry,\n memoryLimitMB,\n stoppedWhenWebExtension: instance.stoppedWhenWebExtension,\n allowInstanceSettings: this.props.repository[instance.adapter]\n ? this.props.repository[instance.adapter].allowInstanceSettings\n : true,\n allowInstanceDelete: this.props.repository[instance.adapter]\n ? this.props.repository[instance.adapter].allowInstanceDelete\n : true,\n allowInstanceLink: this.props.repository[instance.adapter]\n ? this.props.repository[instance.adapter].allowInstanceLink\n : true,\n };\n\n return item;\n });\n\n if (this.state.playArrow) {\n this._cacheList = this._cacheList.filter(({ running }) =>\n this.state.playArrow === 1 ? running : !running,\n );\n }\n\n if (this.state.onlyCurrentHost) {\n this._cacheList = this._cacheList.filter(({ host }) => host === currentHostNoPrefix);\n }\n\n if (this.state.filterText) {\n const filterText = this.state.filterText.toLowerCase();\n this._cacheList = this._cacheList.filter(\n ({ name, nameId }) =>\n name.toLowerCase().includes(filterText) || nameId.toLowerCase().includes(filterText),\n );\n }\n\n if (\n this.props.expertMode &&\n (this.state.filterCompactGroup || this.state.filterCompactGroup === 0) &&\n this.state.compact\n ) {\n this._cacheList = this._cacheList.filter(\n ({ compactGroup }) =>\n compactGroup === this.state.filterCompactGroup ||\n this.state.filterCompactGroup === 'All' ||\n (this.state.filterCompactGroup === 'default' && (compactGroup === null || compactGroup === 1)) ||\n (this.state.filterCompactGroup === 'controller' && compactGroup === '0'),\n );\n }\n if (this.state.filterMode) {\n this._cacheList = this._cacheList.filter(item => item.mode === this.state.filterMode);\n }\n if (this.state.filterStatus) {\n const status = Instances.getStatusFilter(this.state.filterStatus);\n this._cacheList = this._cacheList.filter(item => status === item.status);\n }\n\n return this._cacheList;\n }\n\n clearAllFilters(): void {\n const state: Partial<InstancesState> = {\n playArrow: 0,\n onlyCurrentHost: false,\n filterCompactGroup: 'All',\n filterMode: null,\n filterStatus: null,\n filterText: '',\n };\n\n this.localStorage.removeItem('instances.filter');\n this.localStorage.removeItem('Instances.playArrow');\n this.localStorage.removeItem('Instances.onlyCurrentHost');\n this.localStorage.removeItem('Instances.filterCompactGroup');\n this.localStorage.removeItem('Instances.filterMode');\n this.localStorage.removeItem('Instances.filterStatus');\n\n this._cacheList = null;\n this.setState(state as InstancesState, () => {\n if (this.inputRef.current) {\n this.inputRef.current.value = '';\n }\n this.cacheInstances();\n });\n }\n\n onMaxCompactGroupNumber = (maxCompactGroupNumber: number): void => this.setState({ maxCompactGroupNumber });\n\n onRegisterClose = (panel: string, closeCommand: (() => void) | null): void => {\n this.closeCommands[panel] = closeCommand;\n };\n\n getPanels(): JSX.Element[] | JSX.Element {\n if (!this._cacheList) {\n this.cacheInstances();\n }\n\n const context = {\n adminInstance: this.props.adminInstance,\n onDeleteInstance: this.onDeleteInstance,\n expertMode: this.props.expertMode,\n hosts: this.props.hosts,\n socket: this.props.socket,\n t: this.t,\n lang: this.props.lang,\n themeType: this.props.themeType,\n setMaxCompactGroupNumber: this.onMaxCompactGroupNumber,\n maxCompactGroupNumber: this.state.maxCompactGroupNumber,\n deleteCustomSupported: this.state.deleteCustomSupported,\n states: this.states,\n onToggleExpanded: this.onToggleExpanded,\n getInstanceStatus: this.getInstanceStatus,\n theme: this.props.theme,\n onRegisterClose: this.onRegisterClose,\n };\n\n const list = this._cacheList.map((item, idx) => {\n const id = item.id;\n const instance = this.state.instances[id];\n\n if (this.state.viewMode) {\n return {\n category: item.category,\n render: (\n <InstanceCard\n deleting={this.state.deleting === instance.id}\n id={id}\n idx={idx}\n instance={instance}\n key={instance.id}\n item={item}\n context={context}\n />\n ),\n };\n }\n return {\n category: item.category,\n render: (\n <InstanceRow\n deleting={this.state.deleting === instance.id}\n id={id}\n idx={idx}\n instance={instance}\n key={instance.id}\n item={item}\n context={context}\n />\n ),\n };\n });\n\n if (!list.length) {\n return (\n <div\n title={this.t('Click to clear all filters')}\n onClick={() => this.clearAllFilters()}\n style={{\n margin: 20,\n fontSize: 26,\n textAlign: 'center',\n cursor: 'pointer',\n }}\n >\n {this.t('all items are filtered out')}\n </div>\n );\n }\n\n if (!this.state.viewMode && this.state.viewCategory) {\n const categoryArray: string[] = [];\n\n list.forEach(({ category }) => !categoryArray.includes(category) && categoryArray.push(category));\n\n categoryArray.sort((a, b) => {\n if (a === 'general' && b !== 'general') {\n return -1;\n }\n if (a !== 'general' && b === 'general') {\n return 1;\n }\n if (a > b) {\n return 1;\n }\n if (a < b) {\n return -1;\n }\n return 0;\n });\n\n return categoryArray.map(name => (\n <InstanceCategory\n key={name}\n name={name}\n expanded={this.state.expandedFolder.includes(name)}\n onExpand={expanded => {\n const expandedFolder = [...this.state.expandedFolder];\n const pos = expandedFolder.indexOf(name);\n if (expanded) {\n if (pos === -1) {\n expandedFolder.push(name);\n expandedFolder.sort();\n }\n } else if (pos !== -1) {\n expandedFolder.splice(pos, 1);\n }\n this.localStorage.setItem('Instances.expandedFolder', JSON.stringify(expandedFolder));\n this.setState({ expandedFolder });\n }}\n >\n {list.filter(({ category }) => category === name).map(({ render }) => render)}\n </InstanceCategory>\n ));\n }\n\n return list.map(({ render }) => render);\n }\n\n onToggleExpanded = (panel: string, expanded: boolean): void => {\n if (this.expanded !== panel && expanded && this.closeCommands[this.expanded]) {\n this.closeCommands[this.expanded]();\n }\n this.expanded = expanded ? panel : null;\n };\n\n async getHostsData(): Promise<void> {\n void this.props.socket\n .getHostInfo(this.state.currentHost, false, 10000)\n .catch(error => {\n if (!error.toString().includes('May not read')) {\n window.alert(`Cannot read host information: ${error}`);\n }\n return {};\n })\n .then(hostData => {\n this._cacheList = null;\n this.setState({ hostData });\n });\n\n let memState;\n const memAvailable = await this.props.socket.getState(`${this.state.currentHost}.memAvailable`);\n const freemem = await this.props.socket.getState(`${this.state.currentHost}.freemem`);\n const object = await this.props.socket.getObject(`${this.state.currentHost}`);\n\n if (memAvailable) {\n memState = memAvailable;\n } else if (freemem) {\n memState = freemem;\n }\n\n if (memState) {\n const totalmem = (object?.native.hardware.totalmem || 0) / (1024 * 1024);\n const percent = Math.round(((memState.val as number) / totalmem) * 100);\n this._cacheList = null;\n this.setState({\n percent,\n memFree: memState.val as number,\n });\n }\n }\n\n changeStartedStopped = (): void => {\n this._cacheList = null;\n this.setState(state => {\n const playArrow = !state.playArrow ? 1 : state.playArrow === 1 ? 2 : 0;\n this.localStorage.setItem('Instances.playArrow', JSON.stringify(playArrow));\n return { playArrow };\n });\n };\n\n changeCompactGroup(filterCompactGroup: string | number): void {\n this._cacheList = null;\n this.localStorage.setItem('Instances.filterCompactGroup', JSON.stringify(filterCompactGroup));\n this.setState({ filterCompactGroup });\n }\n\n handleFilterChange(event: React.ChangeEvent<HTMLInputElement>): void {\n if (this.typingTimer) {\n clearTimeout(this.typingTimer);\n }\n\n this.typingTimer = setTimeout(\n value => {\n this.typingTimer = null;\n this._cacheList = null;\n this.setState({ filterText: value });\n this.localStorage.setItem('instances.filter', value);\n },\n 300,\n event.target.value,\n );\n }\n\n renderFilterDialog(): JSX.Element | null {\n if (!this.state.showFilterDialog) {\n return null;\n }\n\n return (\n <InstanceFilterDialog\n filterMode={this.state.filterMode}\n filterStatus={this.state.filterStatus}\n onClose={newState => {\n if (newState) {\n this._cacheList = null;\n this.localStorage.setItem('Instances.filterMode', newState.filterMode);\n this.localStorage.setItem('Instances.filterStatus', newState.filterStatus);\n this.setState(newState);\n }\n this.setState({ showFilterDialog: false });\n }}\n />\n );\n }\n\n render(): JSX.Element {\n if (!this.state.instances) {\n return <LinearProgress />;\n }\n console.log(`Width: ${this.props.width}`);\n\n if (this.props.currentHost !== this.state.currentHost) {\n this.hostsTimer =\n this.hostsTimer ||\n setTimeout(() => {\n this.hostsTimer = null;\n this.setState(\n {\n currentHost: this.props.currentHost,\n },\n () => this.updateData(),\n );\n }, 200);\n }\n\n if (this.state.dialog === 'config' && this.state.dialogProp) {\n const instance = this.state.instances[this.state.dialogProp] || null;\n if (instance) {\n return (\n <Paper style={styles.paper}>\n {this.renderFilterDialog()}\n <Config\n adapter={instance.id.split('.')[0]}\n adminInstance={this.props.adminInstance}\n style={styles.iframe}\n configStored={this.props.configStored}\n dateFormat={this.props.dateFormat}\n icon={instance.image}\n instance={parseInt(instance.id.split('.')[1])}\n isFloatComma={this.props.isFloatComma}\n jsonConfig={instance.jsonConfig}\n lang={this.props.lang}\n materialize={instance.materialize}\n socket={this.props.socket}\n t={this.t}\n theme={this.props.theme}\n themeName={this.props.themeName}\n themeType={this.props.themeType}\n width={this.props.width}\n version={instance.version}\n onRegisterIframeRef={(ref: HTMLIFrameElement) => this.props.onRegisterIframeRef(ref)}\n onUnregisterIframeRef={(ref: HTMLIFrameElement) => this.props.onUnregisterIframeRef(ref)}\n />\n </Paper>\n );\n }\n }\n\n if (this.shouldUpdateAfterDialogClosed) {\n this.shouldUpdateAfterDialogClosed = false;\n if (!this.statesUpdateTimer) {\n if (!this.statesUpdateTimer) {\n this.statesUpdateTimer = setTimeout(() => {\n this.statesUpdateTimer = null;\n this.forceUpdate();\n }, 300);\n }\n }\n }\n\n const hostData = this.state.hostData\n ? `${\n this.state.hostData['Disk free']\n ? `${this.t('Disk free')}: ${Math.round(this.state.hostData['Disk free'] / (this.state.hostData['Disk size'] / 100))}%, `\n : ''\n }${this.t('Total RAM usage')}: ${this.state.mem} Mb / ` +\n `${this.t('Free')}: ${this.state.percent}% = ${this.state.memFree} Mb ` +\n `[${this.t('Host')}: ${this.props.currentHostName} - ${this.state.processes} ${this.state.processes === 1 ? this.t('process') : this.t('processes')}]`\n : null;\n\n return (\n <TabContainer>\n {this.renderFilterDialog()}\n <TabHeader>\n <Tooltip\n title={this.t('Show / hide List')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n size=\"large\"\n onClick={() => {\n this.setState({ viewMode: !this.state.viewMode });\n this.localStorage.setItem('Instances.viewMode', this.state.viewMode ? 'false' : 'true');\n }}\n >\n {this.state.viewMode ? <ViewModuleIcon /> : <ViewListIcon />}\n </IconButton>\n </Tooltip>\n\n {!this.state.viewMode && (\n <Tooltip\n title={this.t('Category')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n size=\"large\"\n onClick={() => {\n this.setState({ viewCategory: !this.state.viewCategory });\n this.localStorage.setItem(\n 'Instances.viewCategory',\n this.state.viewCategory ? 'false' : 'true',\n );\n }}\n >\n <ListIcon color={this.state.viewCategory ? 'primary' : 'inherit'} />\n </IconButton>\n </Tooltip>\n )}\n\n {!this.state.viewMode && this.state.viewCategory && (\n <>\n <Tooltip\n title={this.t('expand all')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n size=\"large\"\n onClick={() => {\n // all folders\n const expandedFolder: string[] = [];\n this._cacheList.forEach(\n ({ category }) =>\n !expandedFolder.includes(category) && expandedFolder.push(category),\n );\n expandedFolder.sort();\n this.localStorage.setItem(\n 'Instances.expandedFolder',\n JSON.stringify(expandedFolder),\n );\n this.setState({ expandedFolder });\n }}\n >\n <FolderOpenIcon />\n </IconButton>\n </Tooltip>\n <Tooltip\n title={this.t('collapse all')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n size=\"large\"\n onClick={() => {\n this.localStorage.removeItem('Instances.expandedFolder');\n this.setState({ expandedFolder: [] });\n }}\n >\n <FolderIcon />\n </IconButton>\n </Tooltip>\n </>\n )}\n <Tooltip\n title={this.t('Reload')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n size=\"large\"\n onClick={() => this.getData(true)}\n >\n <RefreshIcon />\n </IconButton>\n </Tooltip>\n {this.props.hosts.length > 1 ? (\n <Tooltip\n title={this.t('Show instances only for current host')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n size=\"large\"\n onClick={() => {\n this.setState({ onlyCurrentHost: !this.state.onlyCurrentHost });\n this.localStorage.setItem(\n 'Instances.onlyCurrentHost',\n this.state.onlyCurrentHost ? 'false' : 'true',\n );\n }}\n >\n <DevicesIcon color={this.state.onlyCurrentHost ? 'primary' : 'inherit'} />\n </IconButton>\n </Tooltip>\n ) : null}\n <Tooltip\n title={this.t(\n !this.state.playArrow\n ? 'Show running or stopped instances'\n : this.state.playArrow === 1\n ? 'Showed only running instances'\n : 'Showed only stopped instances',\n )}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n size=\"large\"\n onClick={() => this.changeStartedStopped()}\n >\n <PlayArrowIcon\n style={this.state.playArrow === 2 ? { color: 'red' } : null}\n color={this.state.playArrow === 1 ? 'primary' : 'inherit'}\n />\n </IconButton>\n </Tooltip>\n <Tooltip\n title={this.t('Filter instances')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n size=\"large\"\n onClick={() => this.setState({ showFilterDialog: true })}\n sx={this.state.filterMode || this.state.filterStatus ? styles.filterActive : undefined}\n >\n <FilterListIcon style={{ width: 16, height: 16 }} />\n </IconButton>\n </Tooltip>\n {/* this.props.expertMode && <Tooltip title=\"sentry\" slotProps={{ popper: { sx: styles.tooltip } }}>\n <IconButton\n size=\"small\"\n style={styles.button}\n onClick={() => {\n this.setState({ sentry: !this.state.sentry });\n this.localStorage.setItem(`Instances.sentry`, this.state.sentry ? 'false' : 'true');\n }}\n >\n <CardMedia\n className={UtilsCommon.clsx(classes.sentry, !this.state.sentry && classes.contrast0)}\n component=\"img\"\n image={sentry}\n />\n </IconButton>\n </Tooltip> */}\n {this.props.expertMode && this.state.compact ? (\n <CustomSelectButton\n title={this.t('Filter specific compact group')}\n t={this.t}\n arrayItem={[\n { name: 'All' },\n { name: 'controller' },\n { name: 'default' },\n ...Array(this.state.maxCompactGroupNumber - 1)\n .fill(0)\n .map((_, idx) => ({ name: idx + 2 })),\n ]}\n buttonIcon={\n <ViewCompactIcon\n style={{ marginRight: 4 }}\n color=\"primary\"\n />\n }\n onClick={value => this.changeCompactGroup(value)}\n value={this.state.filterCompactGroup}\n />\n ) : null}\n <div style={styles.grow} />\n <TextField\n variant=\"standard\"\n inputRef={this.inputRef}\n label={this.t('Filter')}\n sx={{ margin: { xs: '0 0 2px 16px', md: '5px 0 5px 0' } }}\n defaultValue={this.state.filterText}\n onChange={(event: React.ChangeEvent<HTMLInputElement>) => this.handleFilterChange(event)}\n slotProps={{\n input: {\n endAdornment: this.state.filterText ? (\n <InputAdornment position=\"end\">\n <IconButton\n size=\"small\"\n onClick={() => {\n this.inputRef.current.value = '';\n this._cacheList = null;\n this.setState({ filterText: '' });\n this.localStorage.setItem('instances.filter', '');\n }}\n >\n <CloseIcon />\n </IconButton>\n </InputAdornment>\n ) : null,\n },\n }}\n />\n <div style={styles.grow} />\n <Box\n component=\"span\"\n sx={{ display: { xs: 'none', sm: 'inline-block' } }}\n >\n {hostData}\n </Box>\n </TabHeader>\n <TabContent overflow=\"auto\">\n <div style={this.state.viewMode ? styles.cards : undefined}>{this.getPanels()}</div>\n </TabContent>\n </TabContainer>\n );\n }\n}\n\nexport default withWidth()(Instances);\n"],"names":["styles","modalDialog","minWidth","maxWidth","overflowHidden","display","overflow","titleIcon","marginRight","content","fontSize","languageButton","position","right","top","languageButtonActive","theme","color","palette","primary","main","_ref","toggleTranslation","noTranslation","title","fullWidth","help","progress","icon","disableApplyIfNotChanged","applyButton","onClose","children","titleButtonApply","titleButtonClose","onApply","textInput","defaultValue","disableApply","value","setValue","useState","useEffect","Icon","Utils","getStyle","_jsxs","Dialog","open","disableEscapeKeyDown","sx","DialogTitle","_jsx","style","I18n","getLanguage","IconButton","size","undefined","onClick","t","LanguageIcon","DialogContent","paddingTop","TextField","autoComplete","autoFocus","variant","multiline","onChange","e","target","slotProps","input","endAdornment","InputAdornment","CloseIcon","DialogActions","Button","startIcon","CheckIcon","disabled","button","marginLeft","arrayItem","contained","buttonIcon","icons","translateSuffix","anchorEl","setAnchorEl","_Fragment","Tooltip","popper","pointerEvents","currentTarget","MaterialDynamicIcon","iconName","Menu","keepMounted","Boolean","map","_ref2","idx","name","MenuItem","selected","className","placeContent","checkIcon","green","cancelIcon","red","wrapperContent","flexFlow","alignItems","props","Grid2","container","direction","spacing","state","CheckCircleIcon","CancelIcon","Typography","ICON_CACHE","objIcon","All","AllInclusive","messaging","Message","communication","WifiTethering","general","Apps","logic","VpnKey","alarm","NotificationsActive","SystemUpdateAlt","EmojiSymbols","multimedia","PermMedia","network","SettingsEthernet","storage","Storage","visualization","Visibility","SettingsBrightness","DateRange","energy","BatteryChargingFull","garden","FilterVintage","geoposition","LocationOn","hardware","Phonelink","health","Favorite","household","House","infrastructure","Apartment","lighting","EmojiObjects","protocols","DialerSip","utility","PhonelinkSetup","vehicle","AirportShuttle","BubbleChart","Widgets","weather","Brightness6","metering","LinearScale","adapter","socket","url","setUrl","Promise","getObject","then","obj","_obj$common","common","src","alt","Element","Help","arrayLogLevel","root","height","flexDirection","scroll","overflowY","instanceIcon","width","verticalAlign","version","opacity","versionAliveConnected","mode","versionAliveNotConnected","buttonControl","padding","transition","enabled","backgroundColor","hide","visibility","formControl","marginBottom","logLevel","grey","blue","orange","orangeDevice","tooltip","Config","Component","constructor","super","refIframe","registered","onObjectChange","id","_obj$common2","_obj$common3","_obj$common4","this","instance","setState","running","onlyWWW","canStart","loglevel","onStateChange","instanceId","alive","val","connectedToHost","connected","extension","tempLogLevel","closeConfig","event","origin","window","location","data","message","easyMode","Router","doNavigate","configStored","startsWith","split","tab","subTab","parameter","checkedExist","showStopAdminDialog","logOnTheFlyValue","logLevelValue","showLogLevelDialog","componentDidUpdate","_this$refIframe","contentWindow","onRegisterIframeRef","componentDidMount","_this$refIframe2","fileExists","exist","exists","alert","subscribeObject","async","_obj$common5","_obj$common6","_obj$common7","_extension","_obj$common8","_obj$common9","_obj$common10","_obj$common11","getState","subscribeState","native","adapterDocLangs","docs","Object","keys","catch","error","console","addEventListener","attachEvent","getInstanceStatus","_this$state$common","_this$state$common2","_this$state$native","status","webExtension","webInstance","_this$state$native2","componentWillUnmount","unsubscribeObject","removeEventListener","detachEvent","onUnregisterIframeRef","renderHelpButton","jsonConfig","Fab","_this$state$adapterDo","lang","includes","AdminUtils","getDocsLinkForAdapter","adapterName","HelpIcon","getConfigurator","JsonConfig","themeName","themeType","dateFormat","isFloatComma","DeviceManager","materialize","ref","el","returnStopAdminDialog","ConfirmDialog","text","ok","result","extendObject","renderLogLevelDialog","FormControl","marginTop","InputLabel","Select","FormControlLabel","control","Checkbox","checked","label","FormHelperText","render","Paper","AppBar","Toolbar","stopPropagation","preventDefault","adminInstance","onFocus","PauseIcon","PlayArrowIcon","RefreshIcon","EditIcon","nowrap","component","img","LinksDialog","links","length","firstPort","port","showPort","find","item","textAlign","List","link","ListItemButton","getInvertedColor","replace","ListItemAvatar","Avatar","image","ListItemText","getText","arrayTier","desc","m","minHeight","background","default","boxShadow","imageBlock","justifyContent","hostInfo","addCompact","selectStyle","margin","deleting","left","zIndex","sentry","objectFit","filter","displayFlex","marginLeft5","marginRight5","instanceStateNotEnabled1","instanceStateNotEnabled2","instanceStateNotAlive1","instanceStateNotAlive2","instanceStateAliveNotConnected1","instanceStateAliveNotConnected2","instanceStateAliveAndConnected1","instanceStateAliveAndConnected2","statusIcon_green","border","borderRadius","statusIcon_red","statusIcon_orange","statusIcon_orangeDevice","statusIcon_blue","statusIcon_grey","hiddenOpacity","cursor","smallAvatar","statusIndicator","transparent","silly","debug","info","warn","amber","scheduleIcon","memoryIcon","contrast0","hidden","okSymbol","okSymbolInner","editButton","isTouchDevice","maxHeight","InstanceGeneric","arguments","commandClose","expanded","context","onRegisterClose","getDefaultState","openDialog","openSelectCompactGroup","openDialogCron","openDialogSchedule","openDialogName","openDialogLogLevel","openDialogDelete","openDialogMemoryLimit","openDialogHost","openDialogCompact","openDialogTier","showLinks","logOnTheFly","compactGroup","maxCompactGroupNumber","tier","host","deleteCustom","visibleEdit","isCompact","runAsCompactMode","isSentry","_this$props$context$s","states","getSchedule","schedule","isRunning","isCompactGroup","getSentrySettings","_obj$common6$plugins","plugins","isModeSchedule","getMemoryLimitMB","memoryLimitMB","getRestartSchedule","restartSchedule","setCommonValue","toggleSentry","sentryEnabled","setTier","setName","titleLang","setLogLevel","setSchedule","setObject","_id","setMemoryLimitMB","toggleCompactMode","setRestartSchedule","setHost","setCompactGroup","parseInt","setMaxCompactGroupNumber","getMemory","renderDeleteDialog","deleteCustomSupported","supportCustoms","DeleteIcon","onDeleteInstance","renderEditNameDialog","CustomModal","toString","renderEditLogLevelDialog","renderEditMemoryLimitDialog","parseFloat","renderEditHostDialog","SelectWithIcon","list","hosts","removePrefix","renderEditCompactGroupDialog","autoWidth","onOpen","Array","fill","_","renderEditTierDialog","renderStopAdminDialog","renderLinksDialog","renderCronDialog","ComplexCron","clearButton","cron","onOk","renderScheduleDialog","renderDialogs","renderModeIcon","getModeIcon","stoppedWhenWebExtension","WarningIcon","SettingsIcon","ScheduleIcon","renderTooltip","next","prev","cronText","cronstrue","locale","expr","parser","toDate","State","toLocaleDateString","toLocaleTimeString","renderMemoryUsage","InstanceInfo","MemoryIcon","renderPlayPause","renderSettingsButton","config","BuildIcon","renderRestartButton","renderLink","InputIcon","renderEditNameButton","renderInputOutput","ImportExportIcon","inputOutput","stateInput","stateOutput","renderHost","TextWithIcon","renderEditHostButton","renderSentry","CardMedia","noSentry","renderCompactGroupEnabled","expertMode","checkCompact","ViewCompactIcon","compact","renderVersion","renderInfo","hideName","instanceName","renderLogLevel","loglevelIcon","logLevelObject","renderSchedule","renderRestartSchedule","renderRamLimit","renderCompactGroup","renderTier","_arrayTier$find","LowPriorityIcon","renderHostWithButton","HostIcon","renderDeleteButton","instances","getAdapterInstances","genericStyles","fab","bottom","collapse","collapseOff","close","mb","transform","footerBlock","p","versionDate","alignSelf","fontWeight","paddingLeft","cardContent","mt","cardContentH5","marginTop10","overflowAuto","collapseIcon","enableButton","paddingBottom","backgroundSize","assign","mouseOver","renderSecondCardInfo","_this$props$context$h","Box","CardContent","onToggleExpanded","gutterBottom","modeSchedule","supportCompact","IsVisible","sm","xs","checkSentry","Card","onMouseOver","onMouseOut","MoreVertIcon","onMouseEnter","onMouseLeave","row","pl","pr","invisible","ml","hidden1250","whiteSpace","textOverflow","visible1250","visible1050","hidden1050","hidden800","visible800","hidden570","visible570","hidden1230","hidden380","flexGrow","secondaryHeading","secondaryHeadingDiv","secondaryHeadingDivDiv","gridStyle","lineHeight","paddingRight200","maxWidth300","width150","desktopRow","desktopIcon","desktopRowContent","desktopButton","rowGridLine","desktop","innerWidth","renderDetails","AccordionDetails","md","_this$props$context$h2","stateTooltip","rootStyle","Accordion","square","AccordionSummary","expandIcon","ExpandMoreIcon","wrap","paper","pre","rowBlock","select","checkbox","statusIcon_1","statusIcon_2","statusIcon_3","statusIcon_4","statusIcon_5","statusIcon_6","menuWrapper","iconWrapper","textWrapper","statusIcon_gray","menuValue","modeArray","statusArray","none","_class","not_alive","alive_not_connected","alive_no_device","filterMode","filterStatus","modeCheck","setModeCheck","statusCheck","setStatusCheck","filterIcon","dividers","IconCheck","IconClose","iconStyle","wrapperName","wrapperChildren","accordionDetails","accordion","key","onExpand","iframe","cards","filterActive","grow","Instances","localStorage","statePromise","adapters","statesUpdateTimer","typingTimer","hostsTimer","wordCache","inputRef","subscribed","_cacheList","shouldUpdateAfterDialogClosed","closeCommands","translate","word","arg1","arg2","getInstances","start","Date","now","instancesFromWorker","instancesWorker","values","memRssId","currentHost","processes","mem","forEach","_host","i","inst","currentHostName","formatted","sort","a","b","pA","pB","numA","numB","nameA","nameB","newState","pop","getName","adminUI","compactMode","rawLinks","localLinks","localLink","_default","names","linkName","urls","replaceLink","hostname","push","eId","log","c","compactGroupMemRssId","Math","round","getParamsLocalAndPanel","_baseSettings$config","_baseSettings$config$","readBaseSettings","system","playArrow","filterCompactGroup","JSON","parse","getItem","onlyCurrentHost","viewMode","viewCategory","oldState","dialog","dialogProp","clearTimeout","setTimeout","forceUpdate","connection","deleteAdapter","executeCommand","onMaxCompactGroupNumber","panel","closeCommand","changeStartedStopped","setItem","stringify","_localStorage","expandedFolder","hostData","percent","memFree","filterText","showFilterDialog","createRef","registerHandler","updateData","checkFeatureSupported","getData","getHostsData","subscribeStates","unregisterHandler","getStates","update","getForeignStates","getDerivedStateFromProps","getLocation","getAdapters","statesProm","_adapters","all","isUnsubscribe","func","unsubscribeState","call","isCompactGroupCheck","getInputOutput","isAlive","isConnectedToHost","isConnected","getStatusFilter","getLogLevelIcon","level","BugReportIcon","InfoIcon","ErrorIcon","_this$states","cacheInstances","currentHostNoPrefix","_this$states2","_instance$obj","_instance$obj$common","currentSentry","nameId","category","type","allowInstanceSettings","repository","allowInstanceDelete","allowInstanceLink","_ref3","toLowerCase","_ref4","_ref5","clearAllFilters","removeItem","current","getPanels","InstanceCard","InstanceRow","categoryArray","_ref6","InstanceCategory","pos","indexOf","splice","_ref7","_ref8","_ref9","memState","getHostInfo","memAvailable","freemem","object","totalmem","changeCompactGroup","handleFilterChange","renderFilterDialog","InstanceFilterDialog","LinearProgress","TabContainer","TabHeader","ViewModuleIcon","ViewListIcon","ListIcon","_ref10","FolderOpenIcon","FolderIcon","DevicesIcon","FilterListIcon","CustomSelectButton","TabContent","withWidth"],"sourceRoot":""}