iobroker.admin 7.4.13 → 7.4.15
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 +7 -6
- package/adminWww/asset-manifest.json +23 -26
- package/adminWww/index.html +1 -1
- package/adminWww/static/js/{1809.3970d4d2.chunk.js → 1809.797e6d9a.chunk.js} +3 -3
- package/adminWww/static/js/1809.797e6d9a.chunk.js.map +1 -0
- package/adminWww/static/js/288.b83253b7.chunk.js +2 -0
- package/adminWww/static/js/288.b83253b7.chunk.js.map +1 -0
- package/adminWww/static/js/3849.c8d3a754.chunk.js +2 -0
- package/adminWww/static/js/3849.c8d3a754.chunk.js.map +1 -0
- package/adminWww/static/js/4289.3fbd195d.chunk.js +2 -0
- package/adminWww/static/js/4289.3fbd195d.chunk.js.map +1 -0
- package/adminWww/static/js/471.c7298807.chunk.js +2 -0
- package/adminWww/static/js/471.c7298807.chunk.js.map +1 -0
- package/adminWww/static/js/6603.eaf9efa3.chunk.js +3 -0
- package/adminWww/static/js/6603.eaf9efa3.chunk.js.map +1 -0
- package/adminWww/static/js/{6853.1d96bb1c.chunk.js → 6853.c817c98e.chunk.js} +2 -2
- package/adminWww/static/js/6853.c817c98e.chunk.js.map +1 -0
- package/adminWww/static/js/7424.38cdae41.chunk.js +2 -0
- package/adminWww/static/js/7424.38cdae41.chunk.js.map +1 -0
- package/adminWww/static/js/7435.0f078b05.chunk.js +2 -0
- package/adminWww/static/js/7435.0f078b05.chunk.js.map +1 -0
- package/adminWww/static/js/8222.68da8b63.chunk.js +2 -0
- package/adminWww/static/js/8222.68da8b63.chunk.js.map +1 -0
- package/adminWww/static/js/{main.6be9bde2.js → main.d3c54b8f.js} +2 -2
- package/adminWww/static/js/{main.6be9bde2.js.map → main.d3c54b8f.js.map} +1 -1
- package/io-package.json +15 -15
- package/package.json +4 -4
- package/adminWww/static/js/1809.3970d4d2.chunk.js.map +0 -1
- package/adminWww/static/js/288.492f41ab.chunk.js +0 -2
- package/adminWww/static/js/288.492f41ab.chunk.js.map +0 -1
- package/adminWww/static/js/3849.363dd3ca.chunk.js +0 -2
- package/adminWww/static/js/3849.363dd3ca.chunk.js.map +0 -1
- package/adminWww/static/js/4289.6ac6a4bc.chunk.js +0 -2
- package/adminWww/static/js/4289.6ac6a4bc.chunk.js.map +0 -1
- package/adminWww/static/js/471.8a82d825.chunk.js +0 -2
- package/adminWww/static/js/471.8a82d825.chunk.js.map +0 -1
- package/adminWww/static/js/6603.51b36d23.chunk.js +0 -3
- package/adminWww/static/js/6603.51b36d23.chunk.js.map +0 -1
- package/adminWww/static/js/6853.1d96bb1c.chunk.js.map +0 -1
- package/adminWww/static/js/6858.7b3f28b9.chunk.js +0 -2
- package/adminWww/static/js/6858.7b3f28b9.chunk.js.map +0 -1
- package/adminWww/static/js/7424.a53c0d15.chunk.js +0 -2
- package/adminWww/static/js/7424.a53c0d15.chunk.js.map +0 -1
- package/adminWww/static/js/8222.399b9b24.chunk.js +0 -2
- package/adminWww/static/js/8222.399b9b24.chunk.js.map +0 -1
- package/adminWww/static/media/thread.78489b630e6b27d860ae133d9ccca0a6.svg +0 -4
- package/adminWww/static/media/z-wave.09176b331d7b6b4b101cffaddf3e441a.svg +0 -3
- package/adminWww/static/media/zigbee.0e17b818ea0c78a95e189da4dac70a6e.svg +0 -4
- /package/adminWww/static/js/{1809.3970d4d2.chunk.js.LICENSE.txt → 1809.797e6d9a.chunk.js.LICENSE.txt} +0 -0
- /package/adminWww/static/js/{6603.51b36d23.chunk.js.LICENSE.txt → 6603.eaf9efa3.chunk.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static/js/471.c7298807.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 Box,\n Menu,\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 MoreVert,\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 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 showMore: HTMLButtonElement | null;\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 showMore: null,\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 <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) ? this.props.lang : 'en';\n window.open(\n AdminUtils.getDocsLinkForAdapter({ lang, adapterName: this.props.adapter }),\n 'help',\n );\n }}\n >\n <HelpIcon />\n </Fab>\n </Tooltip>\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 const buttons = [\n this.props.version ? (\n <span\n key=\"version\"\n style={{\n ...styles.version,\n ...styles[this.getInstanceStatus()],\n }}\n >\n v{this.props.version}\n </span>\n ) : null,\n <Tooltip\n key=\"start\"\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}` === this.props.adminInstance\n ) {\n this.setState({ showStopAdminDialog: true, showMore: null });\n } else {\n this.setState({ showMore: null });\n this.props.socket\n .extendObject(`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 key=\"restart\"\n title={this.props.t('Restart')}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <span>\n <IconButton\n size=\"small\"\n onClick={event => {\n this.setState({ showMore: null });\n event.stopPropagation();\n this.props.socket\n .extendObject(`system.adapter.${this.props.adapter}.${this.props.instance}`, {})\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 key=\"log\"\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 key=\"logLevel\"\n >\n <span style={styles.logLevel}>\n {this.state.tempLogLevel !== this.state.logLevel ? `/ ${this.state.logLevel}` : this.state.logLevel}\n </span>\n </Tooltip>,\n <Tooltip\n title={this.props.t('Edit log level rule for %s', `${this.props.adapter}.${this.props.instance}`)}\n key=\"editLog\"\n >\n <IconButton\n size=\"small\"\n onClick={event => {\n event.stopPropagation();\n this.setState({ showLogLevelDialog: true, showMore: null });\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 ];\n\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, paddingRight: 6 }}\n >\n <Typography\n variant=\"h6\"\n color=\"inherit\"\n style={{ display: 'flex', alignItems: 'center' }}\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 <Box\n component=\"span\"\n sx={(theme: IobTheme): any => ({\n [theme.breakpoints.down('md')]: {\n display: 'none',\n },\n marginRight: '8px',\n })}\n >\n {`${this.props.t('Instance settings')}:`}\n </Box>\n {`${this.props.adapter}.${this.props.instance}`}\n <Box\n component=\"div\"\n sx={(theme: IobTheme): any => ({\n [theme.breakpoints.down('sm')]: {\n display: 'none',\n },\n })}\n >\n {buttons}\n </Box>\n <Box\n component=\"span\"\n sx={(theme: IobTheme): any => ({\n [theme.breakpoints.up('sm')]: {\n display: 'none',\n },\n })}\n >\n <IconButton\n style={{ marginLeft: 8 }}\n onClick={e => this.setState({ showMore: e.currentTarget })}\n >\n <MoreVert />\n </IconButton>\n {this.state.showMore ? (\n <Menu\n open={!0}\n anchorEl={this.state.showMore}\n onClose={() => this.setState({ showMore: null })}\n >\n {buttons}\n </Menu>\n ) : null}\n </Box>\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 <div style={{ flexGrow: 1 }} />\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","showMore","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","buttons","stopPropagation","preventDefault","adminInstance","onFocus","PauseIcon","PlayArrowIcon","RefreshIcon","EditIcon","Paper","AppBar","Toolbar","paddingRight","ArrowBack","Box","component","breakpoints","down","up","MoreVert","flexGrow","nowrap","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","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","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":""}
|