iobroker.admin 7.4.7 → 7.4.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -9
- package/adminWww/asset-manifest.json +27 -27
- package/adminWww/index.html +1 -1
- package/adminWww/static/js/1892.3c30ecff.chunk.js.map +1 -1
- package/adminWww/static/js/{288.12201160.chunk.js → 288.18e82468.chunk.js} +2 -2
- package/adminWww/static/js/288.18e82468.chunk.js.map +1 -0
- package/adminWww/static/js/3363.a4c36649.chunk.js.map +1 -1
- package/adminWww/static/js/3834.d81ffc60.chunk.js +2 -0
- package/adminWww/static/js/3834.d81ffc60.chunk.js.map +1 -0
- package/adminWww/static/js/4289.a5fc8b2e.chunk.js +2 -0
- package/adminWww/static/js/4289.a5fc8b2e.chunk.js.map +1 -0
- package/adminWww/static/js/471.8a82d825.chunk.js.map +1 -1
- package/adminWww/static/js/4720.6112531a.chunk.js +2 -0
- package/adminWww/static/js/4720.6112531a.chunk.js.map +1 -0
- package/adminWww/static/js/5687.d7fa0a4e.chunk.js +2 -0
- package/adminWww/static/js/5687.d7fa0a4e.chunk.js.map +1 -0
- package/adminWww/static/js/{6361.48a28196.chunk.js → 6361.ec86271d.chunk.js} +2 -2
- package/adminWww/static/js/6361.ec86271d.chunk.js.map +1 -0
- package/adminWww/static/js/6603.ee9b0df5.chunk.js +3 -0
- package/adminWww/static/js/6603.ee9b0df5.chunk.js.map +1 -0
- package/adminWww/static/js/6853.6655ed69.chunk.js +2 -0
- package/adminWww/static/js/6853.6655ed69.chunk.js.map +1 -0
- package/adminWww/static/js/{7137.7b5ca6b5.chunk.js → 7137.c988b7e1.chunk.js} +2 -2
- package/adminWww/static/js/7137.c988b7e1.chunk.js.map +1 -0
- package/adminWww/static/js/{7424.223daaa3.chunk.js → 7424.5cf79afc.chunk.js} +2 -2
- package/adminWww/static/js/7424.5cf79afc.chunk.js.map +1 -0
- package/adminWww/static/js/{8144.ae502bba.chunk.js → 8144.5989b02c.chunk.js} +3 -3
- package/adminWww/static/js/8144.5989b02c.chunk.js.map +1 -0
- package/adminWww/static/js/8387.2cb15163.chunk.js.map +1 -1
- package/adminWww/static/js/9823.8a42dea5.chunk.js +3 -0
- package/adminWww/static/js/9823.8a42dea5.chunk.js.map +1 -0
- package/adminWww/static/js/{main.d26a969d.js → main.dbb63dc9.js} +2 -2
- package/adminWww/static/js/{main.d26a969d.js.map → main.dbb63dc9.js.map} +1 -1
- package/build-backend/main.js +6 -1
- package/build-backend/main.js.map +1 -1
- package/io-package.json +27 -27
- package/package.json +4 -4
- package/adminWww/static/js/288.12201160.chunk.js.map +0 -1
- package/adminWww/static/js/3834.2e04eb51.chunk.js +0 -2
- package/adminWww/static/js/3834.2e04eb51.chunk.js.map +0 -1
- package/adminWww/static/js/4289.e9a5790f.chunk.js +0 -2
- package/adminWww/static/js/4289.e9a5790f.chunk.js.map +0 -1
- package/adminWww/static/js/4720.72b71322.chunk.js +0 -2
- package/adminWww/static/js/4720.72b71322.chunk.js.map +0 -1
- package/adminWww/static/js/5687.c249e41f.chunk.js +0 -2
- package/adminWww/static/js/5687.c249e41f.chunk.js.map +0 -1
- package/adminWww/static/js/6361.48a28196.chunk.js.map +0 -1
- package/adminWww/static/js/6603.614b4df4.chunk.js +0 -3
- package/adminWww/static/js/6603.614b4df4.chunk.js.map +0 -1
- package/adminWww/static/js/6853.cfc24286.chunk.js +0 -2
- package/adminWww/static/js/6853.cfc24286.chunk.js.map +0 -1
- package/adminWww/static/js/7137.7b5ca6b5.chunk.js.map +0 -1
- package/adminWww/static/js/7424.223daaa3.chunk.js.map +0 -1
- package/adminWww/static/js/8144.ae502bba.chunk.js.map +0 -1
- package/adminWww/static/js/9823.f3f5cd8c.chunk.js +0 -3
- package/adminWww/static/js/9823.f3f5cd8c.chunk.js.map +0 -1
- /package/adminWww/static/js/{6603.614b4df4.chunk.js.LICENSE.txt → 6603.ee9b0df5.chunk.js.LICENSE.txt} +0 -0
- /package/adminWww/static/js/{8144.ae502bba.chunk.js.LICENSE.txt → 8144.5989b02c.chunk.js.LICENSE.txt} +0 -0
- /package/adminWww/static/js/{9823.f3f5cd8c.chunk.js.LICENSE.txt → 9823.8a42dea5.chunk.js.LICENSE.txt} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static/js/471.8a82d825.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;\nconst _excluded = [\"title\", \"titleId\"];\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); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgSentry(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\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 ArrowBack,\n} from '@mui/icons-material';\n\nimport {\n Icon,\n DialogConfirm,\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 '../helpers/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 expertMode: 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 handleNavigation: (tab: string, subTab?: string, param?: string) => void;\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 this.props.handleNavigation('easy');\n } else {\n this.props.handleNavigation('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 this.props.handleNavigation(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 expertMode={this.props.expertMode}\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 <DialogConfirm\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\n variant=\"dense\"\n style={{ marginLeft: 8 }}\n >\n <Typography\n variant=\"h6\"\n color=\"inherit\"\n >\n <IconButton\n size=\"small\"\n onClick={() => {\n if (this.props.easyMode) {\n this.props.handleNavigation('easy');\n } else {\n this.props.handleNavigation('tab-instances');\n }\n }}\n onFocus={event => event.stopPropagation()}\n style={{\n marginRight: 10,\n }}\n >\n <ArrowBack />\n </IconButton>\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;\nconst _excluded = [\"title\", \"titleId\"];\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); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgSentryNo(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\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 '../../helpers/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 DialogConfirm,\n SelectWithIcon,\n DialogComplexCron,\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 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 '../../helpers/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': AdminUtils.isTouchDevice()\n ? undefined\n : {\n display: 'none',\n maxHeight: 32,\n },\n '&:hover': AdminUtils.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 saveScrollPosition: () => void;\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 <DialogConfirm\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 <DialogComplexCron\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 <DialogComplexCron\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 this.props.saveScrollPosition();\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 '../../helpers/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 '@/helpers/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;\nconst _excluded = [\"title\", \"titleId\"];\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); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgFilter(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\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 '@/helpers/AdminUtils';\nimport { replaceLink } from '@/helpers/utils';\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 handleNavigation: (tab: string, subTab?: string, param?: string) => 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 static lastScrollPosition = 0;\n\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 readonly refTabContent: React.RefObject<HTMLDivElement>;\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 this.refTabContent = 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.getObjects();\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] as string };\n } else {\n link = links[linkName] as InstanceLink;\n }\n\n const urls =\n 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 saveScrollPosition = (): void => {\n Instances.lastScrollPosition = (this.refTabContent.current?.parentNode as HTMLDivElement)?.scrollTop;\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 saveScrollPosition={this.saveScrollPosition}\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 saveScrollPosition={this.saveScrollPosition}\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\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 expertMode={this.props.expertMode}\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 handleNavigation={this.props.handleNavigation}\n />\n </Paper>\n );\n }\n } else if (Instances.lastScrollPosition) {\n setTimeout(\n (scrollPos: number): void => {\n if (this.refTabContent.current?.parentNode) {\n (this.refTabContent.current?.parentNode as HTMLDivElement).scrollTop = scrollPos;\n }\n },\n 200,\n Instances.lastScrollPosition,\n );\n Instances.lastScrollPosition = 0;\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\n ref={this.refTabContent}\n style={this.state.viewMode ? styles.cards : undefined}\n >\n {this.getPanels()}\n </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","_objectSpread","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","concat","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","handleNavigation","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","_unused","_unused2","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","expertMode","themeName","themeType","dateFormat","isFloatComma","DeviceManager","materialize","ref","el","returnStopAdminDialog","DialogConfirm","text","ok","result","extendObject","renderLogLevelDialog","FormControl","marginTop","InputLabel","Select","FormControlLabel","control","Checkbox","checked","label","FormHelperText","render","Paper","AppBar","Toolbar","onFocus","stopPropagation","ArrowBack","preventDefault","adminInstance","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","DialogComplexCron","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","saveScrollPosition","Router","doNavigate","BuildIcon","renderRestartButton","renderLink","InputIcon","renderEditNameButton","renderInputOutput","ImportExportIcon","inputOutput","stateInput","stateOutput","renderHost","TextWithIcon","renderEditHostButton","renderSentry","CardMedia","noSentry","renderCompactGroupEnabled","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","refTabContent","subscribed","_cacheList","shouldUpdateAfterDialogClosed","closeCommands","translate","word","arg1","arg2","getInstances","start","Date","now","instancesFromWorker","instancesWorker","getObjects","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","_this$refTabContent$c","_this$refTabContent$c2","lastScrollPosition","current","parentNode","scrollTop","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","getPanels","InstanceCard","InstanceRow","categoryArray","_ref6","InstanceCategory","pos","indexOf","splice","_ref7","_ref8","_ref9","memState","getHostInfo","memAvailable","freemem","object","totalmem","changeCompactGroup","handleFilterChange","renderFilterDialog","InstanceFilterDialog","LinearProgress","scrollPos","_this$refTabContent$c3","_this$refTabContent$c4","TabContainer","TabHeader","ViewModuleIcon","ViewListIcon","ListIcon","_ref10","FolderOpenIcon","FolderIcon","DevicesIcon","FilterListIcon","CustomSelectButton","TabContent","withWidth"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"static/js/471.8a82d825.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;\nconst _excluded = [\"title\", \"titleId\"];\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); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgSentry(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\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 type SvgIconComponent,\n} 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 ArrowBack,\n} from '@mui/icons-material';\n\nimport {\n Icon,\n DialogConfirm,\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 '../helpers/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 expertMode: 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 handleNavigation: (tab: string, subTab?: string, param?: string) => void;\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 this.props.handleNavigation('easy');\n } else {\n this.props.handleNavigation('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 this.props.handleNavigation(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 expertMode={this.props.expertMode}\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 <DialogConfirm\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\n variant=\"dense\"\n style={{ marginLeft: 8 }}\n >\n <Typography\n variant=\"h6\"\n color=\"inherit\"\n >\n <IconButton\n size=\"small\"\n onClick={() => {\n if (this.props.easyMode) {\n this.props.handleNavigation('easy');\n } else {\n this.props.handleNavigation('tab-instances');\n }\n }}\n onFocus={event => event.stopPropagation()}\n style={{\n marginRight: 10,\n }}\n >\n <ArrowBack />\n </IconButton>\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;\nconst _excluded = [\"title\", \"titleId\"];\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); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgSentryNo(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\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 '../../helpers/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 DialogConfirm,\n SelectWithIcon,\n DialogComplexCron,\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 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 '../../helpers/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': AdminUtils.isTouchDevice()\n ? undefined\n : {\n display: 'none',\n maxHeight: 32,\n },\n '&:hover': AdminUtils.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 saveScrollPosition: () => void;\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 <DialogConfirm\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 <DialogComplexCron\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 <DialogComplexCron\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 this.props.saveScrollPosition();\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 '../../helpers/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 '@/helpers/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;\nconst _excluded = [\"title\", \"titleId\"];\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); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgFilter(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\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 '@/helpers/AdminUtils';\nimport { replaceLink } from '@/helpers/utils';\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 handleNavigation: (tab: string, subTab?: string, param?: string) => 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 static lastScrollPosition = 0;\n\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 readonly refTabContent: React.RefObject<HTMLDivElement>;\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 this.refTabContent = 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.getObjects();\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] as string };\n } else {\n link = links[linkName] as InstanceLink;\n }\n\n const urls =\n 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 saveScrollPosition = (): void => {\n Instances.lastScrollPosition = (this.refTabContent.current?.parentNode as HTMLDivElement)?.scrollTop;\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 saveScrollPosition={this.saveScrollPosition}\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 saveScrollPosition={this.saveScrollPosition}\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\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 expertMode={this.props.expertMode}\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 handleNavigation={this.props.handleNavigation}\n />\n </Paper>\n );\n }\n } else if (Instances.lastScrollPosition) {\n setTimeout(\n (scrollPos: number): void => {\n if (this.refTabContent.current?.parentNode) {\n (this.refTabContent.current?.parentNode as HTMLDivElement).scrollTop = scrollPos;\n }\n },\n 200,\n Instances.lastScrollPosition,\n );\n Instances.lastScrollPosition = 0;\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\n ref={this.refTabContent}\n style={this.state.viewMode ? styles.cards : undefined}\n >\n {this.getPanels()}\n </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","_objectSpread","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","concat","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","handleNavigation","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","_unused","_unused2","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","expertMode","themeName","themeType","dateFormat","isFloatComma","DeviceManager","materialize","ref","el","returnStopAdminDialog","DialogConfirm","text","ok","result","extendObject","renderLogLevelDialog","FormControl","marginTop","InputLabel","Select","FormControlLabel","control","Checkbox","checked","label","FormHelperText","render","Paper","AppBar","Toolbar","onFocus","stopPropagation","ArrowBack","preventDefault","adminInstance","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","DialogComplexCron","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","saveScrollPosition","Router","doNavigate","BuildIcon","renderRestartButton","renderLink","InputIcon","renderEditNameButton","renderInputOutput","ImportExportIcon","inputOutput","stateInput","stateOutput","renderHost","TextWithIcon","renderEditHostButton","renderSentry","CardMedia","noSentry","renderCompactGroupEnabled","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","refTabContent","subscribed","_cacheList","shouldUpdateAfterDialogClosed","closeCommands","translate","word","arg1","arg2","getInstances","start","Date","now","instancesFromWorker","instancesWorker","getObjects","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","_this$refTabContent$c","_this$refTabContent$c2","lastScrollPosition","current","parentNode","scrollTop","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","getPanels","InstanceCard","InstanceRow","categoryArray","_ref6","InstanceCategory","pos","indexOf","splice","_ref7","_ref8","_ref9","memState","getHostInfo","memAvailable","freemem","object","totalmem","changeCompactGroup","handleFilterChange","renderFilterDialog","InstanceFilterDialog","LinearProgress","scrollPos","_this$refTabContent$c3","_this$refTabContent$c4","TabContainer","TabHeader","ViewModuleIcon","ViewListIcon","ListIcon","_ref10","FolderOpenIcon","FolderIcon","DevicesIcon","FilterListIcon","CustomSelectButton","TabContent","withWidth"],"sourceRoot":""}
|