@iobroker/adapter-react
Version:
React classes to develop admin interfaces for ioBroker with react.
1,721 lines (1,467 loc) • 223 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof3 = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
var _react = _interopRequireWildcard(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _copyToClipboard = _interopRequireDefault(require("./copy-to-clipboard"));
var _withStyles = _interopRequireDefault(require("@material-ui/core/styles/withStyles"));
var _withWidth = _interopRequireDefault(require("@material-ui/core/withWidth"));
var _reactInlinesvg = _interopRequireDefault(require("react-inlinesvg"));
var _IconButton = _interopRequireDefault(require("@material-ui/core/IconButton"));
var _CircularProgress = _interopRequireDefault(require("@material-ui/core/CircularProgress"));
var _MenuItem = _interopRequireDefault(require("@material-ui/core/MenuItem"));
var _Select = _interopRequireDefault(require("@material-ui/core/Select"));
var _FormControl = _interopRequireDefault(require("@material-ui/core/FormControl"));
var _Input = _interopRequireDefault(require("@material-ui/core/Input"));
var _Grid = _interopRequireDefault(require("@material-ui/core/Grid"));
var _Badge = _interopRequireDefault(require("@material-ui/core/Badge"));
var _Tooltip = _interopRequireDefault(require("@material-ui/core/Tooltip"));
var _Snackbar = _interopRequireDefault(require("@material-ui/core/Snackbar"));
var _Checkbox = _interopRequireDefault(require("@material-ui/core/Checkbox"));
var _List = _interopRequireDefault(require("@material-ui/core/List"));
var _ListItem = _interopRequireDefault(require("@material-ui/core/ListItem"));
var _ListItemIcon = _interopRequireDefault(require("@material-ui/core/ListItemIcon"));
var _ListItemSecondaryAction = _interopRequireDefault(require("@material-ui/core/ListItemSecondaryAction"));
var _ListItemText = _interopRequireDefault(require("@material-ui/core/ListItemText"));
var _DialogTitle = _interopRequireDefault(require("@material-ui/core/DialogTitle"));
var _Dialog = _interopRequireDefault(require("@material-ui/core/Dialog"));
var _DialogContent = _interopRequireDefault(require("@material-ui/core/DialogContent"));
var _DialogContentText = _interopRequireDefault(require("@material-ui/core/DialogContentText"));
var _DialogActions = _interopRequireDefault(require("@material-ui/core/DialogActions"));
var _Button = _interopRequireDefault(require("@material-ui/core/Button"));
var _Fab = _interopRequireDefault(require("@material-ui/core/Fab"));
var _TextField = _interopRequireDefault(require("@material-ui/core/TextField"));
var _FormControlLabel = _interopRequireDefault(require("@material-ui/core/FormControlLabel"));
var _Switch = _interopRequireDefault(require("@material-ui/core/Switch"));
var _Slider = _interopRequireDefault(require("@material-ui/core/Slider"));
var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
var _Edit = _interopRequireDefault(require("@material-ui/icons/Edit"));
var _Delete = _interopRequireDefault(require("@material-ui/icons/Delete"));
var _Settings = _interopRequireDefault(require("@material-ui/icons/Settings"));
var _SettingsApplications = _interopRequireDefault(require("@material-ui/icons/SettingsApplications"));
var _Photo = _interopRequireDefault(require("@material-ui/icons/Photo"));
var _SupervisedUserCircle = _interopRequireDefault(require("@material-ui/icons/SupervisedUserCircle"));
var _CalendarToday = _interopRequireDefault(require("@material-ui/icons/CalendarToday"));
var _PersonOutlined = _interopRequireDefault(require("@material-ui/icons/PersonOutlined"));
var _Router = _interopRequireDefault(require("@material-ui/icons/Router"));
var _Wifi = _interopRequireDefault(require("@material-ui/icons/Wifi"));
var _Info = _interopRequireDefault(require("@material-ui/icons/Info"));
var _Description = _interopRequireDefault(require("@material-ui/icons/Description"));
var _Code = _interopRequireDefault(require("@material-ui/icons/Code"));
var _ShowChart = _interopRequireDefault(require("@material-ui/icons/ShowChart"));
var _ListAlt = _interopRequireDefault(require("@material-ui/icons/ListAlt"));
var _ViewColumn = _interopRequireDefault(require("@material-ui/icons/ViewColumn"));
var _Close = _interopRequireDefault(require("@material-ui/icons/Close"));
var _Check = _interopRequireDefault(require("@material-ui/icons/Check"));
var _Build = _interopRequireDefault(require("@material-ui/icons/Build"));
var _Publish = _interopRequireDefault(require("@material-ui/icons/Publish"));
var _Add = _interopRequireDefault(require("@material-ui/icons/Add"));
var _Refresh = _interopRequireDefault(require("@material-ui/icons/Refresh"));
var _LooksOne = _interopRequireDefault(require("@material-ui/icons/LooksOne"));
var _RoomService = _interopRequireDefault(require("@material-ui/icons/RoomService"));
var _Error = _interopRequireDefault(require("@material-ui/icons/Error"));
var _WifiOff = _interopRequireDefault(require("@material-ui/icons/WifiOff"));
var _IconExpert = _interopRequireDefault(require("../icons/IconExpert"));
var _IconAdapter = _interopRequireDefault(require("../icons/IconAdapter"));
var _IconAlias = _interopRequireDefault(require("../icons/IconAlias"));
var _IconChannel = _interopRequireDefault(require("../icons/IconChannel"));
var _IconCopy = _interopRequireDefault(require("../icons/IconCopy"));
var _IconDevice = _interopRequireDefault(require("../icons/IconDevice"));
var _IconDocument = _interopRequireDefault(require("../icons/IconDocument"));
var _IconInstance = _interopRequireDefault(require("../icons/IconInstance"));
var _IconState = _interopRequireDefault(require("../icons/IconState"));
var _IconClosed = _interopRequireDefault(require("../icons/IconClosed"));
var _IconOpen = _interopRequireDefault(require("../icons/IconOpen"));
var _IconClearFilter = _interopRequireDefault(require("../icons/IconClearFilter"));
var _Icon = _interopRequireDefault(require("./Icon"));
var _Utils = _interopRequireDefault(require("./Utils"));
var _TabContainer = _interopRequireDefault(require("./TabContainer"));
var _TabContent = _interopRequireDefault(require("./TabContent"));
var _TabHeader = _interopRequireDefault(require("./TabHeader"));
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
var ICON_SIZE = 24;
var ROW_HEIGHT = 32;
var ITEM_LEVEL = 16;
var SMALL_BUTTON_SIZE = 20;
var COLOR_NAME_SYSTEM = '#ff6d69';
var COLOR_NAME_SYSTEM_ADAPTER = '#5773ff';
var COLOR_NAME_ERROR_DARK = '#ff413c';
var COLOR_NAME_ERROR_LIGHT = '#86211f';
var COLOR_NAME_CONNECTED_DARK = '#57ff45';
var COLOR_NAME_CONNECTED_LIGHT = '#098c04';
var COLOR_NAME_DISCONNECTED_DARK = '#f3ad11';
var COLOR_NAME_DISCONNECTED_LIGHT = '#6c5008';
var styles = function styles(theme) {
return {
toolbar: {
minHeight: 38 //Theme.toolbar.height,
// boxShadow: '0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12)'
},
toolbarButtons: {
padding: 4,
marginLeft: 4
},
switchColumnAuto: {
marginLeft: theme.spacing(2)
},
dialogColumns: {
transition: 'opacity 1s'
},
dialogColumnsLabel: {
fontSize: 12,
paddingTop: theme.spacing(1)
},
columnCustom: {
width: '100%',
display: 'inline-block'
},
columnCustomEditable: {
cursor: 'text'
},
columnCustomCenter: {
textAlign: 'center'
},
columnCustomLeft: {
textAlign: 'left'
},
columnCustomRight: {
textAlign: 'right'
},
width100: {
width: '100%'
},
transparent_10: {
opacity: 0.1
},
transparent_20: {
opacity: 0.2
},
transparent_30: {
opacity: 0.3
},
transparent_40: {
opacity: 0.4
},
transparent_50: {
opacity: 0.5
},
transparent_60: {
opacity: 0.6
},
transparent_70: {
opacity: 0.7
},
transparent_80: {
opacity: 0.8
},
transparent_90: {
opacity: 0.9
},
transparent_100: {
opacity: 1
},
columnsDialogInputWidth: {
width: 80
},
headerRow: {
paddingLeft: theme.spacing(1),
height: 38,
whiteSpace: 'nowrap'
},
buttonClearFilter: {
position: 'relative',
"float": 'right',
padding: 0
},
buttonClearFilterIcon: {
zIndex: 2,
position: 'absolute',
top: 0,
left: 0,
color: '#FF0000',
opacity: 0.7
},
tableDiv: {
paddingTop: 0,
//theme.spacing(1),
paddingLeft: 0,
width: "calc(100% - ".concat(theme.spacing(1), "px)"),
height: "calc(100% - 38px)",
overflow: 'auto'
},
tableRow: {
paddingLeft: theme.spacing(1),
height: ROW_HEIGHT,
lineHeight: ROW_HEIGHT + 'px',
verticalAlign: 'top',
userSelect: 'none',
width: '100%',
'&:hover': {
background: "".concat(theme.palette.type === 'dark' ? theme.palette.primary.dark : theme.palette.primary.light, " !important"),
color: _Utils["default"].invertColor(theme.palette.primary.main, true)
},
whiteSpace: 'nowrap',
flexWrap: 'nowrap'
},
tableRowLines: {
borderBottom: "1px solid ".concat(theme.palette.type === 'dark' ? '#8888882e' : '#8888882e')
},
tableRowNoDragging: {
cursor: 'pointer'
},
tableRowAlias: {
height: ROW_HEIGHT + 10
},
tableRowAliasReadWrite: {
height: ROW_HEIGHT + 22
},
checkBox: {
padding: 0
},
cellId: {
position: 'relative',
fontSize: '1rem',
overflow: 'hidden',
textOverflow: 'ellipsis',
//verticalAlign: 'top',
//position: 'relative',
'& .copyButton': {
display: 'none'
},
'&:hover .copyButton': {
display: 'block'
},
'& .iconOwn': {
display: 'block',
width: ROW_HEIGHT - 4,
height: ROW_HEIGHT - 4,
marginTop: 2,
"float": 'right'
},
'&:hover .iconOwn': {
display: 'none'
},
'& *': {
width: 'initial'
}
},
cellIdSpan: {
overflow: 'hidden',
textOverflow: 'ellipsis',
whiteSpace: 'nowrap' //display: 'inline-block',
//verticalAlign: 'top',
},
cellIdIconFolder: {
marginRight: theme.spacing(1),
width: ROW_HEIGHT - 4,
height: ROW_HEIGHT - 4,
cursor: 'pointer',
color: theme.palette.secondary.main || '#fbff7d',
verticalAlign: 'top'
},
cellIdIconDocument: {
verticalAlign: 'middle',
marginLeft: (ROW_HEIGHT - SMALL_BUTTON_SIZE) / 2,
marginRight: theme.spacing(1),
width: SMALL_BUTTON_SIZE,
height: SMALL_BUTTON_SIZE
},
cellIdIconOwn: {},
cellCopyButton: {
// color: 'white',
width: SMALL_BUTTON_SIZE,
height: SMALL_BUTTON_SIZE,
top: (ROW_HEIGHT - SMALL_BUTTON_SIZE) / 2,
opacity: 0.8,
'&:hover': {
opacity: 1
},
position: 'absolute',
right: 3
},
cellEditButton: {
width: SMALL_BUTTON_SIZE,
height: SMALL_BUTTON_SIZE,
color: 'white',
position: 'absolute',
top: (ROW_HEIGHT - SMALL_BUTTON_SIZE) / 2,
right: SMALL_BUTTON_SIZE + 3,
opacity: 0.7,
'&:hover': {
opacity: 1
}
},
cellName: {
display: 'inline-block',
verticalAlign: 'top',
fontSize: 14,
marginLeft: 5,
overflow: 'hidden',
textOverflow: 'ellipsis',
position: 'relative',
'& .copyButton': {
display: 'none'
},
'&:hover .copyButton': {
display: 'block'
}
},
cellIdAlias: {
fontStyle: 'italic',
fontSize: 12,
opacity: 0.7,
'&:hover': {
color: theme.palette.type === 'dark' ? '#009900' : '#007700'
}
},
cellIdAliasReadWriteDiv: {
height: 24,
marginTop: -5
},
cellIdAliasAlone: {
lineHeight: 0
},
cellIdAliasReadWrite: {
lineHeight: '12px'
},
cellType: {
display: 'inline-block',
verticalAlign: 'top',
'& .itemIcon': {
verticalAlign: 'middle',
width: ICON_SIZE,
height: ICON_SIZE,
display: 'inline-block'
},
'& .itemIconFolder': {
marginLeft: 3
}
},
cellRole: {
display: 'inline-block',
verticalAlign: 'top',
textOverflow: 'ellipsis',
overflow: 'hidden'
},
cellRoom: {
display: 'inline-block',
verticalAlign: 'top',
textOverflow: 'ellipsis',
overflow: 'hidden'
},
cellEnumParent: {
opacity: 0.4
},
cellFunc: {
display: 'inline-block',
verticalAlign: 'top',
textOverflow: 'ellipsis',
overflow: 'hidden'
},
cellValue: {
display: 'inline-block',
verticalAlign: 'top',
textOverflow: 'ellipsis',
overflow: 'hidden'
},
cellValueButton: {
marginTop: 5,
'&:active': {
transform: 'scale(0.8)'
}
},
cellValueButtonFalse: {
opacity: 0.3
},
cellAdapter: {
display: 'inline-block',
verticalAlign: 'top'
},
cellValueTooltip: {
fontSize: 12
},
cellValueText: {
width: '100%',
height: ROW_HEIGHT,
fontSize: 16,
display: 'inline-block',
overflow: 'hidden',
textOverflow: 'ellipsis',
position: 'relative',
verticalAlign: 'top',
'& .copyButton': {
display: 'none'
},
'&:hover .copyButton': {
display: 'block'
}
},
cellValueFile: {
color: '#2837b9'
},
cellValueTooltipTitle: {
fontStyle: 'italic',
width: 100,
display: 'inline-block'
},
cellValueTooltipValue: {
width: 120,
display: 'inline-block',
//overflow: 'hidden',
whiteSpace: 'nowrap',
textOverflow: 'ellipsis'
},
cellValueTooltipBoth: {
width: 220,
display: 'inline-block',
whiteSpace: 'nowrap'
},
cellValueTooltipBox: {
width: 250,
overflow: 'hidden'
},
cellValueTextUnit: {
marginLeft: theme.spacing(0.5),
opacity: 0.8
},
newValue: {
animation: '$newValueAnimation 2s ease-in-out'
},
'@keyframes newValueAnimation': {
'0%': {
color: '#00f900'
},
'80%': {
color: '#008000'
},
'100%': {
color: theme.palette.type === 'dark' ? '#fff' : '#000'
}
},
cellValueTextState: {
opacity: 0.7
},
cellValueTooltipCopy: {
position: 'absolute',
bottom: 3,
right: 3
},
cellValueTooltipEdit: {
position: 'absolute',
bottom: 3,
right: 15
},
cellButtons: {
display: 'inline-block',
verticalAlign: 'top'
},
cellButtonsButton: {
display: 'inline-block',
opacity: 0.7,
width: SMALL_BUTTON_SIZE + 4,
height: SMALL_BUTTON_SIZE + 4,
'&:hover': {
opacity: 1
},
paddingTop: 0,
marginTop: -2
},
cellButtonsEmptyButton: {
fontSize: 12
},
cellButtonMinWidth: {
minWidth: 47
},
cellButtonsButtonAlone: {
marginLeft: SMALL_BUTTON_SIZE + 4,
paddingTop: 0,
marginTop: -2
},
cellButtonsButtonWithCustoms: {
color: theme.palette.secondary.main
},
cellButtonsValueButton: {
position: 'absolute',
display: 'inline-block',
top: SMALL_BUTTON_SIZE / 2 - 2,
opacity: 0.7,
width: SMALL_BUTTON_SIZE - 2,
height: SMALL_BUTTON_SIZE - 2,
color: theme.palette.action.active,
'&:hover': {
opacity: 1
}
},
cellButtonsValueButtonCopy: {
right: theme.spacing(1),
cursor: 'pointer'
},
cellButtonsValueButtonEdit: {
right: SMALL_BUTTON_SIZE / 2 + theme.spacing(2)
},
filteredOut: {
opacity: 0.5
},
filteredParentOut: {
opacity: 0.3
},
filterInput: {
marginTop: 0,
marginBottom: 0
},
selectIcon: {
width: 24,
height: 24,
marginRight: 4
},
selectNone: {
opacity: 0.5
},
itemSelected: {
background: "".concat(theme.palette.primary.main, " !important"),
color: "".concat(_Utils["default"].invertColor(theme.palette.primary.main, true), " !important")
},
header: {
width: '100%'
},
headerCell: {
display: 'inline-block',
verticalAlign: 'top'
},
headerCellValue: {
paddingTop: 4,
// paddingLeft: 5,
fontSize: 16
},
headerCellInput: {
width: 'calc(100% - 5px)',
height: ROW_HEIGHT,
paddingTop: 3,
'& .itemIcon': {
verticalAlign: 'middle',
width: ICON_SIZE,
height: ICON_SIZE,
display: 'inline-block'
}
},
headerCellSelectItem: {
'& .itemIcon': {
width: ICON_SIZE,
height: ICON_SIZE,
marginRight: 5,
display: 'inline-block'
}
},
visibleButtons: {
color: '#2196f3',
opacity: 0.7
},
grow: {
flexGrow: 1
},
enumIconDiv: {
marginRight: theme.spacing(1),
width: 32,
height: 32,
borderRadius: 8,
background: '#FFFFFF'
},
enumIcon: {
marginTop: 4,
marginLeft: 4,
width: 24,
height: 24
},
enumDialog: {
overflow: 'hidden'
},
enumList: {
minWidth: 250,
height: 'calc(100% - 50px)',
overflow: 'auto'
},
enumButton: {
"float": 'right'
},
enumCheckbox: {
minWidth: 0
},
buttonDiv: {
display: 'flex',
height: '100%',
alignItems: 'center'
},
aclText: {
fontSize: 13
},
rightsObject: {
color: '#55ff55',
paddingLeft: 3
},
rightsState: {
color: '#86b6ff',
paddingLeft: 3
},
textCenter: {
padding: 12,
textAlign: 'center'
},
tooltipAccessControl: {
display: 'flex',
flexDirection: 'column'
},
'@media screen and (max-width: 465px)': {
columnsDialogInputWidth: {
width: 50
},
fontSizeTitle: {
'& *': {
fontSize: 12
}
}
},
'@media screen and (max-width: 700px)': {},
'@media screen and (max-width: 430px)': {},
draggable: {
cursor: 'copy'
},
nonDraggable: {
cursor: 'no-drop'
},
selectClearButton: {
position: 'absolute',
top: 0,
right: 0,
borderRadius: 20,
backgroundColor: theme.palette.background["default"]
},
iconDeviceConnected: {
color: theme.palette.type === 'dark' ? COLOR_NAME_CONNECTED_DARK : COLOR_NAME_CONNECTED_LIGHT,
opacity: 0.8,
position: 'absolute',
top: 4,
right: 32,
width: 20
},
iconDeviceDisconnected: {
color: theme.palette.type === 'dark' ? COLOR_NAME_DISCONNECTED_DARK : COLOR_NAME_DISCONNECTED_LIGHT,
opacity: 0.8,
position: 'absolute',
top: 4,
right: 32,
width: 20
},
iconDeviceError: {
color: theme.palette.type === 'dark' ? COLOR_NAME_ERROR_DARK : COLOR_NAME_ERROR_LIGHT,
opacity: 0.8,
position: 'absolute',
top: 4,
right: 50,
width: 20
}
};
};
function generateFile(filename, obj) {
var el = document.createElement('a');
el.setAttribute('href', 'data:application/json;charset=utf-8,' + encodeURIComponent(JSON.stringify(obj, null, 2)));
el.setAttribute('download', filename);
el.style.display = 'none';
document.body.appendChild(el);
el.click();
document.body.removeChild(el);
} // d=data, t=target, s=start, e=end, m=middle
function binarySearch(list, find, _start, _end) {
_start = _start || 0;
if (_end === undefined) {
_end = list.length - 1;
if (!_end) {
return list[0] === find;
}
}
var middle = Math.floor((_start + _end) / 2);
if (find === list[middle]) {
return list[middle];
}
if (_end - 1 === _start) {
return list[_start] === find || list[_end] === find;
}
if (find > list[middle]) {
return binarySearch(list, find, middle, _end);
}
if (find < list[middle]) {
return binarySearch(list, find, _start, middle);
}
}
function applyFilter(item, filters, lang, objects, context, counter, customFilter, selectedTypes) {
var filteredOut = false;
if (!context) {
context = {};
if (filters.id) {
context.id = filters.id.toLowerCase();
}
if (filters.name) {
context.name = filters.name.toLowerCase();
}
if (filters.type) {
context.type = filters.type.toLowerCase();
}
if (filters.custom) {
context.custom = filters.custom.toLowerCase();
}
if (filters.role) {
context.role = filters.role.toLowerCase();
}
if (filters.room) {
context.room = objects[filters.room] && objects[filters.room].common && objects[filters.room].common.members || [];
}
if (filters.func) {
context.func = objects[filters.func] && objects[filters.func].common && objects[filters.func].common.members || [];
}
}
var data = item.data;
if (data && data.id) {
var common = data.obj && data.obj.common;
if (customFilter) {
if (customFilter.type && customFilter.type !== data.obj.type) {
filteredOut = true;
} else if (customFilter.common && customFilter.common.custom) {
if (!common || !common.custom || customFilter.common.custom !== true && !common.custom[customFilter.common.custom]) {
filteredOut = true;
}
}
}
if (!filteredOut && !filters.expertMode) {
filteredOut = data.id === 'system' || data.id === 'enum' || // (data.obj && data.obj.type === 'meta') ||
data.id.startsWith('system.') || data.id.startsWith('enum.') || data.id.startsWith('_design/') || common && common.expert;
}
if (!filteredOut && context.id) {
if (data.fID === undefined) {
data.fID = data.id.toLowerCase();
}
filteredOut = data.fID.indexOf(context.id) === -1;
}
if (!filteredOut && context.name) {
if (common) {
if (data.fName === undefined) {
data.fName = common && getName(common.name, lang) || '';
data.fName = data.fName.toLowerCase();
}
filteredOut = !data.fName.includes(context.name);
} else {
filteredOut = true;
}
}
if (!filteredOut && filters.role && common) {
if (common) {
filteredOut = !(common.role && common.role.startsWith(context.role));
} else {
filteredOut = true;
}
}
if (!filteredOut && context.room) {
filteredOut = !context.room.find(function (id) {
return id === data.id || data.id.startsWith(id + '.');
});
}
if (!filteredOut && context.func) {
filteredOut = !context.func.find(function (id) {
return id === data.id || data.id.startsWith(id + '.');
});
}
if (!filteredOut && context.type) {
filteredOut = !(data.obj && data.obj.type && data.obj.type === context.type);
}
if (!filteredOut && selectedTypes) {
filteredOut = !(data.obj && data.obj.type && selectedTypes.includes(data.obj.type));
}
if (!filteredOut && context.custom) {
if (common) {
filteredOut = !common.custom || !common.custom[context.custom];
} else {
filteredOut = true;
}
}
}
data.visible = !filteredOut;
data.hasVisibleChildren = false;
if (item.children) {
item.children.forEach(function (_item) {
var visible = applyFilter(_item, filters, lang, objects, context, counter, customFilter, selectedTypes);
if (visible) {
data.hasVisibleChildren = true;
}
});
} //const visible = data.visible || data.hasVisibleChildren;
data.sumVisibility = data.visible || data.hasVisibleChildren || data.hasVisibleParent;
if (counter && data.sumVisibility) {
counter.count++;
} // show all children of visible object with opacity 0.5
if (data.id && data.sumVisibility && item.children) {
item.children.forEach(function (_item) {
return _item.data.hasVisibleParent = true;
});
}
return data.visible || data.hasVisibleChildren;
}
function getVisibleItems(item, type, objects, _result) {
_result = _result || [];
var data = item.data;
if (data.sumVisibility) {
var _item$children;
data.id && objects[data.id] && (!type || objects[data.id].type === type) && _result.push(data.id);
(_item$children = item.children) === null || _item$children === void 0 ? void 0 : _item$children.forEach(function (_item) {
return getVisibleItems(_item, type, objects, _result);
});
}
return _result;
}
function getSystemIcon(objects, id, k, imagePrefix) {
var icon; // system or design have special icons
if (id.startsWith('_design/') || id === 'system') {
icon = /*#__PURE__*/_react["default"].createElement(_SettingsApplications["default"], {
className: "iconOwn"
});
} else if (id === '0_userdata' || id === '0_userdata.0') {
icon = /*#__PURE__*/_react["default"].createElement(_Photo["default"], {
className: "iconOwn"
});
} else if (id === 'alias' || id === 'alias.0') {
icon = /*#__PURE__*/_react["default"].createElement(_IconAlias["default"], {
className: "iconOwn"
});
} else if (id === 'system.adapter') {
icon = /*#__PURE__*/_react["default"].createElement(_SettingsApplications["default"], {
className: "iconOwn"
});
} else if (id === 'system.group') {
icon = /*#__PURE__*/_react["default"].createElement(_SupervisedUserCircle["default"], {
className: "iconOwn"
});
} else if (id === 'system.user') {
icon = /*#__PURE__*/_react["default"].createElement(_PersonOutlined["default"], {
className: "iconOwn"
});
} else if (id === 'system.host') {
icon = /*#__PURE__*/_react["default"].createElement(_Router["default"], {
className: "iconOwn"
});
} else if (id.endsWith('.connection') || id.endsWith('.connected')) {
icon = /*#__PURE__*/_react["default"].createElement(_Wifi["default"], {
className: "iconOwn"
});
} else if (id.endsWith('.info')) {
icon = /*#__PURE__*/_react["default"].createElement(_Info["default"], {
className: "iconOwn"
});
} else if (objects[id] && objects[id].type === 'meta') {
icon = /*#__PURE__*/_react["default"].createElement(_Description["default"], {
className: "iconOwn"
});
} else if (k < 2) {
// detect "cloud.0"
if (objects['system.adapter.' + id]) {
icon = getSelectIdIcon(objects, 'system.adapter.' + id, imagePrefix);
}
}
return icon || null;
}
function buildTree(objects, options) {
options = options || {};
var imagePrefix = options.imagePrefix || '.';
var ids = Object.keys(objects);
ids.sort(function (a, b) {
if (a === b) return 0;
a = a.replace(/\./g, '!!!');
b = b.replace(/\./g, '!!!');
if (a > b) return 1;
return -1;
}); // find empty nodes and create names for it
var currentPathArr = [];
var currentPath = '';
var currentPathLen = 0;
var root = {
data: {
name: '',
id: ''
},
children: []
};
var info = {
funcEnums: [],
roomEnums: [],
roles: [],
ids: [],
types: [],
objects: objects,
customs: [],
enums: [],
hasSomeCustoms: false
};
var croot = root;
var _loop = function _loop(i) {
var id = ids[i];
if (!id) {
return "continue";
}
var obj = objects[id];
var parts = id.split('.');
if (obj.type && !info.types.includes(obj.type)) {
info.types.push(obj.type);
}
if (obj) {
var _common$adminUI;
var common = obj.common;
var role = common && common.role;
if (role && !info.roles.includes(role)) {
info.roles.push(role);
} else if (id.startsWith('enum.rooms.')) {
info.roomEnums.push(id);
info.enums.push(id);
} else if (id.startsWith('enum.functions.')) {
info.funcEnums.push(id);
info.enums.push(id);
} else if (obj.type === 'enum') {
info.enums.push(id);
} else if (obj.type === 'instance' && common && (common.supportCustoms || (_common$adminUI = common.adminUI) !== null && _common$adminUI !== void 0 && _common$adminUI.custom)) {
info.hasSomeCustoms = true;
info.customs.push(id.substring('system.adapter.'.length));
}
}
info.ids.push(id);
var repeat = void 0; // if next level
do {
repeat = false; // If current level is still OK and we can add ID to children
if (!currentPath || id.startsWith(currentPath + '.')) {
var _obj$common, _obj$common2, _obj$common3;
// if more than one level added
if (parts.length - currentPathLen > 1) {
var curPath = currentPath; // generate missing levels
var _loop2 = function _loop2(k) {
curPath += (curPath ? '.' : '') + parts[k]; // level does not exist
if (!binarySearch(info.ids, curPath)) {
var _croot2 = {
data: {
name: parts[k],
parent: croot,
id: curPath,
obj: objects[curPath],
level: k,
icon: getSystemIcon(objects, curPath, k, imagePrefix),
generated: true
}
};
croot.children = croot.children || [];
croot.children.push(_croot2);
croot = _croot2;
info.ids.push(curPath); // IDs will be added by alphabet
} else {
croot = croot.children.find(function (item) {
return item.data.name === parts[k];
});
}
};
for (var k = currentPathLen; k < parts.length - 1; k++) {
_loop2(k);
}
}
var _croot = {
data: {
name: parts[parts.length - 1],
title: getName(obj && obj.common && obj.common.name, options.lang),
obj: obj,
parent: croot,
icon: getSelectIdIcon(objects, id, imagePrefix) || getSystemIcon(objects, id, 0, imagePrefix),
id: id,
hasCustoms: ((_obj$common = obj.common) === null || _obj$common === void 0 ? void 0 : _obj$common.custom) && Object.keys(obj.common.custom).length,
level: parts.length - 1,
generated: false,
button: obj.type === 'state' && ((_obj$common2 = obj.common) === null || _obj$common2 === void 0 ? void 0 : _obj$common2.role) && typeof obj.common.role === 'string' && obj.common.role.startsWith('button') && ((_obj$common3 = obj.common) === null || _obj$common3 === void 0 ? void 0 : _obj$common3.write) !== false
}
};
croot.children = croot.children || [];
croot.children.push(_croot);
croot = _croot;
currentPathLen = parts.length;
currentPathArr = parts;
currentPath = id;
} else {
var u = 0;
while (currentPathArr[u] === parts[u]) {
u++;
}
if (u > 0) {
var move = currentPathArr.length;
currentPathArr = currentPathArr.splice(0, u);
currentPathLen = u;
currentPath = currentPathArr.join('.');
while (move > u) {
croot = croot.data.parent;
move--;
}
} else {
croot = root;
currentPathArr = [];
currentPath = '';
currentPathLen = 0;
}
repeat = true;
}
} while (repeat);
};
for (var i = 0; i < ids.length; i++) {
var _ret = _loop(i);
if (_ret === "continue") continue;
}
info.roomEnums.sort(function (a, b) {
var _objects$a, _objects$a$common, _objects$b, _objects$b$common;
var aName = getName(((_objects$a = objects[a]) === null || _objects$a === void 0 ? void 0 : (_objects$a$common = _objects$a.common) === null || _objects$a$common === void 0 ? void 0 : _objects$a$common.name) || a.split('.').pop());
var bName = getName(((_objects$b = objects[b]) === null || _objects$b === void 0 ? void 0 : (_objects$b$common = _objects$b.common) === null || _objects$b$common === void 0 ? void 0 : _objects$b$common.name) || b.split('.').pop());
if (aName > bName) {
return 1;
} else if (aName < bName) {
return -1;
} else {
return 0;
}
});
info.funcEnums.sort(function (a, b) {
var _objects$a2, _objects$a2$common, _objects$b2, _objects$b2$common;
var aName = getName(((_objects$a2 = objects[a]) === null || _objects$a2 === void 0 ? void 0 : (_objects$a2$common = _objects$a2.common) === null || _objects$a2$common === void 0 ? void 0 : _objects$a2$common.name) || a.split('.').pop());
var bName = getName(((_objects$b2 = objects[b]) === null || _objects$b2 === void 0 ? void 0 : (_objects$b2$common = _objects$b2.common) === null || _objects$b2$common === void 0 ? void 0 : _objects$b2$common.name) || b.split('.').pop());
if (aName > bName) {
return 1;
} else if (aName < bName) {
return -1;
} else {
return 0;
}
});
info.roles.sort();
info.types.sort();
return {
info: info,
root: root
};
}
function findNode(root, id, _parts, _path, _level) {
if (root.data.id === id) {
return root;
}
if (!_parts) {
_parts = id.split('.');
_level = 0;
_path = _parts[_level];
}
if (!root.children && root.data.id !== id) {
return null;
} else {
var found;
for (var i = 0; i < root.children.length; i++) {
var _id = root.children[i].data.id;
if (_id === _path) {
found = root.children[i];
break;
} else if (_id > _path) {
break;
}
}
if (found) {
return findNode(found, id, _parts, _path + '.' + _parts[_level + 1], _level + 1);
} else {
return null;
}
}
}
function getName(name, lang) {
if (name && (0, _typeof2["default"])(name) === 'object') {
return (name[lang] || name.en || '').toString();
} else {
return (name || '').toString();
}
}
function findRoomsForObject(data, id, lang, withParentInfo, rooms) {
if (!id) {
return {
rooms: [],
per: false
};
}
rooms = rooms || [];
for (var i = 0; i < data.roomEnums.length; i++) {
var _data$objects$data$ro, _common$members;
var common = (_data$objects$data$ro = data.objects[data.roomEnums[i]]) === null || _data$objects$data$ro === void 0 ? void 0 : _data$objects$data$ro.common;
var name = getName(common.name, lang);
if (common !== null && common !== void 0 && (_common$members = common.members) !== null && _common$members !== void 0 && _common$members.includes(id) && !rooms.includes(name)) {
if (!withParentInfo) {
rooms.push(name);
} else {
rooms.push({
name: name,
origin: id
});
}
}
}
var ownEnums; // Check parent
var parts = id.split('.');
parts.pop();
id = parts.join('.');
if (data.objects[id]) {
ownEnums = rooms.length;
findRoomsForObject(data, id, lang, withParentInfo, rooms);
}
return {
rooms: rooms,
per: !ownEnums
}; // pe is if the enums are from parent
}
function findEnumsForObjectAsIds(data, id, enumName, funcs) {
if (!id) {
return [];
}
funcs = funcs || [];
for (var i = 0; i < data[enumName].length; i++) {
var _data$objects$data$en, _common$members2;
var common = (_data$objects$data$en = data.objects[data[enumName][i]]) === null || _data$objects$data$en === void 0 ? void 0 : _data$objects$data$en.common;
if (common !== null && common !== void 0 && (_common$members2 = common.members) !== null && _common$members2 !== void 0 && _common$members2.includes(id) && !funcs.includes(data[enumName][i])) {
funcs.push(data[enumName][i]);
}
}
funcs.sort();
return funcs;
}
function findFunctionsForObject(data, id, lang, withParentInfo, funcs) {
if (!id) {
return {
funcs: [],
pef: false
};
}
funcs = funcs || [];
for (var i = 0; i < data.funcEnums.length; i++) {
var _data$objects$data$fu, _common$members3;
var common = (_data$objects$data$fu = data.objects[data.funcEnums[i]]) === null || _data$objects$data$fu === void 0 ? void 0 : _data$objects$data$fu.common;
var name = getName(common.name, lang);
if (common !== null && common !== void 0 && (_common$members3 = common.members) !== null && _common$members3 !== void 0 && _common$members3.includes(id) && !funcs.includes(name)) {
if (!withParentInfo) {
funcs.push(name);
} else {
funcs.push({
name: name,
origin: id
});
}
}
}
var ownEnums; // Check parent
var parts = id.split('.');
parts.pop();
id = parts.join('.');
if (data.objects[id]) {
ownEnums = funcs.length;
findFunctionsForObject(data, id, lang, withParentInfo, funcs);
}
return {
funcs: funcs,
pef: !ownEnums
};
}
/*function quality2text(q) {
if (!q) {
return 'ok';
}
const custom = q & 0xFFFF0000;
let text = '';
if (q & 0x40) text += 'device';
if (q & 0x80) text += 'sensor';
if (q & 0x01) text += ' bad';
if (q & 0x02) text += ' not connected';
if (q & 0x04) text += ' error';
return text + (custom ? '|0x' + (custom >> 16).toString(16).toUpperCase() : '') + ' [0x' + q.toString(16).toUpperCase() + ']';
}*/
function formatValue(id, state, obj, texts, dateFormat, isFloatComma) {
var states = _Utils["default"].getStates(obj);
var isCommon = obj.common;
var valText = {};
var v = isCommon && isCommon.type === 'file' ? '[file]' : !state || state.val === null ? '(null)' : state.val === undefined ? '[undef]' : state.val;
var type = (0, _typeof2["default"])(v);
if (isCommon && isCommon.role && typeof isCommon.role === 'string' && isCommon.role.match(/^value\.time|^date/)) {
if (v && typeof v === 'string') {
if (v.length === 13) {
// (length of "1647597254924") warning, this solution only works till Nov 20 2286 18:46:39CET
v = new Date(parseInt(v, 10)).toString();
} else if (v.length === 10) {
// YYYY.MM.DD
var parts = v.split(/[-.]/);
if (parts.length === 3) {
if (parts[0].length === 4) {
// YYYY.MM.DD
v = new Date(parseInt(parts[0], 10), parseInt(parts[1], 10) + 1, parseInt(parts[2], 10));
} else if (parts[0].length === 4) {
// DD.MM.YYYY
v = new Date(parseInt(parts[2], 10), parseInt(parts[1], 10) + 1, parseInt(parts[0], 10));
}
} else {
v = new Date(v).toString(); // Let the browser convert it somehow
}
} else if (v.length === 8) {
// YY.MM.DD
var _parts2 = v.split(/[-.]/);
if (_parts2.length === 3) {
v = new Date(parseInt(_parts2[0], 10), parseInt(_parts2[1], 10) + 1, parseInt(_parts2[2], 10));
} else {
v = new Date(v).toString(); // Let the browser convert it somehow
}
} else {
v = new Date(v).toString(); // Let the browser convert it somehow
}
} else {
if (v === null || v === 'null') {
v = 'null';
} else if (v === undefined) {
v = 'undefined';
} else {
v = v ? new Date(v).toString() : v;
}
}
} else {
if (type === 'number') {
v = Math.round(v * 100000000) / 100000000; // remove 4.00000000000000001
if (isFloatComma) {
v = v.toString().replace('.', ',');
}
} else if (type === 'object') {
v = JSON.stringify(v);
} else if (type !== 'string') {
v = v.toString();
}
if (typeof v !== 'string') {
v = v.toString();
}
}
if (states && states[v] !== undefined) {
valText.s = v;
v = states[valText.s];
}
var valFull;
if (isCommon && isCommon.unit) {
valText.u = isCommon.unit;
}
valFull = [{
t: texts.value,
v: v
}];
if (state) {
if (state.ack !== undefined) {
valFull.push({
t: texts.ack,
v: state.ack.toString()
});
}
if (state.ts) {
valFull.push({
t: texts.ts,
v: state.ts ? _Utils["default"].formatDate(new Date(state.ts), dateFormat) : ''
});
}
if (state.lc) {
valFull.push({
t: texts.lc,
v: state.lc ? _Utils["default"].formatDate(new Date(state.lc), dateFormat) : ''
});
}
if (state.from) {
var from = state.from || '';
if (from.startsWith('system.adapter.')) {
from = from.substring(15);
}
valFull.push({
t: texts.from,
v: from
});
}
if (state.user) {
var user = state.user || '';
if (user.startsWith('system.user.')) {
user = user.substring(12);
}
valFull.push({
t: texts.user,
v: user
});
}
valFull.push({
t: texts.quality,
v: _Utils["default"].quality2text(state.q || 0).join(', '),
nbr: true
});
}
valText.v = v;
return {
valText: valText,
valFull: valFull,
style: {
color: state !== null && state !== void 0 && state.ack ? state.q ? '#ffa500' : '' : '#ff2222c9'
}
};
}
function getSelectIdIcon(objects, id, imagePrefix) {
imagePrefix = imagePrefix || '.'; //http://localhost:8081';
var src = '';
var _id_ = 'system.adapter.' + id;
var aIcon = id && objects[_id_] && objects[_id_].common && objects[_id_].common.icon;
if (aIcon) {
// if not BASE64
if (!aIcon.startsWith('data:image/')) {
if (aIcon.includes('.')) {
src = "".concat(imagePrefix, "/adapter/").concat(objects[_id_].common.name, "/").concat(aIcon);
} else if (aIcon && aIcon.length < 3) {
return aIcon; // utf-8
} else {
return null; //'<i class="material-icons iob-list-icon">' + objects[_id_].common.icon + '</i>';
}
} else {
if (aIcon.startsWith('data:image/svg')) {
src = /*#__PURE__*/_react["default"].createElement(_reactInlinesvg["default"], {
src: aIcon,
width: 28,
height: 28
});
} else {
src = aIcon;
}
}
} else {
var common = objects[id] && objects[id].common;
if (common) {
var cIcon = common.icon;
if (cIcon) {
if (!cIcon.startsWith('data:image/')) {
if (cIcon.includes('.')) {
var instance;
if (objects[id].type === 'instance' || objects[id].type === 'adapter') {
src = "".concat(imagePrefix, "/adapter/").concat(common.name, "/").concat(cIcon);
} else if (id && id.startsWith('system.adapter.')) {
instance = id.split('.', 3);
if (cIcon[0] === '/') {
instance[2] += cIcon;
} else {
instance[2] += '/' + cIcon;
}
src = "".concat(imagePrefix, "/adapter/").concat(instance[2]);
} else {
instance = id.split('.', 2);
if (cIcon[0] === '/') {
instance[0] += cIcon;
} else {
instance[0] += '/' + cIcon;
}
src = "".concat(imagePrefix, "/adapter/").concat(instance[0]);
}
} else if (aIcon && aIcon.length < 3) {
return aIcon; // utf-8
} else {
return null;
}
} else {
// base 64 image
if (cIcon.startsWith('data:image/svg')) {
src = /*#__PURE__*/_react["default"].createElement(_reactInlinesvg["default"], {
src: cIcon,
width: 28,
height: 28
});
} else {
src = cIcon;
}
}
}
}
}
return src || null;
}
function prepareSparkData(values, from) {
// set every hour one point
var time = from;
var i = 1;
var v = [];
while (i < values.length && time < from + 25 * 3600000) {
// find the interval
while (values[i - 1].ts < time && time <= values[i].ts && i < values.length) {
i++;
}
if (i === 1 && values[i - 1].ts >= time) {
// assume the value was always null
v.push(0);
} else if (i < values.length) {
if (typeof values[i].val === 'boolean' || typeof values[i - 1].val === 'boolean') {
v.push(values[i].val ? 1 : 0);
} else {
// remove nulls
values[i - 1].val = values[i - 1].val || 0;
values[i].val = values[i].val || 0; // interpolate
var val = values[i - 1].val + (values[i].val - values[i - 1].val) * (time - values[i - 1].ts) / (values[i].ts - values[i - 1].ts);
v.push(val);
}
}
time += 3600000;
}
return v;
}
/**
* @type {import('./types').ObjectBrowserTableFilter}
*/
var DEFAULT_FILTER = {
id: '',
name: '',
room: '',
func: '',
role: '',
type: '',
custom: '',
expertMode: false
};
var ITEM_IMAGES = {
state: /*#__PURE__*/_react["default"].createElement(_IconState["default"], {
className: "itemIcon"
}),
channel: /*#__PURE__*/_react["default"].createElement(_IconChannel["default"], {
className: "itemIcon"
}),
device: /*#__PURE__*/_react["default"].createElement(_IconDevice["default"], {
className: "itemIcon"
}),
adapter: /*#__PURE__*/_react["default"].createElement(_IconAdapter["default"], {
className: "itemIcon"
}),
meta: /*#__PURE__*/_react["default"].createElement(_Description["default"], {
className: "itemIcon"
}),
instance: /*#__PURE__*/_react["default"].createElement(_IconInstance["default"], {
className: "itemIcon",
style: {
color: '#7da7ff'
}
}),
"enum": /*#__PURE__*/_react["default"].createElement(_ListAlt["default"], {
className: