@iobroker/adapter-react-v5 2.1.0 → 2.1.1
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.
|
@@ -290,7 +290,7 @@ var IconSelector = /*#__PURE__*/function (_Component) {
|
|
|
290
290
|
return _this3.setState({
|
|
291
291
|
opened: false
|
|
292
292
|
}, function () {
|
|
293
|
-
return _this3.props.onSelect(icon);
|
|
293
|
+
return (_this3.props.onSelect || _this3.props.onChange)(icon);
|
|
294
294
|
});
|
|
295
295
|
},
|
|
296
296
|
size: "large"
|
|
@@ -326,7 +326,9 @@ IconSelector.propTypes = {
|
|
|
326
326
|
icons: _propTypes["default"].array,
|
|
327
327
|
onlyRooms: _propTypes["default"].bool,
|
|
328
328
|
onlyDevices: _propTypes["default"].bool,
|
|
329
|
-
onSelect: _propTypes["default"].func
|
|
329
|
+
onSelect: _propTypes["default"].func,
|
|
330
|
+
// one of onSelect or onChange are required
|
|
331
|
+
onChange: _propTypes["default"].func,
|
|
330
332
|
t: _propTypes["default"].func.isRequired,
|
|
331
333
|
lang: _propTypes["default"].string.isRequired
|
|
332
334
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["IconSelector.js"],"names":["IconSelector","props","state","opened","names","filter","icons","loading","setState","templates","onlyRooms","onlyDevices","rooms","promises","forEach","item","name","lang","en","_id","i","find","_item","_i","icon","template","image","require","e","Promise","resolve","push","Utils","getSvg","then","devices","offset","length","all","isAnyName","map","href","src","parts","split","pop","startsWith","t","loadAllIcons","minWidth","marginRight","marginLeft","target","value","toLowerCase","endAdornment","undefined","width","textAlign","includes","onSelect","height","borderRadius","Component","propTypes","PropTypes","array","bool","func","isRequired","string"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport DialogTitle from '@mui/material/DialogTitle';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport Button from '@mui/material/Button';\nimport IconButton from '@mui/material/IconButton';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport TextField from '@mui/material/TextField';\nimport Tooltip from '@mui/material/Tooltip';\n\nimport CloseIcon from '@mui/icons-material/Close';\nimport ClearIcon from '@mui/icons-material/Clear';\n\nimport Icon from './Icon';\nimport Utils from './Utils';\n\nimport devices from '../assets/devices/list.json';\nimport rooms from '../assets/rooms/list.json';\n\nclass IconSelector extends Component {\n constructor(props) {\n super(props);\n this.state = {\n opened: false,\n names: [],\n filter: '',\n icons: props.icons || null,\n };\n }\n\n loadAllIcons() {\n if (this.state.loading || this.state.icons) {\n return;\n }\n this.setState({loading: true}, () => {\n const icons = [];\n const names = [];\n\n if (!this.props.icons) {\n let templates = this.props.onlyRooms || (!this.props.onlyRooms && !this.props.onlyDevices) ? rooms : null;\n\n const promises = [];\n if (templates) {\n templates.forEach(item => {\n if (item.name && typeof item.name === 'object') {\n item.name = item.name[this.props.lang] || item.name.en || item._id;\n }\n item.name = item.name || item._id;\n });\n\n templates = templates.filter((item, i) => !templates.find((_item, _i) => i !== _i && _item.icon === item.icon && _item.name === item.name));\n\n templates.forEach((template, i) => {\n let image;\n try {\n image = require(`../assets/rooms/${template.icon}`);\n } catch (e) {\n return Promise.resolve(null);\n }\n\n names[i] = template.name;\n\n promises.push(Utils.getSvg(image)\n .then(icon =>\n icons[i] = icon));\n });\n }\n\n templates = this.props.onlyDevices || (!this.props.onlyRooms && !this.props.onlyDevices) ? devices : null;\n if (templates) {\n const offset = promises.length;\n templates && templates.forEach(item => {\n if (item.name && typeof item.name === 'object') {\n item.name = item.name[this.props.lang] || item.name.en || item._id;\n }\n item.name = item.name || item._id;\n });\n\n templates = templates.filter((item, i) => !templates.find((_item, _i) => i !== _i && _item.icon === item.icon && _item.name === item.name));\n\n templates.forEach((template, i) => {\n let image;\n try {\n image = require(`../assets/devices/${template.icon}`);\n } catch (e) {\n return Promise.resolve(null);\n }\n\n names[i + offset] = template.name;\n\n promises.push(Utils.getSvg(image)\n .then(icon =>\n icons[i + offset] = icon));\n });\n }\n Promise.all(promises)\n .then(() =>\n this.setState({icons, loading: false, names, isAnyName: names.find(i => i)}));\n } else {\n const promises = this.props.icons.map((item, i) => {\n let href;\n if (typeof item === 'object') {\n href = item.icon || item.src || item.href;\n names[i] = typeof item.name === 'object' ? item.name[this.props.lang] || item.name.en || item._id : item.name;\n if (!names[i]) {\n const parts = href.split('.');\n parts.pop();\n names[i] = parts[parts.length - 1];\n }\n } else {\n href = item;\n }\n\n if (href) {\n if (href.startsWith('data:')) {\n icons[i] = href;\n return Promise.resolve();\n } else {\n return Utils.getSvg(href)\n .then(icon =>\n icons[i] = icon);\n }\n } else {\n return Promise.resolve();\n }\n });\n\n Promise.all(promises)\n .then(() =>\n this.setState({icons, loading: false, names, isAnyName: names.find(i => i)}));\n }\n });\n }\n\n render() {\n if (this.state.loading) {\n return <CircularProgress />;\n }\n\n return <>\n <Button\n color=\"grey\"\n variant=\"outlined\"\n title={this.props.t('ra_Select predefined icon')}\n onClick={() => this.setState({opened: true}, () => this.loadAllIcons())} style={{minWidth: 40, marginRight: 8}}\n >...</Button>\n {this.state.opened ? <Dialog onClose={() => this.setState({opened: false})} open={true}>\n <DialogTitle>{this.props.t('ra_Select predefined icon')}\n {this.state.isAnyName ? <TextField\n variant=\"standard\"\n margin=\"dense\"\n style={{marginLeft: 20}}\n value={this.state.filter}\n onChange={e => this.setState({filter: e.target.value.toLowerCase()})}\n placeholder={this.props.t('Filter')}\n InputProps={{\n endAdornment: this.state.filter\n ?\n <IconButton\n size=\"small\"\n onClick={() => this.setState({filter: ''})}>\n <ClearIcon />\n </IconButton>\n :\n undefined,\n }}\n /> : null}\n </DialogTitle>\n <DialogContent>\n <div style={{width: '100%', textAlign: 'center'}}>\n {this.state.icons && this.state.icons.map((icon, i) => {\n if (!this.state.filter || (this.state.names[i] && this.state.names[i].toLowerCase().includes(this.state.filter))) {\n return <Tooltip title={this.state.names[i] || ''} key={i}>\n <IconButton\n onClick={() =>\n this.setState({opened: false}, () =>\n this.props.onSelect(icon))\n }\n size=\"large\"\n >\n <Icon src={icon} alt={i} style={{width: 32, height: 32, borderRadius: 5}}/>\n </IconButton>\n </Tooltip>;\n } else {\n return null;\n }\n })}\n </div>\n </DialogContent>\n <DialogActions>\n <Button\n color=\"grey\"\n variant=\"contained\"\n onClick={() => this.setState({opened: false})}\n startIcon={<CloseIcon />}\n >\n {this.props.t('Close')}\n </Button>\n </DialogActions>\n </Dialog> : null}\n </>;\n }\n}\n\nIconSelector.propTypes = {\n icons: PropTypes.array,\n onlyRooms: PropTypes.bool,\n onlyDevices: PropTypes.bool,\n onSelect: PropTypes.func.isRequired,\n t: PropTypes.func.isRequired,\n lang: PropTypes.string.isRequired,\n};\n\n/** @type {typeof IconSelector} */\nexport default IconSelector;"],"file":"IconSelector.js"}
|
|
1
|
+
{"version":3,"sources":["IconSelector.js"],"names":["IconSelector","props","state","opened","names","filter","icons","loading","setState","templates","onlyRooms","onlyDevices","rooms","promises","forEach","item","name","lang","en","_id","i","find","_item","_i","icon","template","image","require","e","Promise","resolve","push","Utils","getSvg","then","devices","offset","length","all","isAnyName","map","href","src","parts","split","pop","startsWith","t","loadAllIcons","minWidth","marginRight","marginLeft","target","value","toLowerCase","endAdornment","undefined","width","textAlign","includes","onSelect","onChange","height","borderRadius","Component","propTypes","PropTypes","array","bool","func","isRequired","string"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport DialogTitle from '@mui/material/DialogTitle';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport Button from '@mui/material/Button';\nimport IconButton from '@mui/material/IconButton';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport TextField from '@mui/material/TextField';\nimport Tooltip from '@mui/material/Tooltip';\n\nimport CloseIcon from '@mui/icons-material/Close';\nimport ClearIcon from '@mui/icons-material/Clear';\n\nimport Icon from './Icon';\nimport Utils from './Utils';\n\nimport devices from '../assets/devices/list.json';\nimport rooms from '../assets/rooms/list.json';\n\nclass IconSelector extends Component {\n constructor(props) {\n super(props);\n this.state = {\n opened: false,\n names: [],\n filter: '',\n icons: props.icons || null,\n };\n }\n\n loadAllIcons() {\n if (this.state.loading || this.state.icons) {\n return;\n }\n this.setState({loading: true}, () => {\n const icons = [];\n const names = [];\n\n if (!this.props.icons) {\n let templates = this.props.onlyRooms || (!this.props.onlyRooms && !this.props.onlyDevices) ? rooms : null;\n\n const promises = [];\n if (templates) {\n templates.forEach(item => {\n if (item.name && typeof item.name === 'object') {\n item.name = item.name[this.props.lang] || item.name.en || item._id;\n }\n item.name = item.name || item._id;\n });\n\n templates = templates.filter((item, i) => !templates.find((_item, _i) => i !== _i && _item.icon === item.icon && _item.name === item.name));\n\n templates.forEach((template, i) => {\n let image;\n try {\n image = require(`../assets/rooms/${template.icon}`);\n } catch (e) {\n return Promise.resolve(null);\n }\n\n names[i] = template.name;\n\n promises.push(Utils.getSvg(image)\n .then(icon =>\n icons[i] = icon));\n });\n }\n\n templates = this.props.onlyDevices || (!this.props.onlyRooms && !this.props.onlyDevices) ? devices : null;\n if (templates) {\n const offset = promises.length;\n templates && templates.forEach(item => {\n if (item.name && typeof item.name === 'object') {\n item.name = item.name[this.props.lang] || item.name.en || item._id;\n }\n item.name = item.name || item._id;\n });\n\n templates = templates.filter((item, i) => !templates.find((_item, _i) => i !== _i && _item.icon === item.icon && _item.name === item.name));\n\n templates.forEach((template, i) => {\n let image;\n try {\n image = require(`../assets/devices/${template.icon}`);\n } catch (e) {\n return Promise.resolve(null);\n }\n\n names[i + offset] = template.name;\n\n promises.push(Utils.getSvg(image)\n .then(icon =>\n icons[i + offset] = icon));\n });\n }\n Promise.all(promises)\n .then(() =>\n this.setState({icons, loading: false, names, isAnyName: names.find(i => i)}));\n } else {\n const promises = this.props.icons.map((item, i) => {\n let href;\n if (typeof item === 'object') {\n href = item.icon || item.src || item.href;\n names[i] = typeof item.name === 'object' ? item.name[this.props.lang] || item.name.en || item._id : item.name;\n if (!names[i]) {\n const parts = href.split('.');\n parts.pop();\n names[i] = parts[parts.length - 1];\n }\n } else {\n href = item;\n }\n\n if (href) {\n if (href.startsWith('data:')) {\n icons[i] = href;\n return Promise.resolve();\n } else {\n return Utils.getSvg(href)\n .then(icon =>\n icons[i] = icon);\n }\n } else {\n return Promise.resolve();\n }\n });\n\n Promise.all(promises)\n .then(() =>\n this.setState({icons, loading: false, names, isAnyName: names.find(i => i)}));\n }\n });\n }\n\n render() {\n if (this.state.loading) {\n return <CircularProgress />;\n }\n\n return <>\n <Button\n color=\"grey\"\n variant=\"outlined\"\n title={this.props.t('ra_Select predefined icon')}\n onClick={() => this.setState({opened: true}, () => this.loadAllIcons())} style={{minWidth: 40, marginRight: 8}}\n >...</Button>\n {this.state.opened ? <Dialog onClose={() => this.setState({opened: false})} open={true}>\n <DialogTitle>{this.props.t('ra_Select predefined icon')}\n {this.state.isAnyName ? <TextField\n variant=\"standard\"\n margin=\"dense\"\n style={{marginLeft: 20}}\n value={this.state.filter}\n onChange={e => this.setState({filter: e.target.value.toLowerCase()})}\n placeholder={this.props.t('Filter')}\n InputProps={{\n endAdornment: this.state.filter\n ?\n <IconButton\n size=\"small\"\n onClick={() => this.setState({filter: ''})}>\n <ClearIcon />\n </IconButton>\n :\n undefined,\n }}\n /> : null}\n </DialogTitle>\n <DialogContent>\n <div style={{width: '100%', textAlign: 'center'}}>\n {this.state.icons && this.state.icons.map((icon, i) => {\n if (!this.state.filter || (this.state.names[i] && this.state.names[i].toLowerCase().includes(this.state.filter))) {\n return <Tooltip title={this.state.names[i] || ''} key={i}>\n <IconButton\n onClick={() =>\n this.setState({opened: false}, () =>\n (this.props.onSelect || this.props.onChange)(icon))\n }\n size=\"large\"\n >\n <Icon src={icon} alt={i} style={{width: 32, height: 32, borderRadius: 5}}/>\n </IconButton>\n </Tooltip>;\n } else {\n return null;\n }\n })}\n </div>\n </DialogContent>\n <DialogActions>\n <Button\n color=\"grey\"\n variant=\"contained\"\n onClick={() => this.setState({opened: false})}\n startIcon={<CloseIcon />}\n >\n {this.props.t('Close')}\n </Button>\n </DialogActions>\n </Dialog> : null}\n </>;\n }\n}\n\nIconSelector.propTypes = {\n icons: PropTypes.array,\n onlyRooms: PropTypes.bool,\n onlyDevices: PropTypes.bool,\n onSelect: PropTypes.func, // one of onSelect or onChange are required\n onChange: PropTypes.func,\n t: PropTypes.func.isRequired,\n lang: PropTypes.string.isRequired,\n};\n\n/** @type {typeof IconSelector} */\nexport default IconSelector;"],"file":"IconSelector.js"}
|
package/Components/TreeTable.js
CHANGED
|
@@ -401,7 +401,14 @@ var TreeTable = /*#__PURE__*/function (_React$Component) {
|
|
|
401
401
|
value: function renderCellEditCustom(item, col, val) {
|
|
402
402
|
var _this4 = this;
|
|
403
403
|
|
|
404
|
-
var EditComponent = col.editComponent;
|
|
404
|
+
var EditComponent = col.editComponent; // use new value if exists
|
|
405
|
+
|
|
406
|
+
if (this.state.editData && this.state.editData[col.field] !== undefined) {
|
|
407
|
+
val = this.state.editData[col.field];
|
|
408
|
+
item = JSON.parse(JSON.stringify(item));
|
|
409
|
+
item[col.field] = val;
|
|
410
|
+
}
|
|
411
|
+
|
|
405
412
|
return /*#__PURE__*/_react["default"].createElement(EditComponent, {
|
|
406
413
|
value: val,
|
|
407
414
|
rowData: item,
|
|
@@ -684,7 +691,7 @@ var TreeTable = /*#__PURE__*/function (_React$Component) {
|
|
|
684
691
|
if (!level && item.parentId) {
|
|
685
692
|
return null;
|
|
686
693
|
} else if (level && !item.parentId) {
|
|
687
|
-
return null; // should never
|
|
694
|
+
return null; // should never happen
|
|
688
695
|
} else {
|
|
689
696
|
// try to find children
|
|
690
697
|
var children = this.props.data.filter(function (it) {
|
|
@@ -715,7 +722,7 @@ var TreeTable = /*#__PURE__*/function (_React$Component) {
|
|
|
715
722
|
opened: opened
|
|
716
723
|
});
|
|
717
724
|
},
|
|
718
|
-
size: "
|
|
725
|
+
size: "small"
|
|
719
726
|
}, opened ? /*#__PURE__*/_react["default"].createElement(_ExpandMore["default"], null) : /*#__PURE__*/_react["default"].createElement(_NavigateNext["default"], null)) : null), /*#__PURE__*/_react["default"].createElement(_TableCell["default"], {
|
|
720
727
|
scope: "row",
|
|
721
728
|
className: _Utils["default"].clsx(this.props.classes.cell, level && this.props.classes.cellSecondary),
|
|
@@ -1002,7 +1009,7 @@ TreeTable.propTypes = {
|
|
|
1002
1009
|
// name of table to save settings in localStorage
|
|
1003
1010
|
columns: _propTypes["default"].arrayOf(_propTypes["default"].shape({
|
|
1004
1011
|
cellStyle: _propTypes["default"].object,
|
|
1005
|
-
editComponent: _propTypes["default"].
|
|
1012
|
+
editComponent: _propTypes["default"].func,
|
|
1006
1013
|
field: _propTypes["default"].string,
|
|
1007
1014
|
headerStyle: _propTypes["default"].object,
|
|
1008
1015
|
hidden: _propTypes["default"].bool,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["TreeTable.js"],"names":["getAttr","obj","attr","lookup","split","length","name","shift","setAttr","value","undefined","styles","theme","tableContainer","width","height","overflow","table","minWidth","maxWidth","cell","paddingTop","paddingBottom","paddingLeft","paddingRight","rowMainWithChildren","rowMainWithoutChildren","rowNoEdit","opacity","cellExpand","cellButton","cellHeader","fontWeight","background","palette","mode","color","wordBreak","whiteSpace","width_name_nicknames","width_ioType","width_type","width_displayTraits","width_roomHint","rowSecondary","fontStyle","cellSecondary","fontSize","visuallyHidden","border","clip","margin","padding","position","top","fieldEditWithButton","display","fieldEdit","lineHeight","verticalAlign","fieldButton","colorDialog","subText","glow","animation","descendingComparator","a","b","orderBy","_a","_b","getComparator","order","stableSort","array","comparator","stabilizedThis","map","el","index","sort","TreeTable","props","opened","window","localStorage","getItem","JSON","parse","e","Array","isArray","state","editMode","deleteMode","editData","update","columns","field","useTable","showSelectColor","glowOnChange","item","col","val","renderCellEditSelect","editComponent","renderCellEditCustom","type","renderCellEditBoolean","renderCellEditColor","renderCellEditObjectID","renderCellEditString","target","setState","Object","keys","v","classes","EditComponent","newVal","checked","root","paper","selectCallback","selectIdValue","_val","style","backgroundColor","Utils","isUseBright","newColor","showSelectId","adapterName","themeType","socket","selected","level","i","editable","clsx","cellStyle","renderCellEdit","renderCellNonEdit","main","sub","subField","subLookup","mainText","subStyle","data","indexOf","parentId","children","filter","it","id","includes","toString","replace","row","pos","push","splice","setItem","stringify","renderCellWithSubField","ii","hidden","renderCell","onUpdate","newData","forEach","onDelete","renderLine","property","isAsc","headerStyle","handleRequestSort","title","noAdd","find","updateTimeout","clearTimeout","setTimeout","className","renderHead","renderSelectIdDialog","renderSelectColorDialog","count","line","oldLine","React","Component","propTypes","PropTypes","isRequired","string","loading","bool","arrayOf","shape","object","element","oneOf","noSort","func"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport PropTypes from 'prop-types';\nimport withStyles from '@mui/styles/withStyles';\nimport { HexColorPicker as ColorPicker } from 'react-colorful';\n\nimport Fab from '@mui/material/Fab';\nimport Table from '@mui/material/Table';\nimport TableBody from '@mui/material/TableBody';\nimport TableCell from '@mui/material/TableCell';\nimport TableHead from '@mui/material/TableHead';\nimport TableRow from '@mui/material/TableRow';\nimport TableSortLabel from '@mui/material/TableSortLabel';\nimport IconButton from '@mui/material/IconButton';\nimport Select from '@mui/material/Select';\nimport MenuItem from '@mui/material/MenuItem';\nimport TextField from '@mui/material/TextField';\nimport Checkbox from '@mui/material/Checkbox';\nimport Dialog from '@mui/material/Dialog';\n\nimport IconEdit from '@mui/icons-material/Edit';\nimport IconDelete from '@mui/icons-material/Delete';\nimport IconExpand from '@mui/icons-material/NavigateNext';\nimport IconCollapse from '@mui/icons-material/ExpandMore';\nimport IconCheck from '@mui/icons-material/Check';\nimport IconClose from '@mui/icons-material/Close';\nimport IconAdd from '@mui/icons-material/Add';\nimport IconList from '@mui/icons-material/ViewHeadline';\nimport IconColor from '@mui/icons-material/Colorize';\n\nimport DialogSelectID from '../Dialogs/SelectID';\nimport Utils from './Utils';\n\nfunction getAttr(obj, attr, lookup) {\n if (typeof attr === 'string') {\n attr = attr.split('.');\n }\n\n if (!obj) {\n return null;\n }\n\n if (attr.length === 1) {\n if (lookup && lookup[obj[attr[0]]]) {\n return lookup[obj[attr[0]]];\n } else {\n return obj[attr[0]];\n }\n } else {\n const name = attr.shift();\n return getAttr(obj[name], attr);\n }\n}\n\nfunction setAttr(obj, attr, value) {\n if (typeof attr === 'string') {\n attr = attr.split('.');\n }\n\n if (attr.length === 1) {\n return obj[attr[0]] = value;\n } else {\n const name = attr.shift();\n if (obj[name] === null || obj[name] === undefined) {\n obj[name] = {};\n }\n return setAttr(obj[name], attr, value);\n }\n}\n\nconst styles = theme => ({\n tableContainer: {\n width: '100%',\n height: '100%',\n overflow: 'auto'\n },\n table: {\n width: '100%',\n minWidth: 800,\n maxWidth: 1920,\n },\n cell: {\n paddingTop: 0,\n paddingBottom: 0,\n paddingLeft: 4,\n paddingRight: 4,\n },\n rowMainWithChildren: {\n\n },\n rowMainWithoutChildren: {\n\n },\n rowNoEdit: {\n opacity: 0.3\n },\n cellExpand: {\n width: 30,\n },\n cellButton: {\n width: 30,\n },\n cellHeader: {\n fontWeight: 'bold',\n background: theme.palette.mode === 'dark' ? '#888' : '#888',\n color: theme.palette.mode === 'dark' ? '#EEE' : '#111',\n height: 48,\n wordBreak: 'break-word',\n whiteSpace: 'pre',\n },\n width_name_nicknames: {\n maxWidth: 150,\n },\n width_ioType: {\n maxWidth: 100,\n },\n width_type: {\n maxWidth: 100,\n },\n width_displayTraits: {\n maxWidth: 100,\n },\n width_roomHint: {\n maxWidth: 100,\n },\n rowSecondary: {\n fontStyle: 'italic',\n },\n cellSecondary: {\n fontSize: 10,\n },\n visuallyHidden: {\n border: 0,\n clip: 'rect(0 0 0 0)',\n height: 1,\n margin: -1,\n overflow: 'hidden',\n padding: 0,\n position: 'absolute',\n top: 20,\n width: 1,\n },\n fieldEditWithButton: {\n width: `calc(100% - 33px)`,\n display: 'inline-block',\n },\n fieldEdit: {\n width: `100%`,\n display: 'inline-block',\n lineHeight: '50px',\n verticalAlign: 'middle',\n },\n fieldButton: {\n width: 30,\n display: 'inline-block',\n },\n colorDialog: {\n overflow: 'hidden',\n padding: 15,\n },\n subText: {\n fontSize: 10,\n fontStyle: 'italic',\n },\n glow: {\n animation: 'glow 0.2s 2 alternate'\n }\n});\n\nfunction descendingComparator(a, b, orderBy, lookup) {\n const _a = getAttr(a, orderBy, lookup) || '';\n const _b = getAttr(b, orderBy, lookup) || '';\n\n if (_b < _a) {\n return -1;\n } else\n if (_b > _a) {\n return 1;\n } else {\n return 0;\n }\n}\n\nfunction getComparator(order, orderBy, lookup) {\n return order === 'desc'\n ? (a, b) => descendingComparator(a, b, orderBy, lookup)\n : (a, b) => -descendingComparator(a, b, orderBy, lookup);\n}\n\nfunction stableSort(array, comparator) {\n const stabilizedThis = array.map((el, index) => [el, index]);\n\n stabilizedThis.sort((a, b) => {\n const order = comparator(a[0], b[0]);\n if (order) {\n return order;\n } else {\n return a[1] - b[1];\n }\n });\n\n return stabilizedThis.map(el => el[0]);\n}\n\nclass TreeTable extends React.Component {\n constructor(props) {\n super(props);\n\n let opened = window.localStorage.getItem(this.props.name || 'iob-table') || '[]';\n try {\n opened = JSON.parse(opened) || [];\n } catch (e) {\n opened = [];\n }\n if (!Array.isArray(opened)) {\n opened = [];\n }\n\n this.state = {\n opened,\n editMode: false,\n deleteMode: false,\n editData: null,\n order: 'asc',\n update: null,\n orderBy: this.props.columns[0].field,\n useTable: false,\n showSelectColor: false,\n glowOnChange: props.glowOnChange\n }\n }\n\n static getDerivedStateFromProps(props, state) {\n if (props.glowOnChange) {\n const update = [];\n let count = 0;\n if (props.data && state.data) {\n props.data.forEach(line => {\n count++;\n const oldLine = state.data.find(it => it.id === line.id);\n if (oldLine) {\n if (JSON.stringify(oldLine) !== JSON.stringify(line)) {\n update.push(line.id);\n }\n } else {\n update.push(line.id);\n }\n });\n }\n\n if (update.length && update.length !== count) {\n return {data: props.data, update};\n } else {\n return {data: props.data};\n }\n } else {\n return {data: props.data};\n }\n }\n\n renderCellEdit(item, col) {\n let val = getAttr(item, col.field);\n if (Array.isArray(val)) {\n val = val[0];\n }\n\n if (col.lookup) {\n return this.renderCellEditSelect(item, col, val);\n } if (col.editComponent) {\n return this.renderCellEditCustom(item, col, val);\n } else {\n if (col.type === 'boolean' || (!col.type && typeof val === 'boolean')) {\n return this.renderCellEditBoolean(item, col, val);\n } else if (col.type === 'color') {\n return this.renderCellEditColor(item, col, val);\n } else if (col.type === 'oid') {\n return this.renderCellEditObjectID(item, col, val);\n } else {\n return this.renderCellEditString(item, col, val);\n }\n }\n }\n\n renderCellEditSelect(item, col, val) {\n return <Select\n variant=\"standard\"\n onChange={e => {\n const editData = this.state.editData ? {...this.state.editData} : {};\n if (e.target.value === val) {\n delete editData[col.field];\n } else {\n editData[col.field] = e.target.value;\n }\n this.setState({editData});\n }}\n value={(this.state.editData && this.state.editData[col.field]) || val}\n >\n {Object.keys(col.lookup).map(v => <MenuItem value={v}>{col.lookup[v]}</MenuItem>)}\n </Select>;\n }\n\n renderCellEditString(item, col, val) {\n return <TextField\n variant=\"standard\" \n className={this.props.classes.fieldEdit}\n fullWidth\n value={this.state.editData && this.state.editData[col.field] !== undefined ? this.state.editData[col.field] : val}\n onChange={e => {\n const editData = this.state.editData ? {...this.state.editData} : {};\n if (e.target.value === val) {\n delete editData[col.field];\n } else {\n editData[col.field] = e.target.value;\n }\n this.setState({editData});\n }}\n />;\n }\n\n renderCellEditCustom(item, col, val) {\n const EditComponent = col.editComponent;\n\n return <EditComponent\n value={val}\n rowData={item}\n onChange={newVal => {\n const editData = this.state.editData ? {...this.state.editData} : {};\n if (newVal === val) {\n delete editData[col.field];\n } else {\n editData[col.field] = newVal;\n }\n this.setState({editData});\n }}\n />;\n }\n\n renderCellEditBoolean(item, col, val) {\n return <Checkbox\n checked={this.state.editData && this.state.editData[col.field] !== undefined ? !!this.state.editData[col.field] : !!val}\n onChange={e => {\n const editData = this.state.editData ? {...this.state.editData} : {};\n if (e.target.checked === !!val) {\n delete editData[col.field];\n } else {\n editData[col.field] = e.target.checked;\n }\n this.setState({editData});\n }}\n inputProps={{ 'aria-label': 'checkbox' }}\n />;\n }\n\n renderSelectColorDialog() {\n return <Dialog\n classes={{root: this.props.classes.colorDialog, paper: this.props.classes.colorDialog}}\n onClose={() => {\n this.selectCallback = null;\n this.setState({showSelectColor: false});\n }}\n open={this.state.showSelectColor}>\n <ColorPicker\n color={this.state.selectIdValue}\n onChange={color => {\n this.setState({selectIdValue: color}, () =>\n this.selectCallback && this.selectCallback(color));\n }}\n />\n </Dialog>;\n }\n\n renderCellEditColor(item, col, val) {\n const _val = this.state.editData && this.state.editData[col.field] !== undefined ? this.state.editData[col.field] : val;\n return (\n <div className={this.props.classes.fieldEdit}>\n <TextField\n variant=\"standard\" \n fullWidth\n className={this.props.classes.fieldEditWithButton}\n value={_val}\n inputProps={{style: {backgroundColor: _val, color: Utils.isUseBright(_val, null) ? '#FFF' : '#000'}}}\n onChange={e => {\n const editData = this.state.editData ? {...this.state.editData} : {};\n if (e.target.value === val) {\n delete editData[col.field];\n } else {\n editData[col.field] = e.target.value;\n }\n this.setState({editData});\n }}\n />\n\n <IconButton\n className={this.props.classes.fieldButton}\n contained\n onClick={() => {\n this.selectCallback = newColor => {\n const editData = this.state.editData ? {...this.state.editData} : {};\n if (newColor === val) {\n delete editData[col.field];\n } else {\n editData[col.field] = newColor;\n }\n this.setState({editData});\n };\n\n this.setState({showSelectColor: true, selectIdValue: val});\n }}\n size=\"large\"><IconColor/></IconButton>\n </div>\n );\n }\n\n renderSelectIdDialog() {\n if (this.state.showSelectId) {\n return <DialogSelectID\n key=\"tableSelect\"\n imagePrefix=\"../..\"\n dialogName={this.props.adapterName}\n themeType={this.props.themeType}\n socket={this.props.socket}\n statesOnly={true}\n selected={this.state.selectIdValue}\n onClose={() => this.setState({showSelectId: false})}\n onOk={(selected, name) => {\n this.setState({showSelectId: false, selectIdValue: null});\n this.selectCallback && this.selectCallback(selected);\n this.selectCallback = null;\n }}\n />;\n } else {\n return null;\n }\n }\n\n renderCellEditObjectID(item, col, val) {\n return (\n <div className={this.props.classes.fieldEdit}>\n <TextField\n variant=\"standard\" \n fullWidth\n className={this.props.classes.fieldEditWithButton}\n value={this.state.editData && this.state.editData[col.field] !== undefined ? this.state.editData[col.field] : val}\n onChange={e => {\n const editData = this.state.editData ? {...this.state.editData} : {};\n if (e.target.value === val) {\n delete editData[col.field];\n } else {\n editData[col.field] = e.target.value;\n }\n this.setState({editData});\n }}\n />\n\n <IconButton\n className={this.props.classes.fieldButton}\n contained\n onClick={() => {\n this.selectCallback = selected => {\n const editData = this.state.editData ? {...this.state.editData} : {};\n if (selected === val) {\n delete editData[col.field];\n } else {\n editData[col.field] = selected;\n }\n this.setState({editData});\n };\n\n this.setState({showSelectId: true, selectIdValue: val});\n }}\n size=\"large\"><IconList/></IconButton>\n </div>\n );\n }\n\n renderCellNonEdit(item, col) {\n let val = getAttr(item, col.field, col.lookup);\n if (Array.isArray(val)) {\n val = val[0];\n }\n\n if (col.type === 'boolean') {\n return <Checkbox\n checked={!!val}\n disabled={true}\n inputProps={{ 'aria-label': 'checkbox' }}\n />\n } else {\n return val;\n }\n }\n\n renderCell(item, col, level, i) {\n if (this.state.editMode === i && col.editable !== 'never' && col.editable !== false) {\n return <TableCell\n key={col.field}\n className={Utils.clsx(this.props.classes.cell, level && this.props.classes.cellSecondary)}\n style={col.cellStyle}\n component=\"th\"\n >\n {this.renderCellEdit(item, col)}\n </TableCell>;\n } else {\n return <TableCell\n key={col.field}\n className={Utils.clsx(this.props.classes.cell, level && this.props.classes.cellSecondary)}\n style={col.cellStyle}\n component=\"th\" >\n {this.renderCellNonEdit(item, col)}\n </TableCell>;\n }\n }\n\n renderCellWithSubField(item, col) {\n const main = getAttr(item, col.field, col.lookup);\n const sub = getAttr(item, col.subField, col.subLookup)\n return <div>\n <div className={this.props.classes.mainText}>{main}</div>\n <div className={this.props.classes.subText} style={col.subStyle || {}}>{sub}</div>\n </div>;\n }\n\n renderLine(item, level) {\n level = level || 0;\n const i = this.props.data.indexOf(item);\n if (!item) {\n return null;\n }\n if (!level && item.parentId) {\n return null;\n } else if (level && !item.parentId) {\n return null; // should never happens\n } else {\n // try to find children\n const children = this.props.data.filter(it => it.parentId === item.id);\n const opened = this.state.opened.includes(item.id);\n\n return [\n <TableRow\n key={item.id}\n className={Utils.clsx(\n 'table-row-' + (item.id || '').toString().replace(/[.$]/g, '_'),\n this.state.update && this.state.update.includes(item.id) && this.props.classes.glow,\n this.props.classes.row,\n level && this.props.classes.rowSecondary,\n !level && children.length && this.props.classes.rowMainWithChildren,\n !level && !children.length && this.props.classes.rowMainWithoutChildren,\n this.state.editMode !== false && this.state.editMode !== i && this.props.classes.rowNoEdit,\n this.state.deleteMode !== false && this.state.deleteMode !== i && this.props.classes.rowNoEdit,\n )}\n >\n <TableCell className={Utils.clsx(this.props.classes.cell, this.props.classes.cellExpand, level && this.props.classes.cellSecondary)}>\n {children.length ? <IconButton\n onClick={() => {\n const opened = [...this.state.opened];\n const pos = opened.indexOf(item.id);\n if (pos === -1) {\n opened.push(item.id);\n opened.sort();\n } else {\n opened.splice(pos, 1);\n }\n\n window.localStorage.setItem(this.props.name || 'iob-table', JSON.stringify(opened));\n\n this.setState({opened});\n }}\n size=\"large\">\n {opened ? <IconCollapse/> : <IconExpand/>}\n </IconButton> : null}\n </TableCell>\n <TableCell scope=\"row\"\n className={Utils.clsx(this.props.classes.cell, level && this.props.classes.cellSecondary)}\n style={this.props.columns[0].cellStyle}>\n {this.props.columns[0].subField ?\n this.renderCellWithSubField(item, this.props.columns[0])\n :\n getAttr(item, this.props.columns[0].field, this.props.columns[0].lookup)\n }\n </TableCell>\n\n {this.props.columns.map((col, ii) =>\n !ii && !col.hidden ? null : this.renderCell(item, col, level, i))}\n\n {this.props.onUpdate ? <TableCell className={Utils.clsx(this.props.classes.cell, this.props.classes.cellButton)}>\n {this.state.editMode === i || this.state.deleteMode === i ?\n <IconButton\n disabled={this.state.editMode !== false && (!this.state.editData || !Object.keys(this.state.editData).length)}\n onClick={() => {\n if (this.state.editMode !== false) {\n const newData = JSON.parse(JSON.stringify(item));\n Object.keys(this.state.editData).forEach(attr => setAttr(newData, attr, this.state.editData[attr]));\n this.setState({editMode: false}, () => this.props.onUpdate(newData, item))\n } else {\n this.setState({deleteMode: false}, () => this.props.onDelete(item))\n }\n }}\n size=\"large\">\n <IconCheck/>\n </IconButton>\n :\n <IconButton\n disabled={this.state.editMode !== false}\n onClick={() => this.setState({editMode: i, editData: null})}\n size=\"large\">\n <IconEdit/>\n </IconButton>}\n </TableCell> : null}\n {this.props.onUpdate || this.props.onDelete ? <TableCell className={Utils.clsx(this.props.classes.cell, this.props.classes.cellButton)}>\n {this.state.editMode === i || this.state.deleteMode === i ?\n <IconButton\n onClick={() => this.setState({editMode: false, deleteMode: false})}\n size=\"large\">\n <IconClose/>\n </IconButton>\n :\n (this.props.onDelete ? <IconButton\n disabled={this.state.deleteMode !== false}\n onClick={() => this.setState({deleteMode: i})}\n size=\"large\">\n <IconDelete/>\n </IconButton> : null)\n }\n </TableCell> : null}\n </TableRow>,\n !level && this.state.opened.includes(item.id) ? children.map(item => this.renderLine(item, level + 1)) : null,\n ];\n }\n }\n\n handleRequestSort(property) {\n const isAsc = this.state.orderBy === property && this.state.order === 'asc';\n this.setState({order: isAsc ? 'desc' : 'asc', orderBy: property});\n }\n\n renderHead() {\n return (\n <TableHead>\n <TableRow key=\"headerRow\">\n <TableCell\n component=\"th\"\n className={Utils.clsx(this.props.classes.cell, this.props.classes.cellHeader, this.props.classes.cellExpand)}\n />\n <TableCell\n component=\"th\"\n className={Utils.clsx(this.props.classes.cell, this.props.classes.cellHeader, this.props.classes['width_' + this.props.columns[0].field.replace(/\\./g, '_')])}\n style={this.props.columns[0].headerStyle || this.props.columns[0].cellStyle}\n sortDirection={this.state.orderBy === this.props.columns[0].field ? this.state.order : false}\n >\n <TableSortLabel\n active={this.state.orderBy === this.props.columns[0].field}\n direction={this.state.orderBy === this.props.columns[0].field ? this.state.order : 'asc'}\n onClick={() => this.handleRequestSort(this.props.columns[0].field)}\n >\n {this.props.columns[0].title || this.props.columns[0].field}\n {this.state.orderBy === this.props.columns[0].field ?\n <span className={this.props.classes.visuallyHidden}>\n {this.state.order === 'desc' ? 'sorted descending' : 'sorted ascending'}\n </span> : null}\n </TableSortLabel>\n </TableCell>\n {this.props.columns.map((col, i) =>\n !i && !col.hidden ? null : <TableCell\n key={col.field}\n className={Utils.clsx(this.props.classes.cell, this.props.classes.cellHeader, this.props.classes['width_' + col.field.replace(/\\./g, '_')])}\n style={col.headerStyle || col.cellStyle}\n component=\"th\"\n >\n <TableSortLabel\n active={this.state.orderBy === col.field}\n direction={this.state.orderBy === col.field ? this.state.order : 'asc'}\n onClick={() => this.handleRequestSort(col.field)}\n >\n {col.title || col.field}\n {this.state.orderBy === col.field ?\n <span className={this.props.classes.visuallyHidden}>\n {this.state.order === 'desc' ? 'sorted descending' : 'sorted ascending'}\n </span> : null}\n </TableSortLabel>\n </TableCell>)}\n {this.props.onUpdate ? <TableCell component=\"th\" className={Utils.clsx(this.props.classes.cell, this.props.classes.cellHeader, this.props.classes.cellButton)}>\n {!this.props.noAdd ? <Fab\n color=\"primary\"\n size=\"small\"\n disabled={this.state.editMode !== false}\n onClick={() => this.props.onUpdate(true)}>\n <IconAdd/>\n </Fab>: null }\n </TableCell> : null}\n {this.props.onDelete || this.props.onUpdate ? <TableCell component=\"th\" className={Utils.clsx(this.props.classes.cell, this.props.classes.cellHeader, this.props.classes.cellButton)}/> : null}\n </TableRow>\n </TableHead>\n );\n }\n\n render() {\n const lookup = this.props.columns.find(col => col.field === this.state.orderBy).lookup;\n const table = stableSort(this.props.data, getComparator(this.state.order, this.state.orderBy, lookup));\n\n if (this.state.update && this.state.update.length) {\n this.updateTimeout && clearTimeout(this.updateTimeout);\n this.updateTimeout = setTimeout(() => {\n this.updateTimeout = null;\n this.setState({update: null});\n }, 500)\n }\n\n return <div className={Utils.clsx(this.props.classes.tableContainer, this.props.className)}>\n <Table className={this.props.classes.table} aria-label=\"simple table\" size=\"small\" stickyHeader={true}>\n {this.renderHead()}\n <TableBody>\n {table.map(item => this.renderLine(item))}\n </TableBody>\n </Table>\n {this.renderSelectIdDialog()}\n {this.renderSelectColorDialog()}\n </div>;\n }\n}\n/*\nconst columns = [\n {\n title: 'Name of field', // required, else it will be \"field\"\n field: 'fieldIdInData', // required\n editable: false, // or true [default - true]\n cellStyle: { // CSS style - // optional\n maxWidth: '12rem',\n overflow: 'hidden',\n wordBreak: 'break-word'\n },\n lookup: { // optional => edit will be automatically \"SELECT\"\n 'value1': 'text1',\n 'value2': 'text2',\n }\n },\n {\n title: 'Type', // required, else it will be \"field\"\n field: 'myType', // required\n editable: true, // or true [default - true]\n lookup: { // optional => edit will be automatically \"SELECT\"\n 'number': 'Number',\n 'string': 'String',\n 'boolean': 'Boolean',\n },\n type: 'number/string/color/oid/icon/boolean', // oid=ObjectID,icon=base64-icon\n editComponent: props =>\n <div>Prefix{ <br/>\n <textarea\n rows={4}\n style={{width: '100%', resize: 'vertical'}}\n value={props.value}\n onChange={e => props.onChange(e.target.value)}\n />\n Suffix\n </div>,\n },\n];\n*/\n/* const data = [\n {\n id: 'UniqueID1' // required\n fieldIdInData: 'Name1',\n myType: 'number',\n },\n {\n id: 'UniqueID2' // required\n fieldIdInData: 'Name12',\n myType: 'string',\n },\n];\n */\n\n/*\n// STYLES\nconst styles = theme => ({\n tableDiv: {\n width: '100%',\n overflow: 'hidden',\n height: 'calc(100% - 48px)',\n },\n});\n// renderTable\nrenderTable() {\n return <div className={this.props.classes.tableDiv}>\n <TreeTable\n columns={this.columns}\n data={lines}\n onUpdate={(newData, oldData) => console.log('Update: ' + JSON.stringify(newData))}\n onDelete={oldData => console.log('Delete: ' + JSON.stringify(oldData))}\n />\n </div>;\n}\n */\n\nTreeTable.propTypes = {\n data: PropTypes.array.isRequired,\n className: PropTypes.string,\n loading: PropTypes.bool,\n name: PropTypes.string, // name of table to save settings in localStorage\n columns: PropTypes.arrayOf(\n PropTypes.shape({\n cellStyle: PropTypes.object,\n editComponent: PropTypes.element,\n field: PropTypes.string,\n headerStyle: PropTypes.object,\n hidden: PropTypes.bool,\n lookup: PropTypes.object,\n editable: PropTypes.bool,\n title: PropTypes.string,\n type: PropTypes.oneOf([\n 'string',\n 'boolean',\n 'numeric',\n 'icon', // todo: not yet implemented\n 'oid',\n 'color',\n ]),\n })\n ).isRequired,\n noSort: PropTypes.bool, // todo\n onUpdate: PropTypes.func,\n onDelete: PropTypes.func,\n noAdd: PropTypes.bool, // hide add button\n themeType: PropTypes.string,\n glowOnChange: PropTypes.bool,\n socket: PropTypes.object // only if oid type is used\n};\n\nexport default withStyles(styles)(TreeTable);"],"file":"TreeTable.js"}
|
|
1
|
+
{"version":3,"sources":["TreeTable.js"],"names":["getAttr","obj","attr","lookup","split","length","name","shift","setAttr","value","undefined","styles","theme","tableContainer","width","height","overflow","table","minWidth","maxWidth","cell","paddingTop","paddingBottom","paddingLeft","paddingRight","rowMainWithChildren","rowMainWithoutChildren","rowNoEdit","opacity","cellExpand","cellButton","cellHeader","fontWeight","background","palette","mode","color","wordBreak","whiteSpace","width_name_nicknames","width_ioType","width_type","width_displayTraits","width_roomHint","rowSecondary","fontStyle","cellSecondary","fontSize","visuallyHidden","border","clip","margin","padding","position","top","fieldEditWithButton","display","fieldEdit","lineHeight","verticalAlign","fieldButton","colorDialog","subText","glow","animation","descendingComparator","a","b","orderBy","_a","_b","getComparator","order","stableSort","array","comparator","stabilizedThis","map","el","index","sort","TreeTable","props","opened","window","localStorage","getItem","JSON","parse","e","Array","isArray","state","editMode","deleteMode","editData","update","columns","field","useTable","showSelectColor","glowOnChange","item","col","val","renderCellEditSelect","editComponent","renderCellEditCustom","type","renderCellEditBoolean","renderCellEditColor","renderCellEditObjectID","renderCellEditString","target","setState","Object","keys","v","classes","EditComponent","stringify","newVal","checked","root","paper","selectCallback","selectIdValue","_val","style","backgroundColor","Utils","isUseBright","newColor","showSelectId","adapterName","themeType","socket","selected","level","i","editable","clsx","cellStyle","renderCellEdit","renderCellNonEdit","main","sub","subField","subLookup","mainText","subStyle","data","indexOf","parentId","children","filter","it","id","includes","toString","replace","row","pos","push","splice","setItem","renderCellWithSubField","ii","hidden","renderCell","onUpdate","newData","forEach","onDelete","renderLine","property","isAsc","headerStyle","handleRequestSort","title","noAdd","find","updateTimeout","clearTimeout","setTimeout","className","renderHead","renderSelectIdDialog","renderSelectColorDialog","count","line","oldLine","React","Component","propTypes","PropTypes","isRequired","string","loading","bool","arrayOf","shape","object","func","oneOf","noSort"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport PropTypes from 'prop-types';\nimport withStyles from '@mui/styles/withStyles';\nimport { HexColorPicker as ColorPicker } from 'react-colorful';\n\nimport Fab from '@mui/material/Fab';\nimport Table from '@mui/material/Table';\nimport TableBody from '@mui/material/TableBody';\nimport TableCell from '@mui/material/TableCell';\nimport TableHead from '@mui/material/TableHead';\nimport TableRow from '@mui/material/TableRow';\nimport TableSortLabel from '@mui/material/TableSortLabel';\nimport IconButton from '@mui/material/IconButton';\nimport Select from '@mui/material/Select';\nimport MenuItem from '@mui/material/MenuItem';\nimport TextField from '@mui/material/TextField';\nimport Checkbox from '@mui/material/Checkbox';\nimport Dialog from '@mui/material/Dialog';\n\nimport IconEdit from '@mui/icons-material/Edit';\nimport IconDelete from '@mui/icons-material/Delete';\nimport IconExpand from '@mui/icons-material/NavigateNext';\nimport IconCollapse from '@mui/icons-material/ExpandMore';\nimport IconCheck from '@mui/icons-material/Check';\nimport IconClose from '@mui/icons-material/Close';\nimport IconAdd from '@mui/icons-material/Add';\nimport IconList from '@mui/icons-material/ViewHeadline';\nimport IconColor from '@mui/icons-material/Colorize';\n\nimport DialogSelectID from '../Dialogs/SelectID';\nimport Utils from './Utils';\n\nfunction getAttr(obj, attr, lookup) {\n if (typeof attr === 'string') {\n attr = attr.split('.');\n }\n\n if (!obj) {\n return null;\n }\n\n if (attr.length === 1) {\n if (lookup && lookup[obj[attr[0]]]) {\n return lookup[obj[attr[0]]];\n } else {\n return obj[attr[0]];\n }\n } else {\n const name = attr.shift();\n return getAttr(obj[name], attr);\n }\n}\n\nfunction setAttr(obj, attr, value) {\n if (typeof attr === 'string') {\n attr = attr.split('.');\n }\n\n if (attr.length === 1) {\n return obj[attr[0]] = value;\n } else {\n const name = attr.shift();\n if (obj[name] === null || obj[name] === undefined) {\n obj[name] = {};\n }\n return setAttr(obj[name], attr, value);\n }\n}\n\nconst styles = theme => ({\n tableContainer: {\n width: '100%',\n height: '100%',\n overflow: 'auto'\n },\n table: {\n width: '100%',\n minWidth: 800,\n maxWidth: 1920,\n },\n cell: {\n paddingTop: 0,\n paddingBottom: 0,\n paddingLeft: 4,\n paddingRight: 4,\n },\n rowMainWithChildren: {\n\n },\n rowMainWithoutChildren: {\n\n },\n rowNoEdit: {\n opacity: 0.3\n },\n cellExpand: {\n width: 30,\n },\n cellButton: {\n width: 30,\n },\n cellHeader: {\n fontWeight: 'bold',\n background: theme.palette.mode === 'dark' ? '#888' : '#888',\n color: theme.palette.mode === 'dark' ? '#EEE' : '#111',\n height: 48,\n wordBreak: 'break-word',\n whiteSpace: 'pre',\n },\n width_name_nicknames: {\n maxWidth: 150,\n },\n width_ioType: {\n maxWidth: 100,\n },\n width_type: {\n maxWidth: 100,\n },\n width_displayTraits: {\n maxWidth: 100,\n },\n width_roomHint: {\n maxWidth: 100,\n },\n rowSecondary: {\n fontStyle: 'italic',\n },\n cellSecondary: {\n fontSize: 10,\n },\n visuallyHidden: {\n border: 0,\n clip: 'rect(0 0 0 0)',\n height: 1,\n margin: -1,\n overflow: 'hidden',\n padding: 0,\n position: 'absolute',\n top: 20,\n width: 1,\n },\n fieldEditWithButton: {\n width: `calc(100% - 33px)`,\n display: 'inline-block',\n },\n fieldEdit: {\n width: `100%`,\n display: 'inline-block',\n lineHeight: '50px',\n verticalAlign: 'middle',\n },\n fieldButton: {\n width: 30,\n display: 'inline-block',\n },\n colorDialog: {\n overflow: 'hidden',\n padding: 15,\n },\n subText: {\n fontSize: 10,\n fontStyle: 'italic',\n },\n glow: {\n animation: 'glow 0.2s 2 alternate'\n }\n});\n\nfunction descendingComparator(a, b, orderBy, lookup) {\n const _a = getAttr(a, orderBy, lookup) || '';\n const _b = getAttr(b, orderBy, lookup) || '';\n\n if (_b < _a) {\n return -1;\n } else\n if (_b > _a) {\n return 1;\n } else {\n return 0;\n }\n}\n\nfunction getComparator(order, orderBy, lookup) {\n return order === 'desc'\n ? (a, b) => descendingComparator(a, b, orderBy, lookup)\n : (a, b) => -descendingComparator(a, b, orderBy, lookup);\n}\n\nfunction stableSort(array, comparator) {\n const stabilizedThis = array.map((el, index) => [el, index]);\n\n stabilizedThis.sort((a, b) => {\n const order = comparator(a[0], b[0]);\n if (order) {\n return order;\n } else {\n return a[1] - b[1];\n }\n });\n\n return stabilizedThis.map(el => el[0]);\n}\n\nclass TreeTable extends React.Component {\n constructor(props) {\n super(props);\n\n let opened = window.localStorage.getItem(this.props.name || 'iob-table') || '[]';\n try {\n opened = JSON.parse(opened) || [];\n } catch (e) {\n opened = [];\n }\n if (!Array.isArray(opened)) {\n opened = [];\n }\n\n this.state = {\n opened,\n editMode: false,\n deleteMode: false,\n editData: null,\n order: 'asc',\n update: null,\n orderBy: this.props.columns[0].field,\n useTable: false,\n showSelectColor: false,\n glowOnChange: props.glowOnChange\n }\n }\n\n static getDerivedStateFromProps(props, state) {\n if (props.glowOnChange) {\n const update = [];\n let count = 0;\n if (props.data && state.data) {\n props.data.forEach(line => {\n count++;\n const oldLine = state.data.find(it => it.id === line.id);\n if (oldLine) {\n if (JSON.stringify(oldLine) !== JSON.stringify(line)) {\n update.push(line.id);\n }\n } else {\n update.push(line.id);\n }\n });\n }\n\n if (update.length && update.length !== count) {\n return {data: props.data, update};\n } else {\n return {data: props.data};\n }\n } else {\n return {data: props.data};\n }\n }\n\n renderCellEdit(item, col) {\n let val = getAttr(item, col.field);\n if (Array.isArray(val)) {\n val = val[0];\n }\n\n if (col.lookup) {\n return this.renderCellEditSelect(item, col, val);\n } if (col.editComponent) {\n return this.renderCellEditCustom(item, col, val);\n } else {\n if (col.type === 'boolean' || (!col.type && typeof val === 'boolean')) {\n return this.renderCellEditBoolean(item, col, val);\n } else if (col.type === 'color') {\n return this.renderCellEditColor(item, col, val);\n } else if (col.type === 'oid') {\n return this.renderCellEditObjectID(item, col, val);\n } else {\n return this.renderCellEditString(item, col, val);\n }\n }\n }\n\n renderCellEditSelect(item, col, val) {\n return <Select\n variant=\"standard\"\n onChange={e => {\n const editData = this.state.editData ? {...this.state.editData} : {};\n if (e.target.value === val) {\n delete editData[col.field];\n } else {\n editData[col.field] = e.target.value;\n }\n this.setState({editData});\n }}\n value={(this.state.editData && this.state.editData[col.field]) || val}\n >\n {Object.keys(col.lookup).map(v => <MenuItem value={v}>{col.lookup[v]}</MenuItem>)}\n </Select>;\n }\n\n renderCellEditString(item, col, val) {\n return <TextField\n variant=\"standard\"\n className={this.props.classes.fieldEdit}\n fullWidth\n value={this.state.editData && this.state.editData[col.field] !== undefined ? this.state.editData[col.field] : val}\n onChange={e => {\n const editData = this.state.editData ? {...this.state.editData} : {};\n if (e.target.value === val) {\n delete editData[col.field];\n } else {\n editData[col.field] = e.target.value;\n }\n this.setState({editData});\n }}\n />;\n }\n\n renderCellEditCustom(item, col, val) {\n const EditComponent = col.editComponent;\n\n // use new value if exists\n if (this.state.editData && this.state.editData[col.field] !== undefined) {\n val = this.state.editData[col.field];\n item = JSON.parse(JSON.stringify(item));\n item[col.field] = val;\n }\n\n return <EditComponent\n value={ val }\n rowData={item}\n onChange={newVal => {\n const editData = this.state.editData ? {...this.state.editData} : {};\n if (newVal === val) {\n delete editData[col.field];\n } else {\n editData[col.field] = newVal;\n }\n this.setState({editData});\n }}\n />;\n }\n\n renderCellEditBoolean(item, col, val) {\n return <Checkbox\n checked={this.state.editData && this.state.editData[col.field] !== undefined ? !!this.state.editData[col.field] : !!val}\n onChange={e => {\n const editData = this.state.editData ? {...this.state.editData} : {};\n if (e.target.checked === !!val) {\n delete editData[col.field];\n } else {\n editData[col.field] = e.target.checked;\n }\n this.setState({editData});\n }}\n inputProps={{ 'aria-label': 'checkbox' }}\n />;\n }\n\n renderSelectColorDialog() {\n return <Dialog\n classes={{root: this.props.classes.colorDialog, paper: this.props.classes.colorDialog}}\n onClose={() => {\n this.selectCallback = null;\n this.setState({showSelectColor: false});\n }}\n open={this.state.showSelectColor}>\n <ColorPicker\n color={this.state.selectIdValue}\n onChange={color => {\n this.setState({selectIdValue: color}, () =>\n this.selectCallback && this.selectCallback(color));\n }}\n />\n </Dialog>;\n }\n\n renderCellEditColor(item, col, val) {\n const _val = this.state.editData && this.state.editData[col.field] !== undefined ? this.state.editData[col.field] : val;\n return <div className={this.props.classes.fieldEdit}>\n <TextField\n variant=\"standard\"\n fullWidth\n className={this.props.classes.fieldEditWithButton}\n value={_val}\n inputProps={{style: {backgroundColor: _val, color: Utils.isUseBright(_val, null) ? '#FFF' : '#000'}}}\n onChange={e => {\n const editData = this.state.editData ? {...this.state.editData} : {};\n if (e.target.value === val) {\n delete editData[col.field];\n } else {\n editData[col.field] = e.target.value;\n }\n this.setState({editData});\n }}\n />\n\n <IconButton\n className={this.props.classes.fieldButton}\n contained\n onClick={() => {\n this.selectCallback = newColor => {\n const editData = this.state.editData ? {...this.state.editData} : {};\n if (newColor === val) {\n delete editData[col.field];\n } else {\n editData[col.field] = newColor;\n }\n this.setState({editData});\n };\n\n this.setState({showSelectColor: true, selectIdValue: val});\n }}\n size=\"large\"><IconColor/></IconButton>\n </div>;\n }\n\n renderSelectIdDialog() {\n if (this.state.showSelectId) {\n return <DialogSelectID\n key=\"tableSelect\"\n imagePrefix=\"../..\"\n dialogName={this.props.adapterName}\n themeType={this.props.themeType}\n socket={this.props.socket}\n statesOnly={true}\n selected={this.state.selectIdValue}\n onClose={() => this.setState({showSelectId: false})}\n onOk={(selected, name) => {\n this.setState({showSelectId: false, selectIdValue: null});\n this.selectCallback && this.selectCallback(selected);\n this.selectCallback = null;\n }}\n />;\n } else {\n return null;\n }\n }\n\n renderCellEditObjectID(item, col, val) {\n return <div className={this.props.classes.fieldEdit}>\n <TextField\n variant=\"standard\"\n fullWidth\n className={this.props.classes.fieldEditWithButton}\n value={this.state.editData && this.state.editData[col.field] !== undefined ? this.state.editData[col.field] : val}\n onChange={e => {\n const editData = this.state.editData ? {...this.state.editData} : {};\n if (e.target.value === val) {\n delete editData[col.field];\n } else {\n editData[col.field] = e.target.value;\n }\n this.setState({editData});\n }}\n />\n\n <IconButton\n className={this.props.classes.fieldButton}\n contained\n onClick={() => {\n this.selectCallback = selected => {\n const editData = this.state.editData ? {...this.state.editData} : {};\n if (selected === val) {\n delete editData[col.field];\n } else {\n editData[col.field] = selected;\n }\n this.setState({editData});\n };\n\n this.setState({showSelectId: true, selectIdValue: val});\n }}\n size=\"large\"\n ><IconList/></IconButton>\n </div>;\n }\n\n renderCellNonEdit(item, col) {\n let val = getAttr(item, col.field, col.lookup);\n if (Array.isArray(val)) {\n val = val[0];\n }\n\n if (col.type === 'boolean') {\n return <Checkbox\n checked={!!val}\n disabled={true}\n inputProps={{ 'aria-label': 'checkbox' }}\n />\n } else {\n return val;\n }\n }\n\n renderCell(item, col, level, i) {\n if (this.state.editMode === i && col.editable !== 'never' && col.editable !== false) {\n return <TableCell\n key={col.field}\n className={Utils.clsx(this.props.classes.cell, level && this.props.classes.cellSecondary)}\n style={col.cellStyle}\n component=\"th\"\n >\n {this.renderCellEdit(item, col)}\n </TableCell>;\n } else {\n return <TableCell\n key={col.field}\n className={Utils.clsx(this.props.classes.cell, level && this.props.classes.cellSecondary)}\n style={col.cellStyle}\n component=\"th\" >\n {this.renderCellNonEdit(item, col)}\n </TableCell>;\n }\n }\n\n renderCellWithSubField(item, col) {\n const main = getAttr(item, col.field, col.lookup);\n const sub = getAttr(item, col.subField, col.subLookup);\n return <div>\n <div className={this.props.classes.mainText}>{main}</div>\n <div className={this.props.classes.subText} style={col.subStyle || {}}>{sub}</div>\n </div>;\n }\n\n renderLine(item, level) {\n level = level || 0;\n const i = this.props.data.indexOf(item);\n if (!item) {\n return null;\n }\n if (!level && item.parentId) {\n return null;\n } else if (level && !item.parentId) {\n return null; // should never happen\n } else {\n // try to find children\n const children = this.props.data.filter(it => it.parentId === item.id);\n const opened = this.state.opened.includes(item.id);\n\n return [\n <TableRow\n key={item.id}\n className={Utils.clsx(\n 'table-row-' + (item.id || '').toString().replace(/[.$]/g, '_'),\n this.state.update && this.state.update.includes(item.id) && this.props.classes.glow,\n this.props.classes.row,\n level && this.props.classes.rowSecondary,\n !level && children.length && this.props.classes.rowMainWithChildren,\n !level && !children.length && this.props.classes.rowMainWithoutChildren,\n this.state.editMode !== false && this.state.editMode !== i && this.props.classes.rowNoEdit,\n this.state.deleteMode !== false && this.state.deleteMode !== i && this.props.classes.rowNoEdit,\n )}\n >\n <TableCell className={Utils.clsx(this.props.classes.cell, this.props.classes.cellExpand, level && this.props.classes.cellSecondary)}>\n {children.length ? <IconButton\n onClick={() => {\n const opened = [...this.state.opened];\n const pos = opened.indexOf(item.id);\n if (pos === -1) {\n opened.push(item.id);\n opened.sort();\n } else {\n opened.splice(pos, 1);\n }\n\n window.localStorage.setItem(this.props.name || 'iob-table', JSON.stringify(opened));\n\n this.setState({opened});\n }}\n size=\"small\">\n {opened ? <IconCollapse/> : <IconExpand/>}\n </IconButton> : null}\n </TableCell>\n <TableCell\n scope=\"row\"\n className={Utils.clsx(this.props.classes.cell, level && this.props.classes.cellSecondary)}\n style={this.props.columns[0].cellStyle}\n >\n {this.props.columns[0].subField ?\n this.renderCellWithSubField(item, this.props.columns[0])\n :\n getAttr(item, this.props.columns[0].field, this.props.columns[0].lookup)\n }\n </TableCell>\n\n {this.props.columns.map((col, ii) =>\n !ii && !col.hidden ? null : this.renderCell(item, col, level, i))}\n\n {this.props.onUpdate ? <TableCell className={Utils.clsx(this.props.classes.cell, this.props.classes.cellButton)}>\n {this.state.editMode === i || this.state.deleteMode === i ?\n <IconButton\n disabled={this.state.editMode !== false && (!this.state.editData || !Object.keys(this.state.editData).length)}\n onClick={() => {\n if (this.state.editMode !== false) {\n const newData = JSON.parse(JSON.stringify(item));\n Object.keys(this.state.editData).forEach(attr => setAttr(newData, attr, this.state.editData[attr]));\n this.setState({editMode: false}, () => this.props.onUpdate(newData, item))\n } else {\n this.setState({deleteMode: false}, () => this.props.onDelete(item))\n }\n }}\n size=\"large\">\n <IconCheck/>\n </IconButton>\n :\n <IconButton\n disabled={this.state.editMode !== false}\n onClick={() => this.setState({editMode: i, editData: null})}\n size=\"large\">\n <IconEdit/>\n </IconButton>}\n </TableCell> : null}\n {this.props.onUpdate || this.props.onDelete ? <TableCell className={Utils.clsx(this.props.classes.cell, this.props.classes.cellButton)}>\n {this.state.editMode === i || this.state.deleteMode === i ?\n <IconButton\n onClick={() => this.setState({editMode: false, deleteMode: false})}\n size=\"large\">\n <IconClose/>\n </IconButton>\n :\n (this.props.onDelete ? <IconButton\n disabled={this.state.deleteMode !== false}\n onClick={() => this.setState({deleteMode: i})}\n size=\"large\">\n <IconDelete/>\n </IconButton> : null)\n }\n </TableCell> : null}\n </TableRow>,\n !level && this.state.opened.includes(item.id) ? children.map(item => this.renderLine(item, level + 1)) : null,\n ];\n }\n }\n\n handleRequestSort(property) {\n const isAsc = this.state.orderBy === property && this.state.order === 'asc';\n this.setState({order: isAsc ? 'desc' : 'asc', orderBy: property});\n }\n\n renderHead() {\n return <TableHead>\n <TableRow key=\"headerRow\">\n <TableCell\n component=\"th\"\n className={Utils.clsx(this.props.classes.cell, this.props.classes.cellHeader, this.props.classes.cellExpand)}\n />\n <TableCell\n component=\"th\"\n className={Utils.clsx(this.props.classes.cell, this.props.classes.cellHeader, this.props.classes['width_' + this.props.columns[0].field.replace(/\\./g, '_')])}\n style={this.props.columns[0].headerStyle || this.props.columns[0].cellStyle}\n sortDirection={this.state.orderBy === this.props.columns[0].field ? this.state.order : false}\n >\n <TableSortLabel\n active={this.state.orderBy === this.props.columns[0].field}\n direction={this.state.orderBy === this.props.columns[0].field ? this.state.order : 'asc'}\n onClick={() => this.handleRequestSort(this.props.columns[0].field)}\n >\n {this.props.columns[0].title || this.props.columns[0].field}\n {this.state.orderBy === this.props.columns[0].field ?\n <span className={this.props.classes.visuallyHidden}>\n {this.state.order === 'desc' ? 'sorted descending' : 'sorted ascending'}\n </span> : null}\n </TableSortLabel>\n </TableCell>\n {this.props.columns.map((col, i) =>\n !i && !col.hidden ? null : <TableCell\n key={col.field}\n className={Utils.clsx(this.props.classes.cell, this.props.classes.cellHeader, this.props.classes['width_' + col.field.replace(/\\./g, '_')])}\n style={col.headerStyle || col.cellStyle}\n component=\"th\"\n >\n <TableSortLabel\n active={this.state.orderBy === col.field}\n direction={this.state.orderBy === col.field ? this.state.order : 'asc'}\n onClick={() => this.handleRequestSort(col.field)}\n >\n {col.title || col.field}\n {this.state.orderBy === col.field ?\n <span className={this.props.classes.visuallyHidden}>\n {this.state.order === 'desc' ? 'sorted descending' : 'sorted ascending'}\n </span> : null}\n </TableSortLabel>\n </TableCell>)}\n {this.props.onUpdate ? <TableCell component=\"th\" className={Utils.clsx(this.props.classes.cell, this.props.classes.cellHeader, this.props.classes.cellButton)}>\n {!this.props.noAdd ? <Fab\n color=\"primary\"\n size=\"small\"\n disabled={this.state.editMode !== false}\n onClick={() => this.props.onUpdate(true)}>\n <IconAdd/>\n </Fab>: null }\n </TableCell> : null}\n {this.props.onDelete || this.props.onUpdate ? <TableCell component=\"th\" className={Utils.clsx(this.props.classes.cell, this.props.classes.cellHeader, this.props.classes.cellButton)}/> : null}\n </TableRow>\n </TableHead>;\n }\n\n render() {\n const lookup = this.props.columns.find(col => col.field === this.state.orderBy).lookup;\n const table = stableSort(this.props.data, getComparator(this.state.order, this.state.orderBy, lookup));\n\n if (this.state.update && this.state.update.length) {\n this.updateTimeout && clearTimeout(this.updateTimeout);\n this.updateTimeout = setTimeout(() => {\n this.updateTimeout = null;\n this.setState({update: null});\n }, 500);\n }\n\n return <div className={Utils.clsx(this.props.classes.tableContainer, this.props.className)}>\n <Table className={this.props.classes.table} aria-label=\"simple table\" size=\"small\" stickyHeader={true}>\n {this.renderHead()}\n <TableBody>\n {table.map(item => this.renderLine(item))}\n </TableBody>\n </Table>\n {this.renderSelectIdDialog()}\n {this.renderSelectColorDialog()}\n </div>;\n }\n}\n/*\nconst columns = [\n {\n title: 'Name of field', // required, else it will be \"field\"\n field: 'fieldIdInData', // required\n editable: false, // or true [default - true]\n cellStyle: { // CSS style - // optional\n maxWidth: '12rem',\n overflow: 'hidden',\n wordBreak: 'break-word'\n },\n lookup: { // optional => edit will be automatically \"SELECT\"\n 'value1': 'text1',\n 'value2': 'text2',\n }\n },\n {\n title: 'Type', // required, else it will be \"field\"\n field: 'myType', // required\n editable: true, // or true [default - true]\n lookup: { // optional => edit will be automatically \"SELECT\"\n 'number': 'Number',\n 'string': 'String',\n 'boolean': 'Boolean',\n },\n type: 'number/string/color/oid/icon/boolean', // oid=ObjectID,icon=base64-icon\n editComponent: props =>\n <div>Prefix{ <br/>\n <textarea\n rows={4}\n style={{width: '100%', resize: 'vertical'}}\n value={props.value}\n onChange={e => props.onChange(e.target.value)}\n />\n Suffix\n </div>,\n },\n];\n*/\n/* const data = [\n {\n id: 'UniqueID1' // required\n fieldIdInData: 'Name1',\n myType: 'number',\n },\n {\n id: 'UniqueID2' // required\n fieldIdInData: 'Name12',\n myType: 'string',\n },\n];\n */\n\n/*\n// STYLES\nconst styles = theme => ({\n tableDiv: {\n width: '100%',\n overflow: 'hidden',\n height: 'calc(100% - 48px)',\n },\n});\n// renderTable\nrenderTable() {\n return <div className={this.props.classes.tableDiv}>\n <TreeTable\n columns={this.columns}\n data={lines}\n onUpdate={(newData, oldData) => console.log('Update: ' + JSON.stringify(newData))}\n onDelete={oldData => console.log('Delete: ' + JSON.stringify(oldData))}\n />\n </div>;\n}\n */\n\nTreeTable.propTypes = {\n data: PropTypes.array.isRequired,\n className: PropTypes.string,\n loading: PropTypes.bool,\n name: PropTypes.string, // name of table to save settings in localStorage\n columns: PropTypes.arrayOf(\n PropTypes.shape({\n cellStyle: PropTypes.object,\n editComponent: PropTypes.func,\n field: PropTypes.string,\n headerStyle: PropTypes.object,\n hidden: PropTypes.bool,\n lookup: PropTypes.object,\n editable: PropTypes.bool,\n title: PropTypes.string,\n type: PropTypes.oneOf([\n 'string',\n 'boolean',\n 'numeric',\n 'icon', // todo: not yet implemented\n 'oid',\n 'color',\n ]),\n })\n ).isRequired,\n noSort: PropTypes.bool, // todo\n onUpdate: PropTypes.func,\n onDelete: PropTypes.func,\n noAdd: PropTypes.bool, // hide add button\n themeType: PropTypes.string,\n glowOnChange: PropTypes.bool,\n socket: PropTypes.object // only if oid type is used\n};\n\nexport default withStyles(styles)(TreeTable);"],"file":"TreeTable.js"}
|
package/GenericApp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["GenericApp.js"],"names":["window","localStorage","getItem","setItem","GenericApp","props","settings","ConnectionClass","Connection","isWeb","io","location","port","SocketClient","e","id","obj","socket","systemLang","common","language","I18n","setLanguage","_systemConfig","expertMode","setState","getExpertMode","message","data","newThemeName","Utils","getThemeName","setThemeName","theme","createTheme","themeName","themeType","getThemeType","onThemeChange","onThemeChanged","onToggleExpertMode","console","warn","JSON","stringify","resizeTimer","clearTimeout","setTimeout","width","getWidth","query","search","replace","args","trim","split","filter","t","forEach","b","parts","length","instance","undefined","parseInt","slice","tmp","pathname","adapterName","instanceId","newReact","Router","getLocation","tab","themeInstance","state","selectedTab","selectedTabNum","errorText","changed","connected","loaded","isConfigurationError","toast","bottomButtons","translations","require","Object","keys","lang","assign","setTranslations","savedNative","encryptedFields","sentryDSN","name","doNotLoadAllObjects","onProgress","progress","PROGRESS","CONNECTING","READY","onReady","objects","scripts","subscribeObject","onSystemConfigChanged","then","getSystemConfig","_secret","secret","getObject","instanceObj","waitPromise","sentryEnabled","diag","version","disableDataReporting","host","sentryStarted","Sentry","init","dsn","release","integrations","SentryIntegrations","Dedupe","sentryInited","uuidObj","uuid","configureScope","scope","setUser","Promise","resolve","onPrepareLoad","encryptedNative","parse","onConnectionReady","onError","err","error","showError","addEventListener","onResize","onReceiveMessage","removeEventListener","palette","mode","sessionStorage","value","result","i","String","fromCharCode","charCodeAt","selectTab","index","attr","encrypt","decrypt","includes","push","_socket","emit","doc","rows","item","webExtendable","map","reject","ip","_host","IPs4","address","family","IPs6","hardware","networkInterfaces","eth","inter","isClose","oldObj","_oldObj","a","hasOwnProperty","onPrepareSave","setObject","globalThis","onClose","vertical","horizontal","classes","close","native","isChanged","newNative","getIsChanged","onSave","attrs","shift","Error","_updateNativeValue","cb","text","renderError","renderToast","renderSaveCloseButtons","SIZES","xs","sm","md","lg","xl","innerWidth","reverse","widthComputed","find","key","parent","$iframeDialog","postMessage","propTypes","PropTypes","string","func","object","array","bool"],"mappings":";;;;;;;AAMA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AAEA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,IAAI,CAACA,MAAM,CAACC,YAAZ,EAA0B;AACtBD,EAAAA,MAAM,CAACC,YAAP,GAAsB;AAClBC,IAAAA,OAAO,EAAE;AAAA,aAAM,IAAN;AAAA,KADS;AAElBC,IAAAA,OAAO,EAAE;AAAA,aAAM,IAAN;AAAA;AAFS,GAAtB;AAIH;AAED;AACA;AACA;;;IACMC,U;;;;;AACF;AACJ;AACA;AACA;AACI,sBAAYC,KAAZ,EAAmBC,QAAnB,EAA6B;AAAA;;AAAA;;AACzB,QAAMC,eAAe,GAAGF,KAAK,CAACG,UAAN,IAAoBF,QAAQ,CAACE,UAA7B,IAA2CA,sBAAnE,CADyB,CAGzB;;AACA,QAAI,CAACD,eAAe,CAACE,KAAhB,EAAD,IAA4BT,MAAM,CAACU,EAAnC,IAAyCV,MAAM,CAACW,QAAP,CAAgBC,IAAhB,KAAyB,MAAtE,EAA8E;AAC1E,UAAI;AACA,YAAMF,EAAE,GAAG,IAAIV,MAAM,CAACa,YAAX,EAAX;AACA,eAAOb,MAAM,CAACU,EAAd;AACAV,QAAAA,MAAM,CAACU,EAAP,GAAYA,EAAZ;AACH,OAJD,CAIE,OAAOI,CAAP,EAAU,CACR;AACH;AACJ;;AAED,8BAAMT,KAAN;;AAdyB,4EAiLL,UAACU,EAAD,EAAKC,GAAL,EAAa;AACjC,UAAIA,GAAG,IAAID,EAAE,KAAK,eAAlB,EAAmC;AAAA;;AAC/B,YAAI,MAAKE,MAAL,CAAYC,UAAZ,MAA2BF,GAA3B,aAA2BA,GAA3B,uBAA2BA,GAAG,CAAEG,MAAL,CAAYC,QAAvC,CAAJ,EAAqD;AACjD,gBAAKH,MAAL,CAAYC,UAAZ,GAAyB,CAAAF,GAAG,SAAH,IAAAA,GAAG,WAAH,YAAAA,GAAG,CAAEG,MAAL,CAAYC,QAAZ,KAAwB,IAAjD;;AACAC,2BAAKC,WAAL,CAAiB,MAAKL,MAAL,CAAYC,UAA7B;AACH;;AAED,YAAI,MAAKK,aAAL,CAAmBC,UAAnB,KAAkC,CAAC,EAACR,GAAD,aAACA,GAAD,8BAACA,GAAG,CAAEG,MAAN,wCAAC,YAAaK,UAAd,CAAvC,EAAiE;AAC7D,gBAAKD,aAAL,GAAqB,CAAAP,GAAG,SAAH,IAAAA,GAAG,WAAH,YAAAA,GAAG,CAAEG,MAAL,KAAe,EAApC;;AACA,gBAAKM,QAAL,CAAc;AAACD,YAAAA,UAAU,EAAE,MAAKE,aAAL;AAAb,WAAd;AACH,SAHD,MAGO;AACH,gBAAKH,aAAL,GAAqB,CAAAP,GAAG,SAAH,IAAAA,GAAG,WAAH,YAAAA,GAAG,CAAEG,MAAL,KAAe,EAApC;AACH;AACJ;AACJ,KA/L4B;;AAAA,uEAmNV,UAAAQ,OAAO,EAAI;AAC1B,UAAIA,OAAJ,aAAIA,OAAJ,eAAIA,OAAO,CAAEC,IAAb,EAAmB;AACf,YAAID,OAAO,CAACC,IAAR,KAAiB,aAArB,EAAoC;AAChC,cAAMC,YAAY,GAAGC,kBAAMC,YAAN,EAArB;;AACAD,4BAAME,YAAN,CAAmBF,kBAAMC,YAAN,EAAnB;;AAEA,cAAME,MAAK,GAAG,MAAKC,WAAL,CAAiBL,YAAjB,CAAd;;AAEA,gBAAKJ,QAAL,CAAc;AACVQ,YAAAA,KAAK,EAALA,MADU;AAEVE,YAAAA,SAAS,EAAE,MAAKJ,YAAL,CAAkBE,MAAlB,CAFD;AAGVG,YAAAA,SAAS,EAAE,MAAKC,YAAL,CAAkBJ,MAAlB;AAHD,WAAd,EAIG,YAAM;AACL,kBAAK5B,KAAL,CAAWiC,aAAX,IAA4B,MAAKjC,KAAL,CAAWiC,aAAX,CAAyBT,YAAzB,CAA5B;AACA,kBAAKU,cAAL,IAAuB,MAAKA,cAAL,CAAoBV,YAApB,CAAvB;AACH,WAPD;AAQH,SAdD,MAcO,IAAIF,OAAO,CAACC,IAAR,KAAiB,kBAArB,EAAyC;AAC5C,gBAAKY,kBAAL,IAA2B,MAAKA,kBAAL,CAAwB,MAAKd,aAAL,EAAxB,CAA3B;AACH,SAFM,MAEA;AACHe,UAAAA,OAAO,CAACC,IAAR,CAAa,+BAA+BC,IAAI,CAACC,SAAL,CAAejB,OAAO,CAACC,IAAvB,CAA5C;AACH;AACJ;AACJ,KAzO4B;;AAAA,+DA8OlB,YAAM;AACb,YAAKiB,WAAL,IAAoBC,YAAY,CAAC,MAAKD,WAAN,CAAhC;AACA,YAAKA,WAAL,GAAmBE,UAAU,CAAC,YAAM;AAChC,cAAKF,WAAL,GAAmB,IAAnB;;AACA,cAAKpB,QAAL,CAAc;AAACuB,UAAAA,KAAK,EAAE5C,UAAU,CAAC6C,QAAX;AAAR,SAAd;AACH,OAH4B,EAG1B,GAH0B,CAA7B;AAIH,KApP4B;;AAgBzB;AAEA,QAAIC,KAAK,GAAG,CAAClD,MAAM,CAACW,QAAP,CAAgBwC,MAAhB,IAA0B,EAA3B,EAA+BC,OAA/B,CAAuC,KAAvC,EAA8C,EAA9C,EAAkDA,OAAlD,CAA0D,MAA1D,EAAkE,EAAlE,CAAZ;AACA,QAAIC,IAAI,GAAG,EAAX;AACAH,IAAAA,KAAK,CAACI,IAAN,GAAaC,KAAb,CAAmB,GAAnB,EAAwBC,MAAxB,CAA+B,UAAAC,CAAC;AAAA,aAAIA,CAAC,CAACH,IAAF,EAAJ;AAAA,KAAhC,EAA8CI,OAA9C,CAAsD,UAAAC,CAAC,EAAI;AACvD,UAAMC,KAAK,GAAGD,CAAC,CAACJ,KAAF,CAAQ,GAAR,CAAd;AACAF,MAAAA,IAAI,CAACO,KAAK,CAAC,CAAD,CAAN,CAAJ,GAAiBA,KAAK,CAACC,MAAN,KAAiB,CAAjB,GAAqBD,KAAK,CAAC,CAAD,CAA1B,GAAgC,IAAjD;;AACA,UAAIP,IAAI,CAACO,KAAK,CAAC,CAAD,CAAN,CAAJ,KAAmB,MAAvB,EAA+B;AAC3BP,QAAAA,IAAI,CAACO,KAAK,CAAC,CAAD,CAAN,CAAJ,GAAiB,IAAjB;AACH,OAFD,MAEO,IAAIP,IAAI,CAACO,KAAK,CAAC,CAAD,CAAN,CAAJ,KAAmB,OAAvB,EAAgC;AACnCP,QAAAA,IAAI,CAACO,KAAK,CAAC,CAAD,CAAN,CAAJ,GAAiB,KAAjB;AACH;AACJ,KARD,EApByB,CA8BzB;;AACA,UAAKE,QAAL,GAAgBT,IAAI,CAACS,QAAL,KAAkBC,SAAlB,GAA8BC,QAAQ,CAACX,IAAI,CAACS,QAAN,EAAgB,EAAhB,CAAR,IAA+B,CAA7D,GAAkEE,QAAQ,CAAChE,MAAM,CAACW,QAAP,CAAgBwC,MAAhB,CAAuBc,KAAvB,CAA6B,CAA7B,CAAD,EAAkC,EAAlC,CAAR,IAAiD,CAAnI,CA/ByB,CAgCzB;;AACA,QAAMC,GAAG,GAAGlE,MAAM,CAACW,QAAP,CAAgBwD,QAAhB,CAAyBZ,KAAzB,CAA+B,GAA/B,CAAZ;AACA,UAAKa,WAAL,GAAmB,CAAA9D,QAAQ,SAAR,IAAAA,QAAQ,WAAR,YAAAA,QAAQ,CAAE8D,WAAV,KAAyB/D,KAAK,CAAC+D,WAA/B,IAA8CpE,MAAM,CAACoE,WAArD,IAAoEF,GAAG,CAACA,GAAG,CAACL,MAAJ,GAAa,CAAd,CAAvE,IAA2F,KAA9G;AACA,UAAKQ,UAAL,4BAAqC,MAAKD,WAA1C,cAAyD,MAAKN,QAA9D;AACA,UAAKQ,QAAL,GAAgBjB,IAAI,CAACiB,QAAL,KAAkB,IAAlC,CApCyB,CAoCe;;AAExC,QAAM3D,QAAQ,GAAG4D,oBAAOC,WAAP,EAAjB;;AACA7D,IAAAA,QAAQ,CAAC8D,GAAT,GAAe9D,QAAQ,CAAC8D,GAAT,IAAgBzE,MAAM,CAACC,YAAP,CAAoBC,OAApB,CAA4B,MAAKkE,WAAL,GAAmB,UAA/C,CAAhB,IAA8E,EAA7F;;AAEA,QAAMM,aAAa,GAAG,MAAKxC,WAAL,EAAtB;;AAEA,UAAKyC,KAAL,GAAa;AACTC,MAAAA,WAAW,EAAK5E,MAAM,CAACC,YAAP,CAAoBC,OAApB,CAA4B,MAAKkE,WAAL,GAAmB,UAA/C,KAA8D,EADrE;AAETS,MAAAA,cAAc,EAAE,CAAC,CAFR;AAGT,gBAAgB,EAHP;AAITC,MAAAA,SAAS,EAAO,EAJP;AAKTC,MAAAA,OAAO,EAAS,KALP;AAMTC,MAAAA,SAAS,EAAO,KANP;AAOTC,MAAAA,MAAM,EAAU,KAPP;AAQTC,MAAAA,oBAAoB,EAAE,EARb;AAST1D,MAAAA,UAAU,EAAM,KATP;AAUT2D,MAAAA,KAAK,EAAW,EAVP;AAWTlD,MAAAA,KAAK,EAAWyC,aAXP;AAYTvC,MAAAA,SAAS,EAAO,MAAKJ,YAAL,CAAkB2C,aAAlB,CAZP;AAaTtC,MAAAA,SAAS,EAAO,MAAKC,YAAL,CAAkBqC,aAAlB,CAbP;AAcTU,MAAAA,aAAa,EAAG,CAAC9E,QAAQ,IAAIA,QAAQ,CAAC8E,aAAtB,MAAyC,KAAzC,GAAiD,KAAjD,GAA0D,CAAC/E,KAAK,IAAIA,KAAK,CAAC+E,aAAhB,MAAmC,KAAnC,GAA2C,KAA3C,GAAmD,IAdpH;AAeTpC,MAAAA,KAAK,EAAW5C,UAAU,CAAC6C,QAAX;AAfP,KAAb,CA3CyB,CA6DzB;;AACA,QAAMoC,YAAY,GAAG;AACjB,YAAMC,OAAO,CAAC,gBAAD,CADI;AAEjB,YAAMA,OAAO,CAAC,gBAAD,CAFI;AAGjB,YAAMA,OAAO,CAAC,gBAAD,CAHI;AAIjB,YAAMA,OAAO,CAAC,gBAAD,CAJI;AAKjB,YAAMA,OAAO,CAAC,gBAAD,CALI;AAMjB,YAAMA,OAAO,CAAC,gBAAD,CANI;AAOjB,YAAMA,OAAO,CAAC,gBAAD,CAPI;AAQjB,YAAMA,OAAO,CAAC,gBAAD,CARI;AASjB,YAAMA,OAAO,CAAC,gBAAD,CATI;AAUjB,eAASA,OAAO,CAAC,mBAAD;AAVC,KAArB,CA9DyB,CA2EzB;;AACA,QAAIhF,QAAQ,IAAIA,QAAQ,CAAC+E,YAAzB,EAAuC;AACnCE,MAAAA,MAAM,CAACC,IAAP,CAAYlF,QAAQ,CAAC+E,YAArB,EAAmC3B,OAAnC,CAA2C,UAAA+B,IAAI;AAAA,eAAIJ,YAAY,CAACI,IAAD,CAAZ,GAAqBF,MAAM,CAACG,MAAP,CAAcL,YAAY,CAACI,IAAD,CAA1B,EAAkCnF,QAAQ,CAAC+E,YAAT,CAAsBI,IAAtB,CAAlC,CAAzB;AAAA,OAA/C;AACH,KAFD,MAEO,IAAIpF,KAAK,CAACgF,YAAV,EAAwB;AAC3BE,MAAAA,MAAM,CAACC,IAAP,CAAYnF,KAAK,CAACgF,YAAlB,EAAgC3B,OAAhC,CAAwC,UAAA+B,IAAI;AAAA,eAAIJ,YAAY,CAACI,IAAD,CAAZ,GAAqBF,MAAM,CAACG,MAAP,CAAcL,YAAY,CAACI,IAAD,CAA1B,EAAkCpF,KAAK,CAACgF,YAAN,CAAmBI,IAAnB,CAAlC,CAAzB;AAAA,OAA5C;AACH;;AAEDpE,qBAAKsE,eAAL,CAAqBN,YAArB;;AAEA,UAAKO,WAAL,GAAmB,EAAnB,CApFyB,CAoFF;;AAEvB,UAAKC,eAAL,GAAuBxF,KAAK,CAACwF,eAAN,KAAyBvF,QAAzB,aAAyBA,QAAzB,uBAAyBA,QAAQ,CAAEuF,eAAnC,KAAsD,EAA7E;AAEA,UAAKC,SAAL,GAAkBxF,QAAQ,IAAIA,QAAQ,CAACwF,SAAtB,IAAoCzF,KAAK,CAACyF,SAA3D;AAEA,UAAK7E,MAAL,GAAc,IAAIV,eAAJ,iCACN,CAAAF,KAAK,SAAL,IAAAA,KAAK,WAAL,YAAAA,KAAK,CAAEY,MAAP,MAAiBX,QAAjB,aAAiBA,QAAjB,uBAAiBA,QAAQ,CAAEW,MAA3B,CADM;AAEV8E,MAAAA,IAAI,EAAE,MAAK3B,WAFD;AAGV4B,MAAAA,mBAAmB,EAAE1F,QAAF,aAAEA,QAAF,uBAAEA,QAAQ,CAAE0F,mBAHrB;AAIVC,MAAAA,UAAU,EAAE,oBAAAC,QAAQ,EAAI;AACpB,YAAIA,QAAQ,KAAKC,qBAASC,UAA1B,EAAsC;AAClC,gBAAK3E,QAAL,CAAc;AAACuD,YAAAA,SAAS,EAAE;AAAZ,WAAd;AACH,SAFD,MAEO,IAAIkB,QAAQ,KAAKC,qBAASE,KAA1B,EAAiC;AACpC,gBAAK5E,QAAL,CAAc;AAACuD,YAAAA,SAAS,EAAE;AAAZ,WAAd;AACH,SAFM,MAEA;AACH,gBAAKvD,QAAL,CAAc;AAACuD,YAAAA,SAAS,EAAE;AAAZ,WAAd;AACH;AACJ,OAZS;AAaVsB,MAAAA,OAAO,EAAE,iBAACC,OAAD,EAAUC,OAAV,EAAsB;AAC3BnF,yBAAKC,WAAL,CAAiB,MAAKL,MAAL,CAAYC,UAA7B,EAD2B,CAG3B;;;AACA,cAAKD,MAAL,CAAYwF,eAAZ,CAA4B,eAA5B,EAA6C,MAAKC,qBAAlD,EACKC,IADL,CACU;AAAA,iBAAM,MAAKC,eAAL,EAAN;AAAA,SADV,EAEKD,IAFL,CAEU,UAAA3F,GAAG,EAAI;AACT,gBAAK6F,OAAL,GAAgB,OAAO7F,GAAP,KAAe,WAAf,IAA8BA,GAAG,UAAjC,IAA4CA,GAAG,UAAH,CAAW8F,MAAxD,IAAmE,iBAAlF;AACA,gBAAKvF,aAAL,GAAqB,CAAAP,GAAG,SAAH,IAAAA,GAAG,WAAH,YAAAA,GAAG,CAAEG,MAAL,KAAe,EAApC;AACA,iBAAO,MAAKF,MAAL,CAAY8F,SAAZ,CAAsB,MAAK1C,UAA3B,CAAP;AACH,SANL,EAOKsC,IAPL,CAOU,UAAAK,WAAW,EAAI;AACjB,cAAIC,WAAJ;AAEA,cAAMC,aAAa,GACf,MAAK3F,aAAL,CAAmB4F,IAAnB,KAA4B,MAA5B,IACAH,WADA,IAEAA,WAAW,CAAC7F,MAFZ,IAGA6F,WAAW,CAAC7F,MAAZ,CAAmB4E,IAHnB,IAIAiB,WAAW,CAAC7F,MAAZ,CAAmBiG,OAJnB,IAKA,CAACJ,WAAW,CAAC7F,MAAZ,CAAmBkG,oBALpB,IAMArH,MAAM,CAACW,QAAP,CAAgB2G,IAAhB,KAAyB,gBAP7B,CAHiB,CAYjB;;AACA,cAAI,CAAC,MAAKC,aAAN,IAAuB,MAAKzB,SAA5B,IAAyCoB,aAA7C,EAA4D;AACxD,kBAAKK,aAAL,GAAqB,IAArB;AAEAC,YAAAA,MAAM,CAACC,IAAP,CAAY;AACRC,cAAAA,GAAG,EAAE,MAAK5B,SADF;AAER6B,cAAAA,OAAO,qBAAcX,WAAW,CAAC7F,MAAZ,CAAmB4E,IAAjC,cAAyCiB,WAAW,CAAC7F,MAAZ,CAAmBiG,OAA5D,CAFC;AAGRQ,cAAAA,YAAY,EAAE,CACV,IAAIC,kBAAkB,CAACC,MAAvB,EADU;AAHN,aAAZ;AAOH,WAvBgB,CAyBjB;AACA;;;AACA,cAAI,CAAC,MAAKC,YAAN,IAAsBb,aAA1B,EAAyC;AACrC,kBAAKa,YAAL,GAAoB,IAApB;AAEAd,YAAAA,WAAW,GAAG,MAAKhG,MAAL,CAAY8F,SAAZ,CAAsB,kBAAtB,EACTJ,IADS,CACJ,UAAAqB,OAAO,EAAI;AACb,kBAAIA,OAAO,IAAIA,OAAO,UAAlB,IAA6BA,OAAO,UAAP,CAAeC,IAAhD,EAAsD;AAClDT,gBAAAA,MAAM,CAACU,cAAP,CAAsB,UAAAC,KAAK;AAAA,yBACvBA,KAAK,CAACC,OAAN,CAAc;AAACrH,oBAAAA,EAAE,EAAEiH,OAAO,UAAP,CAAeC;AAApB,mBAAd,CADuB;AAAA,iBAA3B;AAEH;AACJ,aANS,CAAd;AAOH;;AAEDhB,UAAAA,WAAW,GAAGA,WAAW,IAAIoB,OAAO,CAACC,OAAR,EAA7B;AAEArB,UAAAA,WAAW,CACNN,IADL,CACU,YAAM;AACR,gBAAIK,WAAJ,EAAiB;AACb,oBAAK7F,MAAL,GAAc6F,WAAd,aAAcA,WAAd,uBAAcA,WAAW,CAAE7F,MAA3B;;AACA,oBAAKoH,aAAL,CAAmBvB,WAAW,UAA9B,EAAuCA,WAAW,CAACwB,eAAnD,EAFa,CAEwD;;;AACrE,oBAAK5C,WAAL,GAAmBjD,IAAI,CAAC8F,KAAL,CAAW9F,IAAI,CAACC,SAAL,CAAeoE,WAAW,UAA1B,CAAX,CAAnB;;AACA,oBAAKvF,QAAL,CAAc;AAAC,0BAAQuF,WAAW,UAApB;AAA6B/B,gBAAAA,MAAM,EAAE,IAArC;AAA2CzD,gBAAAA,UAAU,EAAE,MAAKE,aAAL;AAAvD,eAAd,EAA4F;AAAA,uBACxF,MAAKgH,iBAAL,IAA0B,MAAKA,iBAAL,EAD8D;AAAA,eAA5F;AAEH,aAND,MAMO;AACHjG,cAAAA,OAAO,CAACC,IAAR,CAAa,+BAAb;;AACA,oBAAKjB,QAAL,CAAc;AAAC,0BAAQ,EAAT;AAAawD,gBAAAA,MAAM,EAAE,IAArB;AAA2BzD,gBAAAA,UAAU,EAAE,MAAKE,aAAL;AAAvC,eAAd,EAA4E;AAAA,uBAAM,MAAKgH,iBAAL,IAA0B,MAAKA,iBAAL,EAAhC;AAAA,eAA5E;AACH;AACJ,WAZL;AAaH,SA7DL;AA8DH,OA/ES;AAgFVC,MAAAA,OAAO,EAAE,iBAAAC,GAAG,EAAI;AACZnG,QAAAA,OAAO,CAACoG,KAAR,CAAcD,GAAd;;AACA,cAAKE,SAAL,CAAeF,GAAf;AACH;AAnFS,OAAd;AA1FyB;AA+K5B;;;;;AAkBD;AACJ;AACA;AACI,iCAAoB;AAChB5I,MAAAA,MAAM,CAAC+I,gBAAP,CAAwB,QAAxB,EAAkC,KAAKC,QAAvC,EAAiD,IAAjD;AACAhJ,MAAAA,MAAM,CAAC+I,gBAAP,CAAwB,SAAxB,EAAmC,KAAKE,gBAAxC,EAA0D,KAA1D;;AACA;AACH;AAED;AACJ;AACA;;;;WACI,gCAAuB;AACnBjJ,MAAAA,MAAM,CAACkJ,mBAAP,CAA2B,QAA3B,EAAqC,KAAKF,QAA1C,EAAoD,IAApD;AACAhJ,MAAAA,MAAM,CAACkJ,mBAAP,CAA2B,SAA3B,EAAsC,KAAKD,gBAA3C,EAA6D,KAA7D;;AACA;AACH;;;;AA8DD;AACJ;AACA;AACA;AACA;AACI,2BAAuB;AAAA,UAAXlD,IAAW,uEAAJ,EAAI;AACnB,aAAO,uBAAMjE,kBAAMC,YAAN,CAAmBgE,IAAnB,CAAN,CAAP;AACH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,sBAAa9D,KAAb,EAAoB;AAChB,aAAOA,KAAK,CAAC8D,IAAb;AACH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,sBAAa9D,KAAb,EAAoB;AAChB,aAAOA,KAAK,CAACkH,OAAN,CAAcC,IAArB;AACH;AAED;AACJ;AACA;;;;WACI,uBAAc;AAAA;;AACV,UAAMjH,SAAS,GAAG,KAAKwC,KAAL,CAAWxC,SAA7B,CADU,CAGV;;AACA,UAAMN,YAAY,GAAGM,SAAS,KAAK,MAAd,GAAuB,MAAvB,GAChBA,SAAS,KAAK,MAAd,GAAuB,SAAvB,GACIA,SAAS,KAAK,SAAd,GAA0B,OAA1B,GAAoC,MAF7C;;AAIAL,wBAAME,YAAN,CAAmBH,YAAnB;;AAEA,UAAMI,KAAK,GAAG,KAAKC,WAAL,CAAiBL,YAAjB,CAAd;AAEA,WAAKJ,QAAL,CAAc;AACVQ,QAAAA,KAAK,EAALA,KADU;AAEVE,QAAAA,SAAS,EAAE,KAAKJ,YAAL,CAAkBE,KAAlB,CAFD;AAGVG,QAAAA,SAAS,EAAE,KAAKC,YAAL,CAAkBJ,KAAlB;AAHD,OAAd,EAIG,YAAM;AACL,QAAA,MAAI,CAAC5B,KAAL,CAAWiC,aAAX,IAA4B,MAAI,CAACjC,KAAL,CAAWiC,aAAX,CAAyBT,YAAzB,CAA5B;AACA,QAAA,MAAI,CAACU,cAAL,IAAuB,MAAI,CAACA,cAAL,CAAoBV,YAApB,CAAvB;AACH,OAPD;AAQH;AAED;AACJ;AACA;AACA;;;;WACI,2BAAkB;AACd,aAAO,KAAKZ,MAAL,CAAY2F,eAAZ,EAAP;AACH;AAED;AACJ;AACA;AACA;;;;WACI,yBAAgB;AACZ,aAAO5G,MAAM,CAACqJ,cAAP,CAAsBnJ,OAAtB,CAA8B,gBAA9B,MAAoD,MAApD,IAA8D,CAAC,CAAC,KAAKqB,aAAL,CAAmBC,UAA1F;AACH;AAED;AACJ;AACA;AACA;;;;WACI,6BAAoB,CACnB;AAED;AACJ;AACA;AACA;AACA;;;;WACI,iBAAQ8H,KAAR,EAAe;AACX,UAAIC,MAAM,GAAG,EAAb;;AACA,WAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGF,KAAK,CAACzF,MAA1B,EAAkC2F,CAAC,EAAnC,EAAuC;AACnCD,QAAAA,MAAM,IAAIE,MAAM,CAACC,YAAP,CAAoB,KAAK7C,OAAL,CAAa2C,CAAC,GAAG,KAAK3C,OAAL,CAAahD,MAA9B,EAAsC8F,UAAtC,CAAiD,CAAjD,IAAsDL,KAAK,CAACK,UAAN,CAAiBH,CAAjB,CAA1E,CAAV;AACH;;AACD,aAAOD,MAAP;AACH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,iBAAQD,KAAR,EAAe;AACX,UAAIC,MAAM,GAAG,EAAb;;AACA,WAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGF,KAAK,CAACzF,MAA1B,EAAkC2F,CAAC,EAAnC,EAAuC;AACnCD,QAAAA,MAAM,IAAIE,MAAM,CAACC,YAAP,CAAoB,KAAK7C,OAAL,CAAa2C,CAAC,GAAG,KAAK3C,OAAL,CAAahD,MAA9B,EAAsC8F,UAAtC,CAAiD,CAAjD,IAAsDL,KAAK,CAACK,UAAN,CAAiBH,CAAjB,CAA1E,CAAV;AACH;;AACD,aAAOD,MAAP;AACH;AAED;AACJ;AACA;AACA;;;;WACI,yBAAgB;AACZ,UAAM5I,QAAQ,GAAG4D,oBAAOC,WAAP,EAAjB;;AACA,UAAI7D,QAAQ,CAAC8D,GAAT,KAAiB,KAAKE,KAAL,CAAWC,WAAhC,EAA6C;AACzC,aAAKgF,SAAL,CAAejJ,QAAQ,CAAC8D,GAAxB;AACH;AACJ;AAED;AACJ;AACA;AACA;AACA;;;;WACI,mBAAUA,GAAV,EAAeoF,KAAf,EAAsB;AAClB7J,MAAAA,MAAM,CAACC,YAAP,CAAoB,KAAKmE,WAAL,GAAmB,UAAvC,IAAqDK,GAArD;AACA,WAAKhD,QAAL,CAAc;AAACmD,QAAAA,WAAW,EAAEH,GAAd;AAAmBI,QAAAA,cAAc,EAAEgF;AAAnC,OAAd;AACH;AAED;AACJ;AACA;AACA;AACA;;;;WACI,uBAAcvJ,QAAd,EAAwB;AAAA;;AACpB;AACA,WAAKuF,eAAL,IAAwB,KAAKA,eAAL,CAAqBnC,OAArB,CAA6B,UAAAoG,IAAI,EAAI;AACzD,YAAIxJ,QAAQ,CAACwJ,IAAD,CAAZ,EAAoB;AAChBxJ,UAAAA,QAAQ,CAACwJ,IAAD,CAAR,GAAiB,MAAI,CAACC,OAAL,CAAazJ,QAAQ,CAACwJ,IAAD,CAArB,CAAjB;AACH;AACJ,OAJuB,CAAxB;AAMA,aAAO,IAAP;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;;;;WACI,uBAAcxJ,QAAd,EAAwBkI,eAAxB,EAAyC;AAAA;;AACrC;AACA,WAAK3C,eAAL,IAAwB,KAAKA,eAAL,CAAqBnC,OAArB,CAA6B,UAAAoG,IAAI,EAAI;AACzD,YAAIxJ,QAAQ,CAACwJ,IAAD,CAAZ,EAAoB;AAChBxJ,UAAAA,QAAQ,CAACwJ,IAAD,CAAR,GAAiB,MAAI,CAACE,OAAL,CAAa1J,QAAQ,CAACwJ,IAAD,CAArB,CAAjB;AACH;AACJ,OAJuB,CAAxB;AAKAtB,MAAAA,eAAe,IAAIA,eAAe,CAAC9E,OAAhB,CAAwB,UAAAoG,IAAI,EAAI;AAC/C,QAAA,MAAI,CAACjE,eAAL,GAAuB,MAAI,CAACA,eAAL,IAAwB,EAA/C;AACA,SAAC,MAAI,CAACA,eAAL,CAAqBoE,QAArB,CAA8BH,IAA9B,CAAD,IAAwC,MAAI,CAACjE,eAAL,CAAqBqE,IAArB,CAA0BJ,IAA1B,CAAxC;;AACA,YAAIxJ,QAAQ,CAACwJ,IAAD,CAAZ,EAAoB;AAChBxJ,UAAAA,QAAQ,CAACwJ,IAAD,CAAR,GAAiB,MAAI,CAACE,OAAL,CAAa1J,QAAQ,CAACwJ,IAAD,CAArB,CAAjB;AACH;AACJ,OANkB,CAAnB;AAOH;AAED;AACJ;AACA;AACA;;;;WACI,kCAAyB;AAAA;;AACrB,aAAO,IAAIzB,OAAJ,CAAY,UAAAC,OAAO,EAAI;AAC1B,QAAA,MAAI,CAACrH,MAAL,CAAYkJ,OAAZ,CAAoBC,IAApB,CAAyB,eAAzB,EAA0C,QAA1C,EAAoD,UAApD,EAAgE,IAAhE,EAAsE,UAACxB,GAAD,EAAMyB,GAAN,EAAc;AAChF,cAAIzB,GAAJ,EAAS;AACLN,YAAAA,OAAO,CAAC,EAAD,CAAP;AACH,WAFD,MAEO;AACHA,YAAAA,OAAO,CAAC+B,GAAG,CAACC,IAAJ,CAAS9G,MAAT,CAAgB,UAAA+G,IAAI;AAAA,qBAAIA,IAAI,CAACjB,KAAL,CAAWnI,MAAX,CAAkBqJ,aAAtB;AAAA,aAApB,EAAyDC,GAAzD,CAA6D,UAAAF,IAAI;AAAA,qBAAIA,IAAI,CAACjB,KAAT;AAAA,aAAjE,CAAD,CAAP;AACH;AACJ,SAND;AAOH,OARM,CAAP;AASH;AAED;AACJ;AACA;AACA;;;;WACI,wBAAehC,IAAf,EAAqB;AAAA;;AACjB,aAAO,IAAIe,OAAJ,CAAY,UAACC,OAAD,EAAUoC,MAAV,EAAqB;AACpC,QAAA,MAAI,CAACzJ,MAAL,CAAYkJ,OAAZ,CAAoBC,IAApB,CAAyB,aAAzB,EAAwC9C,IAAI,IAAI,MAAI,CAACnG,MAAL,CAAYmG,IAA5D,EAAkE,UAACqD,EAAD,EAAKC,KAAL,EAAe;AAC7E,cAAMC,IAAI,GAAG,CAAC;AAAC9E,YAAAA,IAAI,EAAE,sBAAsB1E,iBAAKoC,CAAL,CAAO,sBAAP,CAA7B;AAA6DqH,YAAAA,OAAO,EAAE,SAAtE;AAAiFC,YAAAA,MAAM,EAAE;AAAzF,WAAD,CAAb;AACA,cAAMC,IAAI,GAAG,CAAC;AAACjF,YAAAA,IAAI,EAAE,WAAP;AAAyB+E,YAAAA,OAAO,EAAE,IAAlC;AAA6CC,YAAAA,MAAM,EAAE;AAArD,WAAD,CAAb;;AACA,cAAIH,KAAJ,EAAW;AACPtD,YAAAA,IAAI,GAAGsD,KAAP;;AACA,gBAAItD,IAAI,UAAJ,CAAY2D,QAAZ,IAAwB3D,IAAI,UAAJ,CAAY2D,QAAZ,CAAqBC,iBAAjD,EAAoE;AAChE3F,cAAAA,MAAM,CAACC,IAAP,CAAY8B,IAAI,UAAJ,CAAY2D,QAAZ,CAAqBC,iBAAjC,EAAoDxH,OAApD,CAA4D,UAAAyH,GAAG;AAAA,uBAC3D7D,IAAI,UAAJ,CAAY2D,QAAZ,CAAqBC,iBAArB,CAAuCC,GAAvC,EAA4CzH,OAA5C,CAAoD,UAAA0H,KAAK,EAAI;AACzD,sBAAIA,KAAK,CAACL,MAAN,KAAiB,MAArB,EAA6B;AACzBF,oBAAAA,IAAI,CAACX,IAAL,CAAU;AAACnE,sBAAAA,IAAI,EAAE,MAAMqF,KAAK,CAACL,MAAZ,GAAqB,IAArB,GAA4BK,KAAK,CAACN,OAAlC,GAA4C,KAA5C,GAAoDK,GAA3D;AAAgEL,sBAAAA,OAAO,EAAEM,KAAK,CAACN,OAA/E;AAAwFC,sBAAAA,MAAM,EAAE;AAAhG,qBAAV;AACH,mBAFD,MAEO;AACHC,oBAAAA,IAAI,CAACd,IAAL,CAAU;AAACnE,sBAAAA,IAAI,EAAE,MAAMqF,KAAK,CAACL,MAAZ,GAAqB,IAArB,GAA4BK,KAAK,CAACN,OAAlC,GAA4C,KAA5C,GAAoDK,GAA3D;AAAgEL,sBAAAA,OAAO,EAAEM,KAAK,CAACN,OAA/E;AAAwFC,sBAAAA,MAAM,EAAE;AAAhG,qBAAV;AACH;AACJ,iBAND,CAD2D;AAAA,eAA/D;AAQH;;AACDC,YAAAA,IAAI,CAACtH,OAAL,CAAa,UAAAiH,EAAE;AAAA,qBAAIE,IAAI,CAACX,IAAL,CAAUS,EAAV,CAAJ;AAAA,aAAf;AACH;;AACDrC,UAAAA,OAAO,CAACuC,IAAD,CAAP;AACH,SAlBD;AAmBH,OApBM,CAAP;AAqBH;AAED;AACJ;AACA;AACA;;;;WACI,gBAAOQ,OAAP,EAAgB;AAAA;;AACZ,UAAIC,MAAJ;;AACA,UAAI,KAAK3G,KAAL,CAAWO,oBAAf,EAAqC;AACjC,aAAKzD,QAAL,CAAc;AAACqD,UAAAA,SAAS,EAAE,KAAKH,KAAL,CAAWO;AAAvB,SAAd;AACA;AACH;;AAED,WAAKjE,MAAL,CAAY8F,SAAZ,CAAsB,KAAK1C,UAA3B,EACKsC,IADL,CACU,UAAA4E,OAAO,EAAI;AACbD,QAAAA,MAAM,GAAGC,OAAO,IAAI,EAApB;;AAEA,aAAK,IAAMC,CAAX,IAAgB,MAAI,CAAC7G,KAAL,UAAhB,EAAmC;AAC/B,cAAI,MAAI,CAACA,KAAL,WAAkB8G,cAAlB,CAAiCD,CAAjC,CAAJ,EAAyC;AACrC,gBAAI,MAAI,CAAC7G,KAAL,WAAkB6G,CAAlB,MAAyB,IAA7B,EAAmC;AAC/BF,cAAAA,MAAM,UAAN,CAAcE,CAAd,IAAmB,IAAnB;AACH,aAFD,MAGA,IAAI,MAAI,CAAC7G,KAAL,WAAkB6G,CAAlB,MAAyBzH,SAA7B,EAAwC;AACpCuH,cAAAA,MAAM,UAAN,CAAcE,CAAd,IAAmB7I,IAAI,CAAC8F,KAAL,CAAW9F,IAAI,CAACC,SAAL,CAAe,MAAI,CAAC+B,KAAL,WAAkB6G,CAAlB,CAAf,CAAX,CAAnB;AACH,aAFD,MAEO;AACH,qBAAOF,MAAM,UAAN,CAAcE,CAAd,CAAP;AACH;AACJ;AACJ;;AAED,YAAI,MAAI,CAAC7G,KAAL,CAAWxD,MAAf,EAAuB;AACnB,eAAK,IAAMwC,CAAX,IAAgB,MAAI,CAACgB,KAAL,CAAWxD,MAA3B,EAAmC;AAC/B,gBAAI,MAAI,CAACwD,KAAL,CAAWxD,MAAX,CAAkBwC,CAAlB,MAAyB,IAA7B,EAAmC;AAC/B2H,cAAAA,MAAM,CAACnK,MAAP,CAAcwC,CAAd,IAAmB,IAAnB;AACH,aAFD,MAGA,IAAI,MAAI,CAACgB,KAAL,CAAWxD,MAAX,CAAkBwC,CAAlB,MAAyBI,SAA7B,EAAwC;AACpCuH,cAAAA,MAAM,CAACnK,MAAP,CAAcwC,CAAd,IAAmBhB,IAAI,CAAC8F,KAAL,CAAW9F,IAAI,CAACC,SAAL,CAAe,MAAI,CAAC+B,KAAL,CAAWxD,MAAX,CAAkBwC,CAAlB,CAAf,CAAX,CAAnB;AACH,aAFD,MAEO;AACH,qBAAO2H,MAAM,CAACnK,MAAP,CAAcwC,CAAd,CAAP;AACH;AACJ;AACJ;;AAED,YAAI,MAAI,CAAC+H,aAAL,CAAmBJ,MAAM,UAAzB,MAAsC,KAA1C,EAAiD;AAC7C,iBAAO,MAAI,CAACrK,MAAL,CAAY0K,SAAZ,CAAsB,MAAI,CAACtH,UAA3B,EAAuCiH,MAAvC,CAAP;AACH,SAFD,MAEO;AACH,iBAAOjD,OAAO,CAACqC,MAAR,CAAe,uBAAf,CAAP;AACH;AACJ,OAnCL,EAoCK/D,IApCL,CAoCU,YAAM;AACR,QAAA,MAAI,CAACf,WAAL,GAAmB0F,MAAM,UAAzB;AACAM,QAAAA,UAAU,CAAC7G,OAAX,GAAqB,KAArB;;AACA,QAAA,MAAI,CAACtD,QAAL,CAAc;AAACsD,UAAAA,OAAO,EAAE;AAAV,SAAd;;AACAsG,QAAAA,OAAO,IAAIjL,UAAU,CAACyL,OAAX,EAAX;AACH,OAzCL,WA0CW,UAAA/K,CAAC,EAAI;AACR2B,QAAAA,OAAO,CAACoG,KAAR,sCAA4C/H,CAA5C;AACH,OA5CL;AA6CH;AAED;AACJ;AACA;AACA;;;;WACI,uBAAc;AAAA;;AACV,UAAI,CAAC,KAAK6D,KAAL,CAAWQ,KAAhB,EAAuB,OAAO,IAAP;AACvB,0BACI,gCAAC,oBAAD;AACI,QAAA,YAAY,EAAE;AACV2G,UAAAA,QAAQ,EAAE,QADA;AAEVC,UAAAA,UAAU,EAAE;AAFF,SADlB;AAKI,QAAA,IAAI,EAAE,IALV;AAMI,QAAA,gBAAgB,EAAE,IANtB;AAOI,QAAA,OAAO,EAAE;AAAA,iBAAM,MAAI,CAACtK,QAAL,CAAc;AAAC0D,YAAAA,KAAK,EAAE;AAAR,WAAd,CAAN;AAAA,SAPb;AAQI,QAAA,YAAY,EAAE;AACV,8BAAoB;AADV,SARlB;AAWI,QAAA,OAAO,eAAE;AAAM,UAAA,EAAE,EAAC;AAAT,WAAuB,KAAKR,KAAL,CAAWQ,KAAlC,CAXb;AAYI,QAAA,MAAM,EAAE,cACJ,gCAAC,sBAAD;AACI,UAAA,GAAG,EAAC,OADR;AAEI,wBAAW,OAFf;AAGI,UAAA,KAAK,EAAC,SAHV;AAII,UAAA,SAAS,EAAE,KAAK9E,KAAL,CAAW2L,OAAX,CAAmBC,KAJlC;AAKI,UAAA,OAAO,EAAE;AAAA,mBAAM,MAAI,CAACxK,QAAL,CAAc;AAAC0D,cAAAA,KAAK,EAAE;AAAR,aAAd,CAAN;AAAA,WALb;AAMI,UAAA,IAAI,EAAC;AANT,wBAOI,gCAAC,iBAAD,OAPJ,CADI;AAZZ,QADJ;AA0BH;AAED;AACJ;AACA;AACA;;;;;AAeI;AACJ;AACA;AACA;AACI,2BAAc;AAAA;;AACV,UAAI,CAAC,KAAKR,KAAL,CAAWG,SAAhB,EAA2B;AACvB,eAAO,IAAP;AACH,OAFD,MAEO;AACH,4BAAO,gCAAC,iBAAD;AAAa,UAAA,IAAI,EAAE,KAAKH,KAAL,CAAWG,SAA9B;AAAyC,UAAA,OAAO,EAAE;AAAA,mBAAM,MAAI,CAACrD,QAAL,CAAc;AAACqD,cAAAA,SAAS,EAAE;AAAZ,aAAd,CAAN;AAAA;AAAlD,UAAP;AACH;AACJ;AAED;AACJ;AACA;AACA;;;;WACI,sBAAaoH,OAAb,EAAqB;AACjBA,MAAAA,OAAM,GAAGA,OAAM,IAAI,KAAKvH,KAAL,UAAnB;AACA,UAAMwH,SAAS,GAAIxJ,IAAI,CAACC,SAAL,CAAesJ,OAAf,MAA2BvJ,IAAI,CAACC,SAAL,CAAe,KAAKgD,WAApB,CAA9C;;AAEA,UAAGuG,SAAH,EAAc;AACVP,QAAAA,UAAU,CAAC7G,OAAX,GAAqB,IAArB;AACH,OAFD,MAEO;AACH6G,QAAAA,UAAU,CAAC7G,OAAX,GAAqB,KAArB;AACH;;AAED,aAAOoH,SAAP;AACH;AAED;AACJ;AACA;AACA;;;;WACI,sBAAaC,SAAb,EAAwB;AACpB,UAAIzJ,IAAI,CAACC,SAAL,CAAewJ,SAAf,MAA8BzJ,IAAI,CAACC,SAAL,CAAe,KAAK+B,KAAL,UAAf,CAAlC,EAAqE;AACjE,aAAKlD,QAAL,CAAc;AAAC,oBAAQ2K,SAAT;AAAoBrH,UAAAA,OAAO,EAAE,KAAKsH,YAAL,CAAkBD,SAAlB;AAA7B,SAAd;AACH;AACJ;AAED;AACJ;AACA;AACA;;;;WACI,+BAAsBtH,SAAtB,EAAiC;AAC7B,UAAI,KAAKH,KAAL,CAAWO,oBAAX,KAAoCJ,SAAxC,EAAmD;AAC/C,aAAKrD,QAAL,CAAc;AAACyD,UAAAA,oBAAoB,EAAEJ;AAAvB,SAAd;AACH;AACJ;AAED;AACJ;AACA;AACA;;;;WACI,kCAAyB;AAAA;;AACrB,UAAI,KAAKH,KAAL,CAAWS,aAAf,EAA8B;AAC1B,4BAAO,gCAAC,4BAAD;AACH,UAAA,KAAK,EAAE,KAAKT,KAAL,CAAW1C,KADf;AAEH,UAAA,QAAQ,EAAE,KAAKqC,QAFZ;AAGH,UAAA,eAAe,EAAE,KAAKK,KAAL,CAAW3B,KAAX,KAAqB,IAArB,IAA6B,KAAK2B,KAAL,CAAW3B,KAAX,KAAqB,IAAlD,IAA0D,KAAK2B,KAAL,CAAW3B,KAAX,KAAqB,IAH7F;AAIH,UAAA,OAAO,EAAE,KAAK2B,KAAL,CAAWI,OAJjB;AAKH,UAAA,MAAM,EAAE,gBAACsG,OAAD;AAAA,mBAAa,OAAI,CAACiB,MAAL,CAAYjB,OAAZ,CAAb;AAAA,WALL;AAMH,UAAA,OAAO,EAAE;AAAA,mBAAMjL,UAAU,CAACyL,OAAX,EAAN;AAAA;AANN,UAAP;AAQH,OATD,MASO;AACH,eAAO,IAAP;AACH;AACJ;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;;;;WACI,4BAAmB7K,GAAnB,EAAwBuL,KAAxB,EAA+BjD,KAA/B,EAAsC;AAClC,UAAI,QAAOiD,KAAP,MAAiB,QAArB,EAA+B;AAC3BA,QAAAA,KAAK,GAAGA,KAAK,CAAChJ,KAAN,CAAY,GAAZ,CAAR;AACH;;AACD,UAAMuG,IAAI,GAAGyC,KAAK,CAACC,KAAN,EAAb;;AACA,UAAI,CAACD,KAAK,CAAC1I,MAAX,EAAmB;AACf,YAAIyF,KAAK,IAAI,QAAOA,KAAP,MAAiB,QAA9B,EAAwC;AACpC,cAAI3G,IAAI,CAACC,SAAL,CAAe5B,GAAG,CAAC8I,IAAD,CAAlB,MAA8BnH,IAAI,CAACC,SAAL,CAAe0G,KAAf,CAAlC,EAAyD;AACrDtI,YAAAA,GAAG,CAAC8I,IAAD,CAAH,GAAYR,KAAZ;AACA,mBAAO,IAAP;AACH;AACJ,SALD,MAKO,IAAItI,GAAG,CAAC8I,IAAD,CAAH,KAAcR,KAAlB,EAAyB;AAC5BtI,UAAAA,GAAG,CAAC8I,IAAD,CAAH,GAAYR,KAAZ;AACA,iBAAO,IAAP;AACH,SAHM,MAGA;AACH,iBAAO,KAAP;AACH;AAEJ,OAbD,MAaO;AACHtI,QAAAA,GAAG,CAAC8I,IAAD,CAAH,GAAY9I,GAAG,CAAC8I,IAAD,CAAH,IAAa,EAAzB;;AACA,YAAI,QAAO9I,GAAG,CAAC8I,IAAD,CAAV,MAAqB,QAAzB,EAAmC;AAC/B,gBAAM,IAAI2C,KAAJ,CAAU,eAAe3C,IAAf,GAAsB,qBAAtB,WAAqD9I,GAAG,CAAC8I,IAAD,CAAxD,CAAV,CAAN;AACH;;AACD,eAAO,KAAK4C,kBAAL,CAAwB1L,GAAG,CAAC8I,IAAD,CAA3B,EAAmCyC,KAAnC,EAA0CjD,KAA1C,CAAP;AACH;AACJ;AAED;AACJ;AACA;AACA;AACA;AACA;;;;WACI,2BAAkBQ,IAAlB,EAAwBR,KAAxB,EAA+BqD,EAA/B,EAAmC;AAC/B,UAAMT,QAAM,GAAGvJ,IAAI,CAAC8F,KAAL,CAAW9F,IAAI,CAACC,SAAL,CAAe,KAAK+B,KAAL,UAAf,CAAX,CAAf;;AACA,UAAI,KAAK+H,kBAAL,CAAwBR,QAAxB,EAAgCpC,IAAhC,EAAsCR,KAAtC,CAAJ,EAAkD;AAC9C,YAAMvE,OAAO,GAAG,KAAKsH,YAAL,CAAkBH,QAAlB,CAAhB;AACA,aAAKzK,QAAL,CAAc;AAAC,oBAAAyK,QAAD;AAASnH,UAAAA,OAAO,EAAPA;AAAT,SAAd,EAAiC4H,EAAjC;AACH;AACJ;AAED;AACJ;AACA;AACA;;;;WACI,mBAAUC,IAAV,EAAgB;AACZ,WAAKnL,QAAL,CAAc;AAACqD,QAAAA,SAAS,EAAE8H;AAAZ,OAAd;AACH;AAED;AACJ;AACA;AACA;;;;WACI,mBAAUzH,KAAV,EAAiB;AACb,WAAK1D,QAAL,CAAc;AAAC0D,QAAAA,KAAK,EAALA;AAAD,OAAd;AACH;AAED;AACJ;AACA;AACA;;;;WACI,kBAAS;AACL,UAAI,CAAC,KAAKR,KAAL,CAAWM,MAAhB,EAAwB;AACpB,4BAAO,gCAAC,kBAAD;AAAQ,UAAA,KAAK,EAAE,KAAKN,KAAL,CAAWvC;AAA1B,UAAP;AACH;;AAED,0BAAO;AAAK,QAAA,SAAS,EAAC;AAAf,SACF,KAAKyK,WAAL,EADE,EAEF,KAAKC,WAAL,EAFE,EAGF,KAAKC,sBAAL,EAHE,CAAP;AAKH;;;;AAreD;AACJ;AACA;AACA;AACI,wBAAkB;AACd;AACR;AACA;AACA;AACA;AAEQ,UAAMC,KAAK,GAAG;AACVC,QAAAA,EAAE,EAAE,CADM;AAEVC,QAAAA,EAAE,EAAE,GAFM;AAGVC,QAAAA,EAAE,EAAE,GAHM;AAIVC,QAAAA,EAAE,EAAE,IAJM;AAKVC,QAAAA,EAAE,EAAE;AALM,OAAd;AAOA,UAAMrK,KAAK,GAAGhD,MAAM,CAACsN,UAArB;AACA,UAAM9H,IAAI,GAAGD,MAAM,CAACC,IAAP,CAAYwH,KAAZ,EAAmBO,OAAnB,EAAb;AACA,UAAMC,aAAa,GAAGhI,IAAI,CAACiI,IAAL,CAAU,UAAAC,GAAG;AAAA,eAAI1K,KAAK,IAAIgK,KAAK,CAACU,GAAD,CAAlB;AAAA,OAAb,CAAtB;AAEA,aAAOF,aAAa,IAAI,IAAxB;AACH;;;WA8SD,mBAAiB;AACb,UAAI,OAAOxN,MAAM,CAAC2N,MAAd,KAAyB,WAAzB,IAAwC3N,MAAM,CAAC2N,MAAnD,EAA2D;AACvD,YAAI;AACA,cAAI3N,MAAM,CAAC2N,MAAP,CAAcC,aAAd,IAA+B,OAAO5N,MAAM,CAAC2N,MAAP,CAAcC,aAAd,CAA4B3B,KAAnC,KAA6C,UAAhF,EAA4F;AACxFjM,YAAAA,MAAM,CAAC2N,MAAP,CAAcC,aAAd,CAA4B3B,KAA5B;AACH,WAFD,MAEO;AACHjM,YAAAA,MAAM,CAAC2N,MAAP,CAAcE,WAAd,CAA0B,OAA1B,EAAmC,GAAnC;AACH;AACJ,SAND,CAME,OAAO/M,CAAP,EAAU;AACRd,UAAAA,MAAM,CAAC2N,MAAP,CAAcE,WAAd,CAA0B,OAA1B,EAAmC,GAAnC;AACH;AACJ;AACJ;;;;EA5kBoBtJ,mB;;AAmuBzBnE,UAAU,CAAC0N,SAAX,GAAuB;AACnB1J,EAAAA,WAAW,EAAE2J,sBAAUC,MADJ;AACY;AAC/B1L,EAAAA,aAAa,EAAEyL,sBAAUE,IAFN;AAEY;AAC/BhN,EAAAA,MAAM,EAAE8M,sBAAUG,MAHC;AAGO;AAC1BrI,EAAAA,eAAe,EAAEkI,sBAAUI,KAJR;AAIe;AAClC/I,EAAAA,aAAa,EAAE2I,sBAAUK,IALN;AAKY;AAC/B5N,EAAAA,UAAU,EAAEuN,sBAAUG,MANH,CAMW;;AANX,CAAvB;eASe9N,U","sourcesContent":["/**\n * Copyright 2018-2021 bluefox <dogafox@gmail.com>\n *\n * MIT License\n *\n **/\nimport React from 'react';\nimport Connection, {PROGRESS} from './Connection';\nimport PropTypes from 'prop-types';\nimport * as Sentry from '@sentry/browser';\nimport * as SentryIntegrations from '@sentry/integrations';\n\nimport DialogError from './Dialogs/Error';\nimport Snackbar from '@mui/material/Snackbar';\nimport IconButton from '@mui/material/IconButton';\n\nimport IconClose from '@mui/icons-material/Close';\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 I18n from './i18n';\n\nimport './index.css';\n\nif (!window.localStorage) {\n window.localStorage = {\n getItem: () => null,\n setItem: () => null,\n };\n}\n\n/**\n * @extends {Router<import('./types').GenericAppProps, import('./types').GenericAppState>}\n */\nclass GenericApp extends Router {\n /**\n * @param {import('./types').GenericAppProps} props\n * @param {import('./types').GenericAppSettings | undefined} settings\n */\n constructor(props, settings) {\n const ConnectionClass = props.Connection || settings.Connection || Connection;\n\n // Remove `!Connection.isWeb() && window.adapterName !== 'material'` when iobroker.socket will support native ws\n if (!ConnectionClass.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 (e) {\n // ignore\n }\n }\n\n super(props);\n\n printPrompt();\n\n let query = (window.location.search || '').replace(/^\\?/, '').replace(/#.*$/, '');\n let args = {};\n query.trim().split('&').filter(t => t.trim()).forEach(b => {\n const parts = b.split('=');\n args[parts[0]] = parts.length === 2 ? parts[1] : true;\n if (args[parts[0]] === 'true') {\n args[parts[0]] = true;\n } else if (args[parts[0]] === 'false') {\n args[parts[0]] = false;\n }\n });\n\n // extract instance from URL\n this.instance = args.instance !== undefined ? parseInt(args.instance, 10) || 0 : (parseInt(window.location.search.slice(1), 10) || 0);\n // extract adapter name from URL\n const tmp = window.location.pathname.split('/');\n this.adapterName = 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 = location.tab || window.localStorage.getItem(this.adapterName + '-adapter') || '';\n\n const themeInstance = this.createTheme();\n\n this.state = {\n selectedTab: 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 && props.bottomButtons) === false ? false : true),\n width: GenericApp.getWidth(),\n };\n\n // init translations\n const translations = {\n 'en': require('./i18n/en.json'),\n 'de': require('./i18n/de.json'),\n 'ru': require('./i18n/ru.json'),\n 'pt': require('./i18n/pt.json'),\n 'nl': require('./i18n/nl.json'),\n 'fr': require('./i18n/fr.json'),\n 'it': require('./i18n/it.json'),\n 'es': require('./i18n/es.json'),\n 'pl': require('./i18n/pl.json'),\n 'zh-cn': require('./i18n/zh-cn.json'),\n };\n\n // merge together\n if (settings && settings.translations) {\n Object.keys(settings.translations).forEach(lang => translations[lang] = Object.assign(translations[lang], settings.translations[lang]));\n } else if (props.translations) {\n Object.keys(props.translations).forEach(lang => translations[lang] = Object.assign(translations[lang], props.translations[lang]));\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 && settings.sentryDSN) || props.sentryDSN;\n\n this.socket = new ConnectionClass({\n ...(props?.socket || settings?.socket),\n name: this.adapterName,\n doNotLoadAllObjects: settings?.doNotLoadAllObjects,\n onProgress: 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.subscribeObject('system.config', this.onSystemConfigChanged)\n .then(() => this.getSystemConfig())\n .then(obj => {\n this._secret = (typeof obj !== 'undefined' && obj.native && obj.native.secret) || 'Zgfr56gFe87jJOM';\n this._systemConfig = obj?.common || {};\n return this.socket.getObject(this.instanceId);\n })\n .then(instanceObj => {\n let waitPromise;\n\n const sentryEnabled =\n this._systemConfig.diag !== 'none' &&\n instanceObj &&\n instanceObj.common &&\n instanceObj.common.name &&\n instanceObj.common.version &&\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: [\n new SentryIntegrations.Dedupe()\n ]\n });\n }\n\n // read UUID and init sentry with it.\n // for backward compatibility it will be processed separately from 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')\n .then(uuidObj => {\n if (uuidObj && uuidObj.native && uuidObj.native.uuid) {\n Sentry.configureScope(scope =>\n scope.setUser({id: uuidObj.native.uuid}));\n }\n });\n }\n\n waitPromise = waitPromise || Promise.resolve();\n\n waitPromise\n .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({native: instanceObj.native, loaded: true, expertMode: this.getExpertMode()}, () =>\n this.onConnectionReady && this.onConnectionReady());\n } else {\n console.warn('Cannot load instance settings');\n this.setState({native: {}, loaded: true, expertMode: this.getExpertMode()}, () => this.onConnectionReady && this.onConnectionReady());\n }\n });\n });\n },\n onError: err => {\n console.error(err);\n this.showError(err);\n }\n });\n }\n\n onSystemConfigChanged = (id, obj) => {\n if (obj && id === 'system.config') {\n if (this.socket.systemLang !== obj?.common.language) {\n this.socket.systemLang = obj?.common.language || 'en';\n I18n.setLanguage(this.socket.systemLang);\n }\n\n if (this._systemConfig.expertMode !== !!obj?.common?.expertMode) {\n this._systemConfig = obj?.common || {};\n this.setState({expertMode: this.getExpertMode()});\n } else {\n this._systemConfig = obj?.common || {};\n }\n }\n }\n\n /**\n * Called immediately after a component is mounted. Setting state here will trigger re-rendering.\n */\n componentDidMount() {\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() {\n window.removeEventListener('resize', this.onResize, true);\n window.removeEventListener('message', this.onReceiveMessage, false);\n super.componentWillUnmount();\n }\n\n onReceiveMessage = message => {\n if (message?.data) {\n if (message.data === 'updateTheme') {\n const newThemeName = Utils.getThemeName()\n Utils.setThemeName(Utils.getThemeName());\n\n const theme = this.createTheme(newThemeName);\n\n this.setState({\n theme,\n themeName: this.getThemeName(theme),\n themeType: this.getThemeType(theme)\n }, () => {\n this.props.onThemeChange && this.props.onThemeChange(newThemeName);\n this.onThemeChanged && this.onThemeChanged(newThemeName);\n });\n } else if (message.data === 'updateExpertMode') {\n this.onToggleExpertMode && this.onToggleExpertMode(this.getExpertMode());\n } else {\n console.warn('Received unknown message: ' + JSON.stringify(message.data));\n }\n }\n };\n\n /**\n * @private\n */\n onResize = () => {\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 * @returns {import('./types').Width}\n */\n static getWidth() {\n /**\n * innerWidth |xs sm md lg xl\n * |-------|-------|-------|-------|------>\n * width | xs | sm | md | lg | xl\n */\n\n const SIZES = {\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]);\n\n return widthComputed || 'xs';\n }\n\n /**\n * Get a theme\n * @param {string} name Theme name\n * @returns {import('./types').Theme}\n */\n createTheme(name = '') {\n return theme(Utils.getThemeName(name));\n }\n\n /**\n * Get the theme name\n * @param {import('./types').Theme} theme Theme\n * @returns {string} Theme name\n */\n getThemeName(theme) {\n return theme.name;\n }\n\n /**\n * Get the theme type\n * @param {import('./types').Theme} theme Theme\n * @returns {string} Theme type\n */\n getThemeType(theme) {\n return theme.palette.mode;\n }\n\n /**\n * Changes the current theme\n */\n toggleTheme() {\n const themeName = this.state.themeName;\n\n // dark => blue => colored => light => dark\n const newThemeName = themeName === 'dark' ? 'blue' :\n (themeName === 'blue' ? 'colored' :\n (themeName === 'colored' ? 'light' : 'dark'));\n\n Utils.setThemeName(newThemeName);\n\n const theme = this.createTheme(newThemeName);\n\n this.setState({\n theme,\n themeName: this.getThemeName(theme),\n themeType: this.getThemeType(theme)\n }, () => {\n this.props.onThemeChange && this.props.onThemeChange(newThemeName);\n this.onThemeChanged && this.onThemeChanged(newThemeName);\n });\n }\n\n /**\n * Gets the system configuration.\n * @returns {Promise<ioBroker.OtherObject>}\n */\n getSystemConfig() {\n return this.socket.getSystemConfig();\n }\n\n /**\n * Get current expert mode\n * @returns {boolean}\n */\n getExpertMode() {\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 onConnectionReady() {\n }\n\n /**\n * Encrypts a string.\n * @param {string} value\n * @returns {string}\n */\n encrypt(value) {\n let result = '';\n for (let i = 0; i < value.length; i++) {\n result += String.fromCharCode(this._secret[i % this._secret.length].charCodeAt(0) ^ value.charCodeAt(i));\n }\n return result;\n }\n\n /**\n * Decrypts a string.\n * @param {string} value\n * @returns {string}\n */\n decrypt(value) {\n let result = '';\n for (let i = 0; i < value.length; i++) {\n result += String.fromCharCode(this._secret[i % this._secret.length].charCodeAt(0) ^ value.charCodeAt(i));\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() {\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 * @param {string} tab\n * @param {number} [index]\n */\n selectTab(tab, index) {\n window.localStorage[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 * @param {Record<string, any>} settings\n */\n onPrepareSave(settings) {\n // here you can encode values\n this.encryptedFields && 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 * @param {Record<string, any>} settings\n * @param {string[]} encryptedNative optional list of fields to be decrypted\n */\n onPrepareLoad(settings, encryptedNative) {\n // here you can encode values\n this.encryptedFields && this.encryptedFields.forEach(attr => {\n if (settings[attr]) {\n settings[attr] = this.decrypt(settings[attr]);\n }\n });\n encryptedNative && 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 * @returns {Promise<any[]>}\n */\n getExtendableInstances() {\n return new Promise(resolve => {\n this.socket._socket.emit('getObjectView', 'system', 'instance', null, (err, doc) => {\n if (err) {\n resolve([]);\n } else {\n resolve(doc.rows.filter(item => item.value.common.webExtendable).map(item => item.value));\n }\n });\n });\n }\n\n /**\n * Gets the IP addresses of the given host.\n * @param {string} host\n */\n getIpAddresses(host) {\n return new Promise((resolve, reject) => {\n this.socket._socket.emit('getHostByIp', host || this.common.host, (ip, _host) => {\n const IPs4 = [{name: '[IPv4] 0.0.0.0 - ' + I18n.t('ra_Listen on all IPs'), address: '0.0.0.0', family: 'ipv4'}];\n const IPs6 = [{name: '[IPv6] ::', address: '::', family: 'ipv6'}];\n if (_host) {\n host = _host;\n if (host.native.hardware && host.native.hardware.networkInterfaces) {\n Object.keys(host.native.hardware.networkInterfaces).forEach(eth =>\n host.native.hardware.networkInterfaces[eth].forEach(inter => {\n if (inter.family !== 'IPv6') {\n IPs4.push({name: '[' + inter.family + '] ' + inter.address + ' - ' + eth, address: inter.address, family: 'ipv4'});\n } else {\n IPs6.push({name: '[' + inter.family + '] ' + inter.address + ' - ' + eth, address: inter.address, family: 'ipv6'});\n }\n }));\n }\n IPs6.forEach(ip => IPs4.push(ip));\n }\n resolve(IPs4);\n });\n });\n }\n\n /**\n * Saves the settings to the server.\n * @param {boolean} isClose True if the user is closing the dialog.\n */\n onSave(isClose) {\n let oldObj;\n if (this.state.isConfigurationError) {\n this.setState({errorText: this.state.isConfigurationError});\n return;\n }\n\n this.socket.getObject(this.instanceId)\n .then(_oldObj => {\n oldObj = _oldObj || {};\n\n for (const a in this.state.native) {\n if (this.state.native.hasOwnProperty(a)) {\n if (this.state.native[a] === null) {\n oldObj.native[a] = null;\n } else\n 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.common[b] = null;\n } else\n if (this.state.common[b] !== undefined) {\n oldObj.common[b] = JSON.parse(JSON.stringify(this.state.common[b]));\n } else {\n delete oldObj.common[b];\n }\n }\n }\n\n if (this.onPrepareSave(oldObj.native) !== false) {\n return this.socket.setObject(this.instanceId, oldObj);\n } else {\n return Promise.reject('Invalid configuration');\n }\n })\n .then(() => {\n this.savedNative = oldObj.native;\n globalThis.changed = false;\n this.setState({changed: false});\n isClose && GenericApp.onClose();\n })\n .catch(e => {\n console.error(`Cannot save configuration: ${e}`);\n });\n }\n\n /**\n * Renders the toast.\n * @returns {JSX.Element | null} The JSX element.\n */\n renderToast() {\n if (!this.state.toast) return null;\n return (\n <Snackbar\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left',\n }}\n open={true}\n autoHideDuration={6000}\n onClose={() => this.setState({toast: ''})}\n ContentProps={{\n 'aria-describedby': 'message-id',\n }}\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 className={this.props.classes.close}\n onClick={() => this.setState({toast: ''})}\n size=\"large\">\n <IconClose />\n </IconButton>,\n ]}\n />\n );\n }\n\n /**\n * Closes the dialog.\n * @private\n */\n static onClose() {\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 (e) {\n window.parent.postMessage('close', '*');\n }\n }\n }\n\n /**\n * Renders the error dialog.\n * @returns {JSX.Element | null} The JSX element.\n */\n renderError() {\n if (!this.state.errorText) {\n return null;\n } else {\n return <DialogError text={this.state.errorText} onClose={() => this.setState({errorText: ''})}/>;\n }\n }\n\n /**\n * Checks if the configuration has changed.\n * @param {Record<string, any>} [native] the new state\n */\n getIsChanged(native) {\n native = native || this.state.native;\n const isChanged = JSON.stringify(native) !== JSON.stringify(this.savedNative);\n\n if(isChanged) {\n globalThis.changed = true;\n } else {\n globalThis.changed = false;\n }\n\n return isChanged;\n }\n\n /**\n * Gets called when loading the configuration.\n * @param {Record<string, any>} newNative The new configuration object.\n */\n onLoadConfig(newNative) {\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 * @param {string} errorText\n */\n setConfigurationError(errorText) {\n if (this.state.isConfigurationError !== errorText) {\n this.setState({isConfigurationError: errorText});\n }\n }\n\n /**\n * Renders the save and close buttons.\n * @returns {JSX.Element | undefined} The JSX element.\n */\n renderSaveCloseButtons() {\n if (this.state.bottomButtons) {\n return <SaveCloseButtons\n theme={this.state.theme}\n newReact={this.newReact}\n noTextOnButtons={this.state.width === 'xs' || this.state.width === 'sm' || this.state.width === 'md'}\n changed={this.state.changed}\n onSave={(isClose) => this.onSave(isClose)}\n onClose={() => GenericApp.onClose()}\n />;\n } else {\n return null;\n }\n }\n\n /**\n * @private\n * @param {Record<string, any>} obj\n * @param {any} attrs\n * @param {any} value\n * @returns {boolean | undefined}\n */\n _updateNativeValue(obj, attrs, value) {\n if (typeof attrs !== 'object') {\n attrs = attrs.split('.');\n }\n const attr = 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 } else if (obj[attr] !== value) {\n obj[attr] = value;\n return true;\n } else {\n return false;\n }\n\n } else {\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 /**\n * Update the native value\n * @param {string} attr The attribute name with dots as delimiter.\n * @param {any} value The new value.\n * @param {(() => void)} [cb] Callback which will be called upon completion.\n */\n updateNativeValue(attr, value, cb) {\n const native = JSON.parse(JSON.stringify(this.state.native));\n if (this._updateNativeValue(native, attr, value)) {\n const changed = this.getIsChanged(native);\n this.setState({native, changed}, cb);\n }\n }\n\n /**\n * Set the error text to be shown.\n * @param {string | JSX.Element} text\n */\n showError(text) {\n this.setState({errorText: text});\n }\n\n /**\n * Sets the toast to be shown.\n * @param {string} toast\n */\n showToast(toast) {\n this.setState({toast});\n }\n\n /**\n * Renders this component.\n * @returns {JSX.Element} The JSX element.\n */\n render() {\n if (!this.state.loaded) {\n return <Loader theme={this.state.themeType}/>;\n }\n\n return <div className=\"App\">\n {this.renderError()}\n {this.renderToast()}\n {this.renderSaveCloseButtons()}\n </div>;\n }\n}\n\nGenericApp.propTypes = {\n adapterName: PropTypes.string, // (optional) name of adapter\n onThemeChange: PropTypes.func, // (optional) called by theme change\n socket: PropTypes.object, // (optional) socket information (host, port)\n encryptedFields: PropTypes.array, // (optional) list of native attributes, that must be encrypted\n bottomButtons: PropTypes.bool, // If the bottom buttons (Save/Close) must be shown\n Connection: PropTypes.object, // If the bottom buttons (Save/Close) must be shown\n};\n\nexport default GenericApp;\n"],"file":"GenericApp.js"}
|
|
1
|
+
{"version":3,"sources":["GenericApp.js"],"names":["window","localStorage","getItem","setItem","GenericApp","props","settings","ConnectionClass","Connection","isWeb","io","location","port","SocketClient","e","id","obj","socket","systemLang","common","language","I18n","setLanguage","_systemConfig","expertMode","setState","getExpertMode","message","data","newThemeName","Utils","getThemeName","setThemeName","theme","createTheme","themeName","themeType","getThemeType","onThemeChange","onThemeChanged","onToggleExpertMode","console","warn","JSON","stringify","resizeTimer","clearTimeout","setTimeout","width","getWidth","query","search","replace","args","trim","split","filter","t","forEach","b","parts","length","instance","undefined","parseInt","slice","tmp","pathname","adapterName","instanceId","newReact","Router","getLocation","tab","themeInstance","state","selectedTab","selectedTabNum","errorText","changed","connected","loaded","isConfigurationError","toast","bottomButtons","translations","require","Object","keys","lang","assign","setTranslations","savedNative","encryptedFields","sentryDSN","name","doNotLoadAllObjects","onProgress","progress","PROGRESS","CONNECTING","READY","onReady","objects","scripts","subscribeObject","onSystemConfigChanged","then","getSystemConfig","_secret","secret","getObject","instanceObj","waitPromise","sentryEnabled","diag","version","disableDataReporting","host","sentryStarted","Sentry","init","dsn","release","integrations","SentryIntegrations","Dedupe","sentryInited","uuidObj","uuid","configureScope","scope","setUser","Promise","resolve","onPrepareLoad","encryptedNative","parse","onConnectionReady","onError","err","error","showError","addEventListener","onResize","onReceiveMessage","removeEventListener","palette","mode","sessionStorage","value","result","i","String","fromCharCode","charCodeAt","selectTab","index","attr","encrypt","decrypt","includes","push","_socket","emit","doc","rows","item","webExtendable","map","reject","ip","_host","IPs4","address","family","IPs6","hardware","networkInterfaces","eth","inter","isClose","oldObj","_oldObj","a","hasOwnProperty","onPrepareSave","setObject","globalThis","onClose","vertical","horizontal","classes","close","native","isChanged","newNative","getIsChanged","onSave","attrs","shift","Error","_updateNativeValue","cb","text","renderError","renderToast","renderSaveCloseButtons","SIZES","xs","sm","md","lg","xl","innerWidth","reverse","widthComputed","find","key","parent","$iframeDialog","postMessage","propTypes","PropTypes","string","func","object","array","bool"],"mappings":"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","sourcesContent":["/**\n * Copyright 2018-2022 bluefox <dogafox@gmail.com>\n *\n * MIT License\n *\n **/\nimport React from 'react';\nimport Connection, {PROGRESS} from './Connection';\nimport PropTypes from 'prop-types';\nimport * as Sentry from '@sentry/browser';\nimport * as SentryIntegrations from '@sentry/integrations';\n\nimport DialogError from './Dialogs/Error';\nimport Snackbar from '@mui/material/Snackbar';\nimport IconButton from '@mui/material/IconButton';\n\nimport IconClose from '@mui/icons-material/Close';\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 I18n from './i18n';\n\nimport './index.css';\n\nif (!window.localStorage) {\n window.localStorage = {\n getItem: () => null,\n setItem: () => null,\n };\n}\n\n/**\n * @extends {Router<import('./types').GenericAppProps, import('./types').GenericAppState>}\n */\nclass GenericApp extends Router {\n /**\n * @param {import('./types').GenericAppProps} props\n * @param {import('./types').GenericAppSettings | undefined} settings\n */\n constructor(props, settings) {\n const ConnectionClass = props.Connection || settings.Connection || Connection;\n\n // Remove `!Connection.isWeb() && window.adapterName !== 'material'` when iobroker.socket will support native ws\n if (!ConnectionClass.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 (e) {\n // ignore\n }\n }\n\n super(props);\n\n printPrompt();\n\n let query = (window.location.search || '').replace(/^\\?/, '').replace(/#.*$/, '');\n let args = {};\n query.trim().split('&').filter(t => t.trim()).forEach(b => {\n const parts = b.split('=');\n args[parts[0]] = parts.length === 2 ? parts[1] : true;\n if (args[parts[0]] === 'true') {\n args[parts[0]] = true;\n } else if (args[parts[0]] === 'false') {\n args[parts[0]] = false;\n }\n });\n\n // extract instance from URL\n this.instance = args.instance !== undefined ? parseInt(args.instance, 10) || 0 : (parseInt(window.location.search.slice(1), 10) || 0);\n // extract adapter name from URL\n const tmp = window.location.pathname.split('/');\n this.adapterName = 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 = location.tab || window.localStorage.getItem(this.adapterName + '-adapter') || '';\n\n const themeInstance = this.createTheme();\n\n this.state = {\n selectedTab: 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 && props.bottomButtons) === false ? false : true),\n width: GenericApp.getWidth(),\n };\n\n // init translations\n const translations = {\n 'en': require('./i18n/en.json'),\n 'de': require('./i18n/de.json'),\n 'ru': require('./i18n/ru.json'),\n 'pt': require('./i18n/pt.json'),\n 'nl': require('./i18n/nl.json'),\n 'fr': require('./i18n/fr.json'),\n 'it': require('./i18n/it.json'),\n 'es': require('./i18n/es.json'),\n 'pl': require('./i18n/pl.json'),\n 'zh-cn': require('./i18n/zh-cn.json'),\n };\n\n // merge together\n if (settings && settings.translations) {\n Object.keys(settings.translations).forEach(lang => translations[lang] = Object.assign(translations[lang], settings.translations[lang]));\n } else if (props.translations) {\n Object.keys(props.translations).forEach(lang => translations[lang] = Object.assign(translations[lang], props.translations[lang]));\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 && settings.sentryDSN) || props.sentryDSN;\n\n this.socket = new ConnectionClass({\n ...(props?.socket || settings?.socket),\n name: this.adapterName,\n doNotLoadAllObjects: settings?.doNotLoadAllObjects,\n onProgress: 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.subscribeObject('system.config', this.onSystemConfigChanged)\n .then(() => this.getSystemConfig())\n .then(obj => {\n this._secret = (typeof obj !== 'undefined' && obj.native && obj.native.secret) || 'Zgfr56gFe87jJOM';\n this._systemConfig = obj?.common || {};\n return this.socket.getObject(this.instanceId);\n })\n .then(instanceObj => {\n let waitPromise;\n\n const sentryEnabled =\n this._systemConfig.diag !== 'none' &&\n instanceObj &&\n instanceObj.common &&\n instanceObj.common.name &&\n instanceObj.common.version &&\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: [\n new SentryIntegrations.Dedupe()\n ]\n });\n }\n\n // read UUID and init sentry with it.\n // for backward compatibility it will be processed separately from 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')\n .then(uuidObj => {\n if (uuidObj && uuidObj.native && uuidObj.native.uuid) {\n Sentry.configureScope(scope =>\n scope.setUser({id: uuidObj.native.uuid}));\n }\n });\n }\n\n waitPromise = waitPromise || Promise.resolve();\n\n waitPromise\n .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({native: instanceObj.native, loaded: true, expertMode: this.getExpertMode()}, () =>\n this.onConnectionReady && this.onConnectionReady());\n } else {\n console.warn('Cannot load instance settings');\n this.setState({native: {}, loaded: true, expertMode: this.getExpertMode()}, () => this.onConnectionReady && this.onConnectionReady());\n }\n });\n });\n },\n onError: err => {\n console.error(err);\n this.showError(err);\n }\n });\n }\n\n onSystemConfigChanged = (id, obj) => {\n if (obj && id === 'system.config') {\n if (this.socket.systemLang !== obj?.common.language) {\n this.socket.systemLang = obj?.common.language || 'en';\n I18n.setLanguage(this.socket.systemLang);\n }\n\n if (this._systemConfig.expertMode !== !!obj?.common?.expertMode) {\n this._systemConfig = obj?.common || {};\n this.setState({expertMode: this.getExpertMode()});\n } else {\n this._systemConfig = obj?.common || {};\n }\n }\n }\n\n /**\n * Called immediately after a component is mounted. Setting state here will trigger re-rendering.\n */\n componentDidMount() {\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() {\n window.removeEventListener('resize', this.onResize, true);\n window.removeEventListener('message', this.onReceiveMessage, false);\n super.componentWillUnmount();\n }\n\n onReceiveMessage = message => {\n if (message?.data) {\n if (message.data === 'updateTheme') {\n const newThemeName = Utils.getThemeName()\n Utils.setThemeName(Utils.getThemeName());\n\n const theme = this.createTheme(newThemeName);\n\n this.setState({\n theme,\n themeName: this.getThemeName(theme),\n themeType: this.getThemeType(theme)\n }, () => {\n this.props.onThemeChange && this.props.onThemeChange(newThemeName);\n this.onThemeChanged && this.onThemeChanged(newThemeName);\n });\n } else if (message.data === 'updateExpertMode') {\n this.onToggleExpertMode && this.onToggleExpertMode(this.getExpertMode());\n } else {\n console.warn('Received unknown message: ' + JSON.stringify(message.data));\n }\n }\n };\n\n /**\n * @private\n */\n onResize = () => {\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 * @returns {import('./types').Width}\n */\n static getWidth() {\n /**\n * innerWidth |xs sm md lg xl\n * |-------|-------|-------|-------|------>\n * width | xs | sm | md | lg | xl\n */\n\n const SIZES = {\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]);\n\n return widthComputed || 'xs';\n }\n\n /**\n * Get a theme\n * @param {string} name Theme name\n * @returns {import('./types').Theme}\n */\n createTheme(name = '') {\n return theme(Utils.getThemeName(name));\n }\n\n /**\n * Get the theme name\n * @param {import('./types').Theme} theme Theme\n * @returns {string} Theme name\n */\n getThemeName(theme) {\n return theme.name;\n }\n\n /**\n * Get the theme type\n * @param {import('./types').Theme} theme Theme\n * @returns {string} Theme type\n */\n getThemeType(theme) {\n return theme.palette.mode;\n }\n\n /**\n * Changes the current theme\n */\n toggleTheme() {\n const themeName = this.state.themeName;\n\n // dark => blue => colored => light => dark\n const newThemeName = themeName === 'dark' ? 'blue' :\n (themeName === 'blue' ? 'colored' :\n (themeName === 'colored' ? 'light' : 'dark'));\n\n Utils.setThemeName(newThemeName);\n\n const theme = this.createTheme(newThemeName);\n\n this.setState({\n theme,\n themeName: this.getThemeName(theme),\n themeType: this.getThemeType(theme)\n }, () => {\n this.props.onThemeChange && this.props.onThemeChange(newThemeName);\n this.onThemeChanged && this.onThemeChanged(newThemeName);\n });\n }\n\n /**\n * Gets the system configuration.\n * @returns {Promise<ioBroker.OtherObject>}\n */\n getSystemConfig() {\n return this.socket.getSystemConfig();\n }\n\n /**\n * Get current expert mode\n * @returns {boolean}\n */\n getExpertMode() {\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 onConnectionReady() {\n }\n\n /**\n * Encrypts a string.\n * @param {string} value\n * @returns {string}\n */\n encrypt(value) {\n let result = '';\n for (let i = 0; i < value.length; i++) {\n result += String.fromCharCode(this._secret[i % this._secret.length].charCodeAt(0) ^ value.charCodeAt(i));\n }\n return result;\n }\n\n /**\n * Decrypts a string.\n * @param {string} value\n * @returns {string}\n */\n decrypt(value) {\n let result = '';\n for (let i = 0; i < value.length; i++) {\n result += String.fromCharCode(this._secret[i % this._secret.length].charCodeAt(0) ^ value.charCodeAt(i));\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() {\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 * @param {string} tab\n * @param {number} [index]\n */\n selectTab(tab, index) {\n window.localStorage[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 * @param {Record<string, any>} settings\n */\n onPrepareSave(settings) {\n // here you can encode values\n this.encryptedFields && 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 * @param {Record<string, any>} settings\n * @param {string[]} encryptedNative optional list of fields to be decrypted\n */\n onPrepareLoad(settings, encryptedNative) {\n // here you can encode values\n this.encryptedFields && this.encryptedFields.forEach(attr => {\n if (settings[attr]) {\n settings[attr] = this.decrypt(settings[attr]);\n }\n });\n encryptedNative && 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 * @returns {Promise<any[]>}\n */\n getExtendableInstances() {\n return new Promise(resolve => {\n this.socket._socket.emit('getObjectView', 'system', 'instance', null, (err, doc) => {\n if (err) {\n resolve([]);\n } else {\n resolve(doc.rows.filter(item => item.value.common.webExtendable).map(item => item.value));\n }\n });\n });\n }\n\n /**\n * Gets the IP addresses of the given host.\n * @param {string} host\n */\n getIpAddresses(host) {\n return new Promise((resolve, reject) => {\n this.socket._socket.emit('getHostByIp', host || this.common.host, (ip, _host) => {\n const IPs4 = [{name: '[IPv4] 0.0.0.0 - ' + I18n.t('ra_Listen on all IPs'), address: '0.0.0.0', family: 'ipv4'}];\n const IPs6 = [{name: '[IPv6] ::', address: '::', family: 'ipv6'}];\n if (_host) {\n host = _host;\n if (host.native.hardware && host.native.hardware.networkInterfaces) {\n Object.keys(host.native.hardware.networkInterfaces).forEach(eth =>\n host.native.hardware.networkInterfaces[eth].forEach(inter => {\n if (inter.family !== 'IPv6') {\n IPs4.push({name: '[' + inter.family + '] ' + inter.address + ' - ' + eth, address: inter.address, family: 'ipv4'});\n } else {\n IPs6.push({name: '[' + inter.family + '] ' + inter.address + ' - ' + eth, address: inter.address, family: 'ipv6'});\n }\n }));\n }\n IPs6.forEach(ip => IPs4.push(ip));\n }\n resolve(IPs4);\n });\n });\n }\n\n /**\n * Saves the settings to the server.\n * @param {boolean} isClose True if the user is closing the dialog.\n */\n onSave(isClose) {\n let oldObj;\n if (this.state.isConfigurationError) {\n this.setState({errorText: this.state.isConfigurationError});\n return;\n }\n\n this.socket.getObject(this.instanceId)\n .then(_oldObj => {\n oldObj = _oldObj || {};\n\n for (const a in this.state.native) {\n if (this.state.native.hasOwnProperty(a)) {\n if (this.state.native[a] === null) {\n oldObj.native[a] = null;\n } else\n 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.common[b] = null;\n } else\n if (this.state.common[b] !== undefined) {\n oldObj.common[b] = JSON.parse(JSON.stringify(this.state.common[b]));\n } else {\n delete oldObj.common[b];\n }\n }\n }\n\n if (this.onPrepareSave(oldObj.native) !== false) {\n return this.socket.setObject(this.instanceId, oldObj);\n } else {\n return Promise.reject('Invalid configuration');\n }\n })\n .then(() => {\n this.savedNative = oldObj.native;\n globalThis.changed = false;\n this.setState({changed: false});\n isClose && GenericApp.onClose();\n })\n .catch(e => {\n console.error(`Cannot save configuration: ${e}`);\n });\n }\n\n /**\n * Renders the toast.\n * @returns {JSX.Element | null} The JSX element.\n */\n renderToast() {\n if (!this.state.toast) return null;\n return (\n <Snackbar\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left',\n }}\n open={true}\n autoHideDuration={6000}\n onClose={() => this.setState({toast: ''})}\n ContentProps={{\n 'aria-describedby': 'message-id',\n }}\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 className={this.props.classes.close}\n onClick={() => this.setState({toast: ''})}\n size=\"large\">\n <IconClose />\n </IconButton>,\n ]}\n />\n );\n }\n\n /**\n * Closes the dialog.\n * @private\n */\n static onClose() {\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 (e) {\n window.parent.postMessage('close', '*');\n }\n }\n }\n\n /**\n * Renders the error dialog.\n * @returns {JSX.Element | null} The JSX element.\n */\n renderError() {\n if (!this.state.errorText) {\n return null;\n } else {\n return <DialogError text={this.state.errorText} onClose={() => this.setState({errorText: ''})}/>;\n }\n }\n\n /**\n * Checks if the configuration has changed.\n * @param {Record<string, any>} [native] the new state\n */\n getIsChanged(native) {\n native = native || this.state.native;\n const isChanged = JSON.stringify(native) !== JSON.stringify(this.savedNative);\n\n if(isChanged) {\n globalThis.changed = true;\n } else {\n globalThis.changed = false;\n }\n\n return isChanged;\n }\n\n /**\n * Gets called when loading the configuration.\n * @param {Record<string, any>} newNative The new configuration object.\n */\n onLoadConfig(newNative) {\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 * @param {string} errorText\n */\n setConfigurationError(errorText) {\n if (this.state.isConfigurationError !== errorText) {\n this.setState({isConfigurationError: errorText});\n }\n }\n\n /**\n * Renders the save and close buttons.\n * @returns {JSX.Element | undefined} The JSX element.\n */\n renderSaveCloseButtons() {\n if (this.state.bottomButtons) {\n return <SaveCloseButtons\n theme={this.state.theme}\n newReact={this.newReact}\n noTextOnButtons={this.state.width === 'xs' || this.state.width === 'sm' || this.state.width === 'md'}\n changed={this.state.changed}\n onSave={(isClose) => this.onSave(isClose)}\n onClose={() => GenericApp.onClose()}\n />;\n } else {\n return null;\n }\n }\n\n /**\n * @private\n * @param {Record<string, any>} obj\n * @param {any} attrs\n * @param {any} value\n * @returns {boolean | undefined}\n */\n _updateNativeValue(obj, attrs, value) {\n if (typeof attrs !== 'object') {\n attrs = attrs.split('.');\n }\n const attr = 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 } else if (obj[attr] !== value) {\n obj[attr] = value;\n return true;\n } else {\n return false;\n }\n\n } else {\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 /**\n * Update the native value\n * @param {string} attr The attribute name with dots as delimiter.\n * @param {any} value The new value.\n * @param {(() => void)} [cb] Callback which will be called upon completion.\n */\n updateNativeValue(attr, value, cb) {\n const native = JSON.parse(JSON.stringify(this.state.native));\n if (this._updateNativeValue(native, attr, value)) {\n const changed = this.getIsChanged(native);\n this.setState({native, changed}, cb);\n }\n }\n\n /**\n * Set the error text to be shown.\n * @param {string | JSX.Element} text\n */\n showError(text) {\n this.setState({errorText: text});\n }\n\n /**\n * Sets the toast to be shown.\n * @param {string} toast\n */\n showToast(toast) {\n this.setState({toast});\n }\n\n /**\n * Renders this component.\n * @returns {JSX.Element} The JSX element.\n */\n render() {\n if (!this.state.loaded) {\n return <Loader theme={this.state.themeType}/>;\n }\n\n return <div className=\"App\">\n {this.renderError()}\n {this.renderToast()}\n {this.renderSaveCloseButtons()}\n </div>;\n }\n}\n\nGenericApp.propTypes = {\n adapterName: PropTypes.string, // (optional) name of adapter\n onThemeChange: PropTypes.func, // (optional) called by theme change\n socket: PropTypes.object, // (optional) socket information (host, port)\n encryptedFields: PropTypes.array, // (optional) list of native attributes, that must be encrypted\n bottomButtons: PropTypes.bool, // If the bottom buttons (Save/Close) must be shown\n Connection: PropTypes.object, // If the bottom buttons (Save/Close) must be shown\n};\n\nexport default GenericApp;\n"],"file":"GenericApp.js"}
|
package/README.md
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
# Help ReactJS classes for adapter config
|
|
2
|
+
You can find demo on https://github.com/ioBroker/adapter-react-demo
|
|
3
|
+
|
|
2
4
|
## Getting started
|
|
3
5
|
If you want to create the configuration page with react:
|
|
4
6
|
1. Create github repo for adapter.
|
|
@@ -637,6 +639,9 @@ If you still have questions, try to find an answer [here](https://mui.com/guides
|
|
|
637
639
|
-->
|
|
638
640
|
|
|
639
641
|
## Changelog
|
|
642
|
+
### 2.1.1 (2022-03-27)
|
|
643
|
+
* (bluefox) Corrected error in TreeTable
|
|
644
|
+
|
|
640
645
|
### 2.1.0 (2022-03-26)
|
|
641
646
|
* (bluefox) BREAKING_CHANGE: Corrected error with readFile(base64=false)
|
|
642
647
|
|