@iobroker/gui-components 10.0.9 → 10.0.10
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 +2 -2
- package/build/Components/ObjectBrowser/renderLeaf.js +4 -1
- package/build/Components/ObjectBrowser/renderLeaf.js.map +1 -1
- package/build/GenericApp.js +4 -10
- package/build/GenericApp.js.map +1 -1
- package/build/ThemeModern.js +1 -1
- package/build/ThemeModern.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -36,7 +36,7 @@ npm create vite@latest src -- --template react-ts
|
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"@emotion/react": "^11.14.0",
|
|
38
38
|
"@emotion/styled": "^11.14.1",
|
|
39
|
-
"@iobroker/gui-components": "^10.0.
|
|
39
|
+
"@iobroker/gui-components": "^10.0.10",
|
|
40
40
|
"@mui/icons-material": "^9.0.1",
|
|
41
41
|
"@mui/material": "^9.0.1",
|
|
42
42
|
"react": "^19.2.5",
|
|
@@ -856,7 +856,7 @@ You can find the migration instructions:
|
|
|
856
856
|
-->
|
|
857
857
|
|
|
858
858
|
## Changelog
|
|
859
|
-
### 10.0.
|
|
859
|
+
### 10.0.10 (2026-07-31)
|
|
860
860
|
|
|
861
861
|
- (@GermanBluefox) Added support of styled scrollbars
|
|
862
862
|
|
|
@@ -473,7 +473,10 @@ export function renderLeaf(that, item, isExpanded, counter) {
|
|
|
473
473
|
let checkColor = common?.color;
|
|
474
474
|
let invertBackground;
|
|
475
475
|
if (checkColor && !that.state.selected.includes(id)) {
|
|
476
|
-
|
|
476
|
+
// Only a rough reference value for the distance check, so the type is enough. Asking for the
|
|
477
|
+
// name meant that every theme beyond "dark" and "blue" - "modernDark" among them - was
|
|
478
|
+
// compared against white and the contrast was judged wrongly.
|
|
479
|
+
const background = that.props.themeType === 'dark' ? '#1f1f1f' : '#FFFFFF';
|
|
477
480
|
const distance = Utils.colorDistance(checkColor, background);
|
|
478
481
|
// console.log(`Distance: ${checkColor} - ${background} = ${distance}`);
|
|
479
482
|
if (distance < 1000) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderLeaf.js","sourceRoot":"./src/","sources":["Components/ObjectBrowser/renderLeaf.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright 2020-2026, Denis Haev <dogafox@gmail.com>\n *\n * MIT License\n *\n * Part of the object browser, see ./ObjectBrowserClass.tsx\n */\nimport React, { type JSX } from 'react';\nimport { Utils } from '../Utils';\nimport { Box, Checkbox, Grid, IconButton, Paper, Switch, Tooltip } from '@mui/material';\nimport {\n Delete as IconDelete,\n Edit as IconEdit,\n Error as IconError,\n Settings as IconConfig,\n Wifi as IconConnection,\n WifiOff as IconDisconnected,\n} from '@mui/icons-material';\nimport { IconCopy } from '../../icons/IconCopy';\nimport { IconDocument } from '../../icons/IconDocument';\nimport { IconDocumentReadOnly } from '../../icons/IconDocumentReadOnly';\nimport { IconClosed } from '../../icons/IconClosed';\nimport { IconOpen } from '../../icons/IconOpen';\nimport { Icon } from '../Icon';\nimport {\n ButtonIcon,\n colGrow,\n colWidth,\n binarySearch,\n findEnumsForObjectAsIds,\n findFunctionsForObject,\n findRoomsForObject,\n formatValue,\n getCustomValue,\n getIdFieldTooltip,\n getObjectTooltip,\n getValueStyle,\n isNonExpertId,\n COLOR_NAME_USERDATA,\n COLOR_NAME_ALIAS,\n COLOR_NAME_JAVASCRIPT,\n COLOR_NAME_SYSTEM,\n COLOR_NAME_SYSTEM_ADAPTER,\n ROW_HEIGHT,\n} from './utils';\nimport { type AdapterColumn, type TreeItem } from './types';\nimport { styles } from './styles';\nimport {\n COLOR_NAME_CONNECTED_DARK,\n COLOR_NAME_CONNECTED_LIGHT,\n COLOR_NAME_DISCONNECTED_DARK,\n COLOR_NAME_DISCONNECTED_LIGHT,\n COLOR_NAME_ERROR_DARK,\n COLOR_NAME_ERROR_LIGHT,\n DEFAULT_DATE_FORMAT,\n ITEM_IMAGES,\n} from './constants';\nimport type { ObjectBrowserClass } from './ObjectBrowserClass';\n\nexport function renderTooltipAccessControl(that: ObjectBrowserClass, acl: ioBroker.StateACL): null | JSX.Element {\n // acl ={object,state,owner,ownerGroup}\n if (!acl) {\n return null;\n }\n const check = [\n {\n value: '0x400',\n valueNum: 0x400,\n title: 'read',\n group: 'Owner',\n },\n {\n value: '0x200',\n valueNum: 0x200,\n title: 'write',\n group: 'Owner',\n },\n {\n value: '0x40',\n valueNum: 0x40,\n title: 'read',\n group: 'Group',\n },\n {\n value: '0x20',\n valueNum: 0x20,\n title: 'write',\n group: 'Group',\n },\n {\n value: '0x4',\n valueNum: 0x4,\n title: 'read',\n group: 'Everyone',\n },\n {\n value: '0x2',\n valueNum: 0x2,\n title: 'write',\n group: 'Everyone',\n },\n ];\n const arrayTooltipText = [];\n const funcRenderStateObject = (value: 'object' | 'state'): void => {\n const rights: number = acl[value];\n check.forEach((el, i) => {\n if (rights & el.valueNum) {\n arrayTooltipText.push(\n <span key={value + i}>\n {that.texts[`acl${el.group}_${el.title}_${value}`]},\n <span style={value === 'object' ? styles.rightsObject : styles.rightsState}>{el.value}</span>\n </span>,\n );\n }\n });\n };\n\n arrayTooltipText.push(\n <span key=\"group\">{`${that.texts.ownerGroup}: ${(acl.ownerGroup || '').replace('system.group.', '')}`}</span>,\n );\n arrayTooltipText.push(\n <span key=\"owner\">{`${that.texts.ownerUser}: ${(acl.owner || '').replace('system.user.', '')}`}</span>,\n );\n funcRenderStateObject('object');\n if (acl.state) {\n funcRenderStateObject('state');\n }\n\n return arrayTooltipText.length ? (\n <span style={styles.tooltipAccessControl}>{arrayTooltipText.map(el => el)}</span>\n ) : null;\n}\n\nexport function renderColumnButtons(\n that: ObjectBrowserClass,\n id: string,\n item: TreeItem,\n): (JSX.Element | null)[] | JSX.Element | null {\n if (!item.data.obj) {\n return that.props.onObjectDelete || that.props.objectEditOfAccessControl ? (\n <div style={styles.buttonDiv}>\n {that.state.filter.expertMode && that.props.objectEditOfAccessControl ? (\n <IconButton\n sx={{\n ...styles.cellButtonsButton,\n ...styles.cellButtonsEmptyButton,\n ...styles.cellButtonMinWidth,\n }}\n onClick={() => that.setState({ modalEditOfAccess: true, modalEditOfAccessObjData: item.data })}\n size=\"large\"\n >\n <div style={{ height: 15 }}>---</div>\n </IconButton>\n ) : null}\n {that.props.onObjectDelete && item.children?.length ? (\n <IconButton\n sx={{\n ...styles.cellButtonsButton,\n ...styles.cellButtonsButtonAlone,\n }}\n size=\"small\"\n aria-label=\"delete\"\n title={that.texts.deleteObject}\n onClick={() => {\n // calculate the number of children\n const keys = Object.keys(that.objects);\n keys.sort();\n let count = 0;\n const start = `${id}.`;\n for (let i = 0; i < keys.length; i++) {\n if (keys[i].startsWith(start)) {\n count++;\n } else if (keys[i] > start) {\n break;\n }\n }\n\n if (that.props.onObjectDelete) {\n that.props.onObjectDelete(id, !!item.children?.length, false, count + 1);\n }\n }}\n >\n <IconDelete style={styles.cellButtonsButtonIcon} />\n </IconButton>\n ) : null}\n </div>\n ) : null;\n }\n\n item.data.aclTooltip =\n item.data.aclTooltip || renderTooltipAccessControl(that, item.data.obj.acl as ioBroker.StateACL);\n\n const acl = item.data.obj.acl\n ? item.data.obj.type === 'state'\n ? item.data.obj.acl.state\n : item.data.obj.acl.object\n : 0;\n const aclSystemConfig =\n item.data.obj.acl &&\n (item.data.obj.type === 'state'\n ? that.systemConfig?.common.defaultNewAcl.state\n : that.systemConfig?.common.defaultNewAcl.object);\n\n const showEdit = !!item.data.obj && (that.state.filter.expertMode || isNonExpertId(item.data.id));\n\n return [\n that.state.filter.expertMode && that.props.objectEditOfAccessControl ? (\n <Tooltip\n key=\"acl\"\n title={item.data.aclTooltip}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n sx={{\n ...styles.cellButtonsButton,\n ...styles.cellButtonMinWidth,\n opacity: 1,\n }}\n onClick={() => that.setState({ modalEditOfAccess: true, modalEditOfAccessObjData: item.data })}\n size=\"large\"\n >\n <div style={styles.aclText}>\n {Number.isNaN(Number(acl)) ? Number(aclSystemConfig).toString(16) : Number(acl).toString(16)}\n </div>\n </IconButton>\n </Tooltip>\n ) : (\n <div\n key=\"aclEmpty\"\n style={styles.cellButtonMinWidth}\n />\n ),\n\n showEdit ? (\n <IconButton\n key=\"edit\"\n sx={{\n marginRight: '2px',\n ...styles.cellButtonsButton,\n }}\n size=\"small\"\n aria-label=\"edit\"\n title={that.texts.editObject}\n onClick={() => {\n that.localStorage.setItem(`${that.props.dialogName || 'App'}.objectSelected`, id);\n that.setState({ editObjectDialog: id, editObjectAlias: false });\n }}\n >\n <IconEdit style={styles.cellButtonsButtonIcon} />\n </IconButton>\n ) : (\n <Box\n component=\"div\"\n key=\"editDisabled\"\n sx={styles.cellButtonsButton}\n />\n ),\n\n that.props.onObjectDelete && (item.children?.length || !item.data.obj.common?.dontDelete) ? (\n <IconButton\n key=\"delete\"\n sx={styles.cellButtonsButton}\n size=\"small\"\n aria-label=\"delete\"\n onClick={() => {\n const keys = Object.keys(that.objects);\n keys.sort();\n let count = 0;\n const start = `${id}.`;\n for (let i = 0; i < keys.length; i++) {\n if (keys[i].startsWith(start)) {\n count++;\n } else if (keys[i] > start) {\n break;\n }\n }\n if (that.props.onObjectDelete) {\n that.props.onObjectDelete(\n id,\n !!item.children?.length,\n !item.data.obj?.common?.dontDelete,\n count,\n );\n }\n }}\n title={that.texts.deleteObject}\n >\n <IconDelete style={styles.cellButtonsButtonIcon} />\n </IconButton>\n ) : null,\n\n that.props.objectCustomDialog &&\n that.info.hasSomeCustoms &&\n item.data.obj.type === 'state' &&\n // @ts-expect-error deprecated from js-controller 6\n item.data.obj.common?.type !== 'file' ? (\n <IconButton\n sx={{\n ...styles.cellButtonsButton,\n ...(item.data.hasCustoms\n ? that.styles.cellButtonsButtonWithCustoms\n : styles.cellButtonsButtonWithoutCustoms),\n }}\n key=\"custom\"\n size=\"small\"\n aria-label=\"config\"\n title={that.texts.customConfig}\n onClick={() => {\n that.localStorage.setItem(`${that.props.dialogName || 'App'}.objectSelected`, id);\n\n that.pauseSubscribe(true);\n that.props.router?.doNavigate(null, 'customs', id);\n that.setState({ customDialog: [id], customDialogAll: false });\n }}\n >\n <IconConfig style={styles.cellButtonsButtonIcon} />\n </IconButton>\n ) : null,\n ];\n}\n\n/**\n * This function renders the value in different forms in the table\n *\n * @param that the object browser instance\n * @param id state ID\n * @param item Item\n * @param narrowStyleWithDetails if use mobile view\n */\nexport function renderColumnValue(\n that: ObjectBrowserClass,\n id: string,\n item: TreeItem,\n narrowStyleWithDetails?: boolean,\n): JSX.Element | null {\n const obj = item.data.obj;\n if (!obj || !that.states) {\n return null;\n }\n\n if (obj.common?.type === 'file') {\n return (\n <Box\n component=\"div\"\n sx={{ ...styles.cellValueText, ...styles.cellValueFile }}\n >\n [file]\n </Box>\n );\n }\n if (!that.states[id]) {\n if (obj.type === 'state') {\n // we are waiting for state\n if (!that.recordStates.includes(id)) {\n that.recordStates.push(id);\n }\n that.states[id] = { val: null } as ioBroker.State;\n that.subscribe(id);\n }\n return null;\n }\n if (!that.recordStates.includes(id)) {\n that.recordStates.push(id);\n }\n\n const state = that.states[id];\n\n let info = item.data.state;\n if (!info) {\n const { valText } = formatValue({\n state,\n obj: obj as ioBroker.StateObject,\n texts: that.texts,\n dateFormat: that.props.dateFormat || that.systemConfig?.common.dateFormat || DEFAULT_DATE_FORMAT,\n isFloatComma:\n that.props.isFloatComma === undefined\n ? (that.systemConfig?.common.isFloatComma ?? true)\n : that.props.isFloatComma,\n });\n const valTextRx: JSX.Element[] = [];\n item.data.state = { valTextRx };\n\n valTextRx.push(\n <span\n className={`newValueBrowser-${that.props.themeType || 'light'}`}\n key={`${valText.v.toString()}valText`}\n style={{\n whiteSpace: 'nowrap',\n display: 'inline-block',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }}\n >\n {valText.v.toString()}\n </span>,\n );\n if (valText.u) {\n valTextRx.push(\n <span\n className={`newValueBrowser-${that.props.themeType || 'light'}`}\n style={styles.cellValueTextUnit}\n key={`${valText.v.toString()}unit`}\n >\n {valText.u}\n </span>,\n );\n }\n if (valText.s !== undefined) {\n valTextRx.push(\n <span\n style={styles.cellValueTextState}\n className={`newValueBrowser-${that.props.themeType || 'light'}`}\n key={`${valText.v.toString()}states`}\n >\n ({valText.s})\n </span>,\n );\n }\n if (!narrowStyleWithDetails) {\n const copyText = valText.c !== undefined ? valText.c : valText.v || '';\n valTextRx.push(\n <IconCopy\n className=\"copyButton\"\n style={that.styles.iconCopy}\n onClick={e => that.onCopy(e, copyText)}\n key=\"cc\"\n />,\n );\n }\n // <IconEdit className=\"copyButton\" style={{{ ...styles.cellButtonsValueButton, styles.cellButtonsValueButtonEdit)} key=\"ce\" />\n\n info = item.data.state;\n }\n\n info.style = getValueStyle({\n state,\n isExpertMode: that.state.filter.expertMode,\n isButton: item.data.button,\n nonAckColor: that.props.theme.palette.nonAck,\n });\n\n let val: JSX.Element[] | null | undefined = info.valTextRx;\n if (!that.state.filter.expertMode) {\n if (item.data.button) {\n val = [\n <ButtonIcon\n key=\"button\"\n style={{ color: info.style.color, ...styles.cellValueButton }}\n />,\n ];\n } else if (item.data.switch) {\n val = [\n <Switch\n key=\"switch\"\n sx={{\n '& .MuiSwitch-thumb': { color: info.style.color },\n '& .MuiSwitch-track': {\n backgroundColor:\n !!that.states[id].val && that.state.selected.includes(id)\n ? that.props.themeType === 'dark'\n ? '#FFF !important'\n : '#111 !important'\n : undefined,\n },\n }}\n checked={!!that.states[id].val}\n />,\n ];\n }\n }\n\n return (\n <Tooltip\n key=\"value\"\n title={that.state.tooltipInfo?.el}\n slotProps={{\n popper: { sx: styles.cellValueTooltipBox },\n tooltip: { sx: styles.cellValueTooltip },\n }}\n onOpen={() => that.getTooltipInfo(id, () => that.readHistory(id))}\n onClose={() => that.state.tooltipInfo?.id === id && that.setState({ tooltipInfo: null })}\n >\n <Box\n component=\"div\"\n style={info.style}\n className={item.data.url ? 'iob-link' : undefined}\n sx={{\n ...styles.cellValueText,\n height: narrowStyleWithDetails ? undefined : ROW_HEIGHT,\n '& .admin-button:active': {\n transform: 'translate(0, 2px)',\n },\n }}\n >\n {val}\n </Box>\n </Tooltip>\n );\n}\n\n/**\n * Renders a custom value.\n */\nexport function renderCustomValue(\n that: ObjectBrowserClass,\n obj: ioBroker.Object,\n it: AdapterColumn,\n item: TreeItem,\n): JSX.Element | null {\n const text = getCustomValue(obj, it);\n if (text !== null && text !== undefined) {\n if (it.edit && !that.props.notEditable && (!it.objTypes || it.objTypes.includes(obj.type))) {\n return (\n <Box\n component=\"div\"\n style={{\n ...styles.columnCustom,\n ...styles.columnCustomEditable,\n ...styles[`columnCustom_${it.align}`],\n }}\n onClick={() =>\n that.setState({\n columnsEditCustomDialog: { item, it, obj },\n customColumnDialogValueChanged: false,\n })\n }\n >\n {text}\n </Box>\n );\n }\n return (\n <Box\n component=\"div\"\n style={{\n ...styles.columnCustom,\n ...styles[`columnCustom_${it.align}`],\n }}\n >\n {text}\n </Box>\n );\n }\n return null;\n}\n\nexport function renderAliasLink(\n that: ObjectBrowserClass,\n id: string,\n index?: number,\n customStyle?: Record<string, any>,\n): JSX.Element | null {\n const _index = index || 0;\n // read the type of operation\n const aliasObj = that.objects[that.info.aliasesMap[id][_index]].common.alias.id;\n if (aliasObj) {\n return (\n <Box\n component=\"div\"\n onClick={e => {\n e.stopPropagation();\n e.preventDefault();\n const aliasId = that.info.aliasesMap[id][_index];\n // if more than one alias, close the menu\n if (that.info.aliasesMap[id].length > 1) {\n that.setState({ aliasMenu: '' });\n }\n that.onSelect(aliasId);\n setTimeout(() => that.expandAllSelected(() => that.scrollToItem(aliasId)), 100);\n }}\n sx={customStyle || that.styles.aliasAlone}\n >\n <span className=\"admin-browser-arrow\">\n {typeof aliasObj === 'string' || (aliasObj.read === id && aliasObj.write === id)\n ? '↔'\n : aliasObj.read === id\n ? '→'\n : '←'}\n </span>\n {that.info.aliasesMap[id][_index]}\n </Box>\n );\n }\n\n return null;\n}\n\n/**\n * Renders a leaf.\n */\nexport function renderLeaf(\n that: ObjectBrowserClass,\n item: TreeItem,\n isExpanded: boolean | undefined,\n counter: { count: number },\n): { row: JSX.Element; details: JSX.Element | null } {\n const id = item.data.id;\n counter.count++;\n isExpanded = isExpanded === undefined ? that.state.expanded.includes(id) : isExpanded;\n\n // icon\n let iconFolder;\n const obj = item.data.obj;\n const itemType = obj?.type;\n\n if (\n item.children ||\n itemType === 'folder' ||\n itemType === 'device' ||\n itemType === 'channel' ||\n itemType === 'meta'\n ) {\n iconFolder = isExpanded ? (\n <IconOpen\n style={that.styles.cellIdIconFolder}\n onClick={() => that.toggleExpanded(id)}\n />\n ) : (\n <IconClosed\n style={that.styles.cellIdIconFolder}\n onClick={() => that.toggleExpanded(id)}\n />\n );\n } else if (obj && obj.common && obj.common.write === false && obj.type === 'state') {\n iconFolder = <IconDocumentReadOnly style={that.styles.cellIdIconDocument} />;\n } else {\n iconFolder = <IconDocument style={that.styles.cellIdIconDocument} />;\n }\n\n let iconItem = null;\n if (item.data.icon) {\n if (typeof item.data.icon === 'string') {\n if (item.data.icon.length < 3) {\n iconItem = (\n <span\n className=\"iconOwn\"\n style={styles.cellIdIconOwn}\n >\n {item.data.icon}\n </span>\n ); // utf-8 char\n } else {\n iconItem = (\n <Icon\n style={styles.cellIdIconOwn}\n className=\"iconOwn\"\n src={item.data.icon}\n alt=\"\"\n />\n );\n }\n } else {\n iconItem = item.data.icon;\n }\n }\n\n const common = obj?.common;\n\n const typeImg = (obj?.type && ITEM_IMAGES[obj.type]) || <div className=\"itemIcon\" />;\n\n const paddingLeft = that.levelPadding * (item.data.level || 0);\n\n // recalculate rooms and function names if the language changed\n if (item.data.lang !== that.props.lang) {\n const { rooms, per } = findRoomsForObject(that.info, id, that.props.lang);\n item.data.rooms = rooms.join(', ');\n item.data.per = per;\n const { funcs, pef } = findFunctionsForObject(that.info, id, that.props.lang);\n item.data.funcs = funcs.join(', ');\n item.data.pef = pef;\n item.data.lang = that.props.lang;\n }\n\n const checkbox =\n that.props.multiSelect &&\n that.objects[id] &&\n (!that.props.types || that.props.types.includes(that.objects[id].type)) ? (\n <Checkbox\n style={styles.checkBox}\n checked={that.state.selected.includes(id)}\n />\n ) : null;\n\n let valueEditable =\n !that.props.notEditable && itemType === 'state' && (that.state.filter.expertMode || common?.write !== false);\n if (that.props.objectBrowserViewFile && common?.type === 'file') {\n valueEditable = true;\n }\n\n const enumEditable =\n !that.props.notEditable &&\n that.objects[id] &&\n (that.state.filter.expertMode || itemType === 'state' || itemType === 'channel' || itemType === 'device');\n\n const checkVisibleObjectType =\n that.state.statesView && (itemType === 'state' || itemType === 'channel' || itemType === 'device');\n\n let newValue = '';\n const newValueTitle = [];\n if (checkVisibleObjectType) {\n newValue = that.states[id]?.from;\n if (newValue === undefined) {\n newValue = ' ';\n } else {\n newValue = newValue ? newValue.replace(/^system\\.adapter\\.|^system\\./, '') : '';\n newValueTitle.push(`${that.texts.stateChangedFrom} ${newValue}`);\n }\n if (obj?.user) {\n const user = obj.user.replace('system.user.', '');\n newValue += `/${user}`;\n newValueTitle.push(`${that.texts.stateChangedBy} ${user}`);\n }\n }\n\n if (obj) {\n if (obj.from) {\n newValueTitle.push(\n `${that.texts.objectChangedFrom} ${obj.from.replace(/^system\\.adapter\\.|^system\\./, '')}`,\n );\n }\n if (obj.user) {\n newValueTitle.push(`${that.texts.objectChangedBy} ${obj.user.replace(/^system\\.user\\./, '')}`);\n }\n if (obj.ts) {\n newValueTitle.push(\n `${that.texts.objectChangedByUser} ${Utils.formatDate(new Date(obj.ts), that.props.dateFormat || that.systemConfig?.common.dateFormat || DEFAULT_DATE_FORMAT)}`,\n );\n }\n }\n\n let readWriteAlias = false;\n let alias: JSX.Element | null = null;\n if (id.startsWith('alias.') && common?.alias?.id) {\n readWriteAlias = typeof common.alias.id === 'object';\n if (readWriteAlias) {\n alias = (\n <div style={styles.cellIdAliasReadWriteDiv}>\n {common.alias.id.read ? (\n <Box\n component=\"div\"\n onClick={e => {\n e.stopPropagation();\n e.preventDefault();\n that.onSelect(common.alias.id.read);\n setTimeout(\n () => that.expandAllSelected(() => that.scrollToItem(common.alias.id.read)),\n 100,\n );\n }}\n sx={that.styles.aliasReadWrite}\n >\n ←{common.alias.id.read}\n </Box>\n ) : null}\n {common.alias.id.write ? (\n <Box\n component=\"div\"\n onClick={e => {\n e.stopPropagation();\n e.preventDefault();\n that.onSelect(common.alias.id.write);\n setTimeout(\n () => that.expandAllSelected(() => that.scrollToItem(common.alias.id.write)),\n 100,\n );\n }}\n sx={that.styles.aliasReadWrite}\n >\n →{common.alias.id.write}\n </Box>\n ) : null}\n </div>\n );\n } else {\n alias = (\n <Box\n component=\"div\"\n onClick={e => {\n e.stopPropagation();\n e.preventDefault();\n that.onSelect(common.alias.id);\n setTimeout(() => that.expandAllSelected(() => that.scrollToItem(common.alias.id)), 100);\n }}\n sx={that.styles.aliasAlone}\n >\n →{common.alias.id}\n </Box>\n );\n }\n } else if (that.info.aliasesMap[id]) {\n // Some alias points to that object. It can be more than one\n if (that.info.aliasesMap[id].length > 1) {\n // Show number of aliases and open a menu by click\n alias = (\n <Box\n component=\"div\"\n id={`alias_${id}`}\n onClick={e => {\n e.stopPropagation();\n e.preventDefault();\n that.setState({ aliasMenu: id });\n }}\n sx={that.styles.aliasAlone}\n >\n {that.props.t('ra_%s links from aliases', that.info.aliasesMap[id].length)}\n </Box>\n );\n } else {\n // Show name of alias and open it by click\n alias = renderAliasLink(that, id, 0);\n }\n }\n\n let checkColor = common?.color;\n let invertBackground;\n if (checkColor && !that.state.selected.includes(id)) {\n const background =\n that.props.themeName === 'dark' ? '#1f1f1f' : that.props.themeName === 'blue' ? '#222a2e' : '#FFFFFF';\n const distance = Utils.colorDistance(checkColor, background);\n // console.log(`Distance: ${checkColor} - ${background} = ${distance}`);\n if (distance < 1000) {\n invertBackground = that.props.themeType === 'dark' ? '#9a9a9a' : '#565656';\n }\n }\n let bold = false;\n if (id === '0_userdata') {\n checkColor = COLOR_NAME_USERDATA(that.props.themeType);\n bold = true;\n invertBackground = false;\n } else if (id === 'alias') {\n checkColor = COLOR_NAME_ALIAS(that.props.themeType);\n bold = true;\n invertBackground = false;\n } else if (id === 'javascript') {\n checkColor = COLOR_NAME_JAVASCRIPT(that.props.themeType);\n bold = true;\n invertBackground = false;\n } else if (id === 'system') {\n checkColor = COLOR_NAME_SYSTEM(that.props.themeType);\n bold = true;\n invertBackground = false;\n } else if (id === 'system.adapter') {\n checkColor = COLOR_NAME_SYSTEM_ADAPTER(that.props.themeType);\n invertBackground = false;\n } else if (!checkColor || that.state.selected.includes(id)) {\n checkColor = 'inherit';\n invertBackground = false;\n }\n\n const icons = [];\n\n if (common?.statusStates) {\n const ids: Record<string, string> = {};\n Object.keys(common.statusStates).forEach(name => {\n let _id = common.statusStates[name];\n if (_id.split('.').length < 3) {\n _id = `${id}.${_id}`;\n }\n ids[name] = _id;\n\n if (!that.states[_id]) {\n if (that.objects[_id]?.type === 'state') {\n if (!that.recordStates.includes(_id)) {\n that.recordStates.push(_id);\n }\n that.states[_id] = { val: null } as ioBroker.State;\n that.subscribe(_id);\n }\n } else if (!that.recordStates.includes(_id)) {\n that.recordStates.push(_id);\n }\n });\n // calculate color\n // errorId has priority\n let colorSet = false;\n if (common.statusStates.errorId && that.states[ids.errorId] && that.states[ids.errorId].val) {\n checkColor = that.props.themeType === 'dark' ? COLOR_NAME_ERROR_DARK : COLOR_NAME_ERROR_LIGHT;\n invertBackground = false;\n colorSet = true;\n icons.push(\n <IconError\n key=\"error\"\n // title={that.texts.deviceError}\n style={that.styles.iconDeviceError}\n />,\n );\n }\n\n if (ids.onlineId && that.states[ids.onlineId]) {\n if (!colorSet) {\n if (that.states[ids.onlineId].val) {\n checkColor =\n that.props.themeType === 'dark' ? COLOR_NAME_CONNECTED_DARK : COLOR_NAME_CONNECTED_LIGHT;\n invertBackground = false;\n icons.push(\n <IconConnection\n key=\"conn\"\n // title={that.texts.deviceError}\n style={that.styles.iconDeviceConnected}\n />,\n );\n } else {\n checkColor =\n that.props.themeType === 'dark' ? COLOR_NAME_DISCONNECTED_DARK : COLOR_NAME_DISCONNECTED_LIGHT;\n invertBackground = false;\n icons.push(\n <IconDisconnected\n key=\"disc\"\n // title={that.texts.deviceError}\n style={that.styles.iconDeviceDisconnected}\n />,\n );\n }\n } else if (that.states[ids.onlineId].val) {\n icons.push(\n <IconConnection\n key=\"conn\"\n // title={that.texts.deviceError}\n style={that.styles.iconDeviceConnected}\n />,\n );\n } else {\n icons.push(\n <IconDisconnected\n key=\"disc\"\n // title={that.texts.deviceError}\n style={that.styles.iconDeviceDisconnected}\n />,\n );\n }\n } else if (ids.offlineId && that.states[ids.offlineId]) {\n if (!colorSet) {\n if (that.states[ids.offlineId].val) {\n checkColor =\n that.props.themeType === 'dark' ? COLOR_NAME_DISCONNECTED_DARK : COLOR_NAME_DISCONNECTED_LIGHT;\n invertBackground = false;\n icons.push(\n <IconDisconnected\n key=\"disc\"\n // title={that.texts.deviceError}\n style={that.styles.iconDeviceDisconnected}\n />,\n );\n } else {\n checkColor =\n that.props.themeType === 'dark' ? COLOR_NAME_CONNECTED_DARK : COLOR_NAME_CONNECTED_LIGHT;\n invertBackground = false;\n icons.push(\n <IconConnection\n key=\"conn\"\n // title={that.texts.deviceError}\n style={that.styles.iconDeviceConnected}\n />,\n );\n }\n } else if (that.states[ids.offlineId].val) {\n icons.push(\n <IconDisconnected\n key=\"disc\"\n // title={that.texts.deviceError}\n style={that.styles.iconDeviceDisconnected}\n />,\n );\n } else {\n icons.push(\n <IconConnection\n key=\"conn\"\n // title={that.texts.deviceError}\n style={that.styles.iconDeviceConnected}\n />,\n );\n }\n }\n }\n\n const q = checkVisibleObjectType ? Utils.quality2text(that.states[id]?.q || 0).join(', ') : null;\n\n let name: JSX.Element[] | string = item.data?.title || '';\n let useDesc = false;\n if (that.state.showDescription) {\n const oTooltip: string | null = getObjectTooltip(item.data, that.props.lang);\n if (oTooltip) {\n name = [\n <div\n key=\"name\"\n style={styles.cellNameDivDiv}\n >\n {name}\n </div>,\n <div\n key=\"desc\"\n style={styles.cellDescription}\n >\n {oTooltip}\n </div>,\n ];\n useDesc = !!oTooltip;\n }\n }\n\n const narrowStyleWithDetails = that.width === 'xs' && that.state.focused === id;\n\n const colID = (\n <Grid\n container\n wrap=\"nowrap\"\n direction=\"row\"\n sx={styles.cellId}\n style={{ width: colWidth('id'), flexGrow: colGrow('id'), paddingLeft }}\n >\n <Grid\n container\n // the icons must not be squeezed by a long name\n sx={{ alignItems: 'center', flexShrink: 0 }}\n >\n {checkbox}\n {iconFolder}\n </Grid>\n <Grid\n style={{\n ...styles.cellIdSpan,\n // only the name may shrink (it is cut with an ellipsis), and for that a flex item\n // needs `minWidth: 0`, otherwise its content defines the minimal width\n minWidth: 0,\n ...(invertBackground ? that.styles.invertedBackground : undefined),\n color: checkColor,\n fontWeight: bold ? 'bold' : undefined,\n }}\n >\n <Tooltip\n title={getIdFieldTooltip(item.data, that.props.lang)}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <div>{item.data.name}</div>\n </Tooltip>\n {alias}\n {icons}\n </Grid>\n <div style={{ ...styles.grow, ...(invertBackground ? that.styles.invertedBackgroundFlex : {}) }} />\n <Grid\n container\n sx={{ alignItems: 'center', flexShrink: 0 }}\n >\n {iconItem}\n </Grid>\n {that.width !== 'xs' ? (\n <div style={{ flexShrink: 0 }}>\n <IconCopy\n className={narrowStyleWithDetails ? '' : 'copyButton'}\n style={styles.cellCopyButton}\n onClick={e => that.onCopy(e, id)}\n />\n </div>\n ) : null}\n </Grid>\n );\n\n let colName =\n (narrowStyleWithDetails && name) || that.columnsVisibility.name ? (\n <Box\n component=\"div\"\n sx={{\n ...styles.cellName,\n ...(useDesc ? styles.cellNameWithDesc : undefined),\n width: that.width !== 'xs' ? colWidth('name') : undefined,\n flexGrow: that.width !== 'xs' ? colGrow('name') : undefined,\n // padding and not margin: a margin is added to the width of the column and all\n // following columns would not match the header anymore\n pl: narrowStyleWithDetails ? 0 : '5px',\n }}\n >\n {name}\n {!narrowStyleWithDetails && item.data?.title ? (\n <Box style={{ color: checkColor }}>\n <IconCopy\n className=\"copyButton\"\n style={styles.cellCopyButton}\n onClick={e => that.onCopy(e, item.data?.title)}\n />\n </Box>\n ) : null}\n </Box>\n ) : null;\n\n let colMiddle:\n | ({\n el: JSX.Element;\n type: 'filter_type' | 'filter_role' | 'filter_func' | 'filter_room' | 'quality' | 'from' | 'lc' | 'ts';\n onClick?: (() => void) | null | undefined;\n } | null)[]\n | null;\n if (!that.state.statesView) {\n colMiddle = [\n (narrowStyleWithDetails && obj?.type) || that.columnsVisibility.type\n ? {\n el: (\n <div\n key=\"type\"\n style={{\n ...styles.cellType,\n width: that.width !== 'xs' ? colWidth('type') : undefined,\n }}\n >\n {typeImg}\n \n {obj?.type}\n </div>\n ),\n type: 'filter_type',\n }\n : null,\n (narrowStyleWithDetails && common) || that.columnsVisibility.role\n ? {\n el: (\n <div\n key=\"role\"\n style={{\n ...styles.cellRole,\n width: that.width !== 'xs' ? colWidth('role') : '100%',\n cursor:\n that.state.filter.expertMode && enumEditable && that.props.objectBrowserEditRole\n ? 'text'\n : 'default',\n }}\n onClick={\n !narrowStyleWithDetails &&\n that.state.filter.expertMode &&\n enumEditable &&\n that.props.objectBrowserEditRole\n ? () => that.setState({ roleDialog: item.data.id })\n : undefined\n }\n >\n {common?.role}\n </div>\n ),\n type: 'filter_role',\n onClick:\n narrowStyleWithDetails &&\n that.state.filter.expertMode &&\n enumEditable &&\n that.props.objectBrowserEditRole\n ? () => that.setState({ roleDialog: item.data.id })\n : undefined,\n }\n : null,\n (narrowStyleWithDetails && common) || that.columnsVisibility.room\n ? {\n el: (\n <div\n key=\"room\"\n style={{\n ...styles.cellRoom,\n ...(item.data.per ? styles.cellEnumParent : {}),\n width: that.width !== 'xs' ? colWidth('room') : '100%',\n cursor: enumEditable ? 'text' : 'default',\n }}\n onClick={\n !narrowStyleWithDetails && enumEditable\n ? () => {\n const enums = findEnumsForObjectAsIds(that.info, item.data.id, 'roomEnums');\n that.setState({\n enumDialogEnums: enums,\n enumDialog: {\n item,\n type: 'room',\n enumsOriginal: JSON.stringify(enums),\n },\n });\n }\n : undefined\n }\n >\n {item.data.rooms}\n </div>\n ),\n type: 'filter_room',\n onClick:\n narrowStyleWithDetails && enumEditable\n ? () => {\n const enums = findEnumsForObjectAsIds(that.info, item.data.id, 'roomEnums');\n that.setState({\n enumDialogEnums: enums,\n enumDialog: {\n item,\n type: 'room',\n enumsOriginal: JSON.stringify(enums),\n },\n });\n }\n : undefined,\n }\n : null,\n (narrowStyleWithDetails && common) || that.columnsVisibility.func\n ? {\n el: (\n <div\n key=\"func\"\n style={{\n ...styles.cellFunc,\n ...(item.data.pef ? styles.cellEnumParent : {}),\n width: that.width !== 'xs' ? colWidth('func') : '100%',\n cursor: enumEditable ? 'text' : 'default',\n }}\n onClick={\n !narrowStyleWithDetails && enumEditable\n ? () => {\n const enums = findEnumsForObjectAsIds(that.info, item.data.id, 'funcEnums');\n that.setState({\n enumDialogEnums: enums,\n enumDialog: {\n item,\n type: 'func',\n enumsOriginal: JSON.stringify(enums),\n },\n });\n }\n : undefined\n }\n >\n {item.data.funcs}\n </div>\n ),\n type: 'filter_func',\n onClick:\n narrowStyleWithDetails && enumEditable\n ? () => {\n const enums = findEnumsForObjectAsIds(that.info, item.data.id, 'funcEnums');\n that.setState({\n enumDialogEnums: enums,\n enumDialog: {\n item,\n type: 'func',\n enumsOriginal: JSON.stringify(enums),\n },\n });\n }\n : undefined,\n }\n : null,\n ];\n } else {\n colMiddle = [\n (narrowStyleWithDetails && checkVisibleObjectType && that.states[id]?.from) ||\n that.columnsVisibility.changedFrom\n ? {\n el: (\n <div\n key=\"from\"\n style={{\n ...styles.cellRole,\n width: that.width !== 'xs' ? colWidth('changedFrom') : undefined,\n }}\n title={newValueTitle.join('\\n')}\n >\n {checkVisibleObjectType && that.states[id]?.from ? newValue : null}\n </div>\n ),\n type: 'from',\n }\n : null,\n (narrowStyleWithDetails && q) || that.columnsVisibility.qualityCode\n ? {\n el: (\n <div\n key=\"q\"\n style={{\n ...styles.cellRole,\n width: that.width !== 'xs' ? colWidth('qualityCode') : undefined,\n }}\n title={q || ''}\n >\n {q}\n </div>\n ),\n type: 'quality',\n }\n : null,\n (narrowStyleWithDetails && checkVisibleObjectType && that.states[id]?.ts) ||\n that.columnsVisibility.timestamp\n ? {\n el: (\n <div\n key=\"ts\"\n style={{\n ...styles.cellRole,\n width: that.width !== 'xs' ? colWidth('timestamp') : undefined,\n }}\n >\n {checkVisibleObjectType && that.states[id]?.ts\n ? Utils.formatDate(\n new Date(that.states[id].ts),\n that.props.dateFormat ||\n that.systemConfig?.common.dateFormat ||\n DEFAULT_DATE_FORMAT,\n )\n : null}\n </div>\n ),\n type: 'ts',\n }\n : null,\n (narrowStyleWithDetails && checkVisibleObjectType && that.states[id]?.lc) ||\n that.columnsVisibility.lastChange\n ? {\n el: (\n <div\n key=\"lc\"\n style={{\n ...styles.cellRole,\n width: that.width !== 'xs' ? colWidth('lastChange') : undefined,\n }}\n >\n {checkVisibleObjectType && that.states[id]?.lc\n ? Utils.formatDate(\n new Date(that.states[id].lc),\n that.props.dateFormat ||\n that.systemConfig?.common.dateFormat ||\n DEFAULT_DATE_FORMAT,\n )\n : null}\n </div>\n ),\n type: 'lc',\n }\n : null,\n ];\n }\n\n let colCustom: JSX.Element[] | null =\n that.adapterColumns?.map(it => (\n <div\n style={{\n ...styles.cellAdapter,\n width: that.width !== 'xs' ? colWidth(it.id) : undefined,\n }}\n key={it.id}\n title={`${it.adapter} => ${it.pathText}`}\n >\n {obj ? renderCustomValue(that, obj, it, item) : null}\n </div>\n )) || null;\n\n const columnValue =\n narrowStyleWithDetails || that.columnsVisibility.val\n ? renderColumnValue(that, id, item, narrowStyleWithDetails)\n : null;\n\n let colValue =\n (narrowStyleWithDetails && columnValue) || that.columnsVisibility.val ? (\n <div\n style={{\n ...styles.cellValue,\n width: that.width !== 'xs' ? colWidth('val') : 'calc(100% - 100px)',\n cursor: valueEditable\n ? common?.type === 'file'\n ? 'zoom-in'\n : item.data.button\n ? 'grab'\n : 'text'\n : 'default',\n }}\n onClick={e => {\n if (valueEditable) {\n if (!obj || !that.states) {\n // return;\n } else if (common?.type === 'file') {\n that.setState({ viewFileDialog: id });\n } else if (item.data.url && e.ctrlKey) {\n if (that.states[id]?.val && typeof that.states[id].val === 'string') {\n if (common?.role === 'url.self') {\n window.location.href = that.states[id].val;\n } else {\n const opened = window.open(that.states[id].val, '_blank');\n opened?.focus();\n }\n }\n } else if (!that.state.filter.expertMode && item.data.button) {\n // in non-expert mode control button directly\n that.props.socket\n .setState(id, true)\n .catch(e => window.alert(`Cannot write state \"${id}\": ${e}`));\n } else if (!that.state.filter.expertMode && item.data.switch) {\n // in non-expert mode control switch directly\n that.props.socket\n .setState(id, !that.states[id].val)\n .catch(e => window.alert(`Cannot write state \"${id}\": ${e}`));\n } else {\n that.edit = {\n val: that.states[id] ? that.states[id].val : '',\n q: that.states[id] ? that.states[id].q || 0 : 0,\n ack: false,\n id,\n };\n that.setState({ updateOpened: true });\n }\n } else if (common?.role === 'url' || (common?.role === 'url.blank' && e.ctrlKey)) {\n if (that.states[id]?.val && typeof that.states[id].val === 'string') {\n window.open(that.states[id].val, '_blank');\n }\n } else if (common?.role === 'url.self' && e.ctrlKey) {\n if (that.states[id]?.val && typeof that.states[id].val === 'string') {\n window.location.href = that.states[id].val;\n }\n }\n }}\n >\n {columnValue}\n </div>\n ) : null;\n\n let colButtons =\n narrowStyleWithDetails || that.columnsVisibility.buttons ? (\n <div\n style={{\n ...styles.cellButtons,\n width: that.width !== 'xs' ? colWidth('buttons') : undefined,\n }}\n >\n {renderColumnButtons(that, id, item)}\n </div>\n ) : null;\n\n let colDetails: JSX.Element | null = null;\n if (that.width === 'xs' && that.state.focused === id) {\n colMiddle = colMiddle.filter(a => a);\n let renderedMiddle: (JSX.Element | null)[] | null;\n if (!colMiddle.length) {\n renderedMiddle = null;\n } else {\n renderedMiddle = colMiddle.map(it => {\n if (!it) {\n return null;\n }\n return (\n <div\n key={it.type}\n style={styles.cellDetailsLine}\n >\n <span style={styles.cellDetailsName}>{that.texts[it.type]}:</span>\n {it.el}\n <div style={{ flexGrow: 1 }} />\n {it.onClick ? (\n <IconEdit\n style={styles.cellCopyButtonInDetails}\n onClick={() => {\n if (it?.onClick) {\n it.onClick();\n }\n }}\n />\n ) : null}\n </div>\n );\n });\n }\n if (!colCustom.length) {\n colCustom = null;\n }\n colDetails = (\n <Paper\n style={{\n width: '100%',\n // the padding must be inside of the width, else the row is wider than the table\n boxSizing: 'border-box',\n display: 'flex',\n flexDirection: 'column',\n padding: 10,\n backgroundColor: that.props.theme.palette.mode === 'dark' ? '#333' : '#ccc',\n }}\n >\n <div style={styles.cellDetailsLine}>\n <div style={{ flexGrow: 1 }} />\n <IconCopy\n style={styles.cellCopyButtonInDetails}\n onClick={e => that.onCopy(e, id)}\n />\n </div>\n {colName && (\n <div style={styles.cellDetailsLine}>\n <span style={styles.cellDetailsName}>{that.texts.name}:</span>\n {colName}\n <div style={{ flexGrow: 1 }} />\n {item.data?.title ? (\n <IconCopy\n className=\"copyButton\"\n style={styles.cellCopyButtonInDetails}\n onClick={e => that.onCopy(e, item.data?.title)}\n />\n ) : null}\n </div>\n )}\n {renderedMiddle}\n {colCustom && <div style={styles.cellDetailsLine}>{colCustom}</div>}\n {that.objects[id]?.type === 'state' && (\n <div style={styles.cellDetailsLine}>\n <span style={styles.cellDetailsName}>{that.texts.value}:</span>\n {colValue}\n <div style={{ flexGrow: 1 }} />\n <IconCopy\n className=\"copyButton\"\n style={styles.cellCopyButtonInDetails}\n onClick={e => {\n const { valText } = formatValue({\n state: that.states[id],\n obj: that.objects[id] as ioBroker.StateObject,\n texts: that.texts,\n dateFormat:\n that.props.dateFormat ||\n that.systemConfig?.common.dateFormat ||\n DEFAULT_DATE_FORMAT,\n isFloatComma:\n that.props.isFloatComma === undefined\n ? (that.systemConfig?.common.isFloatComma ?? true)\n : that.props.isFloatComma,\n });\n that.onCopy(e, valText.c !== undefined ? valText.c : valText.v.toString());\n }}\n key=\"cc\"\n />\n </div>\n )}\n {colButtons && <div style={{ ...styles.cellDetailsLine, justifyContent: 'right' }}>{colButtons}</div>}\n </Paper>\n );\n\n colName = null;\n colMiddle = null;\n colCustom = null;\n colValue = null;\n colButtons = null;\n }\n\n const row = (\n <Grid\n container\n direction=\"row\"\n wrap=\"nowrap\"\n sx={Utils.getStyle(\n that.props.theme,\n styles.tableRow,\n that.state.linesEnabled && styles.tableRowLines,\n !that.props.dragEnabled && styles.tableRowNoDragging,\n alias && styles.tableRowAlias,\n readWriteAlias && styles.tableRowAliasReadWrite,\n that.state.focused === id && that.props.multiSelect && styles.tableRowFocused,\n !item.data.visible && styles.filteredOut,\n item.data.hasVisibleParent &&\n !item.data.visible &&\n !item.data.hasVisibleChildren &&\n styles.filteredParentOut,\n that.state.selected.includes(id) && styles.itemSelected,\n that.state.selectedNonObject === id && styles.itemSelected,\n )}\n key={id}\n id={id}\n onMouseDown={e => {\n that.onSelect(id);\n let isRightMB;\n if ('which' in e) {\n // Gecko (Firefox), WebKit (Safari/Chrome) & Opera\n isRightMB = e.which === 3;\n } else if ('button' in e) {\n // IE, Opera\n isRightMB = e.button === 2;\n }\n if (isRightMB) {\n that.contextMenu = {\n item,\n ts: Date.now(),\n };\n } else {\n that.contextMenu = null;\n }\n }}\n onDoubleClick={() => {\n if (!item.children) {\n that.onSelect(id, true);\n } else {\n that.toggleExpanded(id);\n }\n }}\n >\n {colID}\n {colName}\n {colMiddle?.map(it => it?.el)}\n {colCustom}\n {colValue}\n {colButtons}\n </Grid>\n );\n return { row, details: colDetails };\n}\n\n/**\n * Renders an item.\n */\nexport function renderItem(\n that: ObjectBrowserClass,\n root: TreeItem,\n isExpanded: boolean | undefined,\n counter?: { count: number },\n): (JSX.Element | null)[] {\n const items: (JSX.Element | null)[] = [];\n counter = counter || { count: 0 };\n const result = renderLeaf(that, root, isExpanded, counter);\n let leaf: JSX.Element;\n const DragWrapper = that.props.DragWrapper;\n if (that.props.dragEnabled && DragWrapper) {\n if (root.data.sumVisibility) {\n leaf = (\n <DragWrapper\n key={root.data.id}\n item={root}\n style={styles.draggable}\n >\n {result.row}\n </DragWrapper>\n );\n } else {\n // change cursor\n leaf = (\n <div\n key={root.data.id}\n style={styles.nonDraggable}\n >\n {result.row}\n </div>\n );\n }\n } else {\n leaf = result.row;\n }\n if (root.data.id && leaf) {\n items.push(leaf);\n }\n if (result.details) {\n items.push(result.details);\n }\n\n isExpanded = isExpanded === undefined ? binarySearch(that.state.expanded, root.data.id) : isExpanded;\n\n if (!root.data.id || isExpanded) {\n if (!that.state.foldersFirst) {\n if (root.children) {\n items.push(\n root.children.map(item => {\n // do not render too many items in column editor mode\n if (!that.state.columnsSelectorShow || counter.count < 15) {\n if (item.data.sumVisibility) {\n return renderItem(that, item, undefined, counter);\n }\n }\n return null;\n }) as any as JSX.Element,\n );\n }\n } else if (root.children) {\n // first only folder\n items.push(\n root.children.map(item => {\n if (item.children) {\n // do not render too many items in column editor mode\n if (!that.state.columnsSelectorShow || counter.count < 15) {\n if (item.data.sumVisibility) {\n return renderItem(that, item, undefined, counter);\n }\n }\n }\n\n return null;\n }) as any as JSX.Element,\n );\n\n // then items\n items.push(\n root.children.map(item => {\n if (!item.children) {\n // do not render too many items in column editor mode\n if (!that.state.columnsSelectorShow || counter.count < 15) {\n if (item.data.sumVisibility) {\n return renderItem(that, item, undefined, counter);\n }\n }\n }\n return null;\n }) as any as JSX.Element,\n );\n }\n }\n\n return items;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"renderLeaf.js","sourceRoot":"./src/","sources":["Components/ObjectBrowser/renderLeaf.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright 2020-2026, Denis Haev <dogafox@gmail.com>\n *\n * MIT License\n *\n * Part of the object browser, see ./ObjectBrowserClass.tsx\n */\nimport React, { type JSX } from 'react';\nimport { Utils } from '../Utils';\nimport { Box, Checkbox, Grid, IconButton, Paper, Switch, Tooltip } from '@mui/material';\nimport {\n Delete as IconDelete,\n Edit as IconEdit,\n Error as IconError,\n Settings as IconConfig,\n Wifi as IconConnection,\n WifiOff as IconDisconnected,\n} from '@mui/icons-material';\nimport { IconCopy } from '../../icons/IconCopy';\nimport { IconDocument } from '../../icons/IconDocument';\nimport { IconDocumentReadOnly } from '../../icons/IconDocumentReadOnly';\nimport { IconClosed } from '../../icons/IconClosed';\nimport { IconOpen } from '../../icons/IconOpen';\nimport { Icon } from '../Icon';\nimport {\n ButtonIcon,\n colGrow,\n colWidth,\n binarySearch,\n findEnumsForObjectAsIds,\n findFunctionsForObject,\n findRoomsForObject,\n formatValue,\n getCustomValue,\n getIdFieldTooltip,\n getObjectTooltip,\n getValueStyle,\n isNonExpertId,\n COLOR_NAME_USERDATA,\n COLOR_NAME_ALIAS,\n COLOR_NAME_JAVASCRIPT,\n COLOR_NAME_SYSTEM,\n COLOR_NAME_SYSTEM_ADAPTER,\n ROW_HEIGHT,\n} from './utils';\nimport { type AdapterColumn, type TreeItem } from './types';\nimport { styles } from './styles';\nimport {\n COLOR_NAME_CONNECTED_DARK,\n COLOR_NAME_CONNECTED_LIGHT,\n COLOR_NAME_DISCONNECTED_DARK,\n COLOR_NAME_DISCONNECTED_LIGHT,\n COLOR_NAME_ERROR_DARK,\n COLOR_NAME_ERROR_LIGHT,\n DEFAULT_DATE_FORMAT,\n ITEM_IMAGES,\n} from './constants';\nimport type { ObjectBrowserClass } from './ObjectBrowserClass';\n\nexport function renderTooltipAccessControl(that: ObjectBrowserClass, acl: ioBroker.StateACL): null | JSX.Element {\n // acl ={object,state,owner,ownerGroup}\n if (!acl) {\n return null;\n }\n const check = [\n {\n value: '0x400',\n valueNum: 0x400,\n title: 'read',\n group: 'Owner',\n },\n {\n value: '0x200',\n valueNum: 0x200,\n title: 'write',\n group: 'Owner',\n },\n {\n value: '0x40',\n valueNum: 0x40,\n title: 'read',\n group: 'Group',\n },\n {\n value: '0x20',\n valueNum: 0x20,\n title: 'write',\n group: 'Group',\n },\n {\n value: '0x4',\n valueNum: 0x4,\n title: 'read',\n group: 'Everyone',\n },\n {\n value: '0x2',\n valueNum: 0x2,\n title: 'write',\n group: 'Everyone',\n },\n ];\n const arrayTooltipText = [];\n const funcRenderStateObject = (value: 'object' | 'state'): void => {\n const rights: number = acl[value];\n check.forEach((el, i) => {\n if (rights & el.valueNum) {\n arrayTooltipText.push(\n <span key={value + i}>\n {that.texts[`acl${el.group}_${el.title}_${value}`]},\n <span style={value === 'object' ? styles.rightsObject : styles.rightsState}>{el.value}</span>\n </span>,\n );\n }\n });\n };\n\n arrayTooltipText.push(\n <span key=\"group\">{`${that.texts.ownerGroup}: ${(acl.ownerGroup || '').replace('system.group.', '')}`}</span>,\n );\n arrayTooltipText.push(\n <span key=\"owner\">{`${that.texts.ownerUser}: ${(acl.owner || '').replace('system.user.', '')}`}</span>,\n );\n funcRenderStateObject('object');\n if (acl.state) {\n funcRenderStateObject('state');\n }\n\n return arrayTooltipText.length ? (\n <span style={styles.tooltipAccessControl}>{arrayTooltipText.map(el => el)}</span>\n ) : null;\n}\n\nexport function renderColumnButtons(\n that: ObjectBrowserClass,\n id: string,\n item: TreeItem,\n): (JSX.Element | null)[] | JSX.Element | null {\n if (!item.data.obj) {\n return that.props.onObjectDelete || that.props.objectEditOfAccessControl ? (\n <div style={styles.buttonDiv}>\n {that.state.filter.expertMode && that.props.objectEditOfAccessControl ? (\n <IconButton\n sx={{\n ...styles.cellButtonsButton,\n ...styles.cellButtonsEmptyButton,\n ...styles.cellButtonMinWidth,\n }}\n onClick={() => that.setState({ modalEditOfAccess: true, modalEditOfAccessObjData: item.data })}\n size=\"large\"\n >\n <div style={{ height: 15 }}>---</div>\n </IconButton>\n ) : null}\n {that.props.onObjectDelete && item.children?.length ? (\n <IconButton\n sx={{\n ...styles.cellButtonsButton,\n ...styles.cellButtonsButtonAlone,\n }}\n size=\"small\"\n aria-label=\"delete\"\n title={that.texts.deleteObject}\n onClick={() => {\n // calculate the number of children\n const keys = Object.keys(that.objects);\n keys.sort();\n let count = 0;\n const start = `${id}.`;\n for (let i = 0; i < keys.length; i++) {\n if (keys[i].startsWith(start)) {\n count++;\n } else if (keys[i] > start) {\n break;\n }\n }\n\n if (that.props.onObjectDelete) {\n that.props.onObjectDelete(id, !!item.children?.length, false, count + 1);\n }\n }}\n >\n <IconDelete style={styles.cellButtonsButtonIcon} />\n </IconButton>\n ) : null}\n </div>\n ) : null;\n }\n\n item.data.aclTooltip =\n item.data.aclTooltip || renderTooltipAccessControl(that, item.data.obj.acl as ioBroker.StateACL);\n\n const acl = item.data.obj.acl\n ? item.data.obj.type === 'state'\n ? item.data.obj.acl.state\n : item.data.obj.acl.object\n : 0;\n const aclSystemConfig =\n item.data.obj.acl &&\n (item.data.obj.type === 'state'\n ? that.systemConfig?.common.defaultNewAcl.state\n : that.systemConfig?.common.defaultNewAcl.object);\n\n const showEdit = !!item.data.obj && (that.state.filter.expertMode || isNonExpertId(item.data.id));\n\n return [\n that.state.filter.expertMode && that.props.objectEditOfAccessControl ? (\n <Tooltip\n key=\"acl\"\n title={item.data.aclTooltip}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <IconButton\n sx={{\n ...styles.cellButtonsButton,\n ...styles.cellButtonMinWidth,\n opacity: 1,\n }}\n onClick={() => that.setState({ modalEditOfAccess: true, modalEditOfAccessObjData: item.data })}\n size=\"large\"\n >\n <div style={styles.aclText}>\n {Number.isNaN(Number(acl)) ? Number(aclSystemConfig).toString(16) : Number(acl).toString(16)}\n </div>\n </IconButton>\n </Tooltip>\n ) : (\n <div\n key=\"aclEmpty\"\n style={styles.cellButtonMinWidth}\n />\n ),\n\n showEdit ? (\n <IconButton\n key=\"edit\"\n sx={{\n marginRight: '2px',\n ...styles.cellButtonsButton,\n }}\n size=\"small\"\n aria-label=\"edit\"\n title={that.texts.editObject}\n onClick={() => {\n that.localStorage.setItem(`${that.props.dialogName || 'App'}.objectSelected`, id);\n that.setState({ editObjectDialog: id, editObjectAlias: false });\n }}\n >\n <IconEdit style={styles.cellButtonsButtonIcon} />\n </IconButton>\n ) : (\n <Box\n component=\"div\"\n key=\"editDisabled\"\n sx={styles.cellButtonsButton}\n />\n ),\n\n that.props.onObjectDelete && (item.children?.length || !item.data.obj.common?.dontDelete) ? (\n <IconButton\n key=\"delete\"\n sx={styles.cellButtonsButton}\n size=\"small\"\n aria-label=\"delete\"\n onClick={() => {\n const keys = Object.keys(that.objects);\n keys.sort();\n let count = 0;\n const start = `${id}.`;\n for (let i = 0; i < keys.length; i++) {\n if (keys[i].startsWith(start)) {\n count++;\n } else if (keys[i] > start) {\n break;\n }\n }\n if (that.props.onObjectDelete) {\n that.props.onObjectDelete(\n id,\n !!item.children?.length,\n !item.data.obj?.common?.dontDelete,\n count,\n );\n }\n }}\n title={that.texts.deleteObject}\n >\n <IconDelete style={styles.cellButtonsButtonIcon} />\n </IconButton>\n ) : null,\n\n that.props.objectCustomDialog &&\n that.info.hasSomeCustoms &&\n item.data.obj.type === 'state' &&\n // @ts-expect-error deprecated from js-controller 6\n item.data.obj.common?.type !== 'file' ? (\n <IconButton\n sx={{\n ...styles.cellButtonsButton,\n ...(item.data.hasCustoms\n ? that.styles.cellButtonsButtonWithCustoms\n : styles.cellButtonsButtonWithoutCustoms),\n }}\n key=\"custom\"\n size=\"small\"\n aria-label=\"config\"\n title={that.texts.customConfig}\n onClick={() => {\n that.localStorage.setItem(`${that.props.dialogName || 'App'}.objectSelected`, id);\n\n that.pauseSubscribe(true);\n that.props.router?.doNavigate(null, 'customs', id);\n that.setState({ customDialog: [id], customDialogAll: false });\n }}\n >\n <IconConfig style={styles.cellButtonsButtonIcon} />\n </IconButton>\n ) : null,\n ];\n}\n\n/**\n * This function renders the value in different forms in the table\n *\n * @param that the object browser instance\n * @param id state ID\n * @param item Item\n * @param narrowStyleWithDetails if use mobile view\n */\nexport function renderColumnValue(\n that: ObjectBrowserClass,\n id: string,\n item: TreeItem,\n narrowStyleWithDetails?: boolean,\n): JSX.Element | null {\n const obj = item.data.obj;\n if (!obj || !that.states) {\n return null;\n }\n\n if (obj.common?.type === 'file') {\n return (\n <Box\n component=\"div\"\n sx={{ ...styles.cellValueText, ...styles.cellValueFile }}\n >\n [file]\n </Box>\n );\n }\n if (!that.states[id]) {\n if (obj.type === 'state') {\n // we are waiting for state\n if (!that.recordStates.includes(id)) {\n that.recordStates.push(id);\n }\n that.states[id] = { val: null } as ioBroker.State;\n that.subscribe(id);\n }\n return null;\n }\n if (!that.recordStates.includes(id)) {\n that.recordStates.push(id);\n }\n\n const state = that.states[id];\n\n let info = item.data.state;\n if (!info) {\n const { valText } = formatValue({\n state,\n obj: obj as ioBroker.StateObject,\n texts: that.texts,\n dateFormat: that.props.dateFormat || that.systemConfig?.common.dateFormat || DEFAULT_DATE_FORMAT,\n isFloatComma:\n that.props.isFloatComma === undefined\n ? (that.systemConfig?.common.isFloatComma ?? true)\n : that.props.isFloatComma,\n });\n const valTextRx: JSX.Element[] = [];\n item.data.state = { valTextRx };\n\n valTextRx.push(\n <span\n className={`newValueBrowser-${that.props.themeType || 'light'}`}\n key={`${valText.v.toString()}valText`}\n style={{\n whiteSpace: 'nowrap',\n display: 'inline-block',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }}\n >\n {valText.v.toString()}\n </span>,\n );\n if (valText.u) {\n valTextRx.push(\n <span\n className={`newValueBrowser-${that.props.themeType || 'light'}`}\n style={styles.cellValueTextUnit}\n key={`${valText.v.toString()}unit`}\n >\n {valText.u}\n </span>,\n );\n }\n if (valText.s !== undefined) {\n valTextRx.push(\n <span\n style={styles.cellValueTextState}\n className={`newValueBrowser-${that.props.themeType || 'light'}`}\n key={`${valText.v.toString()}states`}\n >\n ({valText.s})\n </span>,\n );\n }\n if (!narrowStyleWithDetails) {\n const copyText = valText.c !== undefined ? valText.c : valText.v || '';\n valTextRx.push(\n <IconCopy\n className=\"copyButton\"\n style={that.styles.iconCopy}\n onClick={e => that.onCopy(e, copyText)}\n key=\"cc\"\n />,\n );\n }\n // <IconEdit className=\"copyButton\" style={{{ ...styles.cellButtonsValueButton, styles.cellButtonsValueButtonEdit)} key=\"ce\" />\n\n info = item.data.state;\n }\n\n info.style = getValueStyle({\n state,\n isExpertMode: that.state.filter.expertMode,\n isButton: item.data.button,\n nonAckColor: that.props.theme.palette.nonAck,\n });\n\n let val: JSX.Element[] | null | undefined = info.valTextRx;\n if (!that.state.filter.expertMode) {\n if (item.data.button) {\n val = [\n <ButtonIcon\n key=\"button\"\n style={{ color: info.style.color, ...styles.cellValueButton }}\n />,\n ];\n } else if (item.data.switch) {\n val = [\n <Switch\n key=\"switch\"\n sx={{\n '& .MuiSwitch-thumb': { color: info.style.color },\n '& .MuiSwitch-track': {\n backgroundColor:\n !!that.states[id].val && that.state.selected.includes(id)\n ? that.props.themeType === 'dark'\n ? '#FFF !important'\n : '#111 !important'\n : undefined,\n },\n }}\n checked={!!that.states[id].val}\n />,\n ];\n }\n }\n\n return (\n <Tooltip\n key=\"value\"\n title={that.state.tooltipInfo?.el}\n slotProps={{\n popper: { sx: styles.cellValueTooltipBox },\n tooltip: { sx: styles.cellValueTooltip },\n }}\n onOpen={() => that.getTooltipInfo(id, () => that.readHistory(id))}\n onClose={() => that.state.tooltipInfo?.id === id && that.setState({ tooltipInfo: null })}\n >\n <Box\n component=\"div\"\n style={info.style}\n className={item.data.url ? 'iob-link' : undefined}\n sx={{\n ...styles.cellValueText,\n height: narrowStyleWithDetails ? undefined : ROW_HEIGHT,\n '& .admin-button:active': {\n transform: 'translate(0, 2px)',\n },\n }}\n >\n {val}\n </Box>\n </Tooltip>\n );\n}\n\n/**\n * Renders a custom value.\n */\nexport function renderCustomValue(\n that: ObjectBrowserClass,\n obj: ioBroker.Object,\n it: AdapterColumn,\n item: TreeItem,\n): JSX.Element | null {\n const text = getCustomValue(obj, it);\n if (text !== null && text !== undefined) {\n if (it.edit && !that.props.notEditable && (!it.objTypes || it.objTypes.includes(obj.type))) {\n return (\n <Box\n component=\"div\"\n style={{\n ...styles.columnCustom,\n ...styles.columnCustomEditable,\n ...styles[`columnCustom_${it.align}`],\n }}\n onClick={() =>\n that.setState({\n columnsEditCustomDialog: { item, it, obj },\n customColumnDialogValueChanged: false,\n })\n }\n >\n {text}\n </Box>\n );\n }\n return (\n <Box\n component=\"div\"\n style={{\n ...styles.columnCustom,\n ...styles[`columnCustom_${it.align}`],\n }}\n >\n {text}\n </Box>\n );\n }\n return null;\n}\n\nexport function renderAliasLink(\n that: ObjectBrowserClass,\n id: string,\n index?: number,\n customStyle?: Record<string, any>,\n): JSX.Element | null {\n const _index = index || 0;\n // read the type of operation\n const aliasObj = that.objects[that.info.aliasesMap[id][_index]].common.alias.id;\n if (aliasObj) {\n return (\n <Box\n component=\"div\"\n onClick={e => {\n e.stopPropagation();\n e.preventDefault();\n const aliasId = that.info.aliasesMap[id][_index];\n // if more than one alias, close the menu\n if (that.info.aliasesMap[id].length > 1) {\n that.setState({ aliasMenu: '' });\n }\n that.onSelect(aliasId);\n setTimeout(() => that.expandAllSelected(() => that.scrollToItem(aliasId)), 100);\n }}\n sx={customStyle || that.styles.aliasAlone}\n >\n <span className=\"admin-browser-arrow\">\n {typeof aliasObj === 'string' || (aliasObj.read === id && aliasObj.write === id)\n ? '↔'\n : aliasObj.read === id\n ? '→'\n : '←'}\n </span>\n {that.info.aliasesMap[id][_index]}\n </Box>\n );\n }\n\n return null;\n}\n\n/**\n * Renders a leaf.\n */\nexport function renderLeaf(\n that: ObjectBrowserClass,\n item: TreeItem,\n isExpanded: boolean | undefined,\n counter: { count: number },\n): { row: JSX.Element; details: JSX.Element | null } {\n const id = item.data.id;\n counter.count++;\n isExpanded = isExpanded === undefined ? that.state.expanded.includes(id) : isExpanded;\n\n // icon\n let iconFolder;\n const obj = item.data.obj;\n const itemType = obj?.type;\n\n if (\n item.children ||\n itemType === 'folder' ||\n itemType === 'device' ||\n itemType === 'channel' ||\n itemType === 'meta'\n ) {\n iconFolder = isExpanded ? (\n <IconOpen\n style={that.styles.cellIdIconFolder}\n onClick={() => that.toggleExpanded(id)}\n />\n ) : (\n <IconClosed\n style={that.styles.cellIdIconFolder}\n onClick={() => that.toggleExpanded(id)}\n />\n );\n } else if (obj && obj.common && obj.common.write === false && obj.type === 'state') {\n iconFolder = <IconDocumentReadOnly style={that.styles.cellIdIconDocument} />;\n } else {\n iconFolder = <IconDocument style={that.styles.cellIdIconDocument} />;\n }\n\n let iconItem = null;\n if (item.data.icon) {\n if (typeof item.data.icon === 'string') {\n if (item.data.icon.length < 3) {\n iconItem = (\n <span\n className=\"iconOwn\"\n style={styles.cellIdIconOwn}\n >\n {item.data.icon}\n </span>\n ); // utf-8 char\n } else {\n iconItem = (\n <Icon\n style={styles.cellIdIconOwn}\n className=\"iconOwn\"\n src={item.data.icon}\n alt=\"\"\n />\n );\n }\n } else {\n iconItem = item.data.icon;\n }\n }\n\n const common = obj?.common;\n\n const typeImg = (obj?.type && ITEM_IMAGES[obj.type]) || <div className=\"itemIcon\" />;\n\n const paddingLeft = that.levelPadding * (item.data.level || 0);\n\n // recalculate rooms and function names if the language changed\n if (item.data.lang !== that.props.lang) {\n const { rooms, per } = findRoomsForObject(that.info, id, that.props.lang);\n item.data.rooms = rooms.join(', ');\n item.data.per = per;\n const { funcs, pef } = findFunctionsForObject(that.info, id, that.props.lang);\n item.data.funcs = funcs.join(', ');\n item.data.pef = pef;\n item.data.lang = that.props.lang;\n }\n\n const checkbox =\n that.props.multiSelect &&\n that.objects[id] &&\n (!that.props.types || that.props.types.includes(that.objects[id].type)) ? (\n <Checkbox\n style={styles.checkBox}\n checked={that.state.selected.includes(id)}\n />\n ) : null;\n\n let valueEditable =\n !that.props.notEditable && itemType === 'state' && (that.state.filter.expertMode || common?.write !== false);\n if (that.props.objectBrowserViewFile && common?.type === 'file') {\n valueEditable = true;\n }\n\n const enumEditable =\n !that.props.notEditable &&\n that.objects[id] &&\n (that.state.filter.expertMode || itemType === 'state' || itemType === 'channel' || itemType === 'device');\n\n const checkVisibleObjectType =\n that.state.statesView && (itemType === 'state' || itemType === 'channel' || itemType === 'device');\n\n let newValue = '';\n const newValueTitle = [];\n if (checkVisibleObjectType) {\n newValue = that.states[id]?.from;\n if (newValue === undefined) {\n newValue = ' ';\n } else {\n newValue = newValue ? newValue.replace(/^system\\.adapter\\.|^system\\./, '') : '';\n newValueTitle.push(`${that.texts.stateChangedFrom} ${newValue}`);\n }\n if (obj?.user) {\n const user = obj.user.replace('system.user.', '');\n newValue += `/${user}`;\n newValueTitle.push(`${that.texts.stateChangedBy} ${user}`);\n }\n }\n\n if (obj) {\n if (obj.from) {\n newValueTitle.push(\n `${that.texts.objectChangedFrom} ${obj.from.replace(/^system\\.adapter\\.|^system\\./, '')}`,\n );\n }\n if (obj.user) {\n newValueTitle.push(`${that.texts.objectChangedBy} ${obj.user.replace(/^system\\.user\\./, '')}`);\n }\n if (obj.ts) {\n newValueTitle.push(\n `${that.texts.objectChangedByUser} ${Utils.formatDate(new Date(obj.ts), that.props.dateFormat || that.systemConfig?.common.dateFormat || DEFAULT_DATE_FORMAT)}`,\n );\n }\n }\n\n let readWriteAlias = false;\n let alias: JSX.Element | null = null;\n if (id.startsWith('alias.') && common?.alias?.id) {\n readWriteAlias = typeof common.alias.id === 'object';\n if (readWriteAlias) {\n alias = (\n <div style={styles.cellIdAliasReadWriteDiv}>\n {common.alias.id.read ? (\n <Box\n component=\"div\"\n onClick={e => {\n e.stopPropagation();\n e.preventDefault();\n that.onSelect(common.alias.id.read);\n setTimeout(\n () => that.expandAllSelected(() => that.scrollToItem(common.alias.id.read)),\n 100,\n );\n }}\n sx={that.styles.aliasReadWrite}\n >\n ←{common.alias.id.read}\n </Box>\n ) : null}\n {common.alias.id.write ? (\n <Box\n component=\"div\"\n onClick={e => {\n e.stopPropagation();\n e.preventDefault();\n that.onSelect(common.alias.id.write);\n setTimeout(\n () => that.expandAllSelected(() => that.scrollToItem(common.alias.id.write)),\n 100,\n );\n }}\n sx={that.styles.aliasReadWrite}\n >\n →{common.alias.id.write}\n </Box>\n ) : null}\n </div>\n );\n } else {\n alias = (\n <Box\n component=\"div\"\n onClick={e => {\n e.stopPropagation();\n e.preventDefault();\n that.onSelect(common.alias.id);\n setTimeout(() => that.expandAllSelected(() => that.scrollToItem(common.alias.id)), 100);\n }}\n sx={that.styles.aliasAlone}\n >\n →{common.alias.id}\n </Box>\n );\n }\n } else if (that.info.aliasesMap[id]) {\n // Some alias points to that object. It can be more than one\n if (that.info.aliasesMap[id].length > 1) {\n // Show number of aliases and open a menu by click\n alias = (\n <Box\n component=\"div\"\n id={`alias_${id}`}\n onClick={e => {\n e.stopPropagation();\n e.preventDefault();\n that.setState({ aliasMenu: id });\n }}\n sx={that.styles.aliasAlone}\n >\n {that.props.t('ra_%s links from aliases', that.info.aliasesMap[id].length)}\n </Box>\n );\n } else {\n // Show name of alias and open it by click\n alias = renderAliasLink(that, id, 0);\n }\n }\n\n let checkColor = common?.color;\n let invertBackground;\n if (checkColor && !that.state.selected.includes(id)) {\n // Only a rough reference value for the distance check, so the type is enough. Asking for the\n // name meant that every theme beyond \"dark\" and \"blue\" - \"modernDark\" among them - was\n // compared against white and the contrast was judged wrongly.\n const background = that.props.themeType === 'dark' ? '#1f1f1f' : '#FFFFFF';\n const distance = Utils.colorDistance(checkColor, background);\n // console.log(`Distance: ${checkColor} - ${background} = ${distance}`);\n if (distance < 1000) {\n invertBackground = that.props.themeType === 'dark' ? '#9a9a9a' : '#565656';\n }\n }\n let bold = false;\n if (id === '0_userdata') {\n checkColor = COLOR_NAME_USERDATA(that.props.themeType);\n bold = true;\n invertBackground = false;\n } else if (id === 'alias') {\n checkColor = COLOR_NAME_ALIAS(that.props.themeType);\n bold = true;\n invertBackground = false;\n } else if (id === 'javascript') {\n checkColor = COLOR_NAME_JAVASCRIPT(that.props.themeType);\n bold = true;\n invertBackground = false;\n } else if (id === 'system') {\n checkColor = COLOR_NAME_SYSTEM(that.props.themeType);\n bold = true;\n invertBackground = false;\n } else if (id === 'system.adapter') {\n checkColor = COLOR_NAME_SYSTEM_ADAPTER(that.props.themeType);\n invertBackground = false;\n } else if (!checkColor || that.state.selected.includes(id)) {\n checkColor = 'inherit';\n invertBackground = false;\n }\n\n const icons = [];\n\n if (common?.statusStates) {\n const ids: Record<string, string> = {};\n Object.keys(common.statusStates).forEach(name => {\n let _id = common.statusStates[name];\n if (_id.split('.').length < 3) {\n _id = `${id}.${_id}`;\n }\n ids[name] = _id;\n\n if (!that.states[_id]) {\n if (that.objects[_id]?.type === 'state') {\n if (!that.recordStates.includes(_id)) {\n that.recordStates.push(_id);\n }\n that.states[_id] = { val: null } as ioBroker.State;\n that.subscribe(_id);\n }\n } else if (!that.recordStates.includes(_id)) {\n that.recordStates.push(_id);\n }\n });\n // calculate color\n // errorId has priority\n let colorSet = false;\n if (common.statusStates.errorId && that.states[ids.errorId] && that.states[ids.errorId].val) {\n checkColor = that.props.themeType === 'dark' ? COLOR_NAME_ERROR_DARK : COLOR_NAME_ERROR_LIGHT;\n invertBackground = false;\n colorSet = true;\n icons.push(\n <IconError\n key=\"error\"\n // title={that.texts.deviceError}\n style={that.styles.iconDeviceError}\n />,\n );\n }\n\n if (ids.onlineId && that.states[ids.onlineId]) {\n if (!colorSet) {\n if (that.states[ids.onlineId].val) {\n checkColor =\n that.props.themeType === 'dark' ? COLOR_NAME_CONNECTED_DARK : COLOR_NAME_CONNECTED_LIGHT;\n invertBackground = false;\n icons.push(\n <IconConnection\n key=\"conn\"\n // title={that.texts.deviceError}\n style={that.styles.iconDeviceConnected}\n />,\n );\n } else {\n checkColor =\n that.props.themeType === 'dark' ? COLOR_NAME_DISCONNECTED_DARK : COLOR_NAME_DISCONNECTED_LIGHT;\n invertBackground = false;\n icons.push(\n <IconDisconnected\n key=\"disc\"\n // title={that.texts.deviceError}\n style={that.styles.iconDeviceDisconnected}\n />,\n );\n }\n } else if (that.states[ids.onlineId].val) {\n icons.push(\n <IconConnection\n key=\"conn\"\n // title={that.texts.deviceError}\n style={that.styles.iconDeviceConnected}\n />,\n );\n } else {\n icons.push(\n <IconDisconnected\n key=\"disc\"\n // title={that.texts.deviceError}\n style={that.styles.iconDeviceDisconnected}\n />,\n );\n }\n } else if (ids.offlineId && that.states[ids.offlineId]) {\n if (!colorSet) {\n if (that.states[ids.offlineId].val) {\n checkColor =\n that.props.themeType === 'dark' ? COLOR_NAME_DISCONNECTED_DARK : COLOR_NAME_DISCONNECTED_LIGHT;\n invertBackground = false;\n icons.push(\n <IconDisconnected\n key=\"disc\"\n // title={that.texts.deviceError}\n style={that.styles.iconDeviceDisconnected}\n />,\n );\n } else {\n checkColor =\n that.props.themeType === 'dark' ? COLOR_NAME_CONNECTED_DARK : COLOR_NAME_CONNECTED_LIGHT;\n invertBackground = false;\n icons.push(\n <IconConnection\n key=\"conn\"\n // title={that.texts.deviceError}\n style={that.styles.iconDeviceConnected}\n />,\n );\n }\n } else if (that.states[ids.offlineId].val) {\n icons.push(\n <IconDisconnected\n key=\"disc\"\n // title={that.texts.deviceError}\n style={that.styles.iconDeviceDisconnected}\n />,\n );\n } else {\n icons.push(\n <IconConnection\n key=\"conn\"\n // title={that.texts.deviceError}\n style={that.styles.iconDeviceConnected}\n />,\n );\n }\n }\n }\n\n const q = checkVisibleObjectType ? Utils.quality2text(that.states[id]?.q || 0).join(', ') : null;\n\n let name: JSX.Element[] | string = item.data?.title || '';\n let useDesc = false;\n if (that.state.showDescription) {\n const oTooltip: string | null = getObjectTooltip(item.data, that.props.lang);\n if (oTooltip) {\n name = [\n <div\n key=\"name\"\n style={styles.cellNameDivDiv}\n >\n {name}\n </div>,\n <div\n key=\"desc\"\n style={styles.cellDescription}\n >\n {oTooltip}\n </div>,\n ];\n useDesc = !!oTooltip;\n }\n }\n\n const narrowStyleWithDetails = that.width === 'xs' && that.state.focused === id;\n\n const colID = (\n <Grid\n container\n wrap=\"nowrap\"\n direction=\"row\"\n sx={styles.cellId}\n style={{ width: colWidth('id'), flexGrow: colGrow('id'), paddingLeft }}\n >\n <Grid\n container\n // the icons must not be squeezed by a long name\n sx={{ alignItems: 'center', flexShrink: 0 }}\n >\n {checkbox}\n {iconFolder}\n </Grid>\n <Grid\n style={{\n ...styles.cellIdSpan,\n // only the name may shrink (it is cut with an ellipsis), and for that a flex item\n // needs `minWidth: 0`, otherwise its content defines the minimal width\n minWidth: 0,\n ...(invertBackground ? that.styles.invertedBackground : undefined),\n color: checkColor,\n fontWeight: bold ? 'bold' : undefined,\n }}\n >\n <Tooltip\n title={getIdFieldTooltip(item.data, that.props.lang)}\n slotProps={{ popper: { sx: styles.tooltip } }}\n >\n <div>{item.data.name}</div>\n </Tooltip>\n {alias}\n {icons}\n </Grid>\n <div style={{ ...styles.grow, ...(invertBackground ? that.styles.invertedBackgroundFlex : {}) }} />\n <Grid\n container\n sx={{ alignItems: 'center', flexShrink: 0 }}\n >\n {iconItem}\n </Grid>\n {that.width !== 'xs' ? (\n <div style={{ flexShrink: 0 }}>\n <IconCopy\n className={narrowStyleWithDetails ? '' : 'copyButton'}\n style={styles.cellCopyButton}\n onClick={e => that.onCopy(e, id)}\n />\n </div>\n ) : null}\n </Grid>\n );\n\n let colName =\n (narrowStyleWithDetails && name) || that.columnsVisibility.name ? (\n <Box\n component=\"div\"\n sx={{\n ...styles.cellName,\n ...(useDesc ? styles.cellNameWithDesc : undefined),\n width: that.width !== 'xs' ? colWidth('name') : undefined,\n flexGrow: that.width !== 'xs' ? colGrow('name') : undefined,\n // padding and not margin: a margin is added to the width of the column and all\n // following columns would not match the header anymore\n pl: narrowStyleWithDetails ? 0 : '5px',\n }}\n >\n {name}\n {!narrowStyleWithDetails && item.data?.title ? (\n <Box style={{ color: checkColor }}>\n <IconCopy\n className=\"copyButton\"\n style={styles.cellCopyButton}\n onClick={e => that.onCopy(e, item.data?.title)}\n />\n </Box>\n ) : null}\n </Box>\n ) : null;\n\n let colMiddle:\n | ({\n el: JSX.Element;\n type: 'filter_type' | 'filter_role' | 'filter_func' | 'filter_room' | 'quality' | 'from' | 'lc' | 'ts';\n onClick?: (() => void) | null | undefined;\n } | null)[]\n | null;\n if (!that.state.statesView) {\n colMiddle = [\n (narrowStyleWithDetails && obj?.type) || that.columnsVisibility.type\n ? {\n el: (\n <div\n key=\"type\"\n style={{\n ...styles.cellType,\n width: that.width !== 'xs' ? colWidth('type') : undefined,\n }}\n >\n {typeImg}\n \n {obj?.type}\n </div>\n ),\n type: 'filter_type',\n }\n : null,\n (narrowStyleWithDetails && common) || that.columnsVisibility.role\n ? {\n el: (\n <div\n key=\"role\"\n style={{\n ...styles.cellRole,\n width: that.width !== 'xs' ? colWidth('role') : '100%',\n cursor:\n that.state.filter.expertMode && enumEditable && that.props.objectBrowserEditRole\n ? 'text'\n : 'default',\n }}\n onClick={\n !narrowStyleWithDetails &&\n that.state.filter.expertMode &&\n enumEditable &&\n that.props.objectBrowserEditRole\n ? () => that.setState({ roleDialog: item.data.id })\n : undefined\n }\n >\n {common?.role}\n </div>\n ),\n type: 'filter_role',\n onClick:\n narrowStyleWithDetails &&\n that.state.filter.expertMode &&\n enumEditable &&\n that.props.objectBrowserEditRole\n ? () => that.setState({ roleDialog: item.data.id })\n : undefined,\n }\n : null,\n (narrowStyleWithDetails && common) || that.columnsVisibility.room\n ? {\n el: (\n <div\n key=\"room\"\n style={{\n ...styles.cellRoom,\n ...(item.data.per ? styles.cellEnumParent : {}),\n width: that.width !== 'xs' ? colWidth('room') : '100%',\n cursor: enumEditable ? 'text' : 'default',\n }}\n onClick={\n !narrowStyleWithDetails && enumEditable\n ? () => {\n const enums = findEnumsForObjectAsIds(that.info, item.data.id, 'roomEnums');\n that.setState({\n enumDialogEnums: enums,\n enumDialog: {\n item,\n type: 'room',\n enumsOriginal: JSON.stringify(enums),\n },\n });\n }\n : undefined\n }\n >\n {item.data.rooms}\n </div>\n ),\n type: 'filter_room',\n onClick:\n narrowStyleWithDetails && enumEditable\n ? () => {\n const enums = findEnumsForObjectAsIds(that.info, item.data.id, 'roomEnums');\n that.setState({\n enumDialogEnums: enums,\n enumDialog: {\n item,\n type: 'room',\n enumsOriginal: JSON.stringify(enums),\n },\n });\n }\n : undefined,\n }\n : null,\n (narrowStyleWithDetails && common) || that.columnsVisibility.func\n ? {\n el: (\n <div\n key=\"func\"\n style={{\n ...styles.cellFunc,\n ...(item.data.pef ? styles.cellEnumParent : {}),\n width: that.width !== 'xs' ? colWidth('func') : '100%',\n cursor: enumEditable ? 'text' : 'default',\n }}\n onClick={\n !narrowStyleWithDetails && enumEditable\n ? () => {\n const enums = findEnumsForObjectAsIds(that.info, item.data.id, 'funcEnums');\n that.setState({\n enumDialogEnums: enums,\n enumDialog: {\n item,\n type: 'func',\n enumsOriginal: JSON.stringify(enums),\n },\n });\n }\n : undefined\n }\n >\n {item.data.funcs}\n </div>\n ),\n type: 'filter_func',\n onClick:\n narrowStyleWithDetails && enumEditable\n ? () => {\n const enums = findEnumsForObjectAsIds(that.info, item.data.id, 'funcEnums');\n that.setState({\n enumDialogEnums: enums,\n enumDialog: {\n item,\n type: 'func',\n enumsOriginal: JSON.stringify(enums),\n },\n });\n }\n : undefined,\n }\n : null,\n ];\n } else {\n colMiddle = [\n (narrowStyleWithDetails && checkVisibleObjectType && that.states[id]?.from) ||\n that.columnsVisibility.changedFrom\n ? {\n el: (\n <div\n key=\"from\"\n style={{\n ...styles.cellRole,\n width: that.width !== 'xs' ? colWidth('changedFrom') : undefined,\n }}\n title={newValueTitle.join('\\n')}\n >\n {checkVisibleObjectType && that.states[id]?.from ? newValue : null}\n </div>\n ),\n type: 'from',\n }\n : null,\n (narrowStyleWithDetails && q) || that.columnsVisibility.qualityCode\n ? {\n el: (\n <div\n key=\"q\"\n style={{\n ...styles.cellRole,\n width: that.width !== 'xs' ? colWidth('qualityCode') : undefined,\n }}\n title={q || ''}\n >\n {q}\n </div>\n ),\n type: 'quality',\n }\n : null,\n (narrowStyleWithDetails && checkVisibleObjectType && that.states[id]?.ts) ||\n that.columnsVisibility.timestamp\n ? {\n el: (\n <div\n key=\"ts\"\n style={{\n ...styles.cellRole,\n width: that.width !== 'xs' ? colWidth('timestamp') : undefined,\n }}\n >\n {checkVisibleObjectType && that.states[id]?.ts\n ? Utils.formatDate(\n new Date(that.states[id].ts),\n that.props.dateFormat ||\n that.systemConfig?.common.dateFormat ||\n DEFAULT_DATE_FORMAT,\n )\n : null}\n </div>\n ),\n type: 'ts',\n }\n : null,\n (narrowStyleWithDetails && checkVisibleObjectType && that.states[id]?.lc) ||\n that.columnsVisibility.lastChange\n ? {\n el: (\n <div\n key=\"lc\"\n style={{\n ...styles.cellRole,\n width: that.width !== 'xs' ? colWidth('lastChange') : undefined,\n }}\n >\n {checkVisibleObjectType && that.states[id]?.lc\n ? Utils.formatDate(\n new Date(that.states[id].lc),\n that.props.dateFormat ||\n that.systemConfig?.common.dateFormat ||\n DEFAULT_DATE_FORMAT,\n )\n : null}\n </div>\n ),\n type: 'lc',\n }\n : null,\n ];\n }\n\n let colCustom: JSX.Element[] | null =\n that.adapterColumns?.map(it => (\n <div\n style={{\n ...styles.cellAdapter,\n width: that.width !== 'xs' ? colWidth(it.id) : undefined,\n }}\n key={it.id}\n title={`${it.adapter} => ${it.pathText}`}\n >\n {obj ? renderCustomValue(that, obj, it, item) : null}\n </div>\n )) || null;\n\n const columnValue =\n narrowStyleWithDetails || that.columnsVisibility.val\n ? renderColumnValue(that, id, item, narrowStyleWithDetails)\n : null;\n\n let colValue =\n (narrowStyleWithDetails && columnValue) || that.columnsVisibility.val ? (\n <div\n style={{\n ...styles.cellValue,\n width: that.width !== 'xs' ? colWidth('val') : 'calc(100% - 100px)',\n cursor: valueEditable\n ? common?.type === 'file'\n ? 'zoom-in'\n : item.data.button\n ? 'grab'\n : 'text'\n : 'default',\n }}\n onClick={e => {\n if (valueEditable) {\n if (!obj || !that.states) {\n // return;\n } else if (common?.type === 'file') {\n that.setState({ viewFileDialog: id });\n } else if (item.data.url && e.ctrlKey) {\n if (that.states[id]?.val && typeof that.states[id].val === 'string') {\n if (common?.role === 'url.self') {\n window.location.href = that.states[id].val;\n } else {\n const opened = window.open(that.states[id].val, '_blank');\n opened?.focus();\n }\n }\n } else if (!that.state.filter.expertMode && item.data.button) {\n // in non-expert mode control button directly\n that.props.socket\n .setState(id, true)\n .catch(e => window.alert(`Cannot write state \"${id}\": ${e}`));\n } else if (!that.state.filter.expertMode && item.data.switch) {\n // in non-expert mode control switch directly\n that.props.socket\n .setState(id, !that.states[id].val)\n .catch(e => window.alert(`Cannot write state \"${id}\": ${e}`));\n } else {\n that.edit = {\n val: that.states[id] ? that.states[id].val : '',\n q: that.states[id] ? that.states[id].q || 0 : 0,\n ack: false,\n id,\n };\n that.setState({ updateOpened: true });\n }\n } else if (common?.role === 'url' || (common?.role === 'url.blank' && e.ctrlKey)) {\n if (that.states[id]?.val && typeof that.states[id].val === 'string') {\n window.open(that.states[id].val, '_blank');\n }\n } else if (common?.role === 'url.self' && e.ctrlKey) {\n if (that.states[id]?.val && typeof that.states[id].val === 'string') {\n window.location.href = that.states[id].val;\n }\n }\n }}\n >\n {columnValue}\n </div>\n ) : null;\n\n let colButtons =\n narrowStyleWithDetails || that.columnsVisibility.buttons ? (\n <div\n style={{\n ...styles.cellButtons,\n width: that.width !== 'xs' ? colWidth('buttons') : undefined,\n }}\n >\n {renderColumnButtons(that, id, item)}\n </div>\n ) : null;\n\n let colDetails: JSX.Element | null = null;\n if (that.width === 'xs' && that.state.focused === id) {\n colMiddle = colMiddle.filter(a => a);\n let renderedMiddle: (JSX.Element | null)[] | null;\n if (!colMiddle.length) {\n renderedMiddle = null;\n } else {\n renderedMiddle = colMiddle.map(it => {\n if (!it) {\n return null;\n }\n return (\n <div\n key={it.type}\n style={styles.cellDetailsLine}\n >\n <span style={styles.cellDetailsName}>{that.texts[it.type]}:</span>\n {it.el}\n <div style={{ flexGrow: 1 }} />\n {it.onClick ? (\n <IconEdit\n style={styles.cellCopyButtonInDetails}\n onClick={() => {\n if (it?.onClick) {\n it.onClick();\n }\n }}\n />\n ) : null}\n </div>\n );\n });\n }\n if (!colCustom.length) {\n colCustom = null;\n }\n colDetails = (\n <Paper\n style={{\n width: '100%',\n // the padding must be inside of the width, else the row is wider than the table\n boxSizing: 'border-box',\n display: 'flex',\n flexDirection: 'column',\n padding: 10,\n backgroundColor: that.props.theme.palette.mode === 'dark' ? '#333' : '#ccc',\n }}\n >\n <div style={styles.cellDetailsLine}>\n <div style={{ flexGrow: 1 }} />\n <IconCopy\n style={styles.cellCopyButtonInDetails}\n onClick={e => that.onCopy(e, id)}\n />\n </div>\n {colName && (\n <div style={styles.cellDetailsLine}>\n <span style={styles.cellDetailsName}>{that.texts.name}:</span>\n {colName}\n <div style={{ flexGrow: 1 }} />\n {item.data?.title ? (\n <IconCopy\n className=\"copyButton\"\n style={styles.cellCopyButtonInDetails}\n onClick={e => that.onCopy(e, item.data?.title)}\n />\n ) : null}\n </div>\n )}\n {renderedMiddle}\n {colCustom && <div style={styles.cellDetailsLine}>{colCustom}</div>}\n {that.objects[id]?.type === 'state' && (\n <div style={styles.cellDetailsLine}>\n <span style={styles.cellDetailsName}>{that.texts.value}:</span>\n {colValue}\n <div style={{ flexGrow: 1 }} />\n <IconCopy\n className=\"copyButton\"\n style={styles.cellCopyButtonInDetails}\n onClick={e => {\n const { valText } = formatValue({\n state: that.states[id],\n obj: that.objects[id] as ioBroker.StateObject,\n texts: that.texts,\n dateFormat:\n that.props.dateFormat ||\n that.systemConfig?.common.dateFormat ||\n DEFAULT_DATE_FORMAT,\n isFloatComma:\n that.props.isFloatComma === undefined\n ? (that.systemConfig?.common.isFloatComma ?? true)\n : that.props.isFloatComma,\n });\n that.onCopy(e, valText.c !== undefined ? valText.c : valText.v.toString());\n }}\n key=\"cc\"\n />\n </div>\n )}\n {colButtons && <div style={{ ...styles.cellDetailsLine, justifyContent: 'right' }}>{colButtons}</div>}\n </Paper>\n );\n\n colName = null;\n colMiddle = null;\n colCustom = null;\n colValue = null;\n colButtons = null;\n }\n\n const row = (\n <Grid\n container\n direction=\"row\"\n wrap=\"nowrap\"\n sx={Utils.getStyle(\n that.props.theme,\n styles.tableRow,\n that.state.linesEnabled && styles.tableRowLines,\n !that.props.dragEnabled && styles.tableRowNoDragging,\n alias && styles.tableRowAlias,\n readWriteAlias && styles.tableRowAliasReadWrite,\n that.state.focused === id && that.props.multiSelect && styles.tableRowFocused,\n !item.data.visible && styles.filteredOut,\n item.data.hasVisibleParent &&\n !item.data.visible &&\n !item.data.hasVisibleChildren &&\n styles.filteredParentOut,\n that.state.selected.includes(id) && styles.itemSelected,\n that.state.selectedNonObject === id && styles.itemSelected,\n )}\n key={id}\n id={id}\n onMouseDown={e => {\n that.onSelect(id);\n let isRightMB;\n if ('which' in e) {\n // Gecko (Firefox), WebKit (Safari/Chrome) & Opera\n isRightMB = e.which === 3;\n } else if ('button' in e) {\n // IE, Opera\n isRightMB = e.button === 2;\n }\n if (isRightMB) {\n that.contextMenu = {\n item,\n ts: Date.now(),\n };\n } else {\n that.contextMenu = null;\n }\n }}\n onDoubleClick={() => {\n if (!item.children) {\n that.onSelect(id, true);\n } else {\n that.toggleExpanded(id);\n }\n }}\n >\n {colID}\n {colName}\n {colMiddle?.map(it => it?.el)}\n {colCustom}\n {colValue}\n {colButtons}\n </Grid>\n );\n return { row, details: colDetails };\n}\n\n/**\n * Renders an item.\n */\nexport function renderItem(\n that: ObjectBrowserClass,\n root: TreeItem,\n isExpanded: boolean | undefined,\n counter?: { count: number },\n): (JSX.Element | null)[] {\n const items: (JSX.Element | null)[] = [];\n counter = counter || { count: 0 };\n const result = renderLeaf(that, root, isExpanded, counter);\n let leaf: JSX.Element;\n const DragWrapper = that.props.DragWrapper;\n if (that.props.dragEnabled && DragWrapper) {\n if (root.data.sumVisibility) {\n leaf = (\n <DragWrapper\n key={root.data.id}\n item={root}\n style={styles.draggable}\n >\n {result.row}\n </DragWrapper>\n );\n } else {\n // change cursor\n leaf = (\n <div\n key={root.data.id}\n style={styles.nonDraggable}\n >\n {result.row}\n </div>\n );\n }\n } else {\n leaf = result.row;\n }\n if (root.data.id && leaf) {\n items.push(leaf);\n }\n if (result.details) {\n items.push(result.details);\n }\n\n isExpanded = isExpanded === undefined ? binarySearch(that.state.expanded, root.data.id) : isExpanded;\n\n if (!root.data.id || isExpanded) {\n if (!that.state.foldersFirst) {\n if (root.children) {\n items.push(\n root.children.map(item => {\n // do not render too many items in column editor mode\n if (!that.state.columnsSelectorShow || counter.count < 15) {\n if (item.data.sumVisibility) {\n return renderItem(that, item, undefined, counter);\n }\n }\n return null;\n }) as any as JSX.Element,\n );\n }\n } else if (root.children) {\n // first only folder\n items.push(\n root.children.map(item => {\n if (item.children) {\n // do not render too many items in column editor mode\n if (!that.state.columnsSelectorShow || counter.count < 15) {\n if (item.data.sumVisibility) {\n return renderItem(that, item, undefined, counter);\n }\n }\n }\n\n return null;\n }) as any as JSX.Element,\n );\n\n // then items\n items.push(\n root.children.map(item => {\n if (!item.children) {\n // do not render too many items in column editor mode\n if (!that.state.columnsSelectorShow || counter.count < 15) {\n if (item.data.sumVisibility) {\n return renderItem(that, item, undefined, counter);\n }\n }\n }\n return null;\n }) as any as JSX.Element,\n );\n }\n }\n\n return items;\n}\n"]}
|
package/build/GenericApp.js
CHANGED
|
@@ -465,16 +465,10 @@ export class GenericApp extends Router {
|
|
|
465
465
|
*/
|
|
466
466
|
toggleTheme(newThemeName) {
|
|
467
467
|
const themeName = this.state.themeName;
|
|
468
|
-
//
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
? 'light'
|
|
473
|
-
: themeName === 'blue'
|
|
474
|
-
? 'light'
|
|
475
|
-
: themeName === 'colored'
|
|
476
|
-
? 'light'
|
|
477
|
-
: 'dark');
|
|
468
|
+
// `Utils.toggleTheme` cycles through `Utils.getThemeNames()` and thus also through the
|
|
469
|
+
// modern themes. The chain that used to be here knew only dark, blue and colored and threw
|
|
470
|
+
// the user out of every other theme - and it already wrote the name itself.
|
|
471
|
+
newThemeName ||= Utils.toggleTheme(themeName);
|
|
478
472
|
if (newThemeName !== themeName) {
|
|
479
473
|
Utils.setThemeName(newThemeName);
|
|
480
474
|
const newTheme = this.createTheme(newThemeName);
|
package/build/GenericApp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenericApp.js","sourceRoot":"./src/","sources":["GenericApp.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright 2018-2026 Denis Haev (bluefox) <dogafox@gmail.com>\n *\n * MIT License\n *\n */\nimport React, { type JSX } from 'react';\nimport { PROGRESS, Connection, type AdminConnection } from '@iobroker/socket-client';\nimport * as Sentry from '@sentry/browser';\n\nimport { Snackbar, IconButton } from '@mui/material';\n\nimport { Close as IconClose } from '@mui/icons-material';\n\nimport { printPrompt } from './Prompt';\nimport { Theme } from './Theme';\nimport { Loader } from './Components/Loader';\nimport { Router } from './Components/Router';\nimport { Utils } from './Components/Utils';\nimport { SaveCloseButtons } from './Components/SaveCloseButtons';\nimport { DialogConfirm } from './Dialogs/Confirm';\nimport { I18n } from './i18n';\nimport { DialogError } from './Dialogs/Error';\nimport type {\n GenericAppProps,\n GenericAppState,\n GenericAppSettings,\n ThemeName,\n ThemeType,\n IobTheme,\n Width,\n} from './types';\n\nimport { dictionary } from './dictionary';\n\ndeclare global {\n /** If config has been changed */\n var changed: boolean;\n\n interface Window {\n io: any;\n SocketClient: any;\n adapterName: undefined | string;\n socketUrl: undefined | string;\n iobOldAlert: any;\n changed: boolean;\n $iframeDialog: {\n close?: () => void;\n };\n }\n}\n\n// import './index.css';\nconst cssStyle = `\nhtml {\n height: 100%;\n}\n\nbody {\n margin: 0;\n padding: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n width: 100%;\n height: 100%;\n overflow: hidden;\n}\n\n/* scrollbar */\n::-webkit-scrollbar-track {\n background-color: #ccc;\n border-radius: 5px;\n}\n\n::-webkit-scrollbar {\n width: 5px;\n height: 5px;\n background-color: #ccc;\n}\n\n::-webkit-scrollbar-thumb {\n background-color: #575757;\n border-radius: 5px;\n}\n\n#root {\n height: 100%;\n}\n\n.App {\n height: 100%;\n}\n\n@keyframes glow {\n from {\n background-color: initial;\n }\n to {\n background-color: #58c458;\n }\n}\n`;\n\nfunction isIFrame(): boolean {\n try {\n return window.self !== window.top;\n } catch {\n return true;\n }\n}\n\nexport class GenericApp<\n TProps extends GenericAppProps = GenericAppProps,\n TState extends GenericAppState = GenericAppState,\n> extends Router<TProps, TState> {\n protected socket: AdminConnection;\n\n protected isIFrame = isIFrame();\n\n protected readonly instance: number;\n\n protected readonly adapterName: string;\n\n protected readonly instanceId: string;\n\n protected readonly newReact: boolean;\n\n protected encryptedFields: string[];\n\n protected readonly sentryDSN: string | undefined;\n\n private alertDialogRendered: boolean;\n\n private _secret: string | undefined;\n\n protected _systemConfig: ioBroker.SystemConfigCommon | undefined;\n\n // it is not readonly\n private savedNative: Record<string, any>;\n\n protected common: ioBroker.InstanceCommon | null = null;\n\n private sentryStarted: boolean = false;\n\n private sentryInited: boolean = false;\n\n private resizeTimer: ReturnType<typeof setTimeout> | null = null;\n\n constructor(props: TProps, settings?: GenericAppSettings) {\n const ConnectionClass = (props.Connection ||\n settings?.Connection ||\n Connection) as unknown as typeof AdminConnection;\n // const ConnectionClass = props.Connection === 'admin' || settings.Connection = 'admin' ? AdminConnection : (props.Connection || settings.Connection || Connection);\n\n if (!window.document.getElementById('generic-app-iobroker-component')) {\n const style = window.document.createElement('style');\n style.setAttribute('id', 'generic-app-iobroker-component');\n style.innerHTML = cssStyle;\n window.document.head.appendChild(style);\n }\n\n // Remove `!Connection.isWeb() && window.adapterName !== 'material'` when iobroker.socket will support native ws\n if (!GenericApp.isWeb() && window.io && window.location.port === '3000') {\n try {\n const io = new window.SocketClient();\n delete window.io;\n window.io = io;\n } catch {\n // ignore\n }\n }\n\n super(props);\n\n printPrompt();\n\n const query = (window.location.search || '').replace(/^\\?/, '').replace(/#.*$/, '');\n const args: {\n newReact?: boolean;\n instance?: string | number;\n theme?: ThemeName;\n } = {};\n query\n .trim()\n .split('&')\n .filter(t => t.trim())\n .forEach(b => {\n const parts = b.split('=');\n const [name, value] = parts;\n (args as Record<string, boolean | string>)[name] = parts.length === 2 ? value : true;\n if ((args as Record<string, boolean | string>)[name] === 'true') {\n (args as Record<string, boolean | string>)[name] = true;\n } else if ((args as Record<string, boolean | string>)[name] === 'false') {\n (args as Record<string, boolean | string>)[name] = false;\n }\n });\n\n // extract instance from URL\n this.instance =\n settings?.instance ??\n props.instance ??\n (args.instance !== undefined\n ? parseInt(args.instance as string, 10) || 0\n : parseInt(window.location.search.slice(1), 10) || 0);\n // extract adapter name from URL\n const tmp = window.location.pathname.split('/');\n this.adapterName =\n settings?.adapterName || props.adapterName || window.adapterName || tmp[tmp.length - 2] || 'iot';\n this.instanceId = `system.adapter.${this.adapterName}.${this.instance}`;\n this.newReact = args.newReact === true; // it is admin5\n\n const location = Router.getLocation();\n location.tab =\n location.tab ||\n ((window as any)._localStorage || window.localStorage).getItem(`${this.adapterName}-adapter`) ||\n '';\n\n const themeInstance = this.createTheme(args.theme);\n\n this.state = {\n ...this.state, // keep the existing state\n selectedTab:\n ((window as any)._localStorage || window.localStorage).getItem(`${this.adapterName}-adapter`) || '',\n selectedTabNum: -1,\n native: {},\n errorText: '',\n changed: false,\n connected: false,\n loaded: false,\n isConfigurationError: '',\n expertMode: false,\n toast: '',\n theme: themeInstance,\n themeName: this.getThemeName(themeInstance),\n themeType: this.getThemeType(themeInstance),\n bottomButtons: (settings && settings.bottomButtons) === false ? false : props?.bottomButtons !== false,\n width: GenericApp.getWidth(),\n confirmClose: false,\n _alert: false,\n _alertType: 'info',\n _alertMessage: '',\n };\n\n // init translations\n const translations: Record<ioBroker.Languages, Record<string, string>> = dictionary;\n\n // merge together\n if (settings?.translations) {\n Object.keys(settings.translations).forEach(lang => {\n if (settings.translations) {\n translations[lang as ioBroker.Languages] = Object.assign(\n translations[lang as ioBroker.Languages],\n settings.translations[lang as ioBroker.Languages] || {},\n );\n }\n });\n } else if (props.translations) {\n Object.keys(props.translations).forEach(lang => {\n if (props.translations) {\n translations[lang as ioBroker.Languages] = Object.assign(\n translations[lang as ioBroker.Languages],\n props.translations[lang as ioBroker.Languages] || {},\n );\n }\n });\n }\n\n I18n.setTranslations(translations);\n\n this.savedNative = {}; // to detect if the config changed\n\n this.encryptedFields = props.encryptedFields || settings?.encryptedFields || [];\n\n this.sentryDSN = settings?.sentryDSN || props.sentryDSN;\n\n if (window.socketUrl) {\n if (window.socketUrl.startsWith(':')) {\n window.socketUrl = `${window.location.protocol}//${window.location.hostname}${window.socketUrl}`;\n } else if (!window.socketUrl.startsWith('http://') && !window.socketUrl.startsWith('https://')) {\n window.socketUrl = `${window.location.protocol}//${window.socketUrl}`;\n }\n }\n\n this.alertDialogRendered = false;\n\n if (!window.iobOldAlert) {\n window.iobOldAlert = window.alert;\n }\n window.alert = message => {\n if (!this.alertDialogRendered) {\n window.iobOldAlert(message);\n return;\n }\n if (message?.toString().toLowerCase().includes('error')) {\n console.error(message);\n this.showAlert(message.toString(), 'error');\n } else {\n console.log(message);\n this.showAlert(message.toString(), 'info');\n }\n };\n\n // @ts-expect-error either make props in ConnectionProps required or the constructor needs to accept than as they are (means adapt socket-client)\n this.socket = new ConnectionClass({\n ...(props?.socket || settings?.socket),\n name: this.adapterName,\n doNotLoadAllObjects: settings?.doNotLoadAllObjects,\n onProgress: (progress: PROGRESS) => {\n if (progress === PROGRESS.CONNECTING) {\n this.setState({ connected: false });\n } else if (progress === PROGRESS.READY) {\n this.setState({ connected: true });\n } else {\n this.setState({ connected: true });\n }\n },\n onReady: (/* objects, scripts */) => {\n I18n.setLanguage(this.socket.systemLang);\n\n // subscribe because of language and expert mode\n this.socket\n .subscribeObject('system.config', this.onSystemConfigChanged)\n .then(() => this.getSystemConfig())\n .then(obj => {\n this._secret =\n (typeof obj !== 'undefined' && obj.native && obj.native.secret) || 'Zgfr56gFe87jJOM';\n this._systemConfig = obj?.common || ({} as ioBroker.SystemConfigCommon);\n return this.socket.getObject(this.instanceId);\n })\n .then(async obj => {\n let waitPromise;\n const instanceObj: ioBroker.InstanceObject | null | undefined = obj as\n ioBroker.InstanceObject | null | undefined;\n\n const sentryPluginEnabled = (\n await this.socket.getState(`${this.instanceId}.plugins.sentry.enabled`)\n )?.val;\n\n const sentryEnabled =\n sentryPluginEnabled !== false &&\n this._systemConfig?.diag !== 'none' &&\n instanceObj?.common &&\n instanceObj.common.name &&\n instanceObj.common.version &&\n // @ts-expect-error will be extended in js-controller TODO: (BF: 2024.05.30) this is redundant to state `${this.instanceId}.plugins.sentry.enabled`, remove this in future when admin sets the state correctly\n !instanceObj.common.disableDataReporting &&\n window.location.host !== 'localhost:3000';\n\n // activate sentry plugin\n if (!this.sentryStarted && this.sentryDSN && sentryEnabled) {\n this.sentryStarted = true;\n\n Sentry.init({\n dsn: this.sentryDSN,\n release: `iobroker.${instanceObj.common.name}@${instanceObj.common.version}`,\n integrations: [Sentry.dedupeIntegration()],\n });\n\n console.log('Sentry initialized');\n }\n\n // read UUID and init sentry with it.\n // for backward compatibility it will be processed separately from the above logic: some adapters could still have this.sentryDSN as undefined\n if (!this.sentryInited && sentryEnabled) {\n this.sentryInited = true;\n\n waitPromise = this.socket.getObject('system.meta.uuid').then(uuidObj => {\n if (uuidObj && uuidObj.native && uuidObj.native.uuid) {\n const scope = Sentry.getCurrentScope();\n scope.setUser({ id: uuidObj.native.uuid });\n }\n });\n }\n\n waitPromise = waitPromise instanceof Promise ? waitPromise : Promise.resolve();\n\n void waitPromise.then(() => {\n if (instanceObj) {\n this.common = instanceObj?.common;\n this.onPrepareLoad(instanceObj.native, instanceObj.encryptedNative); // decode all secrets\n this.savedNative = JSON.parse(JSON.stringify(instanceObj.native));\n this.setState(\n { native: instanceObj.native, loaded: true, expertMode: this.getExpertMode() },\n () => this.onConnectionReady && this.onConnectionReady(),\n );\n } else {\n console.warn('Cannot load instance settings');\n this.setState(\n {\n native: {},\n loaded: true,\n expertMode: this.getExpertMode(),\n },\n () => this.onConnectionReady && this.onConnectionReady(),\n );\n }\n });\n })\n .catch(e => window.alert(`Cannot settings: ${e}`));\n },\n onError: (err: string) => {\n console.error(err);\n this.showError(err);\n },\n });\n }\n\n /**\n * Checks if this connection is running in a web adapter and not in an admin.\n *\n * @returns True if running in a web adapter or in a socketio adapter.\n */\n static isWeb(): boolean {\n return window.socketUrl !== undefined;\n }\n\n showAlert(message: string, type?: 'info' | 'warning' | 'error' | 'success'): void {\n if (type !== 'error' && type !== 'warning' && type !== 'info' && type !== 'success') {\n type = 'info';\n }\n\n this.setState({\n _alert: true,\n _alertType: type,\n _alertMessage: message,\n });\n }\n\n renderAlertSnackbar(): JSX.Element {\n this.alertDialogRendered = true;\n\n return (\n <Snackbar\n style={\n this.state._alertType === 'error'\n ? { backgroundColor: '#f44336' }\n : this.state._alertType === 'success'\n ? { backgroundColor: '#4caf50' }\n : undefined\n }\n open={this.state._alert}\n autoHideDuration={6000}\n onClose={(_e, reason) => reason !== 'clickaway' && this.setState({ _alert: false })}\n message={this.state._alertMessage}\n />\n );\n }\n\n onSystemConfigChanged = (id: string, obj: ioBroker.AnyObject | null | undefined): void => {\n if (obj && id === 'system.config') {\n if (this.socket.systemLang !== (obj as ioBroker.SystemConfigObject)?.common.language) {\n this.socket.systemLang = (obj as ioBroker.SystemConfigObject)?.common.language || 'en';\n I18n.setLanguage(this.socket.systemLang);\n }\n\n if (this._systemConfig?.expertMode !== !!(obj as ioBroker.SystemConfigObject)?.common?.expertMode) {\n this._systemConfig =\n (obj as ioBroker.SystemConfigObject)?.common || ({} as ioBroker.SystemConfigCommon);\n this.setState({ expertMode: this.getExpertMode() });\n } else {\n this._systemConfig =\n (obj as ioBroker.SystemConfigObject)?.common || ({} as ioBroker.SystemConfigCommon);\n }\n }\n };\n\n /**\n * Called immediately after a component is mounted. Setting the state here will trigger re-rendering.\n */\n componentDidMount(): void {\n window.addEventListener('resize', this.onResize, true);\n window.addEventListener('message', this.onReceiveMessage, false);\n super.componentDidMount();\n }\n\n /**\n * Called immediately before a component is destroyed.\n */\n componentWillUnmount(): void {\n window.removeEventListener('resize', this.onResize, true);\n window.removeEventListener('message', this.onReceiveMessage, false);\n\n if (this.resizeTimer) {\n clearTimeout(this.resizeTimer);\n this.resizeTimer = null;\n }\n\n // restore window.alert\n if (window.iobOldAlert) {\n window.alert = window.iobOldAlert;\n delete window.iobOldAlert;\n }\n\n super.componentWillUnmount();\n }\n\n onReceiveMessage = (message: { data: string | { type: string } } | null): void => {\n if (message?.data) {\n if (\n (typeof message.data === 'string' && message.data === 'updateTheme') ||\n (message.data && typeof message.data === 'object' && message.data.type === 'updateTheme')\n ) {\n const newThemeName = Utils.getThemeName();\n Utils.setThemeName(newThemeName);\n\n const newTheme = this.createTheme(newThemeName);\n\n this.setState(\n {\n theme: newTheme,\n themeName: this.getThemeName(newTheme),\n themeType: this.getThemeType(newTheme),\n },\n () => {\n this.props.onThemeChange && this.props.onThemeChange(newThemeName);\n this.onThemeChanged && this.onThemeChanged(newThemeName);\n },\n );\n } else if (message.data === 'updateExpertMode') {\n this.onToggleExpertMode && this.onToggleExpertMode(this.getExpertMode());\n } else if (message.data !== 'chartReady') {\n // if not \"echart ready\" message\n console.debug(\n `Received unknown message: \"${JSON.stringify(message.data)}\". May be it will be processed later`,\n );\n }\n }\n };\n\n private onResize = (): void => {\n this.resizeTimer && clearTimeout(this.resizeTimer);\n this.resizeTimer = setTimeout(() => {\n this.resizeTimer = null;\n this.setState({ width: GenericApp.getWidth() });\n }, 200);\n };\n\n /**\n * Gets the width depending on the window inner width.\n */\n static getWidth(): Width {\n /**\n * innerWidth |xs sm md lg xl\n * |-------|-------|-------|-------|------>\n * width | xs | sm | md | lg | xl\n */\n\n const SIZES: Record<Width, number> = {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920,\n };\n const width = window.innerWidth;\n const keys = Object.keys(SIZES).reverse();\n const widthComputed = keys.find(key => width >= SIZES[key as Width]) as Width;\n\n return widthComputed || 'xs';\n }\n\n /**\n * Get a theme\n *\n * @param name Theme name\n */\n // eslint-disable-next-line class-methods-use-this\n createTheme(name?: ThemeName | 'auto' | null): IobTheme {\n return Theme(Utils.getThemeName(name));\n }\n\n /**\n * Get the theme name\n */\n // eslint-disable-next-line class-methods-use-this\n getThemeName(currentTheme: IobTheme): ThemeName {\n return currentTheme.name;\n }\n\n /**\n * Get the theme type\n */\n // eslint-disable-next-line class-methods-use-this\n getThemeType(currentTheme: IobTheme): ThemeType {\n return currentTheme.palette.mode;\n }\n\n // eslint-disable-next-line class-methods-use-this\n onThemeChanged(_newThemeName: string): void {}\n\n // eslint-disable-next-line class-methods-use-this\n onToggleExpertMode(_expertMode: boolean): void {}\n\n /**\n * Changes the current theme\n */\n toggleTheme(newThemeName?: ThemeName): void {\n const themeName = this.state.themeName;\n\n // dark => blue => colored => light => dark\n newThemeName =\n newThemeName ||\n (themeName === 'dark'\n ? 'light'\n : themeName === 'blue'\n ? 'light'\n : themeName === 'colored'\n ? 'light'\n : 'dark');\n\n if (newThemeName !== themeName) {\n Utils.setThemeName(newThemeName);\n\n const newTheme = this.createTheme(newThemeName);\n\n this.setState(\n {\n theme: newTheme,\n themeName: this.getThemeName(newTheme),\n themeType: this.getThemeType(newTheme),\n },\n () => {\n this.props.onThemeChange && this.props.onThemeChange(newThemeName || 'light');\n this.onThemeChanged && this.onThemeChanged(newThemeName || 'light');\n },\n );\n }\n }\n\n /**\n * Gets the system configuration.\n */\n getSystemConfig(): Promise<ioBroker.SystemConfigObject> {\n return this.socket.getSystemConfig();\n }\n\n /**\n * Get current expert mode\n */\n getExpertMode(): boolean {\n return window.sessionStorage.getItem('App.expertMode') === 'true' || !!this._systemConfig?.expertMode;\n }\n\n /**\n * Gets called when the socket.io connection is ready.\n * You can overload this function to execute own commands.\n */\n // eslint-disable-next-line class-methods-use-this\n onConnectionReady(): void {}\n\n /**\n * Encrypts a string.\n */\n encrypt(value: string): string {\n let result = '';\n if (this._secret) {\n for (let i = 0; i < value.length; i++) {\n result += String.fromCharCode(\n this._secret[i % this._secret.length].charCodeAt(0) ^ value.charCodeAt(i),\n );\n }\n }\n return result;\n }\n\n /**\n * Decrypts a string.\n */\n decrypt(value: string): string {\n let result = '';\n if (this._secret) {\n for (let i = 0; i < value.length; i++) {\n result += String.fromCharCode(\n this._secret[i % this._secret.length].charCodeAt(0) ^ value.charCodeAt(i),\n );\n }\n }\n return result;\n }\n\n /**\n * Gets called when the navigation hash changes.\n * You may override this if needed.\n */\n onHashChanged(): void {\n const location = Router.getLocation();\n if (location.tab !== this.state.selectedTab) {\n this.selectTab(location.tab);\n }\n }\n\n /**\n * Selects the given tab.\n */\n selectTab(tab: string, index?: number): void {\n ((window as any)._localStorage || window.localStorage).setItem(`${this.adapterName}-adapter`, tab);\n this.setState({ selectedTab: tab, selectedTabNum: index });\n }\n\n /**\n * Gets called before the settings are saved.\n * You may override this if needed.\n */\n onPrepareSave(settings: Record<string, any>): boolean {\n // here you can encode values\n this.encryptedFields?.forEach(attr => {\n if (settings[attr]) {\n settings[attr] = this.encrypt(settings[attr]);\n }\n });\n\n return true;\n }\n\n /**\n * Gets called after the settings are loaded.\n * You may override this if needed.\n *\n * @param settings instance settings from native part\n * @param encryptedNative optional list of fields to be decrypted\n */\n onPrepareLoad(settings: Record<string, any>, encryptedNative?: string[]): void {\n // here you can encode values\n this.encryptedFields?.forEach(attr => {\n if (settings[attr]) {\n settings[attr] = this.decrypt(settings[attr]);\n }\n });\n encryptedNative?.forEach(attr => {\n this.encryptedFields = this.encryptedFields || [];\n !this.encryptedFields.includes(attr) && this.encryptedFields.push(attr);\n if (settings[attr]) {\n settings[attr] = this.decrypt(settings[attr]);\n }\n });\n }\n\n /**\n * Gets the extendable instances.\n */\n async getExtendableInstances(): Promise<ioBroker.InstanceObject[]> {\n try {\n const instances = await this.socket.getObjectViewSystem(\n 'instance',\n 'system.adapter.',\n 'system.adapter.\\u9999',\n );\n return Object.values(instances).filter(instance => !!instance?.common?.webExtendable);\n } catch {\n return [];\n }\n }\n\n /**\n * Gets the IP addresses of the given host.\n */\n async getIpAddresses(host: string): Promise<{ name: string; address: string; family: 'ipv4' | 'ipv6' }[]> {\n const ips = await this.socket.getHostByIp(host || this.common?.host || '');\n // translate names\n const ip4 = ips.find(ip => ip.address === '0.0.0.0');\n if (ip4) {\n ip4.name = `[IPv4] 0.0.0.0 - ${I18n.t('ra_Listen on all IPs')}`;\n }\n const ip6 = ips.find(ip => ip.address === '::');\n if (ip6) {\n ip6.name = `[IPv6] :: - ${I18n.t('ra_Listen on all IPs')}`;\n }\n return ips;\n }\n\n /**\n * Saves the settings to the server.\n *\n * @param isClose True if the user is closing the dialog.\n */\n onSave(isClose?: boolean): void {\n let oldObj: ioBroker.InstanceObject;\n if (this.state.isConfigurationError) {\n this.setState({ errorText: this.state.isConfigurationError });\n return;\n }\n\n this.socket\n .getObject(this.instanceId)\n .then(_oldObj => {\n oldObj = (_oldObj || {}) as ioBroker.InstanceObject;\n\n for (const a in this.state.native) {\n if (Object.prototype.hasOwnProperty.call(this.state.native, a)) {\n if (this.state.native[a] === null) {\n oldObj.native[a] = null;\n } else if (this.state.native[a] !== undefined) {\n oldObj.native[a] = JSON.parse(JSON.stringify(this.state.native[a]));\n } else {\n delete oldObj.native[a];\n }\n }\n }\n\n if (this.state.common) {\n for (const b in this.state.common) {\n if (this.state.common[b] === null) {\n (oldObj as Record<string, any>).common[b] = null;\n } else if (this.state.common[b] !== undefined) {\n (oldObj as Record<string, any>).common[b] = JSON.parse(\n JSON.stringify(this.state.common[b]),\n );\n } else {\n delete (oldObj as Record<string, any>).common[b];\n }\n }\n }\n\n if (this.onPrepareSave(oldObj.native) !== false) {\n return this.socket.setObject(this.instanceId, oldObj);\n }\n\n return Promise.reject(new Error('Invalid configuration'));\n })\n .then(() => {\n this.savedNative = oldObj.native;\n globalThis.changed = false;\n try {\n window.parent.postMessage('nochange', '*');\n } catch {\n // ignore\n }\n\n this.setState({ changed: false }, () => {\n isClose && GenericApp.onClose();\n });\n })\n .catch(e => console.error(`Cannot save configuration: ${e}`));\n }\n\n /**\n * Renders the toast.\n */\n renderToast(): JSX.Element | null {\n if (!this.state.toast) {\n return null;\n }\n\n return (\n <Snackbar\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left',\n }}\n open={!0}\n autoHideDuration={6000}\n onClose={() => this.setState({ toast: '' })}\n slotProps={{ content: { 'aria-describedby': 'message-id' } }}\n message={<span id=\"message-id\">{this.state.toast}</span>}\n action={[\n <IconButton\n key=\"close\"\n aria-label=\"Close\"\n color=\"inherit\"\n onClick={() => this.setState({ toast: '' })}\n size=\"large\"\n >\n <IconClose />\n </IconButton>,\n ]}\n />\n );\n }\n\n /**\n * Closes the dialog.\n */\n static onClose(): void {\n if (typeof window.parent !== 'undefined' && window.parent) {\n try {\n if (window.parent.$iframeDialog && typeof window.parent.$iframeDialog.close === 'function') {\n window.parent.$iframeDialog.close();\n } else {\n window.parent.postMessage('close', '*');\n }\n } catch {\n window.parent.postMessage('close', '*');\n }\n }\n }\n\n /**\n * Renders the error dialog.\n */\n renderError(): React.JSX.Element | null {\n if (!this.state.errorText) {\n return null;\n }\n\n return (\n <DialogError\n text={this.state.errorText}\n onClose={() => this.setState({ errorText: '' })}\n />\n );\n }\n\n /**\n * Checks if the configuration has changed.\n *\n * @param native the new state\n */\n getIsChanged(native: Record<string, any>): boolean {\n native = native || this.state.native;\n const isChanged = JSON.stringify(native) !== JSON.stringify(this.savedNative);\n\n globalThis.changed = isChanged;\n\n return isChanged;\n }\n\n /**\n * Gets called when loading the configuration.\n *\n * @param newNative The new configuration object.\n */\n onLoadConfig(newNative: Record<string, any>): void {\n if (JSON.stringify(newNative) !== JSON.stringify(this.state.native)) {\n this.setState({ native: newNative, changed: this.getIsChanged(newNative) });\n }\n }\n\n /**\n * Sets the configuration error.\n */\n setConfigurationError(errorText: string): void {\n if (this.state.isConfigurationError !== errorText) {\n this.setState({ isConfigurationError: errorText });\n }\n }\n\n /**\n * Renders the save and close buttons.\n */\n renderSaveCloseButtons(): React.JSX.Element | null {\n if (!this.state.confirmClose && !this.state.bottomButtons) {\n return null;\n }\n\n return (\n <>\n {this.state.bottomButtons ? (\n <SaveCloseButtons\n theme={this.state.theme}\n newReact={this.newReact}\n noTextOnButtons={\n this.state.width === 'xs' || this.state.width === 'sm' || this.state.width === 'md'\n }\n changed={this.state.changed}\n onSave={(isClose: boolean): void => this.onSave(isClose)}\n onClose={(): void => {\n if (this.state.changed) {\n this.setState({ confirmClose: true });\n } else {\n GenericApp.onClose();\n }\n }}\n error={!!this.state.isConfigurationError}\n />\n ) : null}\n {this.state.confirmClose ? (\n <DialogConfirm\n title={I18n.t('ra_Please confirm')}\n text={I18n.t('ra_Some data are not stored. Discard?')}\n ok={I18n.t('ra_Discard')}\n cancel={I18n.t('ra_Cancel')}\n onClose={(isYes: boolean): void =>\n this.setState({ confirmClose: false }, () => isYes && GenericApp.onClose())\n }\n />\n ) : null}\n </>\n );\n }\n\n private _updateNativeValue(obj: Record<string, any>, attrs: string | string[], value: any): boolean {\n if (typeof attrs !== 'object') {\n attrs = attrs.split('.');\n }\n const attr: string = attrs.shift() || '';\n if (!attrs.length) {\n if (value && typeof value === 'object') {\n if (JSON.stringify(obj[attr]) !== JSON.stringify(value)) {\n obj[attr] = value;\n return true;\n }\n return false;\n }\n if (obj[attr] !== value) {\n obj[attr] = value;\n return true;\n }\n\n return false;\n }\n\n obj[attr] = obj[attr] || {};\n if (typeof obj[attr] !== 'object') {\n throw new Error(`attribute ${attr} is no object, but ${typeof obj[attr]}`);\n }\n return this._updateNativeValue(obj[attr], attrs, value);\n }\n\n /**\n * Update the native value\n *\n * @param attr The attribute name with dots as delimiter.\n * @param value The new value.\n * @param cb Callback which will be called upon completion.\n */\n updateNativeValue(attr: string, value: any, cb?: () => void): void {\n const native: Record<string, any> = JSON.parse(JSON.stringify(this.state.native));\n if (this._updateNativeValue(native, attr, value)) {\n const changed = this.getIsChanged(native);\n\n if (changed !== this.state.changed) {\n try {\n window.parent.postMessage(changed ? 'change' : 'nochange', '*');\n } catch {\n // ignore\n }\n }\n\n this.setState({ native, changed }, cb);\n }\n }\n\n /**\n * Set the error text to be shown.\n */\n showError(text: string | React.JSX.Element): void {\n this.setState({ errorText: text });\n }\n\n /**\n * Sets the toast to be shown.\n *\n * @param toast Text to be shown.\n */\n showToast(toast: string | React.JSX.Element): void {\n this.setState({ toast });\n }\n\n /**\n * Renders helper dialogs\n */\n renderHelperDialogs(): React.JSX.Element {\n return (\n <>\n {this.renderError()}\n {this.renderToast()}\n {this.renderSaveCloseButtons()}\n {this.renderAlertSnackbar()}\n </>\n );\n }\n\n /**\n * Renders this component.\n */\n render(): React.JSX.Element {\n if (!this.state.loaded) {\n return <Loader themeType={this.state.themeType} />;\n }\n\n return (\n <div className=\"App\">\n {this.renderError()}\n {this.renderToast()}\n {this.renderSaveCloseButtons()}\n {this.renderAlertSnackbar()}\n </div>\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"GenericApp.js","sourceRoot":"./src/","sources":["GenericApp.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright 2018-2026 Denis Haev (bluefox) <dogafox@gmail.com>\n *\n * MIT License\n *\n */\nimport React, { type JSX } from 'react';\nimport { PROGRESS, Connection, type AdminConnection } from '@iobroker/socket-client';\nimport * as Sentry from '@sentry/browser';\n\nimport { Snackbar, IconButton } from '@mui/material';\n\nimport { Close as IconClose } from '@mui/icons-material';\n\nimport { printPrompt } from './Prompt';\nimport { Theme } from './Theme';\nimport { Loader } from './Components/Loader';\nimport { Router } from './Components/Router';\nimport { Utils } from './Components/Utils';\nimport { SaveCloseButtons } from './Components/SaveCloseButtons';\nimport { DialogConfirm } from './Dialogs/Confirm';\nimport { I18n } from './i18n';\nimport { DialogError } from './Dialogs/Error';\nimport type {\n GenericAppProps,\n GenericAppState,\n GenericAppSettings,\n ThemeName,\n ThemeType,\n IobTheme,\n Width,\n} from './types';\n\nimport { dictionary } from './dictionary';\n\ndeclare global {\n /** If config has been changed */\n var changed: boolean;\n\n interface Window {\n io: any;\n SocketClient: any;\n adapterName: undefined | string;\n socketUrl: undefined | string;\n iobOldAlert: any;\n changed: boolean;\n $iframeDialog: {\n close?: () => void;\n };\n }\n}\n\n// import './index.css';\nconst cssStyle = `\nhtml {\n height: 100%;\n}\n\nbody {\n margin: 0;\n padding: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n width: 100%;\n height: 100%;\n overflow: hidden;\n}\n\n/* scrollbar */\n::-webkit-scrollbar-track {\n background-color: #ccc;\n border-radius: 5px;\n}\n\n::-webkit-scrollbar {\n width: 5px;\n height: 5px;\n background-color: #ccc;\n}\n\n::-webkit-scrollbar-thumb {\n background-color: #575757;\n border-radius: 5px;\n}\n\n#root {\n height: 100%;\n}\n\n.App {\n height: 100%;\n}\n\n@keyframes glow {\n from {\n background-color: initial;\n }\n to {\n background-color: #58c458;\n }\n}\n`;\n\nfunction isIFrame(): boolean {\n try {\n return window.self !== window.top;\n } catch {\n return true;\n }\n}\n\nexport class GenericApp<\n TProps extends GenericAppProps = GenericAppProps,\n TState extends GenericAppState = GenericAppState,\n> extends Router<TProps, TState> {\n protected socket: AdminConnection;\n\n protected isIFrame = isIFrame();\n\n protected readonly instance: number;\n\n protected readonly adapterName: string;\n\n protected readonly instanceId: string;\n\n protected readonly newReact: boolean;\n\n protected encryptedFields: string[];\n\n protected readonly sentryDSN: string | undefined;\n\n private alertDialogRendered: boolean;\n\n private _secret: string | undefined;\n\n protected _systemConfig: ioBroker.SystemConfigCommon | undefined;\n\n // it is not readonly\n private savedNative: Record<string, any>;\n\n protected common: ioBroker.InstanceCommon | null = null;\n\n private sentryStarted: boolean = false;\n\n private sentryInited: boolean = false;\n\n private resizeTimer: ReturnType<typeof setTimeout> | null = null;\n\n constructor(props: TProps, settings?: GenericAppSettings) {\n const ConnectionClass = (props.Connection ||\n settings?.Connection ||\n Connection) as unknown as typeof AdminConnection;\n // const ConnectionClass = props.Connection === 'admin' || settings.Connection = 'admin' ? AdminConnection : (props.Connection || settings.Connection || Connection);\n\n if (!window.document.getElementById('generic-app-iobroker-component')) {\n const style = window.document.createElement('style');\n style.setAttribute('id', 'generic-app-iobroker-component');\n style.innerHTML = cssStyle;\n window.document.head.appendChild(style);\n }\n\n // Remove `!Connection.isWeb() && window.adapterName !== 'material'` when iobroker.socket will support native ws\n if (!GenericApp.isWeb() && window.io && window.location.port === '3000') {\n try {\n const io = new window.SocketClient();\n delete window.io;\n window.io = io;\n } catch {\n // ignore\n }\n }\n\n super(props);\n\n printPrompt();\n\n const query = (window.location.search || '').replace(/^\\?/, '').replace(/#.*$/, '');\n const args: {\n newReact?: boolean;\n instance?: string | number;\n theme?: ThemeName;\n } = {};\n query\n .trim()\n .split('&')\n .filter(t => t.trim())\n .forEach(b => {\n const parts = b.split('=');\n const [name, value] = parts;\n (args as Record<string, boolean | string>)[name] = parts.length === 2 ? value : true;\n if ((args as Record<string, boolean | string>)[name] === 'true') {\n (args as Record<string, boolean | string>)[name] = true;\n } else if ((args as Record<string, boolean | string>)[name] === 'false') {\n (args as Record<string, boolean | string>)[name] = false;\n }\n });\n\n // extract instance from URL\n this.instance =\n settings?.instance ??\n props.instance ??\n (args.instance !== undefined\n ? parseInt(args.instance as string, 10) || 0\n : parseInt(window.location.search.slice(1), 10) || 0);\n // extract adapter name from URL\n const tmp = window.location.pathname.split('/');\n this.adapterName =\n settings?.adapterName || props.adapterName || window.adapterName || tmp[tmp.length - 2] || 'iot';\n this.instanceId = `system.adapter.${this.adapterName}.${this.instance}`;\n this.newReact = args.newReact === true; // it is admin5\n\n const location = Router.getLocation();\n location.tab =\n location.tab ||\n ((window as any)._localStorage || window.localStorage).getItem(`${this.adapterName}-adapter`) ||\n '';\n\n const themeInstance = this.createTheme(args.theme);\n\n this.state = {\n ...this.state, // keep the existing state\n selectedTab:\n ((window as any)._localStorage || window.localStorage).getItem(`${this.adapterName}-adapter`) || '',\n selectedTabNum: -1,\n native: {},\n errorText: '',\n changed: false,\n connected: false,\n loaded: false,\n isConfigurationError: '',\n expertMode: false,\n toast: '',\n theme: themeInstance,\n themeName: this.getThemeName(themeInstance),\n themeType: this.getThemeType(themeInstance),\n bottomButtons: (settings && settings.bottomButtons) === false ? false : props?.bottomButtons !== false,\n width: GenericApp.getWidth(),\n confirmClose: false,\n _alert: false,\n _alertType: 'info',\n _alertMessage: '',\n };\n\n // init translations\n const translations: Record<ioBroker.Languages, Record<string, string>> = dictionary;\n\n // merge together\n if (settings?.translations) {\n Object.keys(settings.translations).forEach(lang => {\n if (settings.translations) {\n translations[lang as ioBroker.Languages] = Object.assign(\n translations[lang as ioBroker.Languages],\n settings.translations[lang as ioBroker.Languages] || {},\n );\n }\n });\n } else if (props.translations) {\n Object.keys(props.translations).forEach(lang => {\n if (props.translations) {\n translations[lang as ioBroker.Languages] = Object.assign(\n translations[lang as ioBroker.Languages],\n props.translations[lang as ioBroker.Languages] || {},\n );\n }\n });\n }\n\n I18n.setTranslations(translations);\n\n this.savedNative = {}; // to detect if the config changed\n\n this.encryptedFields = props.encryptedFields || settings?.encryptedFields || [];\n\n this.sentryDSN = settings?.sentryDSN || props.sentryDSN;\n\n if (window.socketUrl) {\n if (window.socketUrl.startsWith(':')) {\n window.socketUrl = `${window.location.protocol}//${window.location.hostname}${window.socketUrl}`;\n } else if (!window.socketUrl.startsWith('http://') && !window.socketUrl.startsWith('https://')) {\n window.socketUrl = `${window.location.protocol}//${window.socketUrl}`;\n }\n }\n\n this.alertDialogRendered = false;\n\n if (!window.iobOldAlert) {\n window.iobOldAlert = window.alert;\n }\n window.alert = message => {\n if (!this.alertDialogRendered) {\n window.iobOldAlert(message);\n return;\n }\n if (message?.toString().toLowerCase().includes('error')) {\n console.error(message);\n this.showAlert(message.toString(), 'error');\n } else {\n console.log(message);\n this.showAlert(message.toString(), 'info');\n }\n };\n\n // @ts-expect-error either make props in ConnectionProps required or the constructor needs to accept than as they are (means adapt socket-client)\n this.socket = new ConnectionClass({\n ...(props?.socket || settings?.socket),\n name: this.adapterName,\n doNotLoadAllObjects: settings?.doNotLoadAllObjects,\n onProgress: (progress: PROGRESS) => {\n if (progress === PROGRESS.CONNECTING) {\n this.setState({ connected: false });\n } else if (progress === PROGRESS.READY) {\n this.setState({ connected: true });\n } else {\n this.setState({ connected: true });\n }\n },\n onReady: (/* objects, scripts */) => {\n I18n.setLanguage(this.socket.systemLang);\n\n // subscribe because of language and expert mode\n this.socket\n .subscribeObject('system.config', this.onSystemConfigChanged)\n .then(() => this.getSystemConfig())\n .then(obj => {\n this._secret =\n (typeof obj !== 'undefined' && obj.native && obj.native.secret) || 'Zgfr56gFe87jJOM';\n this._systemConfig = obj?.common || ({} as ioBroker.SystemConfigCommon);\n return this.socket.getObject(this.instanceId);\n })\n .then(async obj => {\n let waitPromise;\n const instanceObj: ioBroker.InstanceObject | null | undefined = obj as\n ioBroker.InstanceObject | null | undefined;\n\n const sentryPluginEnabled = (\n await this.socket.getState(`${this.instanceId}.plugins.sentry.enabled`)\n )?.val;\n\n const sentryEnabled =\n sentryPluginEnabled !== false &&\n this._systemConfig?.diag !== 'none' &&\n instanceObj?.common &&\n instanceObj.common.name &&\n instanceObj.common.version &&\n // @ts-expect-error will be extended in js-controller TODO: (BF: 2024.05.30) this is redundant to state `${this.instanceId}.plugins.sentry.enabled`, remove this in future when admin sets the state correctly\n !instanceObj.common.disableDataReporting &&\n window.location.host !== 'localhost:3000';\n\n // activate sentry plugin\n if (!this.sentryStarted && this.sentryDSN && sentryEnabled) {\n this.sentryStarted = true;\n\n Sentry.init({\n dsn: this.sentryDSN,\n release: `iobroker.${instanceObj.common.name}@${instanceObj.common.version}`,\n integrations: [Sentry.dedupeIntegration()],\n });\n\n console.log('Sentry initialized');\n }\n\n // read UUID and init sentry with it.\n // for backward compatibility it will be processed separately from the above logic: some adapters could still have this.sentryDSN as undefined\n if (!this.sentryInited && sentryEnabled) {\n this.sentryInited = true;\n\n waitPromise = this.socket.getObject('system.meta.uuid').then(uuidObj => {\n if (uuidObj && uuidObj.native && uuidObj.native.uuid) {\n const scope = Sentry.getCurrentScope();\n scope.setUser({ id: uuidObj.native.uuid });\n }\n });\n }\n\n waitPromise = waitPromise instanceof Promise ? waitPromise : Promise.resolve();\n\n void waitPromise.then(() => {\n if (instanceObj) {\n this.common = instanceObj?.common;\n this.onPrepareLoad(instanceObj.native, instanceObj.encryptedNative); // decode all secrets\n this.savedNative = JSON.parse(JSON.stringify(instanceObj.native));\n this.setState(\n { native: instanceObj.native, loaded: true, expertMode: this.getExpertMode() },\n () => this.onConnectionReady && this.onConnectionReady(),\n );\n } else {\n console.warn('Cannot load instance settings');\n this.setState(\n {\n native: {},\n loaded: true,\n expertMode: this.getExpertMode(),\n },\n () => this.onConnectionReady && this.onConnectionReady(),\n );\n }\n });\n })\n .catch(e => window.alert(`Cannot settings: ${e}`));\n },\n onError: (err: string) => {\n console.error(err);\n this.showError(err);\n },\n });\n }\n\n /**\n * Checks if this connection is running in a web adapter and not in an admin.\n *\n * @returns True if running in a web adapter or in a socketio adapter.\n */\n static isWeb(): boolean {\n return window.socketUrl !== undefined;\n }\n\n showAlert(message: string, type?: 'info' | 'warning' | 'error' | 'success'): void {\n if (type !== 'error' && type !== 'warning' && type !== 'info' && type !== 'success') {\n type = 'info';\n }\n\n this.setState({\n _alert: true,\n _alertType: type,\n _alertMessage: message,\n });\n }\n\n renderAlertSnackbar(): JSX.Element {\n this.alertDialogRendered = true;\n\n return (\n <Snackbar\n style={\n this.state._alertType === 'error'\n ? { backgroundColor: '#f44336' }\n : this.state._alertType === 'success'\n ? { backgroundColor: '#4caf50' }\n : undefined\n }\n open={this.state._alert}\n autoHideDuration={6000}\n onClose={(_e, reason) => reason !== 'clickaway' && this.setState({ _alert: false })}\n message={this.state._alertMessage}\n />\n );\n }\n\n onSystemConfigChanged = (id: string, obj: ioBroker.AnyObject | null | undefined): void => {\n if (obj && id === 'system.config') {\n if (this.socket.systemLang !== (obj as ioBroker.SystemConfigObject)?.common.language) {\n this.socket.systemLang = (obj as ioBroker.SystemConfigObject)?.common.language || 'en';\n I18n.setLanguage(this.socket.systemLang);\n }\n\n if (this._systemConfig?.expertMode !== !!(obj as ioBroker.SystemConfigObject)?.common?.expertMode) {\n this._systemConfig =\n (obj as ioBroker.SystemConfigObject)?.common || ({} as ioBroker.SystemConfigCommon);\n this.setState({ expertMode: this.getExpertMode() });\n } else {\n this._systemConfig =\n (obj as ioBroker.SystemConfigObject)?.common || ({} as ioBroker.SystemConfigCommon);\n }\n }\n };\n\n /**\n * Called immediately after a component is mounted. Setting the state here will trigger re-rendering.\n */\n componentDidMount(): void {\n window.addEventListener('resize', this.onResize, true);\n window.addEventListener('message', this.onReceiveMessage, false);\n super.componentDidMount();\n }\n\n /**\n * Called immediately before a component is destroyed.\n */\n componentWillUnmount(): void {\n window.removeEventListener('resize', this.onResize, true);\n window.removeEventListener('message', this.onReceiveMessage, false);\n\n if (this.resizeTimer) {\n clearTimeout(this.resizeTimer);\n this.resizeTimer = null;\n }\n\n // restore window.alert\n if (window.iobOldAlert) {\n window.alert = window.iobOldAlert;\n delete window.iobOldAlert;\n }\n\n super.componentWillUnmount();\n }\n\n onReceiveMessage = (message: { data: string | { type: string } } | null): void => {\n if (message?.data) {\n if (\n (typeof message.data === 'string' && message.data === 'updateTheme') ||\n (message.data && typeof message.data === 'object' && message.data.type === 'updateTheme')\n ) {\n const newThemeName = Utils.getThemeName();\n Utils.setThemeName(newThemeName);\n\n const newTheme = this.createTheme(newThemeName);\n\n this.setState(\n {\n theme: newTheme,\n themeName: this.getThemeName(newTheme),\n themeType: this.getThemeType(newTheme),\n },\n () => {\n this.props.onThemeChange && this.props.onThemeChange(newThemeName);\n this.onThemeChanged && this.onThemeChanged(newThemeName);\n },\n );\n } else if (message.data === 'updateExpertMode') {\n this.onToggleExpertMode && this.onToggleExpertMode(this.getExpertMode());\n } else if (message.data !== 'chartReady') {\n // if not \"echart ready\" message\n console.debug(\n `Received unknown message: \"${JSON.stringify(message.data)}\". May be it will be processed later`,\n );\n }\n }\n };\n\n private onResize = (): void => {\n this.resizeTimer && clearTimeout(this.resizeTimer);\n this.resizeTimer = setTimeout(() => {\n this.resizeTimer = null;\n this.setState({ width: GenericApp.getWidth() });\n }, 200);\n };\n\n /**\n * Gets the width depending on the window inner width.\n */\n static getWidth(): Width {\n /**\n * innerWidth |xs sm md lg xl\n * |-------|-------|-------|-------|------>\n * width | xs | sm | md | lg | xl\n */\n\n const SIZES: Record<Width, number> = {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920,\n };\n const width = window.innerWidth;\n const keys = Object.keys(SIZES).reverse();\n const widthComputed = keys.find(key => width >= SIZES[key as Width]) as Width;\n\n return widthComputed || 'xs';\n }\n\n /**\n * Get a theme\n *\n * @param name Theme name\n */\n // eslint-disable-next-line class-methods-use-this\n createTheme(name?: ThemeName | 'auto' | null): IobTheme {\n return Theme(Utils.getThemeName(name));\n }\n\n /**\n * Get the theme name\n */\n // eslint-disable-next-line class-methods-use-this\n getThemeName(currentTheme: IobTheme): ThemeName {\n return currentTheme.name;\n }\n\n /**\n * Get the theme type\n */\n // eslint-disable-next-line class-methods-use-this\n getThemeType(currentTheme: IobTheme): ThemeType {\n return currentTheme.palette.mode;\n }\n\n // eslint-disable-next-line class-methods-use-this\n onThemeChanged(_newThemeName: string): void {}\n\n // eslint-disable-next-line class-methods-use-this\n onToggleExpertMode(_expertMode: boolean): void {}\n\n /**\n * Changes the current theme\n */\n toggleTheme(newThemeName?: ThemeName): void {\n const themeName = this.state.themeName;\n\n // `Utils.toggleTheme` cycles through `Utils.getThemeNames()` and thus also through the\n // modern themes. The chain that used to be here knew only dark, blue and colored and threw\n // the user out of every other theme - and it already wrote the name itself.\n newThemeName ||= Utils.toggleTheme(themeName);\n\n if (newThemeName !== themeName) {\n Utils.setThemeName(newThemeName);\n\n const newTheme = this.createTheme(newThemeName);\n\n this.setState(\n {\n theme: newTheme,\n themeName: this.getThemeName(newTheme),\n themeType: this.getThemeType(newTheme),\n },\n () => {\n this.props.onThemeChange && this.props.onThemeChange(newThemeName || 'light');\n this.onThemeChanged && this.onThemeChanged(newThemeName || 'light');\n },\n );\n }\n }\n\n /**\n * Gets the system configuration.\n */\n getSystemConfig(): Promise<ioBroker.SystemConfigObject> {\n return this.socket.getSystemConfig();\n }\n\n /**\n * Get current expert mode\n */\n getExpertMode(): boolean {\n return window.sessionStorage.getItem('App.expertMode') === 'true' || !!this._systemConfig?.expertMode;\n }\n\n /**\n * Gets called when the socket.io connection is ready.\n * You can overload this function to execute own commands.\n */\n // eslint-disable-next-line class-methods-use-this\n onConnectionReady(): void {}\n\n /**\n * Encrypts a string.\n */\n encrypt(value: string): string {\n let result = '';\n if (this._secret) {\n for (let i = 0; i < value.length; i++) {\n result += String.fromCharCode(\n this._secret[i % this._secret.length].charCodeAt(0) ^ value.charCodeAt(i),\n );\n }\n }\n return result;\n }\n\n /**\n * Decrypts a string.\n */\n decrypt(value: string): string {\n let result = '';\n if (this._secret) {\n for (let i = 0; i < value.length; i++) {\n result += String.fromCharCode(\n this._secret[i % this._secret.length].charCodeAt(0) ^ value.charCodeAt(i),\n );\n }\n }\n return result;\n }\n\n /**\n * Gets called when the navigation hash changes.\n * You may override this if needed.\n */\n onHashChanged(): void {\n const location = Router.getLocation();\n if (location.tab !== this.state.selectedTab) {\n this.selectTab(location.tab);\n }\n }\n\n /**\n * Selects the given tab.\n */\n selectTab(tab: string, index?: number): void {\n ((window as any)._localStorage || window.localStorage).setItem(`${this.adapterName}-adapter`, tab);\n this.setState({ selectedTab: tab, selectedTabNum: index });\n }\n\n /**\n * Gets called before the settings are saved.\n * You may override this if needed.\n */\n onPrepareSave(settings: Record<string, any>): boolean {\n // here you can encode values\n this.encryptedFields?.forEach(attr => {\n if (settings[attr]) {\n settings[attr] = this.encrypt(settings[attr]);\n }\n });\n\n return true;\n }\n\n /**\n * Gets called after the settings are loaded.\n * You may override this if needed.\n *\n * @param settings instance settings from native part\n * @param encryptedNative optional list of fields to be decrypted\n */\n onPrepareLoad(settings: Record<string, any>, encryptedNative?: string[]): void {\n // here you can encode values\n this.encryptedFields?.forEach(attr => {\n if (settings[attr]) {\n settings[attr] = this.decrypt(settings[attr]);\n }\n });\n encryptedNative?.forEach(attr => {\n this.encryptedFields = this.encryptedFields || [];\n !this.encryptedFields.includes(attr) && this.encryptedFields.push(attr);\n if (settings[attr]) {\n settings[attr] = this.decrypt(settings[attr]);\n }\n });\n }\n\n /**\n * Gets the extendable instances.\n */\n async getExtendableInstances(): Promise<ioBroker.InstanceObject[]> {\n try {\n const instances = await this.socket.getObjectViewSystem(\n 'instance',\n 'system.adapter.',\n 'system.adapter.\\u9999',\n );\n return Object.values(instances).filter(instance => !!instance?.common?.webExtendable);\n } catch {\n return [];\n }\n }\n\n /**\n * Gets the IP addresses of the given host.\n */\n async getIpAddresses(host: string): Promise<{ name: string; address: string; family: 'ipv4' | 'ipv6' }[]> {\n const ips = await this.socket.getHostByIp(host || this.common?.host || '');\n // translate names\n const ip4 = ips.find(ip => ip.address === '0.0.0.0');\n if (ip4) {\n ip4.name = `[IPv4] 0.0.0.0 - ${I18n.t('ra_Listen on all IPs')}`;\n }\n const ip6 = ips.find(ip => ip.address === '::');\n if (ip6) {\n ip6.name = `[IPv6] :: - ${I18n.t('ra_Listen on all IPs')}`;\n }\n return ips;\n }\n\n /**\n * Saves the settings to the server.\n *\n * @param isClose True if the user is closing the dialog.\n */\n onSave(isClose?: boolean): void {\n let oldObj: ioBroker.InstanceObject;\n if (this.state.isConfigurationError) {\n this.setState({ errorText: this.state.isConfigurationError });\n return;\n }\n\n this.socket\n .getObject(this.instanceId)\n .then(_oldObj => {\n oldObj = (_oldObj || {}) as ioBroker.InstanceObject;\n\n for (const a in this.state.native) {\n if (Object.prototype.hasOwnProperty.call(this.state.native, a)) {\n if (this.state.native[a] === null) {\n oldObj.native[a] = null;\n } else if (this.state.native[a] !== undefined) {\n oldObj.native[a] = JSON.parse(JSON.stringify(this.state.native[a]));\n } else {\n delete oldObj.native[a];\n }\n }\n }\n\n if (this.state.common) {\n for (const b in this.state.common) {\n if (this.state.common[b] === null) {\n (oldObj as Record<string, any>).common[b] = null;\n } else if (this.state.common[b] !== undefined) {\n (oldObj as Record<string, any>).common[b] = JSON.parse(\n JSON.stringify(this.state.common[b]),\n );\n } else {\n delete (oldObj as Record<string, any>).common[b];\n }\n }\n }\n\n if (this.onPrepareSave(oldObj.native) !== false) {\n return this.socket.setObject(this.instanceId, oldObj);\n }\n\n return Promise.reject(new Error('Invalid configuration'));\n })\n .then(() => {\n this.savedNative = oldObj.native;\n globalThis.changed = false;\n try {\n window.parent.postMessage('nochange', '*');\n } catch {\n // ignore\n }\n\n this.setState({ changed: false }, () => {\n isClose && GenericApp.onClose();\n });\n })\n .catch(e => console.error(`Cannot save configuration: ${e}`));\n }\n\n /**\n * Renders the toast.\n */\n renderToast(): JSX.Element | null {\n if (!this.state.toast) {\n return null;\n }\n\n return (\n <Snackbar\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left',\n }}\n open={!0}\n autoHideDuration={6000}\n onClose={() => this.setState({ toast: '' })}\n slotProps={{ content: { 'aria-describedby': 'message-id' } }}\n message={<span id=\"message-id\">{this.state.toast}</span>}\n action={[\n <IconButton\n key=\"close\"\n aria-label=\"Close\"\n color=\"inherit\"\n onClick={() => this.setState({ toast: '' })}\n size=\"large\"\n >\n <IconClose />\n </IconButton>,\n ]}\n />\n );\n }\n\n /**\n * Closes the dialog.\n */\n static onClose(): void {\n if (typeof window.parent !== 'undefined' && window.parent) {\n try {\n if (window.parent.$iframeDialog && typeof window.parent.$iframeDialog.close === 'function') {\n window.parent.$iframeDialog.close();\n } else {\n window.parent.postMessage('close', '*');\n }\n } catch {\n window.parent.postMessage('close', '*');\n }\n }\n }\n\n /**\n * Renders the error dialog.\n */\n renderError(): React.JSX.Element | null {\n if (!this.state.errorText) {\n return null;\n }\n\n return (\n <DialogError\n text={this.state.errorText}\n onClose={() => this.setState({ errorText: '' })}\n />\n );\n }\n\n /**\n * Checks if the configuration has changed.\n *\n * @param native the new state\n */\n getIsChanged(native: Record<string, any>): boolean {\n native = native || this.state.native;\n const isChanged = JSON.stringify(native) !== JSON.stringify(this.savedNative);\n\n globalThis.changed = isChanged;\n\n return isChanged;\n }\n\n /**\n * Gets called when loading the configuration.\n *\n * @param newNative The new configuration object.\n */\n onLoadConfig(newNative: Record<string, any>): void {\n if (JSON.stringify(newNative) !== JSON.stringify(this.state.native)) {\n this.setState({ native: newNative, changed: this.getIsChanged(newNative) });\n }\n }\n\n /**\n * Sets the configuration error.\n */\n setConfigurationError(errorText: string): void {\n if (this.state.isConfigurationError !== errorText) {\n this.setState({ isConfigurationError: errorText });\n }\n }\n\n /**\n * Renders the save and close buttons.\n */\n renderSaveCloseButtons(): React.JSX.Element | null {\n if (!this.state.confirmClose && !this.state.bottomButtons) {\n return null;\n }\n\n return (\n <>\n {this.state.bottomButtons ? (\n <SaveCloseButtons\n theme={this.state.theme}\n newReact={this.newReact}\n noTextOnButtons={\n this.state.width === 'xs' || this.state.width === 'sm' || this.state.width === 'md'\n }\n changed={this.state.changed}\n onSave={(isClose: boolean): void => this.onSave(isClose)}\n onClose={(): void => {\n if (this.state.changed) {\n this.setState({ confirmClose: true });\n } else {\n GenericApp.onClose();\n }\n }}\n error={!!this.state.isConfigurationError}\n />\n ) : null}\n {this.state.confirmClose ? (\n <DialogConfirm\n title={I18n.t('ra_Please confirm')}\n text={I18n.t('ra_Some data are not stored. Discard?')}\n ok={I18n.t('ra_Discard')}\n cancel={I18n.t('ra_Cancel')}\n onClose={(isYes: boolean): void =>\n this.setState({ confirmClose: false }, () => isYes && GenericApp.onClose())\n }\n />\n ) : null}\n </>\n );\n }\n\n private _updateNativeValue(obj: Record<string, any>, attrs: string | string[], value: any): boolean {\n if (typeof attrs !== 'object') {\n attrs = attrs.split('.');\n }\n const attr: string = attrs.shift() || '';\n if (!attrs.length) {\n if (value && typeof value === 'object') {\n if (JSON.stringify(obj[attr]) !== JSON.stringify(value)) {\n obj[attr] = value;\n return true;\n }\n return false;\n }\n if (obj[attr] !== value) {\n obj[attr] = value;\n return true;\n }\n\n return false;\n }\n\n obj[attr] = obj[attr] || {};\n if (typeof obj[attr] !== 'object') {\n throw new Error(`attribute ${attr} is no object, but ${typeof obj[attr]}`);\n }\n return this._updateNativeValue(obj[attr], attrs, value);\n }\n\n /**\n * Update the native value\n *\n * @param attr The attribute name with dots as delimiter.\n * @param value The new value.\n * @param cb Callback which will be called upon completion.\n */\n updateNativeValue(attr: string, value: any, cb?: () => void): void {\n const native: Record<string, any> = JSON.parse(JSON.stringify(this.state.native));\n if (this._updateNativeValue(native, attr, value)) {\n const changed = this.getIsChanged(native);\n\n if (changed !== this.state.changed) {\n try {\n window.parent.postMessage(changed ? 'change' : 'nochange', '*');\n } catch {\n // ignore\n }\n }\n\n this.setState({ native, changed }, cb);\n }\n }\n\n /**\n * Set the error text to be shown.\n */\n showError(text: string | React.JSX.Element): void {\n this.setState({ errorText: text });\n }\n\n /**\n * Sets the toast to be shown.\n *\n * @param toast Text to be shown.\n */\n showToast(toast: string | React.JSX.Element): void {\n this.setState({ toast });\n }\n\n /**\n * Renders helper dialogs\n */\n renderHelperDialogs(): React.JSX.Element {\n return (\n <>\n {this.renderError()}\n {this.renderToast()}\n {this.renderSaveCloseButtons()}\n {this.renderAlertSnackbar()}\n </>\n );\n }\n\n /**\n * Renders this component.\n */\n render(): React.JSX.Element {\n if (!this.state.loaded) {\n return <Loader themeType={this.state.themeType} />;\n }\n\n return (\n <div className=\"App\">\n {this.renderError()}\n {this.renderToast()}\n {this.renderSaveCloseButtons()}\n {this.renderAlertSnackbar()}\n </div>\n );\n }\n}\n"]}
|
package/build/ThemeModern.js
CHANGED
package/build/ThemeModern.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeModern.js","sourceRoot":"./src/","sources":["ThemeModern.ts"],"names":[],"mappings":"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","sourcesContent":["import { alpha, type Shadows } from '@mui/material/styles';\n\nimport type { ThemeName, ThemeType } from './types';\nimport type { ThemeOptions } from './Theme';\n\n/**\n * Flat design tokens of the \"modern\" themes.\n * Everything that is used more than once in the theme definition below is listed here,\n * so a new variation can be created by copying this object only.\n */\nexport interface ModernTokens {\n /** Background of the page (behind the cards) */\n background: string;\n /** Background of cards, tables and dialogs */\n paper: string;\n /** Background of the left navigation */\n sidebar: string;\n /** Background of menus, popovers and dialogs (one step above `paper`) */\n elevated: string;\n /** Color of the dividers inside of the cards (table rows, lists) */\n border: string;\n /** Border of the cards. In the dark theme the cards are separated by the background, not by a border */\n cardBorder: string;\n textPrimary: string;\n textSecondary: string;\n textDisabled: string;\n primary: string;\n primaryDark: string;\n primaryLight: string;\n secondary: string;\n /** Background of the selected navigation item */\n gradient: string;\n /** Background of the selected navigation item if hovered */\n gradientHover: string;\n success: string;\n warning: string;\n error: string;\n info: string;\n /** Color of the expert-mode elements */\n expert: string;\n /** Color of the not acknowledged values in the object browser */\n nonAck: string;\n /** Background of the hovered rows and list items */\n hover: string;\n /** Background of the selected rows and list items */\n selected: string;\n}\n\nexport const MODERN_DARK: ModernTokens = {\n background: '#0A121D',\n paper: '#121A26',\n sidebar: '#141C29',\n elevated: '#1A2434',\n border: '#1E2837',\n cardBorder: '#1B2533',\n textPrimary: '#E8EDF5',\n textSecondary: '#8B97A8',\n textDisabled: '#586576',\n primary: '#137BF8',\n primaryDark: '#0B62D6',\n primaryLight: '#4B9BFA',\n secondary: '#436A93',\n gradient: 'linear-gradient(90deg, #2E93F9 0%, #0B76F5 100%)',\n gradientHover: 'linear-gradient(90deg, #48A1FA 0%, #1B84F8 100%)',\n success: '#2EA043',\n warning: '#E8A33D',\n error: '#E5534B',\n info: '#3FA9F5',\n expert: '#2EA043',\n nonAck: '#E5534B',\n hover: 'rgba(255, 255, 255, 0.05)',\n selected: 'rgba(19, 123, 248, 0.16)',\n};\n\nexport const MODERN_LIGHT: ModernTokens = {\n background: '#F4F7FB',\n paper: '#FFFFFF',\n sidebar: '#FFFFFF',\n elevated: '#FFFFFF',\n border: '#E2E8F0',\n cardBorder: '#E2E8F0',\n textPrimary: '#101827',\n textSecondary: '#5B6878',\n textDisabled: '#98A4B3',\n primary: '#137BF8',\n primaryDark: '#0B62D6',\n primaryLight: '#4B9BFA',\n secondary: '#164477',\n gradient: 'linear-gradient(90deg, #2E93F9 0%, #0B76F5 100%)',\n gradientHover: 'linear-gradient(90deg, #48A1FA 0%, #1B84F8 100%)',\n success: '#1E8E3E',\n warning: '#C77700',\n error: '#D93025',\n info: '#0B72D9',\n expert: '#1E8E3E',\n nonAck: '#D93025',\n hover: 'rgba(16, 24, 39, 0.04)',\n selected: 'rgba(19, 123, 248, 0.10)',\n};\n\nconst FONT_FAMILY = '\"Inter\", \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif';\n/** Height of the app bar. Used for `MuiToolbar` and for `mixins.toolbar` - the two must not drift apart */\nconst TOOLBAR_HEIGHT = 52;\n\n/**\n * Build the 25 MUI shadows. The default MUI shadows are too heavy for this design,\n * so they are replaced by a soft two-layer shadow.\n */\nfunction buildShadows(type: ThemeType): Shadows {\n const rgb = type === 'dark' ? '0, 0, 0' : '15, 23, 42';\n const nearOpacity = type === 'dark' ? 0.24 : 0.04;\n const farOpacity = type === 'dark' ? 0.36 : 0.08;\n\n const shadows: string[] = ['none'];\n for (let i = 1; i <= 24; i++) {\n const y = Math.round(1 + i * 0.7);\n const blur = Math.round(2 + i * 1.6);\n shadows.push(\n `0px ${Math.max(1, Math.round(y / 2))}px ${Math.max(2, Math.round(blur / 2))}px rgba(${rgb}, ${nearOpacity}), ` +\n `0px ${y}px ${blur}px rgba(${rgb}, ${farOpacity})`,\n );\n }\n\n return shadows as unknown as Shadows;\n}\n\n/**\n * Options and component overrides of the \"modern\" themes (`modernDark` and `modernLight`).\n */\nexport function getModernTheme(\n name: ThemeName,\n type: ThemeType,\n): { options: ThemeOptions; components: Record<string, any> } {\n const t: ModernTokens = type === 'dark' ? MODERN_DARK : MODERN_LIGHT;\n\n const options: ThemeOptions = {\n name,\n shape: { borderRadius: 10 },\n // The app bar is lower than in the MUI default. `mixins.toolbar` has to say so too: consumers\n // (e.g. the admin) take the top margin of their content from it, and with MUI's 64px they\n // would leave a gap below the bar.\n mixins: {\n toolbar: {\n minHeight: TOOLBAR_HEIGHT,\n '@media (min-width:0px) and (orientation: landscape)': { minHeight: TOOLBAR_HEIGHT },\n '@media (min-width:600px)': { minHeight: TOOLBAR_HEIGHT },\n },\n },\n shadows: buildShadows(type),\n typography: {\n fontFamily: FONT_FAMILY,\n h1: { fontWeight: 700, letterSpacing: '-0.02em' },\n h2: { fontWeight: 700, letterSpacing: '-0.02em' },\n h3: { fontWeight: 600, letterSpacing: '-0.02em' },\n h4: { fontWeight: 600, letterSpacing: '-0.01em' },\n h5: { fontWeight: 600 },\n h6: { fontWeight: 600, fontSize: '1.05rem' },\n subtitle1: { fontWeight: 500 },\n subtitle2: { fontWeight: 500 },\n body2: { fontSize: '0.875rem' },\n button: { fontWeight: 500, textTransform: 'none', letterSpacing: 0 },\n caption: { fontSize: '0.75rem' },\n },\n palette: {\n mode: type,\n background: {\n default: t.background,\n paper: t.paper,\n },\n primary: {\n main: t.primary,\n dark: t.primaryDark,\n light: t.primaryLight,\n contrastText: '#FFFFFF',\n },\n secondary: {\n main: t.secondary,\n contrastText: '#FFFFFF',\n },\n success: { main: t.success },\n warning: { main: t.warning },\n error: { main: t.error },\n info: { main: t.info },\n divider: t.border,\n text: {\n primary: t.textPrimary,\n secondary: t.textSecondary,\n disabled: t.textDisabled,\n },\n action: {\n hover: t.hover,\n hoverOpacity: type === 'dark' ? 0.06 : 0.04,\n selected: t.selected,\n selectedOpacity: type === 'dark' ? 0.16 : 0.1,\n },\n expert: t.expert,\n nonAck: t.nonAck,\n },\n toolbar: {\n height: 52,\n },\n saveToolbar: {\n background: t.primary,\n button: {\n borderRadius: 8,\n height: 34,\n },\n },\n };\n\n const components: Record<string, any> = {\n // Only takes effect in GUIs that actually render `<CssBaseline />` - the admin does not.\n // The scrollbars used to be defined here too and were therefore dead in most GUIs; they now\n // live in the `ScrollbarStyles` component, which works without CssBaseline.\n MuiCssBaseline: {\n styleOverrides: {\n body: {\n backgroundColor: t.background,\n color: t.textPrimary,\n },\n },\n },\n MuiPaper: {\n defaultProps: {\n elevation: 0,\n },\n styleOverrides: {\n root: {\n // remove the MUI overlay gradient of the dark mode - the colors are defined explicitly\n backgroundImage: 'none',\n backgroundColor: t.paper,\n },\n outlined: {\n border: `1px solid ${t.border}`,\n },\n rounded: {\n borderRadius: 12,\n },\n },\n },\n MuiCard: {\n defaultProps: {\n elevation: 0,\n },\n styleOverrides: {\n root: {\n backgroundColor: t.paper,\n border: `1px solid ${t.cardBorder}`,\n borderRadius: 12,\n backgroundImage: 'none',\n boxShadow: type === 'dark' ? '0 1px 3px rgba(0, 0, 0, 0.4)' : '0 1px 2px rgba(15, 23, 42, 0.05)',\n },\n },\n },\n MuiCardHeader: {\n styleOverrides: {\n root: {\n padding: '16px 20px 8px 20px',\n },\n title: {\n fontSize: '1rem',\n fontWeight: 600,\n },\n subheader: {\n fontSize: '0.8125rem',\n color: t.textSecondary,\n },\n },\n },\n MuiCardContent: {\n styleOverrides: {\n root: {\n padding: 20,\n '&:last-child': { paddingBottom: 20 },\n },\n },\n },\n MuiAppBar: {\n defaultProps: {\n elevation: 0,\n color: 'default',\n },\n styleOverrides: {\n root: {\n backgroundColor: t.paper,\n backgroundImage: 'none',\n color: t.textPrimary,\n // Drawn inside instead of as a border: a real border would add a pixel to the bar\n // height, and the content below positions itself by `mixins.toolbar`.\n boxShadow: `inset 0 -1px 0 ${t.border}`,\n },\n colorDefault: {\n backgroundColor: t.paper,\n },\n colorPrimary: {\n backgroundColor: t.paper,\n color: t.textPrimary,\n },\n },\n },\n MuiToolbar: {\n styleOverrides: {\n root: {\n minHeight: TOOLBAR_HEIGHT,\n '@media (min-width: 600px)': { minHeight: TOOLBAR_HEIGHT },\n },\n },\n },\n MuiDrawer: {\n styleOverrides: {\n paper: {\n backgroundColor: t.sidebar,\n backgroundImage: 'none',\n borderRight: `1px solid ${t.border}`,\n },\n },\n },\n MuiDivider: {\n styleOverrides: {\n root: {\n borderColor: t.border,\n },\n },\n },\n MuiListItemButton: {\n styleOverrides: {\n root: {\n borderRadius: 8,\n paddingTop: 7,\n paddingBottom: 7,\n '&:hover': {\n backgroundColor: t.hover,\n },\n '&.Mui-selected': {\n // the active navigation item is filled with a gradient\n background: t.gradient,\n color: '#FFFFFF',\n boxShadow: `0 2px 8px ${alpha(t.primary, type === 'dark' ? 0.35 : 0.25)}`,\n '& .MuiListItemIcon-root': { color: '#FFFFFF' },\n '&:hover': { background: t.gradientHover },\n },\n },\n },\n },\n MuiListItemIcon: {\n styleOverrides: {\n root: {\n color: t.textSecondary,\n minWidth: 36,\n },\n },\n },\n MuiListItemText: {\n styleOverrides: {\n primary: {\n fontSize: '0.9rem',\n },\n },\n },\n MuiMenu: {\n styleOverrides: {\n paper: {\n backgroundColor: t.elevated,\n backgroundImage: 'none',\n border: `1px solid ${t.border}`,\n borderRadius: 10,\n },\n list: {\n padding: 6,\n },\n },\n },\n MuiMenuItem: {\n styleOverrides: {\n root: {\n borderRadius: 6,\n fontSize: '0.875rem',\n '&.Mui-selected': {\n backgroundColor: t.selected,\n },\n },\n },\n },\n MuiPopover: {\n styleOverrides: {\n paper: {\n backgroundColor: t.elevated,\n backgroundImage: 'none',\n border: `1px solid ${t.border}`,\n borderRadius: 10,\n },\n },\n },\n MuiDialog: {\n styleOverrides: {\n paper: {\n backgroundColor: t.elevated,\n backgroundImage: 'none',\n border: `1px solid ${t.border}`,\n borderRadius: 14,\n },\n },\n },\n MuiDialogTitle: {\n styleOverrides: {\n root: {\n fontSize: '1.05rem',\n fontWeight: 600,\n },\n },\n },\n MuiButton: {\n defaultProps: {\n disableElevation: true,\n },\n styleOverrides: {\n root: {\n borderRadius: 8,\n textTransform: 'none',\n fontWeight: 500,\n boxShadow: 'none',\n '&:hover': { boxShadow: 'none' },\n },\n sizeSmall: {\n borderRadius: 6,\n },\n outlined: {\n borderColor: t.border,\n },\n },\n },\n MuiIconButton: {\n styleOverrides: {\n root: {\n borderRadius: 8,\n color: t.textSecondary,\n '&:hover': { backgroundColor: t.hover, color: t.textPrimary },\n },\n },\n },\n MuiToggleButton: {\n styleOverrides: {\n root: {\n borderRadius: 8,\n borderColor: t.border,\n textTransform: 'none',\n '&.Mui-selected': {\n backgroundColor: t.selected,\n color: t.primaryLight,\n },\n },\n },\n },\n MuiChip: {\n styleOverrides: {\n root: {\n borderRadius: 6,\n fontWeight: 500,\n fontSize: '0.75rem',\n },\n sizeSmall: {\n height: 22,\n },\n outlined: {\n borderColor: t.border,\n },\n },\n },\n MuiTooltip: {\n styleOverrides: {\n tooltip: {\n backgroundColor: type === 'dark' ? '#242C37' : '#1F2937',\n border: type === 'dark' ? `1px solid ${t.border}` : undefined,\n borderRadius: 8,\n fontSize: '0.75rem',\n padding: '6px 10px',\n },\n arrow: {\n color: type === 'dark' ? '#242C37' : '#1F2937',\n },\n },\n },\n MuiOutlinedInput: {\n styleOverrides: {\n root: {\n borderRadius: 8,\n backgroundColor: type === 'dark' ? alpha('#FFFFFF', 0.03) : alpha('#0F172A', 0.02),\n '& .MuiOutlinedInput-notchedOutline': { borderColor: t.border },\n '&:hover .MuiOutlinedInput-notchedOutline': { borderColor: t.textDisabled },\n },\n input: {\n padding: '10px 12px',\n },\n },\n },\n MuiInputBase: {\n styleOverrides: {\n root: {\n fontSize: '0.875rem',\n },\n },\n },\n MuiInputLabel: {\n styleOverrides: {\n root: {\n color: t.textSecondary,\n },\n },\n },\n MuiSelect: {\n styleOverrides: {\n select: {\n fontSize: '0.875rem',\n },\n },\n },\n MuiTabs: {\n styleOverrides: {\n root: {\n minHeight: 42,\n borderBottom: `1px solid ${t.border}`,\n },\n indicator: {\n height: 2,\n borderRadius: 2,\n },\n },\n },\n MuiTab: {\n styleOverrides: {\n root: {\n minHeight: 42,\n textTransform: 'none',\n fontWeight: 500,\n fontSize: '0.8125rem',\n letterSpacing: '0.02em',\n color: t.textSecondary,\n '&.Mui-selected': { color: t.primaryLight },\n },\n },\n },\n MuiTable: {\n styleOverrides: {\n root: {\n borderCollapse: 'separate',\n },\n },\n },\n MuiTableCell: {\n styleOverrides: {\n root: {\n borderBottom: `1px solid ${t.border}`,\n fontSize: '0.8125rem',\n padding: '10px 14px',\n },\n head: {\n color: t.textSecondary,\n fontWeight: 600,\n fontSize: '0.75rem',\n backgroundColor: t.paper,\n },\n },\n },\n MuiTableRow: {\n styleOverrides: {\n root: {\n '&:hover': { backgroundColor: t.hover },\n '&.Mui-selected': {\n backgroundColor: t.selected,\n '&:hover': { backgroundColor: t.selected },\n },\n },\n },\n },\n MuiLinearProgress: {\n styleOverrides: {\n root: {\n height: 6,\n borderRadius: 4,\n backgroundColor: type === 'dark' ? alpha('#FFFFFF', 0.08) : alpha('#0F172A', 0.08),\n },\n bar: {\n borderRadius: 4,\n },\n },\n },\n MuiSwitch: {\n styleOverrides: {\n track: {\n borderRadius: 12,\n },\n },\n },\n MuiCheckbox: {\n styleOverrides: {\n root: {\n color: t.textDisabled,\n },\n },\n },\n MuiAlert: {\n styleOverrides: {\n root: {\n borderRadius: 10,\n border: `1px solid ${t.border}`,\n },\n },\n },\n MuiAccordion: {\n styleOverrides: {\n root: {\n backgroundColor: t.paper,\n backgroundImage: 'none',\n border: `1px solid ${t.border}`,\n borderRadius: 10,\n '&::before': { display: 'none' },\n },\n },\n },\n MuiLink: {\n styleOverrides: {\n root: {\n color: t.primaryLight,\n textDecorationColor: alpha(t.primaryLight, 0.4),\n transition: 'color .2s ease',\n '&:hover': { color: t.primary },\n },\n },\n },\n };\n\n return { options, components };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ThemeModern.js","sourceRoot":"./src/","sources":["ThemeModern.ts"],"names":[],"mappings":"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","sourcesContent":["import { alpha, type Shadows } from '@mui/material/styles';\n\nimport type { ThemeName, ThemeType } from './types';\nimport type { ThemeOptions } from './Theme';\n\n/**\n * Flat design tokens of the \"modern\" themes.\n * Everything that is used more than once in the theme definition below is listed here,\n * so a new variation can be created by copying this object only.\n */\nexport interface ModernTokens {\n /** Background of the page (behind the cards) */\n background: string;\n /** Background of cards, tables and dialogs */\n paper: string;\n /** Background of the left navigation */\n sidebar: string;\n /** Background of menus, popovers and dialogs (one step above `paper`) */\n elevated: string;\n /** Color of the dividers inside of the cards (table rows, lists) */\n border: string;\n /** Border of the cards. In the dark theme the cards are separated by the background, not by a border */\n cardBorder: string;\n textPrimary: string;\n textSecondary: string;\n textDisabled: string;\n primary: string;\n primaryDark: string;\n primaryLight: string;\n secondary: string;\n /** Background of the selected navigation item */\n gradient: string;\n /** Background of the selected navigation item if hovered */\n gradientHover: string;\n success: string;\n warning: string;\n error: string;\n info: string;\n /** Color of the expert-mode elements */\n expert: string;\n /** Color of the not acknowledged values in the object browser */\n nonAck: string;\n /** Background of the hovered rows and list items */\n hover: string;\n /** Background of the selected rows and list items */\n selected: string;\n}\n\nexport const MODERN_DARK: ModernTokens = {\n background: '#0A121D',\n paper: '#121A26',\n sidebar: '#141C29',\n elevated: '#1A2434',\n border: '#1E2837',\n cardBorder: '#1B2533',\n textPrimary: '#E8EDF5',\n textSecondary: '#8B97A8',\n textDisabled: '#586576',\n primary: '#137BF8',\n primaryDark: '#0B62D6',\n primaryLight: '#4B9BFA',\n secondary: '#436A93',\n gradient: 'linear-gradient(90deg, #2E93F9 0%, #0B76F5 100%)',\n gradientHover: 'linear-gradient(90deg, #48A1FA 0%, #1B84F8 100%)',\n success: '#2EA043',\n warning: '#E8A33D',\n error: '#E5534B',\n info: '#3FA9F5',\n expert: '#2EA043',\n nonAck: '#E5534B',\n hover: 'rgba(255, 255, 255, 0.05)',\n selected: 'rgba(19, 123, 248, 0.16)',\n};\n\nexport const MODERN_LIGHT: ModernTokens = {\n background: '#F4F7FB',\n paper: '#FFFFFF',\n sidebar: '#FFFFFF',\n elevated: '#FFFFFF',\n border: '#E2E8F0',\n cardBorder: '#E2E8F0',\n textPrimary: '#101827',\n textSecondary: '#5B6878',\n textDisabled: '#98A4B3',\n primary: '#137BF8',\n primaryDark: '#0B62D6',\n primaryLight: '#4B9BFA',\n secondary: '#164477',\n gradient: 'linear-gradient(90deg, #2E93F9 0%, #0B76F5 100%)',\n gradientHover: 'linear-gradient(90deg, #48A1FA 0%, #1B84F8 100%)',\n success: '#1E8E3E',\n warning: '#C77700',\n error: '#D93025',\n info: '#0B72D9',\n expert: '#1E8E3E',\n nonAck: '#D93025',\n hover: 'rgba(16, 24, 39, 0.04)',\n selected: 'rgba(19, 123, 248, 0.10)',\n};\n\nconst FONT_FAMILY = '\"Inter\", \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif';\n/** Height of the app bar. Used for `MuiToolbar` and for `mixins.toolbar` - the two must not drift apart */\nconst TOOLBAR_HEIGHT = 52;\n\n/**\n * Build the 25 MUI shadows. The default MUI shadows are too heavy for this design,\n * so they are replaced by a soft two-layer shadow.\n */\nfunction buildShadows(type: ThemeType): Shadows {\n const rgb = type === 'dark' ? '0, 0, 0' : '15, 23, 42';\n const nearOpacity = type === 'dark' ? 0.24 : 0.04;\n const farOpacity = type === 'dark' ? 0.36 : 0.08;\n\n const shadows: string[] = ['none'];\n for (let i = 1; i <= 24; i++) {\n const y = Math.round(1 + i * 0.7);\n const blur = Math.round(2 + i * 1.6);\n shadows.push(\n `0px ${Math.max(1, Math.round(y / 2))}px ${Math.max(2, Math.round(blur / 2))}px rgba(${rgb}, ${nearOpacity}), ` +\n `0px ${y}px ${blur}px rgba(${rgb}, ${farOpacity})`,\n );\n }\n\n return shadows as unknown as Shadows;\n}\n\n/**\n * Options and component overrides of the \"modern\" themes (`modernDark` and `modernLight`).\n */\nexport function getModernTheme(\n name: ThemeName,\n type: ThemeType,\n): { options: ThemeOptions; components: Record<string, any> } {\n const t: ModernTokens = type === 'dark' ? MODERN_DARK : MODERN_LIGHT;\n\n const options: ThemeOptions = {\n name,\n shape: { borderRadius: 10 },\n // The app bar is lower than in the MUI default. `mixins.toolbar` has to say so too: consumers\n // (e.g. the admin) take the top margin of their content from it, and with MUI's 64px they\n // would leave a gap below the bar.\n mixins: {\n toolbar: {\n minHeight: TOOLBAR_HEIGHT,\n '@media (min-width:0px) and (orientation: landscape)': { minHeight: TOOLBAR_HEIGHT },\n '@media (min-width:600px)': { minHeight: TOOLBAR_HEIGHT },\n },\n },\n shadows: buildShadows(type),\n typography: {\n fontFamily: FONT_FAMILY,\n h1: { fontWeight: 700, letterSpacing: '-0.02em' },\n h2: { fontWeight: 700, letterSpacing: '-0.02em' },\n h3: { fontWeight: 600, letterSpacing: '-0.02em' },\n h4: { fontWeight: 600, letterSpacing: '-0.01em' },\n h5: { fontWeight: 600 },\n h6: { fontWeight: 600, fontSize: '1.05rem' },\n subtitle1: { fontWeight: 500 },\n subtitle2: { fontWeight: 500 },\n body2: { fontSize: '0.875rem' },\n button: { fontWeight: 500, textTransform: 'none', letterSpacing: 0 },\n caption: { fontSize: '0.75rem' },\n },\n palette: {\n mode: type,\n background: {\n default: t.background,\n paper: t.paper,\n },\n primary: {\n main: t.primary,\n dark: t.primaryDark,\n light: t.primaryLight,\n contrastText: '#FFFFFF',\n },\n secondary: {\n main: t.secondary,\n contrastText: '#FFFFFF',\n },\n success: { main: t.success },\n warning: { main: t.warning },\n error: { main: t.error },\n info: { main: t.info },\n divider: t.border,\n text: {\n primary: t.textPrimary,\n secondary: t.textSecondary,\n disabled: t.textDisabled,\n },\n action: {\n hover: t.hover,\n hoverOpacity: type === 'dark' ? 0.06 : 0.04,\n selected: t.selected,\n selectedOpacity: type === 'dark' ? 0.16 : 0.1,\n },\n expert: t.expert,\n nonAck: t.nonAck,\n },\n toolbar: {\n height: TOOLBAR_HEIGHT,\n },\n saveToolbar: {\n background: t.primary,\n button: {\n borderRadius: 8,\n height: 34,\n },\n },\n };\n\n const components: Record<string, any> = {\n // Only takes effect in GUIs that actually render `<CssBaseline />` - the admin does not.\n // The scrollbars used to be defined here too and were therefore dead in most GUIs; they now\n // live in the `ScrollbarStyles` component, which works without CssBaseline.\n MuiCssBaseline: {\n styleOverrides: {\n body: {\n backgroundColor: t.background,\n color: t.textPrimary,\n },\n },\n },\n MuiPaper: {\n defaultProps: {\n elevation: 0,\n },\n styleOverrides: {\n root: {\n // remove the MUI overlay gradient of the dark mode - the colors are defined explicitly\n backgroundImage: 'none',\n backgroundColor: t.paper,\n },\n outlined: {\n border: `1px solid ${t.border}`,\n },\n rounded: {\n borderRadius: 12,\n },\n },\n },\n MuiCard: {\n defaultProps: {\n elevation: 0,\n },\n styleOverrides: {\n root: {\n backgroundColor: t.paper,\n border: `1px solid ${t.cardBorder}`,\n borderRadius: 12,\n backgroundImage: 'none',\n boxShadow: type === 'dark' ? '0 1px 3px rgba(0, 0, 0, 0.4)' : '0 1px 2px rgba(15, 23, 42, 0.05)',\n },\n },\n },\n MuiCardHeader: {\n styleOverrides: {\n root: {\n padding: '16px 20px 8px 20px',\n },\n title: {\n fontSize: '1rem',\n fontWeight: 600,\n },\n subheader: {\n fontSize: '0.8125rem',\n color: t.textSecondary,\n },\n },\n },\n MuiCardContent: {\n styleOverrides: {\n root: {\n padding: 20,\n '&:last-child': { paddingBottom: 20 },\n },\n },\n },\n MuiAppBar: {\n defaultProps: {\n elevation: 0,\n color: 'default',\n },\n styleOverrides: {\n root: {\n backgroundColor: t.paper,\n backgroundImage: 'none',\n color: t.textPrimary,\n // Drawn inside instead of as a border: a real border would add a pixel to the bar\n // height, and the content below positions itself by `mixins.toolbar`.\n boxShadow: `inset 0 -1px 0 ${t.border}`,\n },\n colorDefault: {\n backgroundColor: t.paper,\n },\n colorPrimary: {\n backgroundColor: t.paper,\n color: t.textPrimary,\n },\n },\n },\n MuiToolbar: {\n styleOverrides: {\n root: {\n minHeight: TOOLBAR_HEIGHT,\n '@media (min-width: 600px)': { minHeight: TOOLBAR_HEIGHT },\n },\n },\n },\n MuiDrawer: {\n styleOverrides: {\n paper: {\n backgroundColor: t.sidebar,\n backgroundImage: 'none',\n borderRight: `1px solid ${t.border}`,\n },\n },\n },\n MuiDivider: {\n styleOverrides: {\n root: {\n borderColor: t.border,\n },\n },\n },\n MuiListItemButton: {\n styleOverrides: {\n root: {\n borderRadius: 8,\n paddingTop: 7,\n paddingBottom: 7,\n '&:hover': {\n backgroundColor: t.hover,\n },\n '&.Mui-selected': {\n // the active navigation item is filled with a gradient\n background: t.gradient,\n color: '#FFFFFF',\n boxShadow: `0 2px 8px ${alpha(t.primary, type === 'dark' ? 0.35 : 0.25)}`,\n '& .MuiListItemIcon-root': { color: '#FFFFFF' },\n '&:hover': { background: t.gradientHover },\n },\n },\n },\n },\n MuiListItemIcon: {\n styleOverrides: {\n root: {\n color: t.textSecondary,\n minWidth: 36,\n },\n },\n },\n MuiListItemText: {\n styleOverrides: {\n primary: {\n fontSize: '0.9rem',\n },\n },\n },\n MuiMenu: {\n styleOverrides: {\n paper: {\n backgroundColor: t.elevated,\n backgroundImage: 'none',\n border: `1px solid ${t.border}`,\n borderRadius: 10,\n },\n list: {\n padding: 6,\n },\n },\n },\n MuiMenuItem: {\n styleOverrides: {\n root: {\n borderRadius: 6,\n fontSize: '0.875rem',\n '&.Mui-selected': {\n backgroundColor: t.selected,\n },\n },\n },\n },\n MuiPopover: {\n styleOverrides: {\n paper: {\n backgroundColor: t.elevated,\n backgroundImage: 'none',\n border: `1px solid ${t.border}`,\n borderRadius: 10,\n },\n },\n },\n MuiDialog: {\n styleOverrides: {\n paper: {\n backgroundColor: t.elevated,\n backgroundImage: 'none',\n border: `1px solid ${t.border}`,\n borderRadius: 14,\n },\n },\n },\n MuiDialogTitle: {\n styleOverrides: {\n root: {\n fontSize: '1.05rem',\n fontWeight: 600,\n },\n },\n },\n MuiButton: {\n defaultProps: {\n disableElevation: true,\n },\n styleOverrides: {\n root: {\n borderRadius: 8,\n textTransform: 'none',\n fontWeight: 500,\n boxShadow: 'none',\n '&:hover': { boxShadow: 'none' },\n },\n sizeSmall: {\n borderRadius: 6,\n },\n outlined: {\n borderColor: t.border,\n },\n },\n },\n MuiIconButton: {\n styleOverrides: {\n root: {\n borderRadius: 8,\n color: t.textSecondary,\n '&:hover': { backgroundColor: t.hover, color: t.textPrimary },\n },\n },\n },\n MuiToggleButton: {\n styleOverrides: {\n root: {\n borderRadius: 8,\n borderColor: t.border,\n textTransform: 'none',\n '&.Mui-selected': {\n backgroundColor: t.selected,\n color: t.primaryLight,\n },\n },\n },\n },\n MuiChip: {\n styleOverrides: {\n root: {\n borderRadius: 6,\n fontWeight: 500,\n fontSize: '0.75rem',\n },\n sizeSmall: {\n height: 22,\n },\n outlined: {\n borderColor: t.border,\n },\n },\n },\n MuiTooltip: {\n styleOverrides: {\n tooltip: {\n backgroundColor: type === 'dark' ? '#242C37' : '#1F2937',\n border: type === 'dark' ? `1px solid ${t.border}` : undefined,\n borderRadius: 8,\n fontSize: '0.75rem',\n padding: '6px 10px',\n },\n arrow: {\n color: type === 'dark' ? '#242C37' : '#1F2937',\n },\n },\n },\n MuiOutlinedInput: {\n styleOverrides: {\n root: {\n borderRadius: 8,\n backgroundColor: type === 'dark' ? alpha('#FFFFFF', 0.03) : alpha('#0F172A', 0.02),\n '& .MuiOutlinedInput-notchedOutline': { borderColor: t.border },\n '&:hover .MuiOutlinedInput-notchedOutline': { borderColor: t.textDisabled },\n },\n input: {\n padding: '10px 12px',\n },\n },\n },\n MuiInputBase: {\n styleOverrides: {\n root: {\n fontSize: '0.875rem',\n },\n },\n },\n MuiInputLabel: {\n styleOverrides: {\n root: {\n color: t.textSecondary,\n },\n },\n },\n MuiSelect: {\n styleOverrides: {\n select: {\n fontSize: '0.875rem',\n },\n },\n },\n MuiTabs: {\n styleOverrides: {\n root: {\n minHeight: 42,\n borderBottom: `1px solid ${t.border}`,\n },\n indicator: {\n height: 2,\n borderRadius: 2,\n },\n },\n },\n MuiTab: {\n styleOverrides: {\n root: {\n minHeight: 42,\n textTransform: 'none',\n fontWeight: 500,\n fontSize: '0.8125rem',\n letterSpacing: '0.02em',\n color: t.textSecondary,\n '&.Mui-selected': { color: t.primaryLight },\n },\n },\n },\n MuiTable: {\n styleOverrides: {\n root: {\n borderCollapse: 'separate',\n },\n },\n },\n MuiTableCell: {\n styleOverrides: {\n root: {\n borderBottom: `1px solid ${t.border}`,\n fontSize: '0.8125rem',\n padding: '10px 14px',\n },\n head: {\n color: t.textSecondary,\n fontWeight: 600,\n fontSize: '0.75rem',\n backgroundColor: t.paper,\n },\n },\n },\n MuiTableRow: {\n styleOverrides: {\n root: {\n '&:hover': { backgroundColor: t.hover },\n '&.Mui-selected': {\n backgroundColor: t.selected,\n '&:hover': { backgroundColor: t.selected },\n },\n },\n },\n },\n MuiLinearProgress: {\n styleOverrides: {\n root: {\n height: 6,\n borderRadius: 4,\n backgroundColor: type === 'dark' ? alpha('#FFFFFF', 0.08) : alpha('#0F172A', 0.08),\n },\n bar: {\n borderRadius: 4,\n },\n },\n },\n MuiSwitch: {\n styleOverrides: {\n track: {\n borderRadius: 12,\n },\n },\n },\n MuiCheckbox: {\n styleOverrides: {\n root: {\n color: t.textDisabled,\n },\n },\n },\n MuiAlert: {\n styleOverrides: {\n root: {\n borderRadius: 10,\n border: `1px solid ${t.border}`,\n },\n },\n },\n MuiAccordion: {\n styleOverrides: {\n root: {\n backgroundColor: t.paper,\n backgroundImage: 'none',\n border: `1px solid ${t.border}`,\n borderRadius: 10,\n '&::before': { display: 'none' },\n },\n },\n },\n MuiLink: {\n styleOverrides: {\n root: {\n color: t.primaryLight,\n textDecorationColor: alpha(t.primaryLight, 0.4),\n transition: 'color .2s ease',\n '&:hover': { color: t.primary },\n },\n },\n },\n };\n\n return { options, components };\n}\n"]}
|
package/package.json
CHANGED