@iobroker/adapter-react-v5 0.0.4 → 2.0.0

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.
Files changed (47) hide show
  1. package/Components/ColorPicker.js +6 -2
  2. package/Components/ColorPicker.js.map +1 -1
  3. package/Components/ComplexCron.js +1 -1
  4. package/Components/ComplexCron.js.map +1 -1
  5. package/Components/FileBrowser.js +6 -6
  6. package/Components/FileBrowser.js.map +1 -1
  7. package/Components/FileViewer.js +5 -17
  8. package/Components/FileViewer.js.map +1 -1
  9. package/Components/Icon.js +1 -1
  10. package/Components/Icon.js.map +1 -1
  11. package/Components/IconPicker.js +1 -2
  12. package/Components/IconPicker.js.map +1 -1
  13. package/Components/Image.js +2 -1
  14. package/Components/Image.js.map +1 -1
  15. package/Components/Loader.js +8 -14
  16. package/Components/Loader.js.map +1 -1
  17. package/Components/Logo.js +8 -8
  18. package/Components/Logo.js.map +1 -1
  19. package/Components/MDUtils.js.map +1 -1
  20. package/Components/ObjectBrowser.js +7 -7
  21. package/Components/ObjectBrowser.js.map +1 -1
  22. package/Components/Schedule.js +1 -2
  23. package/Components/Schedule.js.map +1 -1
  24. package/Components/SelectWithIcon.js +40 -4
  25. package/Components/SelectWithIcon.js.map +1 -1
  26. package/Components/TextWithIcon.js +5 -3
  27. package/Components/TextWithIcon.js.map +1 -1
  28. package/Dialogs/ComplexCron.js +1 -1
  29. package/Dialogs/ComplexCron.js.map +1 -1
  30. package/Dialogs/Confirm.js +1 -1
  31. package/Dialogs/Confirm.js.map +1 -1
  32. package/Dialogs/Cron.js +1 -1
  33. package/Dialogs/Cron.js.map +1 -1
  34. package/Dialogs/Error.js +1 -1
  35. package/Dialogs/Error.js.map +1 -1
  36. package/Dialogs/Message.js +1 -1
  37. package/Dialogs/Message.js.map +1 -1
  38. package/Dialogs/SelectID.js +1 -1
  39. package/Dialogs/SelectID.js.map +1 -1
  40. package/Dialogs/SimpleCron.js +1 -1
  41. package/Dialogs/SimpleCron.js.map +1 -1
  42. package/Dialogs/TextInput.js +11 -11
  43. package/Dialogs/TextInput.js.map +1 -1
  44. package/GenericApp.js +7 -4
  45. package/GenericApp.js.map +1 -1
  46. package/README.md +6 -0
  47. package/package.json +1 -1
@@ -95,17 +95,6 @@ var EXTENSIONS = {
95
95
  code: ['js', 'json'],
96
96
  txt: ['log', 'txt', 'html', 'css', 'xml']
97
97
  };
98
- exports.EXTENSIONS = EXTENSIONS;
99
-
100
- function getFileExtension(fileName) {
101
- var pos = fileName.lastIndexOf('.');
102
-
103
- if (pos !== -1) {
104
- return fileName.substring(pos + 1).toLowerCase();
105
- } else {
106
- return null;
107
- }
108
- }
109
98
  /**
110
99
  * @typedef {object} FileViewerProps
111
100
  * @property {string} [key] The key to identify this component.
@@ -118,6 +107,7 @@ function getFileExtension(fileName) {
118
107
  * @extends {React.Component<FileViewerProps>}
119
108
  */
120
109
 
110
+ exports.EXTENSIONS = EXTENSIONS;
121
111
 
122
112
  var FileViewer = /*#__PURE__*/function (_React$Component) {
123
113
  _inherits(FileViewer, _React$Component);
@@ -133,8 +123,7 @@ var FileViewer = /*#__PURE__*/function (_React$Component) {
133
123
  _classCallCheck(this, FileViewer);
134
124
 
135
125
  _this = _super.call(this, props);
136
- _this.ext = getFileExtension(_this.props.href); // todo: replace later with Utils.getFileExtension
137
-
126
+ _this.ext = _Utils["default"].getFileExtension(_this.props.href);
138
127
  _this.state = {
139
128
  text: null,
140
129
  code: null,
@@ -207,7 +196,7 @@ var FileViewer = /*#__PURE__*/function (_React$Component) {
207
196
  return _this2.props.onClose();
208
197
  },
209
198
  fullWidth: true,
210
- fullScreen: true,
199
+ fullScreen: this.props.fullScreen !== undefined ? this.props.fullScreen : true,
211
200
  "aria-labelledby": "form-dialog-title"
212
201
  }, /*#__PURE__*/_react["default"].createElement(_DialogTitle["default"], {
213
202
  id: "form-dialog-title"
@@ -235,10 +224,9 @@ var FileViewer = /*#__PURE__*/function (_React$Component) {
235
224
 
236
225
  FileViewer.propTypes = {
237
226
  t: _propTypes["default"].func,
238
- lang: _propTypes["default"].string,
239
- expertMode: _propTypes["default"].bool,
240
227
  onClose: _propTypes["default"].func,
241
- href: _propTypes["default"].string.isRequired
228
+ href: _propTypes["default"].string.isRequired,
229
+ fullScreen: _propTypes["default"].bool
242
230
  };
243
231
  /** @type {typeof FileViewer} */
244
232
 
@@ -1 +1 @@
1
- {"version":3,"sources":["FileViewer.js"],"names":["withWidth","WrappedComponent","props","styles","theme","dialog","height","maxHeight","maxWidth","content","textAlign","textarea","width","img","objectFit","EXTENSIONS","images","code","txt","getFileExtension","fileName","pos","lastIndexOf","substring","toLowerCase","FileViewer","ext","href","state","text","copyPossible","includes","fetch","then","response","data","setState","e","target","onerror","src","NoImage","classes","readOnly","onClose","t","getContent","Utils","copyToClipboard","React","Component","propTypes","PropTypes","func","lang","string","expertMode","bool","isRequired","_export"],"mappings":"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","sourcesContent":["import React from 'react';\nimport withStyles from '@mui/styles/withStyles';\nimport PropTypes from 'prop-types';\n\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport TextField from '@mui/material/TextField';\n\nimport NoImage from '../assets/no_icon.svg';\nimport Utils from './Utils';\n\n// Icons\nimport {FaCopy as CopyIcon} from 'react-icons/fa';\nimport CloseIcon from '@mui/icons-material/Close';\n\n// FIXME checkout https://mui.com/components/use-media-query/#migrating-from-withwidth\nconst withWidth = () => WrappedComponent => props => <WrappedComponent {...props} width=\"xs\" />;\n\nconst styles = theme => ({\n dialog: {\n height: '100%',\n maxHeight: '100%',\n maxWidth: '100%',\n },\n content: {\n textAlign: 'center',\n },\n textarea: {\n width: '100%',\n height: '100%',\n },\n img: {\n width: 'auto',\n height: 'calc(100% - 5px)',\n objectFit: 'contain',\n }\n});\n\nexport const EXTENSIONS = {\n images: ['png', 'jpg', 'svg', 'jpeg', 'jpg'],\n code: ['js', 'json'],\n txt: ['log', 'txt', 'html', 'css', 'xml'],\n};\n\nfunction getFileExtension(fileName) {\n const pos = fileName.lastIndexOf('.');\n if (pos !== -1) {\n return fileName.substring(pos + 1).toLowerCase();\n } else {\n return null;\n }\n}\n\n/**\n * @typedef {object} FileViewerProps\n * @property {string} [key] The key to identify this component.\n * @property {import('../types').Translator} t Translation function\n * @property {ioBroker.Languages} [lang] The selected language.\n * @property {boolean} [expertMode] Is expert mode enabled? (default: false)\n * @property {() => void} onClose Callback when the viewer is closed.\n * @property {string} href The URL to the file to be displayed.\n *\n * @extends {React.Component<FileViewerProps>}\n */\nclass FileViewer extends React.Component {\n /**\n * @param {Readonly<FileViewerProps>} props\n */\n constructor(props) {\n super(props);\n\n this.ext = getFileExtension(this.props.href); // todo: replace later with Utils.getFileExtension\n\n this.state = {\n text: null,\n code: null,\n copyPossible: EXTENSIONS.code.includes(this.ext) || EXTENSIONS.txt.includes(this.ext)\n };\n\n if (this.state.copyPossible) {\n fetch(this.props.href)\n .then(response => response.text())\n .then(data => {\n if (EXTENSIONS.txt.includes(this.ext)) {\n this.setState({text: data});\n } else if (EXTENSIONS.code.includes(this.ext)) {\n this.setState({code: data});\n }\n });\n }\n }\n\n static getDerivedStateFromProps() {\n\n }\n\n getContent() {\n if (EXTENSIONS.images.includes(this.ext)) {\n return <img\n onError={ e => {\n e.target.onerror = null;\n e.target.src = NoImage\n } }\n className={ this.props.classes.img }\n src={ this.props.href } alt={ this.props.href }/>;\n } else if (this.state.code !== null) {\n return <TextField\n variant=\"standard\"\n className={ this.props.classes.textarea }\n multiline\n value={ this.state.code }\n InputProps={{\n readOnly: true,\n }}\n />;\n } else if (this.state.text !== null) {\n return <TextField\n variant=\"standard\"\n className={ this.props.classes.textarea }\n value={ this.state.code }\n multiline\n InputProps={{\n readOnly: true,\n }}\n />;\n }\n }\n\n render() {\n return <Dialog\n className={ this.props.classes.dialog }\n open={ !!this.props.href }\n onClose={ () => this.props.onClose() }\n fullWidth={ true }\n fullScreen={ true }\n aria-labelledby=\"form-dialog-title\"\n >\n <DialogTitle id=\"form-dialog-title\">{ this.props.t('View: %s', this.props.href) }</DialogTitle>\n <DialogContent className={ this.props.classes.content }>\n { this.getContent() }\n </DialogContent>\n <DialogActions>\n { this.state.copyPossible ? <Button color=\"grey\" onClick={e => Utils.copyToClipboard(this.state.text || this.state.code, e) } >\n <CopyIcon />\n { this.props.t('Copy content') }\n </Button> : null }\n\n <Button onClick={() => this.props.onClose()} color=\"primary\">\n <CloseIcon />\n { this.props.t('Close') }\n </Button>\n </DialogActions>\n </Dialog>;\n }\n}\n\nFileViewer.propTypes = {\n t: PropTypes.func,\n lang: PropTypes.string,\n expertMode: PropTypes.bool,\n onClose: PropTypes.func,\n href: PropTypes.string.isRequired\n};\n\n/** @type {typeof FileViewer} */\nconst _export = withWidth()(withStyles(styles)(FileViewer));\nexport default _export;\n"],"file":"FileViewer.js"}
1
+ {"version":3,"sources":["FileViewer.js"],"names":["withWidth","WrappedComponent","props","styles","theme","dialog","height","maxHeight","maxWidth","content","textAlign","textarea","width","img","objectFit","EXTENSIONS","images","code","txt","FileViewer","ext","Utils","getFileExtension","href","state","text","copyPossible","includes","fetch","then","response","data","setState","e","target","onerror","src","NoImage","classes","readOnly","onClose","fullScreen","undefined","t","getContent","copyToClipboard","React","Component","propTypes","PropTypes","func","string","isRequired","bool","_export"],"mappings":"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","sourcesContent":["import React from 'react';\nimport withStyles from '@mui/styles/withStyles';\nimport PropTypes from 'prop-types';\n\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport TextField from '@mui/material/TextField';\n\nimport NoImage from '../assets/no_icon.svg';\nimport Utils from './Utils';\n\n// Icons\nimport {FaCopy as CopyIcon} from 'react-icons/fa';\nimport CloseIcon from '@mui/icons-material/Close';\n\n// FIXME checkout https://mui.com/components/use-media-query/#migrating-from-withwidth\nconst withWidth = () => WrappedComponent => props => <WrappedComponent {...props} width=\"xs\" />;\n\nconst styles = theme => ({\n dialog: {\n height: '100%',\n maxHeight: '100%',\n maxWidth: '100%',\n },\n content: {\n textAlign: 'center',\n },\n textarea: {\n width: '100%',\n height: '100%',\n },\n img: {\n width: 'auto',\n height: 'calc(100% - 5px)',\n objectFit: 'contain',\n }\n});\n\nexport const EXTENSIONS = {\n images: ['png', 'jpg', 'svg', 'jpeg', 'jpg'],\n code: ['js', 'json'],\n txt: ['log', 'txt', 'html', 'css', 'xml'],\n};\n\n/**\n * @typedef {object} FileViewerProps\n * @property {string} [key] The key to identify this component.\n * @property {import('../types').Translator} t Translation function\n * @property {ioBroker.Languages} [lang] The selected language.\n * @property {boolean} [expertMode] Is expert mode enabled? (default: false)\n * @property {() => void} onClose Callback when the viewer is closed.\n * @property {string} href The URL to the file to be displayed.\n *\n * @extends {React.Component<FileViewerProps>}\n */\nclass FileViewer extends React.Component {\n /**\n * @param {Readonly<FileViewerProps>} props\n */\n constructor(props) {\n super(props);\n\n this.ext = Utils.getFileExtension(this.props.href);\n\n this.state = {\n text: null,\n code: null,\n copyPossible: EXTENSIONS.code.includes(this.ext) || EXTENSIONS.txt.includes(this.ext),\n };\n\n if (this.state.copyPossible) {\n fetch(this.props.href)\n .then(response => response.text())\n .then(data => {\n if (EXTENSIONS.txt.includes(this.ext)) {\n this.setState({ text: data });\n } else if (EXTENSIONS.code.includes(this.ext)) {\n this.setState({ code: data });\n }\n });\n }\n }\n\n static getDerivedStateFromProps() {\n\n }\n\n getContent() {\n if (EXTENSIONS.images.includes(this.ext)) {\n return <img\n onError={ e => {\n e.target.onerror = null;\n e.target.src = NoImage;\n }}\n className={ this.props.classes.img }\n src={ this.props.href }\n alt={ this.props.href }\n />;\n } else if (this.state.code !== null) {\n return <TextField\n variant=\"standard\"\n className={ this.props.classes.textarea }\n multiline\n value={ this.state.code }\n InputProps={{\n readOnly: true,\n }}\n />;\n } else if (this.state.text !== null) {\n return <TextField\n variant=\"standard\"\n className={ this.props.classes.textarea }\n value={ this.state.code }\n multiline\n InputProps={{\n readOnly: true,\n }}\n />;\n }\n }\n\n render() {\n return <Dialog\n className={ this.props.classes.dialog }\n open={ !!this.props.href }\n onClose={ () => this.props.onClose() }\n fullWidth\n fullScreen={this.props.fullScreen !== undefined ? this.props.fullScreen : true}\n aria-labelledby=\"form-dialog-title\"\n >\n <DialogTitle id=\"form-dialog-title\">{ this.props.t('View: %s', this.props.href) }</DialogTitle>\n <DialogContent className={ this.props.classes.content }>\n { this.getContent() }\n </DialogContent>\n <DialogActions>\n { this.state.copyPossible ? <Button color=\"grey\" onClick={e => Utils.copyToClipboard(this.state.text || this.state.code, e) } >\n <CopyIcon />\n { this.props.t('Copy content') }\n </Button> : null }\n\n <Button onClick={() => this.props.onClose()} color=\"primary\">\n <CloseIcon />\n { this.props.t('Close') }\n </Button>\n </DialogActions>\n </Dialog>;\n }\n}\n\nFileViewer.propTypes = {\n t: PropTypes.func,\n\n onClose: PropTypes.func,\n href: PropTypes.string.isRequired,\n fullScreen: PropTypes.bool,\n};\n\n/** @type {typeof FileViewer} */\nconst _export = withWidth()(withStyles(styles)(FileViewer));\nexport default _export;\n"],"file":"FileViewer.js"}
@@ -223,7 +223,7 @@ var Icon = /*#__PURE__*/function (_React$Component) {
223
223
  Icon.propTypes = {
224
224
  color: _propTypes["default"].string,
225
225
  title: _propTypes["default"].string,
226
- src: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].object]),
226
+ src: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].object]).isRequired,
227
227
  className: _propTypes["default"].string,
228
228
  imagePrefix: _propTypes["default"].string,
229
229
  style: _propTypes["default"].object,
@@ -1 +1 @@
1
- {"version":3,"sources":["Icon.js"],"names":["getSystemIcon","obj","icon","id","_id","startsWith","endsWith","type","getSelectIdIcon","imagePrefix","src","common","cIcon","includes","instance","name","split","Icon","props","length","title","undefined","Object","assign","height","marginTop","styleUTF8","style","Utils","clsx","className","width","React","Component","propTypes","color","PropTypes","string","oneOfType","object"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport SVG from 'react-inlinesvg';\n\nimport IconSystem from '@mui/icons-material/SettingsApplications';\nimport IconPhoto from '@mui/icons-material/Photo';\nimport IconGroup from '@mui/icons-material/SupervisedUserCircle';\nimport IconUser from '@mui/icons-material/PersonOutlined';\nimport IconHost from '@mui/icons-material/Router';\nimport IconConnection from '@mui/icons-material/Wifi';\nimport IconInfo from '@mui/icons-material/Info';\nimport IconMeta from '@mui/icons-material/Description';\nimport IconAlias from '../icons/IconAlias';\n\nimport Utils from './Utils';\n\nexport function getSystemIcon(obj) {\n let icon;\n const id = obj?._id;\n\n if (!id) {\n return null;\n }\n\n // system or design have special icons\n if (id.startsWith('_design/') || (id === 'system')) {\n icon = <IconSystem className=\"iconOwn\" />;\n } else if (id === '0_userdata' || id === '0_userdata.0') {\n icon = <IconPhoto className=\"iconOwn\" />;\n } else if (id === 'alias' || id === 'alias.0') {\n icon = <IconAlias className=\"iconOwn\" />;\n } else if (id === 'system.adapter') {\n icon = <IconSystem className=\"iconOwn\" />;\n } else if (id === 'system.group') {\n icon = <IconGroup className=\"iconOwn\" />;\n } else if (id === 'system.user') {\n icon = <IconUser className=\"iconOwn\" />;\n } else if (id === 'system.host') {\n icon = <IconHost className=\"iconOwn\" />;\n } else if (id.endsWith('.connection') || id.endsWith('.connected')) {\n icon = <IconConnection className=\"iconOwn\" />;\n } else if (id.endsWith('.info')) {\n icon = <IconInfo className=\"iconOwn\" />;\n } else if (obj?.type === 'meta') {\n icon = <IconMeta className=\"iconOwn\" />;\n }\n\n return icon || null;\n}\n\nexport function getSelectIdIcon(obj, imagePrefix) {\n imagePrefix = imagePrefix || '.';//http://localhost:8081';\n let src = '';\n const common = obj?.common;\n\n if (common) {\n const cIcon = common.icon;\n if (cIcon) {\n if (!cIcon.startsWith('data:image/')) {\n if (cIcon.includes('.')) {\n let instance;\n if (obj.type === 'instance' || obj.type === 'adapter') {\n src = imagePrefix + '/adapter/' + common.name + '/' + cIcon;\n } else if (obj._id && obj._id.startsWith('system.adapter.')) {\n instance = obj._id.split('.', 3);\n if (cIcon[0] === '/') {\n instance[2] += cIcon;\n } else {\n instance[2] += '/' + cIcon;\n }\n src = imagePrefix + '/adapter/' + instance[2];\n } else {\n instance = obj._id.split('.', 2);\n if (cIcon[0] === '/') {\n instance[0] += cIcon;\n } else {\n instance[0] += '/' + cIcon;\n }\n src = imagePrefix + '/adapter/' + instance[0];\n }\n } else {\n return null;\n }\n } else {\n // base 64 image\n src = cIcon;\n }\n }\n }\n\n return src || null;\n}\n\nclass Icon extends React.Component {\n render() {\n if (this.props.src) {\n if (typeof this.props.src === 'string') {\n if (this.props.src.length < 3) {\n return <span title={this.props.title || undefined} style={Object.assign({height: 27, marginTop: -8}, this.props.styleUTF8 || this.props.style)} className={ Utils.clsx(this.props.className, 'iconOwn') }>{this.props.src}</span>; // utf-8 char\n } else {\n if (this.props.src.startsWith('data:image/svg')) {\n return <SVG title={this.props.title || undefined} src={this.props.src} className={ Utils.clsx(this.props.className, 'iconOwn') } width={this.props.style?.width || 28} height={this.props.style?.height || this.props.style?.width || 28} style={this.props.style || {}}/>;\n } else {\n return <img title={this.props.title || undefined} style={this.props.style || {}} className={ Utils.clsx(this.props.className, 'iconOwn') } src={ this.props.src } alt=\"\" />;\n }\n }\n } else {\n return this.props.src;\n }\n } else {\n return null;\n }\n }\n}\n\nIcon.propTypes = {\n color: PropTypes.string,\n title: PropTypes.string,\n src: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n className: PropTypes.string,\n imagePrefix: PropTypes.string,\n style: PropTypes.object,\n styleUTF8: PropTypes.object,\n};\n\nexport default Icon;"],"file":"Icon.js"}
1
+ {"version":3,"sources":["Icon.js"],"names":["getSystemIcon","obj","icon","id","_id","startsWith","endsWith","type","getSelectIdIcon","imagePrefix","src","common","cIcon","includes","instance","name","split","Icon","props","length","title","undefined","Object","assign","height","marginTop","styleUTF8","style","Utils","clsx","className","width","React","Component","propTypes","color","PropTypes","string","oneOfType","object","isRequired"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport SVG from 'react-inlinesvg';\n\nimport IconSystem from '@mui/icons-material/SettingsApplications';\nimport IconPhoto from '@mui/icons-material/Photo';\nimport IconGroup from '@mui/icons-material/SupervisedUserCircle';\nimport IconUser from '@mui/icons-material/PersonOutlined';\nimport IconHost from '@mui/icons-material/Router';\nimport IconConnection from '@mui/icons-material/Wifi';\nimport IconInfo from '@mui/icons-material/Info';\nimport IconMeta from '@mui/icons-material/Description';\nimport IconAlias from '../icons/IconAlias';\n\nimport Utils from './Utils';\n\nexport function getSystemIcon(obj) {\n let icon;\n const id = obj?._id;\n\n if (!id) {\n return null;\n }\n\n // system or design have special icons\n if (id.startsWith('_design/') || (id === 'system')) {\n icon = <IconSystem className=\"iconOwn\" />;\n } else if (id === '0_userdata' || id === '0_userdata.0') {\n icon = <IconPhoto className=\"iconOwn\" />;\n } else if (id === 'alias' || id === 'alias.0') {\n icon = <IconAlias className=\"iconOwn\" />;\n } else if (id === 'system.adapter') {\n icon = <IconSystem className=\"iconOwn\" />;\n } else if (id === 'system.group') {\n icon = <IconGroup className=\"iconOwn\" />;\n } else if (id === 'system.user') {\n icon = <IconUser className=\"iconOwn\" />;\n } else if (id === 'system.host') {\n icon = <IconHost className=\"iconOwn\" />;\n } else if (id.endsWith('.connection') || id.endsWith('.connected')) {\n icon = <IconConnection className=\"iconOwn\" />;\n } else if (id.endsWith('.info')) {\n icon = <IconInfo className=\"iconOwn\" />;\n } else if (obj?.type === 'meta') {\n icon = <IconMeta className=\"iconOwn\" />;\n }\n\n return icon || null;\n}\n\nexport function getSelectIdIcon(obj, imagePrefix) {\n imagePrefix = imagePrefix || '.';//http://localhost:8081';\n let src = '';\n const common = obj?.common;\n\n if (common) {\n const cIcon = common.icon;\n if (cIcon) {\n if (!cIcon.startsWith('data:image/')) {\n if (cIcon.includes('.')) {\n let instance;\n if (obj.type === 'instance' || obj.type === 'adapter') {\n src = imagePrefix + '/adapter/' + common.name + '/' + cIcon;\n } else if (obj._id && obj._id.startsWith('system.adapter.')) {\n instance = obj._id.split('.', 3);\n if (cIcon[0] === '/') {\n instance[2] += cIcon;\n } else {\n instance[2] += '/' + cIcon;\n }\n src = imagePrefix + '/adapter/' + instance[2];\n } else {\n instance = obj._id.split('.', 2);\n if (cIcon[0] === '/') {\n instance[0] += cIcon;\n } else {\n instance[0] += '/' + cIcon;\n }\n src = imagePrefix + '/adapter/' + instance[0];\n }\n } else {\n return null;\n }\n } else {\n // base 64 image\n src = cIcon;\n }\n }\n }\n\n return src || null;\n}\n\nclass Icon extends React.Component {\n render() {\n if (this.props.src) {\n if (typeof this.props.src === 'string') {\n if (this.props.src.length < 3) {\n return <span title={this.props.title || undefined} style={Object.assign({height: 27, marginTop: -8}, this.props.styleUTF8 || this.props.style)} className={ Utils.clsx(this.props.className, 'iconOwn') }>{this.props.src}</span>; // utf-8 char\n } else {\n if (this.props.src.startsWith('data:image/svg')) {\n return <SVG title={this.props.title || undefined} src={this.props.src} className={ Utils.clsx(this.props.className, 'iconOwn') } width={this.props.style?.width || 28} height={this.props.style?.height || this.props.style?.width || 28} style={this.props.style || {}}/>;\n } else {\n return <img title={this.props.title || undefined} style={this.props.style || {}} className={ Utils.clsx(this.props.className, 'iconOwn') } src={ this.props.src } alt=\"\" />;\n }\n }\n } else {\n return this.props.src;\n }\n } else {\n return null;\n }\n }\n}\n\nIcon.propTypes = {\n color: PropTypes.string,\n title: PropTypes.string,\n src: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired,\n className: PropTypes.string,\n imagePrefix: PropTypes.string,\n style: PropTypes.object,\n styleUTF8: PropTypes.object,\n};\n\nexport default Icon;"],"file":"Icon.js"}
@@ -173,10 +173,9 @@ IconPicker.propTypes = {
173
173
  icon: _propTypes["default"].object,
174
174
  customClasses: _propTypes["default"].object,
175
175
  label: _propTypes["default"].string,
176
- name: _propTypes["default"].string,
177
176
  value: _propTypes["default"].any,
178
177
  disabled: _propTypes["default"].bool,
179
- onChange: _propTypes["default"].func,
178
+ onChange: _propTypes["default"].func.isRequired,
180
179
  icons: _propTypes["default"].array,
181
180
  onlyRooms: _propTypes["default"].bool,
182
181
  onlyDevices: _propTypes["default"].bool
@@ -1 +1 @@
1
- {"version":3,"sources":["IconPicker.js"],"names":["IconPicker","props","IconCustom","icon","useStyles","theme","formContainer","display","justifyContent","alignItems","formControl","padding","flexGrow","divContainer","width","height","whiteSpace","lineHeight","marginRight","dragField","textAlign","minHeight","border","borderRadius","formIcon","margin","opacity","text","verticalAlign","classes","onDrop","acceptedFiles","reader","FileReader","addEventListener","onChange","result","readAsDataURL","getRootProps","getInputProps","isDragActive","root","customClasses","label","value","Utils","clsx","previewClassName","disabled","I18n","t","icons","onlyRooms","onlyDevices","base64","getLanguage","backgroundColor","cursor","propTypes","PropTypes","string","object","name","any","bool","func","array"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAIA,UAAU,GAAG,SAAbA,UAAa,CAAUC,KAAV,EAAiB;AAAA;;AAC9B,MAAIC,UAAU,GAAGD,KAAK,CAACE,IAAvB;AAEA,MAAMC,SAAS,GAAG,4BAAW,UAAAC,KAAK;AAAA,WAAK;AACnCC,MAAAA,aAAa,EAAG;AACZC,QAAAA,OAAO,EAAE,MADG;AAEZC,QAAAA,cAAc,EAAE,MAFJ;AAGZC,QAAAA,UAAU,EAAE;AAHA,OADmB;AAMnCC,MAAAA,WAAW,EAAG;AACVH,QAAAA,OAAO,EAAE,MADC;AAEVI,QAAAA,OAAO,EAAE,EAFC;AAGVC,QAAAA,QAAQ,EAAE;AAHA,OANqB;AAWnCC,MAAAA,YAAY,EAAE;AACVC,QAAAA,KAAK,EAAE,KAAK,EADF;AAEVC,QAAAA,MAAM,EAAE,EAFE;AAGVC,QAAAA,UAAU,EAAE,QAHF;AAIVC,QAAAA,UAAU,EAAE,MAJF;AAKVC,QAAAA,WAAW,EAAE;AALH,OAXqB;AAkBnCC,MAAAA,SAAS,EAAE;AACPC,QAAAA,SAAS,EAAE,QADJ;AAEPb,QAAAA,OAAO,EAAE,OAFF;AAGPc,QAAAA,SAAS,EAAE,EAHJ;AAIPP,QAAAA,KAAK,EAAE,mBAJA;AAKPQ,QAAAA,MAAM,EAAE,iBALD;AAMPC,QAAAA,YAAY,EAAE,EANP;AAOPZ,QAAAA,OAAO,EAAE;AAPF,OAlBwB;AA2BnCa,MAAAA,QAAQ,EAAG;AACPC,QAAAA,MAAM,EAAE,EADD;AAEPC,QAAAA,OAAO,EAAE;AAFF,OA3BwB;AA+BnCC,MAAAA,IAAI,EAAE;AACFpB,QAAAA,OAAO,EAAE,YADP;AAEFqB,QAAAA,aAAa,EAAE;AAFb;AA/B6B,KAAL;AAAA,GAAhB,CAAlB;AAqCA,MAAMC,OAAO,GAAGzB,SAAS,EAAzB;AAEA,MAAM0B,MAAM,GAAG,wBAAY,UAAAC,aAAa,EAAI;AACxC,QAAMC,MAAM,GAAG,IAAIC,UAAJ,EAAf;AAEAD,IAAAA,MAAM,CAACE,gBAAP,CAAwB,MAAxB,EAAgC;AAAA,aAC5BjC,KAAK,CAACkC,QAAN,CAAeH,MAAM,CAACI,MAAtB,CAD4B;AAAA,KAAhC,EACmC,KADnC;;AAGA,QAAIL,aAAa,CAAC,CAAD,CAAjB,EAAsB;AAClBC,MAAAA,MAAM,CAACK,aAAP,CAAqBN,aAAa,CAAC,CAAD,CAAlC;AACH;AACJ,GATc,EASZ,EATY,CAAf,CA1C8B,CAmDtB;;AAER,qBAAoD,gCAAY;AAACD,IAAAA,MAAM,EAANA;AAAD,GAAZ,CAApD;AAAA,MAAOQ,YAAP,gBAAOA,YAAP;AAAA,MAAqBC,aAArB,gBAAqBA,aAArB;AAAA,MAAoCC,YAApC,gBAAoCA,YAApC;;AAEA,sBAAO;AAAK,IAAA,SAAS,EAAEX,OAAO,CAACvB;AAAxB,KACFJ,UAAU,gBAAG,gCAAC,UAAD;AAAY,IAAA,SAAS,EAAG2B,OAAO,CAACL;AAAhC,IAAH,GAAkD,IAD1D,eAEH,gCAAC,uBAAD;AAAa,IAAA,OAAO,EAAC,UAArB;AAAgC,IAAA,SAAS,EAAEK,OAAO,CAACnB,WAAnD;AAAgE,IAAA,KAAK,EAAE;AAACC,MAAAA,OAAO,EAAE;AAAV;AAAvE,kBACI,gCAAC,sBAAD;AAAY,IAAA,MAAM,MAAlB;AAAmB,IAAA,OAAO,EAAE;AAAC8B,MAAAA,IAAI,0BAAExC,KAAK,CAACyC,aAAR,yDAAE,qBAAqBC;AAA5B;AAA5B,KACM1C,KAAK,CAAC0C,KADZ,CADJ,eAII;AAAK,IAAA,SAAS,EAAGd,OAAO,CAACvB;AAAzB,KACKL,KAAK,CAAC2C,KAAN,gBACG;AAAK,IAAA,SAAS,EAAGf,OAAO,CAAChB;AAAzB,kBACI,gCAAC,gBAAD;AAAM,IAAA,GAAG,EAAC,EAAV;AAAa,IAAA,SAAS,EAAEgC,kBAAMC,IAAN,CAAW7C,KAAK,CAAC8C,gBAAjB,2BAAmC9C,KAAK,CAACyC,aAAzC,0DAAmC,sBAAqBvC,IAAxD,CAAxB;AAAuF,IAAA,GAAG,EAAEF,KAAK,CAAC2C;AAAlG,IADJ,EAEK,CAAC3C,KAAK,CAAC+C,QAAP,iBAAmB,gCAAC,sBAAD;AAChB,IAAA,KAAK,EAAE;AAACpB,MAAAA,aAAa,EAAE;AAAhB,KADS;AAEhB,IAAA,KAAK,EAAEqB,iBAAKC,CAAL,CAAO,eAAP,CAFS;AAGhB,IAAA,IAAI,EAAC,OAHW;AAIhB,IAAA,OAAO,EAAE;AAAA,aAAMjD,KAAK,CAACkC,QAAN,CAAe,EAAf,CAAN;AAAA;AAJO,kBAMhB,gCAAC,iBAAD,OANgB,CAFxB,CADH,GAaI,CAAClC,KAAK,CAAC+C,QAAP,iBAAmB,gCAAC,wBAAD;AAChB,IAAA,KAAK,EAAE/C,KAAK,CAACkD,KADG;AAEhB,IAAA,SAAS,EAAElD,KAAK,CAACmD,SAFD;AAGhB,IAAA,WAAW,EAAEnD,KAAK,CAACoD,WAHH;AAIhB,IAAA,QAAQ,EAAE,kBAAAC,MAAM;AAAA,aAAIrD,KAAK,CAACkC,QAAN,CAAemB,MAAf,CAAJ;AAAA,KAJA;AAKhB,IAAA,CAAC,EAAEL,iBAAKC,CALQ;AAMhB,IAAA,IAAI,EAAED,iBAAKM,WAAL;AANU,IAd5B,EAwBK,CAACtD,KAAK,CAAC+C,QAAP,iBAAmB,oDACZV,YAAY,EADA;AAEhB,IAAA,SAAS,EAAET,OAAO,CAACV,SAFH;AAGhB,IAAA,KAAK,EAAEqB,YAAY,GAAG;AAACgB,MAAAA,eAAe,EAAE;AAAlB,KAAH,GAA+C;AAACC,MAAAA,MAAM,EAAE;AAAT;AAHlD,mBAKhB,yCAAWlB,aAAa,EAAxB,CALgB,EAOZC,YAAY,gBACR;AAAM,IAAA,SAAS,EAAEX,OAAO,CAACF;AAAzB,KAAgCsB,iBAAKC,CAAL,CAAO,2BAAP,CAAhC,CADQ,gBAER;AAAM,IAAA,SAAS,EAAErB,OAAO,CAACF;AAAzB,KAAgCsB,iBAAKC,CAAL,8DAAhC,CATQ,CAxBxB,CAJJ,CAFG,CAAP;AA6CH,CApGD;;AAsGAlD,UAAU,CAAC0D,SAAX,GAAuB;AACnBX,EAAAA,gBAAgB,EAAEY,sBAAUC,MADT;AAEnBzD,EAAAA,IAAI,EAAEwD,sBAAUE,MAFG;AAGnBnB,EAAAA,aAAa,EAAEiB,sBAAUE,MAHN;AAInBlB,EAAAA,KAAK,EAAEgB,sBAAUC,MAJE;AAKnBE,EAAAA,IAAI,EAAEH,sBAAUC,MALG;AAMnBhB,EAAAA,KAAK,EAAEe,sBAAUI,GANE;AAOnBf,EAAAA,QAAQ,EAAEW,sBAAUK,IAPD;AAQnB7B,EAAAA,QAAQ,EAAEwB,sBAAUM,IARD;AAUnBd,EAAAA,KAAK,EAAEQ,sBAAUO,KAVE;AAWnBd,EAAAA,SAAS,EAAEO,sBAAUK,IAXF;AAYnBX,EAAAA,WAAW,EAAEM,sBAAUK;AAZJ,CAAvB;AAeA;;eACehE,U","sourcesContent":["import React, {useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport {useDropzone} from 'react-dropzone';\nimport makeStyles from '@mui/styles/makeStyles';\n\nimport InputLabel from '@mui/material/InputLabel';\nimport FormControl from '@mui/material/FormControl';\nimport IconButton from '@mui/material/IconButton';\nimport ClearIcon from '@mui/icons-material/Clear';\n\nimport IconSelector from './IconSelector';\nimport Icon from './Icon';\nimport I18n from '../i18n';\nimport Utils from './Utils';\n\n/**\n * @typedef {object} IconPickerProps\n * @property {string} [value] The value.\n * @property {string} [label] The label.\n * @property {boolean} [disabled] Set to true to disable the icon picker.\n * @property {(icon: string) => void} onChange The icon change callback.\n * @property {import('../Connection').default} socket The socket connection.\n * @property {string} [imagePrefix] The image prefix (default: './files/')\n * @property {React.CSSProperties} [style] Additional styling for this component.\n * @property {string} [className] The CSS class name.\n *\n * @extends {React.Component<IconPickerProps>}\n */\nlet IconPicker = function (props) {\n let IconCustom = props.icon;\n\n const useStyles = makeStyles(theme => ({\n formContainer : {\n display: 'flex',\n justifyContent: 'left',\n alignItems: 'center'\n },\n formControl : {\n display: 'flex',\n padding: 24,\n flexGrow: 1000\n },\n divContainer: {\n width: 32 + 24,\n height: 32,\n whiteSpace: 'nowrap',\n lineHeight: '32px',\n marginRight: 8\n },\n dragField: {\n textAlign: 'center',\n display: 'table',\n minHeight: 90,\n width: 'calc(100% - 60px)',\n border: '2px dashed #777',\n borderRadius: 10,\n padding: 4,\n },\n formIcon : {\n margin: 10,\n opacity: 0.6\n },\n text: {\n display: 'table-cell',\n verticalAlign: 'middle',\n }\n }));\n\n const classes = useStyles();\n\n const onDrop = useCallback(acceptedFiles => {\n const reader = new FileReader();\n\n reader.addEventListener('load', () =>\n props.onChange(reader.result), false);\n\n if (acceptedFiles[0]) {\n reader.readAsDataURL(acceptedFiles[0]);\n }\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n const {getRootProps, getInputProps, isDragActive} = useDropzone({onDrop});\n\n return <div className={classes.formContainer}>\n {IconCustom ? <IconCustom className={ classes.formIcon }/> : null}\n <FormControl variant=\"standard\" className={classes.formControl} style={{padding: 3}}>\n <InputLabel shrink classes={{root: props.customClasses?.label}}>\n { props.label }\n </InputLabel>\n <div className={ classes.formContainer }>\n {props.value ?\n <div className={ classes.divContainer }>\n <Icon alt=\"\" className={Utils.clsx(props.previewClassName, props.customClasses?.icon)} src={props.value}/>\n {!props.disabled && <IconButton\n style={{verticalAlign: 'top'}}\n title={I18n.t('ra_Clear icon')}\n size=\"small\"\n onClick={() => props.onChange('')}\n >\n <ClearIcon/>\n </IconButton>}\n </div>\n :\n (!props.disabled && <IconSelector\n icons={props.icons}\n onlyRooms={props.onlyRooms}\n onlyDevices={props.onlyDevices}\n onSelect={base64 => props.onChange(base64)}\n t={I18n.t}\n lang={I18n.getLanguage()}\n />)\n }\n\n {!props.disabled && <div\n {...getRootProps()}\n className={classes.dragField}\n style={isDragActive ? {backgroundColor: 'rgba(0, 255, 0, 0.1)'} : {cursor: 'pointer'}}\n >\n <input {...getInputProps()} />\n {\n isDragActive ?\n <span className={classes.text}>{I18n.t('ra_Drop the files here...')}</span> :\n <span className={classes.text}>{I18n.t(`ra_Drag 'n' drop some files here, or click to select files`)}</span>\n }\n </div>}\n </div>\n </FormControl>\n </div>;\n};\n\nIconPicker.propTypes = {\n previewClassName: PropTypes.string,\n icon: PropTypes.object,\n customClasses: PropTypes.object,\n label: PropTypes.string,\n name: PropTypes.string,\n value: PropTypes.any,\n disabled: PropTypes.bool,\n onChange: PropTypes.func,\n\n icons: PropTypes.array,\n onlyRooms: PropTypes.bool,\n onlyDevices: PropTypes.bool,\n};\n\n/** @type {typeof IconPicker} */\nexport default IconPicker;"],"file":"IconPicker.js"}
1
+ {"version":3,"sources":["IconPicker.js"],"names":["IconPicker","props","IconCustom","icon","useStyles","theme","formContainer","display","justifyContent","alignItems","formControl","padding","flexGrow","divContainer","width","height","whiteSpace","lineHeight","marginRight","dragField","textAlign","minHeight","border","borderRadius","formIcon","margin","opacity","text","verticalAlign","classes","onDrop","acceptedFiles","reader","FileReader","addEventListener","onChange","result","readAsDataURL","getRootProps","getInputProps","isDragActive","root","customClasses","label","value","Utils","clsx","previewClassName","disabled","I18n","t","icons","onlyRooms","onlyDevices","base64","getLanguage","backgroundColor","cursor","propTypes","PropTypes","string","object","any","bool","func","isRequired","array"],"mappings":"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","sourcesContent":["import React, {useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport {useDropzone} from 'react-dropzone';\nimport makeStyles from '@mui/styles/makeStyles';\n\nimport InputLabel from '@mui/material/InputLabel';\nimport FormControl from '@mui/material/FormControl';\nimport IconButton from '@mui/material/IconButton';\nimport ClearIcon from '@mui/icons-material/Clear';\n\nimport IconSelector from './IconSelector';\nimport Icon from './Icon';\nimport I18n from '../i18n';\nimport Utils from './Utils';\n\n/**\n * @typedef {object} IconPickerProps\n * @property {string} [value] The value.\n * @property {string} [label] The label.\n * @property {boolean} [disabled] Set to true to disable the icon picker.\n * @property {(icon: string) => void} onChange The icon change callback.\n * @property {import('../Connection').default} socket The socket connection.\n * @property {string} [imagePrefix] The image prefix (default: './files/')\n * @property {React.CSSProperties} [style] Additional styling for this component.\n * @property {string} [className] The CSS class name.\n *\n * @extends {React.Component<IconPickerProps>}\n */\nlet IconPicker = function (props) {\n let IconCustom = props.icon;\n\n const useStyles = makeStyles(theme => ({\n formContainer : {\n display: 'flex',\n justifyContent: 'left',\n alignItems: 'center'\n },\n formControl : {\n display: 'flex',\n padding: 24,\n flexGrow: 1000\n },\n divContainer: {\n width: 32 + 24,\n height: 32,\n whiteSpace: 'nowrap',\n lineHeight: '32px',\n marginRight: 8\n },\n dragField: {\n textAlign: 'center',\n display: 'table',\n minHeight: 90,\n width: 'calc(100% - 60px)',\n border: '2px dashed #777',\n borderRadius: 10,\n padding: 4,\n },\n formIcon : {\n margin: 10,\n opacity: 0.6\n },\n text: {\n display: 'table-cell',\n verticalAlign: 'middle',\n }\n }));\n\n const classes = useStyles();\n\n const onDrop = useCallback(acceptedFiles => {\n const reader = new FileReader();\n\n reader.addEventListener('load', () =>\n props.onChange(reader.result), false);\n\n if (acceptedFiles[0]) {\n reader.readAsDataURL(acceptedFiles[0]);\n }\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n const {getRootProps, getInputProps, isDragActive} = useDropzone({onDrop});\n\n return <div className={classes.formContainer}>\n {IconCustom ? <IconCustom className={ classes.formIcon }/> : null}\n <FormControl variant=\"standard\" className={classes.formControl} style={{padding: 3}}>\n <InputLabel shrink classes={{root: props.customClasses?.label}}>\n { props.label }\n </InputLabel>\n <div className={ classes.formContainer }>\n {props.value ?\n <div className={ classes.divContainer }>\n <Icon alt=\"\" className={Utils.clsx(props.previewClassName, props.customClasses?.icon)} src={props.value}/>\n {!props.disabled && <IconButton\n style={{verticalAlign: 'top'}}\n title={I18n.t('ra_Clear icon')}\n size=\"small\"\n onClick={() => props.onChange('')}\n >\n <ClearIcon/>\n </IconButton>}\n </div>\n :\n (!props.disabled && <IconSelector\n icons={props.icons}\n onlyRooms={props.onlyRooms}\n onlyDevices={props.onlyDevices}\n onSelect={base64 => props.onChange(base64)}\n t={I18n.t}\n lang={I18n.getLanguage()}\n />)\n }\n\n {!props.disabled && <div\n {...getRootProps()}\n className={classes.dragField}\n style={isDragActive ? {backgroundColor: 'rgba(0, 255, 0, 0.1)'} : {cursor: 'pointer'}}\n >\n <input {...getInputProps()} />\n {\n isDragActive ?\n <span className={classes.text}>{I18n.t('ra_Drop the files here...')}</span> :\n <span className={classes.text}>{I18n.t(`ra_Drag 'n' drop some files here, or click to select files`)}</span>\n }\n </div>}\n </div>\n </FormControl>\n </div>;\n};\n\nIconPicker.propTypes = {\n previewClassName: PropTypes.string,\n icon: PropTypes.object,\n customClasses: PropTypes.object,\n label: PropTypes.string,\n value: PropTypes.any,\n disabled: PropTypes.bool,\n onChange: PropTypes.func.isRequired,\n\n icons: PropTypes.array,\n onlyRooms: PropTypes.bool,\n onlyDevices: PropTypes.bool,\n};\n\n/** @type {typeof IconPicker} */\nexport default IconPicker;"],"file":"IconPicker.js"}
@@ -189,6 +189,7 @@ var Image = /*#__PURE__*/function (_React$Component) {
189
189
 
190
190
  if (props && state && props.color !== state.color) {
191
191
  newState.color = props.color;
192
+ newState.created = false;
192
193
  changed = true;
193
194
  }
194
195
 
@@ -206,7 +207,7 @@ var Image = /*#__PURE__*/function (_React$Component) {
206
207
 
207
208
  Image.propTypes = {
208
209
  color: _propTypes["default"].string,
209
- src: _propTypes["default"].string,
210
+ src: _propTypes["default"].string.isRequired,
210
211
  className: _propTypes["default"].string,
211
212
  imagePrefix: _propTypes["default"].string
212
213
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["Image.js"],"names":["getElementFromSource","src","svgContainer","document","createElement","innerHTML","svg","firstElementChild","remove","removeChild","serializeAttrs","map","ret","prop","i","length","key","name","startsWith","replace","g","toUpperCase","value","Image","props","state","created","color","imgError","showError","getSvgFromData","len","substring","atob","inner","svgProps","attributes","className","__html","e","setTimeout","setState","IconNoIcon","imagePrefix","newState","changed","React","Component","propTypes","PropTypes","string"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport IconNoIcon from '../assets/no_icon.svg';\n\nfunction getElementFromSource(src) {\n const svgContainer = document.createElement('div');\n svgContainer.innerHTML = src;\n const svg = svgContainer.firstElementChild;\n if (svg.remove) {\n svg.remove();\n } else {\n svgContainer.removeChild(svg);\n }\n svgContainer.remove();\n return svg;\n}\n\nfunction serializeAttrs(map) {\n const ret = {};\n for (let prop, i = 0; i < map.length; i++) {\n const key = map[i].name;\n if (key === 'class') {\n prop = 'className';\n }\n else if (!key.startsWith('data-')) {\n prop = key.replace(/[-|:]([a-z])/g, g => g[1].toUpperCase());\n } else {\n prop = key;\n }\n\n ret[prop] = map[i].value;\n }\n return ret;\n}\n\n/**\n * @typedef {object} ImageProps\n * @property {string} [key] The key to identify this component.\n * @property {string} [color] The color.\n * @property {string} [src] The source of the image.\n * @property {string} [imagePrefix] The image prefix (default: './files/')\n * @property {string} [className] The CSS class name.\n * @property {boolean} [showError] Show image errors (or just show no image)?\n *\n * @extends {React.Component<ImageProps>}\n */\nclass Image extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n svg: !!(this.props.src && this.props.src.startsWith('data:')),\n created: true,\n color: this.props.color || '',\n src: this.props.src || '',\n imgError: false,\n showError: this.props.showError,\n };\n\n this.svg = this.state.svg ? this.getSvgFromData(this.state.src) : null;\n }\n\n static getDerivedStateFromProps(props, state) {\n const newState = {};\n let changed = false;\n\n if (props && state && props.src !== state.src) {\n newState.src = props.src;\n newState.svg = props.src && props.src.startsWith('data:');\n newState.created = false;\n changed = true;\n }\n\n if (props && state && props.color !== state.color) {\n newState.color = props.color;\n changed = true;\n }\n if (props && state && props.showError !== state.showError) {\n newState.showError = props.showError;\n changed = true;\n }\n\n return changed ? newState : null;\n }\n\n getSvgFromData(src) {\n const len = 'data:image/svg+xml;base64,';\n if (!src.startsWith(len)) {\n return null;\n }\n src = src.substring(len.length);\n try {\n src = atob(src);\n const svg = getElementFromSource(src);\n const inner = svg.innerHTML;\n const svgProps = serializeAttrs(svg.attributes || []);\n\n svg.remove();\n\n return <svg\n className={this.props.className}\n style={this.state.color ? {color: this.state.color} : {}}\n {...svgProps}\n dangerouslySetInnerHTML={{ __html: inner }}\n />;\n } catch (e) {\n\n }\n return null;\n }\n\n render() {\n if (this.state.svg) {\n if (!this.state.created) {\n setTimeout(() => {\n this.svg = this.getSvgFromData(this.state.src);\n this.setState({created: true});\n }, 50);\n }\n\n return this.svg;\n } else if (this.state.src) {\n return <img\n className={this.props.className}\n src={this.state.imgError ? IconNoIcon : (this.props.imagePrefix || '') + this.state.src || IconNoIcon}\n alt=\"\"\n onError={() => this.props.showError ? this.setState({imgError: true}) : this.setState({src: ''})}\n />;\n } else {\n return null;\n }\n }\n}\n\nImage.propTypes = {\n color: PropTypes.string,\n src: PropTypes.string,\n className: PropTypes.string,\n imagePrefix: PropTypes.string,\n};\n\nexport default Image;"],"file":"Image.js"}
1
+ {"version":3,"sources":["Image.js"],"names":["getElementFromSource","src","svgContainer","document","createElement","innerHTML","svg","firstElementChild","remove","removeChild","serializeAttrs","map","ret","prop","i","length","key","name","startsWith","replace","g","toUpperCase","value","Image","props","state","created","color","imgError","showError","getSvgFromData","len","substring","atob","inner","svgProps","attributes","className","__html","e","setTimeout","setState","IconNoIcon","imagePrefix","newState","changed","React","Component","propTypes","PropTypes","string","isRequired"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport IconNoIcon from '../assets/no_icon.svg';\n\nfunction getElementFromSource(src) {\n const svgContainer = document.createElement('div');\n svgContainer.innerHTML = src;\n const svg = svgContainer.firstElementChild;\n if (svg.remove) {\n svg.remove();\n } else {\n svgContainer.removeChild(svg);\n }\n svgContainer.remove();\n return svg;\n}\n\nfunction serializeAttrs(map) {\n const ret = {};\n for (let prop, i = 0; i < map.length; i++) {\n const key = map[i].name;\n if (key === 'class') {\n prop = 'className';\n }\n else if (!key.startsWith('data-')) {\n prop = key.replace(/[-|:]([a-z])/g, g => g[1].toUpperCase());\n } else {\n prop = key;\n }\n\n ret[prop] = map[i].value;\n }\n return ret;\n}\n\n/**\n * @typedef {object} ImageProps\n * @property {string} [key] The key to identify this component.\n * @property {string} [color] The color.\n * @property {string} [src] The source of the image.\n * @property {string} [imagePrefix] The image prefix (default: './files/')\n * @property {string} [className] The CSS class name.\n * @property {boolean} [showError] Show image errors (or just show no image)?\n *\n * @extends {React.Component<ImageProps>}\n */\nclass Image extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n svg: !!(this.props.src && this.props.src.startsWith('data:')),\n created: true,\n color: this.props.color || '',\n src: this.props.src || '',\n imgError: false,\n showError: this.props.showError,\n };\n\n this.svg = this.state.svg ? this.getSvgFromData(this.state.src) : null;\n }\n\n static getDerivedStateFromProps(props, state) {\n const newState = {};\n let changed = false;\n\n if (props && state && props.src !== state.src) {\n newState.src = props.src;\n newState.svg = props.src && props.src.startsWith('data:');\n newState.created = false;\n changed = true;\n }\n\n if (props && state && props.color !== state.color) {\n newState.color = props.color;\n newState.created = false;\n changed = true;\n }\n\n if (props && state && props.showError !== state.showError) {\n newState.showError = props.showError;\n changed = true;\n }\n\n return changed ? newState : null;\n }\n\n getSvgFromData(src) {\n const len = 'data:image/svg+xml;base64,';\n if (!src.startsWith(len)) {\n return null;\n }\n src = src.substring(len.length);\n try {\n src = atob(src);\n const svg = getElementFromSource(src);\n const inner = svg.innerHTML;\n const svgProps = serializeAttrs(svg.attributes || []);\n\n svg.remove();\n\n return <svg\n className={this.props.className}\n style={this.state.color ? {color: this.state.color} : {}}\n {...svgProps}\n dangerouslySetInnerHTML={{ __html: inner }}\n />;\n } catch (e) {\n\n }\n return null;\n }\n\n render() {\n if (this.state.svg) {\n if (!this.state.created) {\n setTimeout(() => {\n this.svg = this.getSvgFromData(this.state.src);\n this.setState({created: true});\n }, 50);\n }\n\n return this.svg;\n } else if (this.state.src) {\n return <img\n className={this.props.className}\n src={this.state.imgError ? IconNoIcon : (this.props.imagePrefix || '') + this.state.src || IconNoIcon}\n alt=\"\"\n onError={() => this.props.showError ? this.setState({imgError: true}) : this.setState({src: ''})}\n />;\n } else {\n return null;\n }\n }\n}\n\nImage.propTypes = {\n color: PropTypes.string,\n src: PropTypes.string.isRequired,\n className: PropTypes.string,\n imagePrefix: PropTypes.string,\n};\n\nexport default Image;"],"file":"Image.js"}
@@ -56,30 +56,24 @@ var Loader = /*#__PURE__*/function (_React$Component) {
56
56
 
57
57
  var _super = _createSuper(Loader);
58
58
 
59
- /**
60
- * @param {LoaderProps} props
61
- */
62
- function Loader(props) {
63
- var _this;
64
-
59
+ function Loader() {
65
60
  _classCallCheck(this, Loader);
66
61
 
67
- _this = _super.call(this, props);
68
- _this.size = _this.props.size || 234;
69
- return _this;
62
+ return _super.apply(this, arguments);
70
63
  }
71
64
 
72
65
  _createClass(Loader, [{
73
66
  key: "render",
74
67
  value: function render() {
68
+ var size = this.props.size || 234;
75
69
  var theme = this.props.themeType || this.props.theme || 'light';
76
70
  return /*#__PURE__*/_react["default"].createElement("div", {
77
71
  className: 'logo-back logo-background-' + theme
78
72
  }, /*#__PURE__*/_react["default"].createElement("div", {
79
73
  className: "logo-div",
80
74
  style: {
81
- width: this.size,
82
- height: this.size
75
+ width: size,
76
+ height: size
83
77
  }
84
78
  }, /*#__PURE__*/_react["default"].createElement("div", {
85
79
  className: 'logo-top logo-background-' + theme,
@@ -94,7 +88,7 @@ var Loader = /*#__PURE__*/function (_React$Component) {
94
88
  }), /*#__PURE__*/_react["default"].createElement("div", {
95
89
  className: 'logo-border logo-background-' + theme + ' logo-animate-wait',
96
90
  style: {
97
- borderWidth: this.size * 0.132
91
+ borderWidth: size * 0.132
98
92
  }
99
93
  }), /*#__PURE__*/_react["default"].createElement("div", {
100
94
  className: 'logo-i logo-animate-color-inside-' + theme
@@ -111,8 +105,8 @@ var Loader = /*#__PURE__*/function (_React$Component) {
111
105
  })), /*#__PURE__*/_react["default"].createElement("div", {
112
106
  className: 'logo-animate-grow logo-animate-grow-' + theme,
113
107
  style: {
114
- width: this.size + 11,
115
- height: this.size + 11
108
+ width: size + 11,
109
+ height: size + 11
116
110
  }
117
111
  }));
118
112
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["Loader.js"],"names":["styles","theme","Loader","props","size","themeType","width","height","left","borderWidth","top","bottom","React","Component","propTypes","PropTypes","number","string","_export"],"mappings":";;;;;;;;;AAMA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;AAEA,IAAMA,MAAM,GAAG,SAATA,MAAS,CAAAC,KAAK;AAAA,SAAK,EAAL;AAAA,CAApB;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACMC,M;;;;;AACF;AACJ;AACA;AACI,kBAAYC,KAAZ,EAAmB;AAAA;;AAAA;;AACf,8BAAMA,KAAN;AACA,UAAKC,IAAL,GAAY,MAAKD,KAAL,CAAWC,IAAX,IAAmB,GAA/B;AAFe;AAGlB;;;;WAED,kBAAS;AACL,UAAMH,KAAK,GAAG,KAAKE,KAAL,CAAWE,SAAX,IAAwB,KAAKF,KAAL,CAAWF,KAAnC,IAA4C,OAA1D;AACA,0BAAO;AAAK,QAAA,SAAS,EAAE,+BAA+BA;AAA/C,sBACH;AAAK,QAAA,SAAS,EAAC,UAAf;AAA0B,QAAA,KAAK,EAAE;AAACK,UAAAA,KAAK,EAAE,KAAKF,IAAb;AAAmBG,UAAAA,MAAM,EAAE,KAAKH;AAAhC;AAAjC,sBACI;AAAK,QAAA,SAAS,EAAE,8BAA8BH,KAA9C;AAAqD,QAAA,KAAK,EAAE;AAACO,UAAAA,IAAI,EAAE;AAAP;AAA5D,QADJ,eAEI;AAAK,QAAA,SAAS,EAAE,8BAA8BP,KAA9C;AAAqD,QAAA,KAAK,EAAE;AAACO,UAAAA,IAAI,EAAE;AAAP;AAA5D,QAFJ,eAGI;AACI,QAAA,SAAS,EAAE,iCAAiCP,KAAjC,GAAyC,oBADxD;AAEI,QAAA,KAAK,EAAE;AAACQ,UAAAA,WAAW,EAAE,KAAKL,IAAL,GAAY;AAA1B;AAFX,QAHJ,eAOI;AAAK,QAAA,SAAS,EAAE,sCAAsCH;AAAtD,QAPJ,eAQI;AAAK,QAAA,SAAS,EAAE,0CAA0CA,KAA1D;AAAiE,QAAA,KAAK,EAAE;AAACS,UAAAA,GAAG,EAAE;AAAN;AAAxE,QARJ,eASI;AAAK,QAAA,SAAS,EAAE,0CAA0CT,KAA1D;AAAiE,QAAA,KAAK,EAAE;AAACU,UAAAA,MAAM,EAAE;AAAT;AAAxE,QATJ,CADG,eAYH;AAAK,QAAA,SAAS,EAAE,yCAAyCV,KAAzD;AACK,QAAA,KAAK,EAAE;AAACK,UAAAA,KAAK,EAAE,KAAKF,IAAL,GAAY,EAApB;AAAwBG,UAAAA,MAAM,EAAE,KAAKH,IAAL,GAAY;AAA5C;AADZ,QAZG,CAAP;AAgBH;;;;EA3BgBQ,kBAAMC,S;;AA8B3BX,MAAM,CAACY,SAAP,GAAmB;AACfV,EAAAA,IAAI,EAAEW,sBAAUC,MADD;AAEfX,EAAAA,SAAS,EAAEU,sBAAUE;AAFN,CAAnB;AAKA;;AACA,IAAMC,OAAO,GAAG,4BAAWlB,MAAX,EAAmBE,MAAnB,CAAhB;;eACegB,O","sourcesContent":["/**\n * Copyright 2018-2021 bluefox <dogafox@gmail.com>\n *\n * MIT License\n *\n **/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport withStyles from '@mui/styles/withStyles';\nimport './loader.css'\n\nconst styles = theme => ({\n\n});\n\n/**\n * @typedef {object} LoaderProps\n * @property {string} [key] The key to identify this component.\n * @property {number} [size] The size in pixels of this loader.\n * @property {string} [themeType] The chosen theme type.\n * @property {string} [theme] The chosen theme.\n *\n * @extends {React.Component<LoaderProps>}\n */\nclass Loader extends React.Component {\n /**\n * @param {LoaderProps} props\n */\n constructor(props) {\n super(props);\n this.size = this.props.size || 234;\n }\n\n render() {\n const theme = this.props.themeType || this.props.theme || 'light';\n return <div className={'logo-back logo-background-' + theme}>\n <div className=\"logo-div\" style={{width: this.size, height: this.size}}>\n <div className={'logo-top logo-background-' + theme} style={{left: '37%'}}/>\n <div className={'logo-top logo-background-' + theme} style={{left: '57%'}}/>\n <div\n className={'logo-border logo-background-' + theme + ' logo-animate-wait'}\n style={{borderWidth: this.size * 0.132}}\n />\n <div className={'logo-i logo-animate-color-inside-' + theme}/>\n <div className={'logo-i-top logo-animate-color-inside-' + theme} style={{top: '18%'}}/>\n <div className={'logo-i-top logo-animate-color-inside-' + theme} style={{bottom: '18%'}}/>\n </div>\n <div className={'logo-animate-grow logo-animate-grow-' + theme}\n style={{width: this.size + 11, height: this.size + 11}}\n />\n </div>;\n }\n}\n\nLoader.propTypes = {\n size: PropTypes.number,\n themeType: PropTypes.string\n};\n\n/** @type {typeof Loader} */\nconst _export = withStyles(styles)(Loader);\nexport default _export;"],"file":"Loader.js"}
1
+ {"version":3,"sources":["Loader.js"],"names":["styles","theme","Loader","size","props","themeType","width","height","left","borderWidth","top","bottom","React","Component","propTypes","PropTypes","number","string","_export"],"mappings":";;;;;;;;;AAMA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;AAEA,IAAMA,MAAM,GAAG,SAATA,MAAS,CAAAC,KAAK;AAAA,SAAK,EAAL;AAAA,CAApB;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACMC,M;;;;;;;;;;;;;WACF,kBAAS;AACL,UAAMC,IAAI,GAAG,KAAKC,KAAL,CAAWD,IAAX,IAAmB,GAAhC;AACA,UAAMF,KAAK,GAAG,KAAKG,KAAL,CAAWC,SAAX,IAAwB,KAAKD,KAAL,CAAWH,KAAnC,IAA4C,OAA1D;AACA,0BAAO;AAAK,QAAA,SAAS,EAAE,+BAA+BA;AAA/C,sBACH;AAAK,QAAA,SAAS,EAAC,UAAf;AAA0B,QAAA,KAAK,EAAE;AAACK,UAAAA,KAAK,EAAEH,IAAR;AAAcI,UAAAA,MAAM,EAAEJ;AAAtB;AAAjC,sBACI;AAAK,QAAA,SAAS,EAAE,8BAA8BF,KAA9C;AAAqD,QAAA,KAAK,EAAE;AAACO,UAAAA,IAAI,EAAE;AAAP;AAA5D,QADJ,eAEI;AAAK,QAAA,SAAS,EAAE,8BAA8BP,KAA9C;AAAqD,QAAA,KAAK,EAAE;AAACO,UAAAA,IAAI,EAAE;AAAP;AAA5D,QAFJ,eAGI;AACI,QAAA,SAAS,EAAE,iCAAiCP,KAAjC,GAAyC,oBADxD;AAEI,QAAA,KAAK,EAAE;AAACQ,UAAAA,WAAW,EAAEN,IAAI,GAAG;AAArB;AAFX,QAHJ,eAOI;AAAK,QAAA,SAAS,EAAE,sCAAsCF;AAAtD,QAPJ,eAQI;AAAK,QAAA,SAAS,EAAE,0CAA0CA,KAA1D;AAAiE,QAAA,KAAK,EAAE;AAACS,UAAAA,GAAG,EAAE;AAAN;AAAxE,QARJ,eASI;AAAK,QAAA,SAAS,EAAE,0CAA0CT,KAA1D;AAAiE,QAAA,KAAK,EAAE;AAACU,UAAAA,MAAM,EAAE;AAAT;AAAxE,QATJ,CADG,eAYH;AAAK,QAAA,SAAS,EAAE,yCAAyCV,KAAzD;AACK,QAAA,KAAK,EAAE;AAACK,UAAAA,KAAK,EAAEH,IAAI,GAAG,EAAf;AAAmBI,UAAAA,MAAM,EAAEJ,IAAI,GAAG;AAAlC;AADZ,QAZG,CAAP;AAgBH;;;;EApBgBS,kBAAMC,S;;AAuB3BX,MAAM,CAACY,SAAP,GAAmB;AACfX,EAAAA,IAAI,EAAEY,sBAAUC,MADD;AAEfX,EAAAA,SAAS,EAAEU,sBAAUE;AAFN,CAAnB;AAKA;;AACA,IAAMC,OAAO,GAAG,4BAAWlB,MAAX,EAAmBE,MAAnB,CAAhB;;eACegB,O","sourcesContent":["/**\n * Copyright 2018-2021 bluefox <dogafox@gmail.com>\n *\n * MIT License\n *\n **/\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport withStyles from '@mui/styles/withStyles';\nimport './loader.css'\n\nconst styles = theme => ({\n\n});\n\n/**\n * @typedef {object} LoaderProps\n * @property {string} [key] The key to identify this component.\n * @property {number} [size] The size in pixels of this loader.\n * @property {string} [themeType] The chosen theme type.\n * @property {string} [theme] The chosen theme.\n *\n * @extends {React.Component<LoaderProps>}\n */\nclass Loader extends React.Component {\n render() {\n const size = this.props.size || 234;\n const theme = this.props.themeType || this.props.theme || 'light';\n return <div className={'logo-back logo-background-' + theme}>\n <div className=\"logo-div\" style={{width: size, height: size}}>\n <div className={'logo-top logo-background-' + theme} style={{left: '37%'}}/>\n <div className={'logo-top logo-background-' + theme} style={{left: '57%'}}/>\n <div\n className={'logo-border logo-background-' + theme + ' logo-animate-wait'}\n style={{borderWidth: size * 0.132}}\n />\n <div className={'logo-i logo-animate-color-inside-' + theme}/>\n <div className={'logo-i-top logo-animate-color-inside-' + theme} style={{top: '18%'}}/>\n <div className={'logo-i-top logo-animate-color-inside-' + theme} style={{bottom: '18%'}}/>\n </div>\n <div className={'logo-animate-grow logo-animate-grow-' + theme}\n style={{width: size + 11, height: size + 11}}\n />\n </div>;\n }\n}\n\nLoader.propTypes = {\n size: PropTypes.number,\n themeType: PropTypes.string\n};\n\n/** @type {typeof Loader} */\nconst _export = withStyles(styles)(Loader);\nexport default _export;"],"file":"Loader.js"}
@@ -100,15 +100,15 @@ var Logo = /*#__PURE__*/function (_React$Component) {
100
100
 
101
101
  if (json["native"] && json.common) {
102
102
  if (json.common.name !== _this.props.common.name) {
103
- _this.props.onError(_i18n["default"].t('ra_otherConfig', json.common.name));
103
+ _this.props.onError && _this.props.onError(_i18n["default"].t('ra_otherConfig', json.common.name));
104
104
  } else {
105
- _this.props.onLoad(json["native"]);
105
+ _this.props.onLoad && _this.props.onLoad(json["native"]);
106
106
  }
107
107
  } else {
108
- _this.props.onError(_i18n["default"].t('ra_invalidConfig'));
108
+ _this.props.onError && _this.props.onError(_i18n["default"].t('ra_invalidConfig'));
109
109
  }
110
110
  } catch (e) {
111
- _this.props.onError(e.toString());
111
+ _this.props.onError && _this.props.onError(e.toString());
112
112
  }
113
113
  };
114
114
 
@@ -176,7 +176,7 @@ var Logo = /*#__PURE__*/function (_React$Component) {
176
176
  var win = window.open(_this3.props.common.readme, '_blank');
177
177
  win.focus();
178
178
  }
179
- }, /*#__PURE__*/_react["default"].createElement(_Help["default"], null)) : null, /*#__PURE__*/_react["default"].createElement(_Fab["default"], {
179
+ }, /*#__PURE__*/_react["default"].createElement(_Help["default"], null)) : null, this.props.onLoad ? /*#__PURE__*/_react["default"].createElement(_Fab["default"], {
180
180
  size: "small",
181
181
  color: "primary",
182
182
  "aria-label": "Load config",
@@ -185,7 +185,7 @@ var Logo = /*#__PURE__*/function (_React$Component) {
185
185
  onClick: function onClick() {
186
186
  return _this3.upload();
187
187
  }
188
- }, /*#__PURE__*/_react["default"].createElement(_VerticalAlignTop["default"], null)), /*#__PURE__*/_react["default"].createElement(_Fab["default"], {
188
+ }, /*#__PURE__*/_react["default"].createElement(_VerticalAlignTop["default"], null)) : null, /*#__PURE__*/_react["default"].createElement(_Fab["default"], {
189
189
  size: "small",
190
190
  color: "primary",
191
191
  "aria-label": "Save config",
@@ -218,8 +218,8 @@ Logo.propTypes = {
218
218
  style: _propTypes["default"].object,
219
219
  "native": _propTypes["default"].object.isRequired,
220
220
  instance: _propTypes["default"].number.isRequired,
221
- onError: _propTypes["default"].func,
222
- onLoad: _propTypes["default"].func
221
+ onError: _propTypes["default"].func.isRequired,
222
+ onLoad: _propTypes["default"].func.isRequired
223
223
  };
224
224
  /** @type {typeof Logo} */
225
225
 
@@ -1 +1 @@
1
- {"version":3,"sources":["Logo.js"],"names":["styles","theme","buttons","marginRight","marginTop","logo","padding","width","Logo","evt","f","target","files","r","window","FileReader","onload","e","contents","result","json","JSON","parse","common","name","props","onError","I18n","t","onLoad","toString","readAsText","alert","_id","instance","stringify","news","titleLang","desc","generateFile","input","document","createElement","setAttribute","addEventListener","handleFileSelect","click","className","style","icon","classes","readme","win","open","focus","upload","download","filename","obj","el","encodeURIComponent","display","body","appendChild","removeChild","React","Component","propTypes","PropTypes","object","isRequired","string","number","func","_export"],"mappings":"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","sourcesContent":["// please do not delete React, as without it other projects could not be compiled: ReferenceError: React is not defined\nimport React from 'react';\nimport withStyles from '@mui/styles/withStyles';\nimport Fab from '@mui/material/Fab';\nimport PropTypes from 'prop-types';\n\nimport I18n from '../i18n';\n\nimport IconHelp from '@mui/icons-material/Help'\nimport IconUpload from '@mui/icons-material/VerticalAlignTop'\nimport IconDownload from '@mui/icons-material/VerticalAlignBottom'\n\nconst styles = theme => ({\n buttons: {\n marginRight: 5,\n marginTop: 5,\n float: 'right'\n },\n logo: {\n padding: 8,\n width: 64\n }\n});\n\n/**\n * @typedef {object} LogoProps\n * @property {any} common Adapter common configuration from io-package.json\n * @property {any} native Adapter native data from io-package.json\n * @property {number} instance Adapter instance number.\n * @property {(contents: any) => void} [onLoad]\n * @property {(error: string) => void} [onError]\n * @property {{ buttons: string, logo: string }} classes The styling class names.\n *\n * @extends {React.Component<LogoProps>}\n */\nclass Logo extends React.Component {\n\n static generateFile(filename, obj) {\n const el = window.document.createElement('a');\n el.setAttribute('href', 'data:application/json;charset=utf-8,' + encodeURIComponent(JSON.stringify(obj, null, 2)));\n el.setAttribute('download', filename);\n\n el.style.display = 'none';\n window.document.body.appendChild(el);\n\n el.click();\n\n window.document.body.removeChild(el);\n }\n\n handleFileSelect(evt) {\n const f = evt.target.files[0];\n if (f) {\n const r = new window.FileReader();\n r.onload = e => {\n const contents = e.target.result;\n try {\n const json = JSON.parse(contents);\n if (json.native && json.common) {\n if (json.common.name !== this.props.common.name) {\n this.props.onError(I18n.t('ra_otherConfig', json.common.name));\n } else {\n this.props.onLoad(json.native);\n }\n } else {\n this.props.onError(I18n.t('ra_invalidConfig'));\n }\n } catch (e) {\n this.props.onError(e.toString());\n }\n };\n r.readAsText(f);\n } else {\n alert('Failed to open JSON File');\n }\n }\n\n download() {\n const result = {\n _id: 'system.adapter.' + this.props.common.name + '.' + this.props.instance,\n common: JSON.parse(JSON.stringify(this.props.common)),\n native: this.props.native\n };\n // remove unimportant information\n if (result.common.news) {\n delete result.common.news;\n }\n if (result.common.titleLang) {\n delete result.common.titleLang;\n }\n if (result.common.desc) {\n delete result.common.desc;\n }\n\n //window.open('data:application/iobroker; content-disposition=attachment; filename=' + result._id + '.json,' + JSON.stringify(result, null, 2));\n Logo.generateFile(result._id + '.json', result);\n }\n\n upload() {\n const input = window.document.createElement('input');\n input.setAttribute('type', 'file');\n input.setAttribute('id', 'files');\n input.setAttribute('opacity', 0);\n input.addEventListener('change', e => this.handleFileSelect(e, () => {}), false);\n (input.click)();\n }\n\n render() {\n return <div className={this.props.className} style={this.props.style}>\n {this.props.common.icon ? <img src={this.props.common.icon} className={this.props.classes.logo} alt=\"logo\"/> : null}\n {this.props.common.readme ?\n <Fab size=\"small\" color=\"primary\" aria-label=\"Help\" className={this.props.classes.buttons} onClick={() => {\n const win = window.open(this.props.common.readme, '_blank');\n win.focus();\n }}><IconHelp /></Fab> : null}\n <Fab size=\"small\" color=\"primary\" aria-label=\"Load config\" className={this.props.classes.buttons} title={I18n.t('ra_Load configuration from file')} onClick={() => this.upload()}><IconUpload /></Fab>\n <Fab size=\"small\" color=\"primary\" aria-label=\"Save config\" className={this.props.classes.buttons} title={I18n.t('ra_Save configuration to file')} onClick={() => this.download()}><IconDownload /></Fab>\n </div>;\n }\n}\n\nLogo.propTypes = {\n common: PropTypes.object.isRequired,\n className: PropTypes.string,\n style: PropTypes.object,\n native: PropTypes.object.isRequired,\n instance: PropTypes.number.isRequired,\n onError: PropTypes.func,\n onLoad: PropTypes.func,\n};\n\n/** @type {typeof Logo} */\nconst _export = withStyles(styles)(Logo);\nexport default _export;"],"file":"Logo.js"}
1
+ {"version":3,"sources":["Logo.js"],"names":["styles","theme","buttons","marginRight","marginTop","logo","padding","width","Logo","evt","f","target","files","r","window","FileReader","onload","e","contents","result","json","JSON","parse","common","name","props","onError","I18n","t","onLoad","toString","readAsText","alert","_id","instance","stringify","news","titleLang","desc","generateFile","input","document","createElement","setAttribute","addEventListener","handleFileSelect","click","className","style","icon","classes","readme","win","open","focus","upload","download","filename","obj","el","encodeURIComponent","display","body","appendChild","removeChild","React","Component","propTypes","PropTypes","object","isRequired","string","number","func","_export"],"mappings":"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","sourcesContent":["// please do not delete React, as without it other projects could not be compiled: ReferenceError: React is not defined\nimport React from 'react';\nimport withStyles from '@mui/styles/withStyles';\nimport Fab from '@mui/material/Fab';\nimport PropTypes from 'prop-types';\n\nimport I18n from '../i18n';\n\nimport IconHelp from '@mui/icons-material/Help'\nimport IconUpload from '@mui/icons-material/VerticalAlignTop'\nimport IconDownload from '@mui/icons-material/VerticalAlignBottom'\n\nconst styles = theme => ({\n buttons: {\n marginRight: 5,\n marginTop: 5,\n float: 'right'\n },\n logo: {\n padding: 8,\n width: 64\n }\n});\n\n/**\n * @typedef {object} LogoProps\n * @property {any} common Adapter common configuration from io-package.json\n * @property {any} native Adapter native data from io-package.json\n * @property {number} instance Adapter instance number.\n * @property {(contents: any) => void} [onLoad]\n * @property {(error: string) => void} [onError]\n * @property {{ buttons: string, logo: string }} classes The styling class names.\n *\n * @extends {React.Component<LogoProps>}\n */\nclass Logo extends React.Component {\n\n static generateFile(filename, obj) {\n const el = window.document.createElement('a');\n el.setAttribute('href', 'data:application/json;charset=utf-8,' + encodeURIComponent(JSON.stringify(obj, null, 2)));\n el.setAttribute('download', filename);\n\n el.style.display = 'none';\n window.document.body.appendChild(el);\n\n el.click();\n\n window.document.body.removeChild(el);\n }\n\n handleFileSelect(evt) {\n const f = evt.target.files[0];\n if (f) {\n const r = new window.FileReader();\n r.onload = e => {\n const contents = e.target.result;\n try {\n const json = JSON.parse(contents);\n if (json.native && json.common) {\n if (json.common.name !== this.props.common.name) {\n this.props.onError && this.props.onError(I18n.t('ra_otherConfig', json.common.name));\n } else {\n this.props.onLoad && this.props.onLoad(json.native);\n }\n } else {\n this.props.onError && this.props.onError(I18n.t('ra_invalidConfig'));\n }\n } catch (e) {\n this.props.onError && this.props.onError(e.toString());\n }\n };\n r.readAsText(f);\n } else {\n alert('Failed to open JSON File');\n }\n }\n\n download() {\n const result = {\n _id: 'system.adapter.' + this.props.common.name + '.' + this.props.instance,\n common: JSON.parse(JSON.stringify(this.props.common)),\n native: this.props.native\n };\n // remove unimportant information\n if (result.common.news) {\n delete result.common.news;\n }\n if (result.common.titleLang) {\n delete result.common.titleLang;\n }\n if (result.common.desc) {\n delete result.common.desc;\n }\n\n //window.open('data:application/iobroker; content-disposition=attachment; filename=' + result._id + '.json,' + JSON.stringify(result, null, 2));\n Logo.generateFile(result._id + '.json', result);\n }\n\n upload() {\n const input = window.document.createElement('input');\n input.setAttribute('type', 'file');\n input.setAttribute('id', 'files');\n input.setAttribute('opacity', 0);\n input.addEventListener('change', e => this.handleFileSelect(e, () => {}), false);\n (input.click)();\n }\n\n render() {\n return <div className={this.props.className} style={this.props.style}>\n {this.props.common.icon ?\n <img src={this.props.common.icon} className={this.props.classes.logo} alt=\"logo\"/> : null}\n {this.props.common.readme ?\n <Fab\n size=\"small\"\n color=\"primary\"\n aria-label=\"Help\"\n className={this.props.classes.buttons}\n onClick={() => {\n const win = window.open(this.props.common.readme, '_blank');\n win.focus();\n }}\n ><IconHelp/></Fab> : null}\n {this.props.onLoad ? <Fab size=\"small\" color=\"primary\" aria-label=\"Load config\" className={this.props.classes.buttons}\n title={I18n.t('ra_Load configuration from file')} onClick={() => this.upload()}><IconUpload/></Fab> : null}\n <Fab size=\"small\" color=\"primary\" aria-label=\"Save config\" className={this.props.classes.buttons}\n title={I18n.t('ra_Save configuration to file')} onClick={() => this.download()}><IconDownload/></Fab>\n </div>;\n }\n}\n\nLogo.propTypes = {\n common: PropTypes.object.isRequired,\n className: PropTypes.string,\n style: PropTypes.object,\n native: PropTypes.object.isRequired,\n instance: PropTypes.number.isRequired,\n onError: PropTypes.func.isRequired,\n onLoad: PropTypes.func.isRequired,\n};\n\n/** @type {typeof Logo} */\nconst _export = withStyles(styles)(Logo);\nexport default _export;"],"file":"Logo.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["MDUtils.js"],"names":["MDUtils","text","m","match","replace","trim","toLowerCase","url","target","window","location","open","extractHeader","body","header","title","lines","split","i","length","startsWith","substring","attrs","pos","indexOf","_header","forEach","line","attr","parseFloat","toString","doc","e","stopPropagation","preventDefault"],"mappings":"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","sourcesContent":["/**\n * Copyright 2018-2021 bluefox <dogafox@gmail.com>\n *\n * MIT License\n *\n **/\nimport React from 'react';\nimport copy from './copy-to-clipboard';\n\nclass MDUtils {\n static text2link(text) {\n const m = text.match(/\\d+\\.\\)\\s/);\n if (m) {\n text = text.replace(m[0], m[0].replace(/\\s/, '&nbsp;'));\n }\n\n return text.replace(/[^a-zA-Zа-яА-Я0-9]/g, '').trim().replace(/\\s/g, '').toLowerCase();\n }\n\n static openLink(url, target) {\n if (target === 'this') {\n window.location = url;\n } else {\n window.open(url, target || '_blank');\n }\n }\n\n static getTitle(text) {\n let {body, header} = MDUtils.extractHeader(text);\n if (!header.title) {\n // remove {docsify-bla}\n body = body.replace(/{[^}]*}/g, '');\n body = body.trim();\n const lines = body.replace(/\\r/g, '').split('\\n');\n for (let i = 0; i < lines.length; i++) {\n if (lines[i].startsWith('# ')) {\n return lines[i].substring(2).trim();\n }\n }\n return '';\n } else {\n return header.title;\n }\n }\n\n static extractHeader(text) {\n const attrs = {};\n if (text.substring(0, 3) === '---') {\n const pos = text.substring(3).indexOf('\\n---');\n if (pos !== -1) {\n const _header = text.substring(3, pos + 3);\n const lines = _header.replace(/\\r/g, '').split('\\n');\n lines.forEach(line => {\n if (!line.trim()) {\n return;\n }\n const pos = line.indexOf(':');\n if (pos !== -1) {\n const attr = line.substring(0, pos).trim();\n attrs[attr] = line.substring(pos + 1).trim();\n attrs[attr] = attrs[attr].replace(/^['\"]|['\"]$/g, '');\n if (attrs[attr] === 'true') {\n attrs[attr] = true;\n } else if (attrs[attr] === 'false') {\n attrs[attr] = false;\n } else if (parseFloat(attrs[attr]).toString() === attrs[attr]) {\n attrs[attr] = parseFloat(attrs[attr]);\n }\n } else {\n attrs[line.trim()] = true;\n }\n });\n text = text.substring(pos + 7);\n }\n }\n return {header: attrs, body: text};\n }\n\n static removeDocsify(text) {\n const m = text.match(/{docsify-[^}]*}/g);\n if (m) {\n m.forEach(doc => text = text.replace(doc, ''));\n }\n return text;\n }\n\n static onCopy(e, text) {\n copy(text);\n e && e.stopPropagation();\n e && e.preventDefault();\n }\n}\n\nexport default MDUtils;"],"file":"MDUtils.js"}
1
+ {"version":3,"sources":["MDUtils.js"],"names":["MDUtils","text","m","match","replace","trim","toLowerCase","url","target","window","location","open","extractHeader","body","header","title","lines","split","i","length","startsWith","substring","attrs","pos","indexOf","_header","forEach","line","attr","parseFloat","toString","doc","e","stopPropagation","preventDefault"],"mappings":";;;;;;;AAMA;;AACA;;;;;;;;;;IAEMA,O;;;;;;;WACF,mBAAiBC,IAAjB,EAAuB;AACnB,UAAMC,CAAC,GAAGD,IAAI,CAACE,KAAL,CAAW,WAAX,CAAV;;AACA,UAAID,CAAJ,EAAO;AACHD,QAAAA,IAAI,GAAGA,IAAI,CAACG,OAAL,CAAaF,CAAC,CAAC,CAAD,CAAd,EAAmBA,CAAC,CAAC,CAAD,CAAD,CAAKE,OAAL,CAAa,IAAb,EAAmB,QAAnB,CAAnB,CAAP;AACH;;AAED,aAAOH,IAAI,CAACG,OAAL,CAAa,qBAAb,EAAoC,EAApC,EAAwCC,IAAxC,GAA+CD,OAA/C,CAAuD,KAAvD,EAA8D,EAA9D,EAAkEE,WAAlE,EAAP;AACH;;;WAED,kBAAgBC,GAAhB,EAAqBC,MAArB,EAA6B;AACzB,UAAIA,MAAM,KAAK,MAAf,EAAuB;AACnBC,QAAAA,MAAM,CAACC,QAAP,GAAkBH,GAAlB;AACH,OAFD,MAEO;AACHE,QAAAA,MAAM,CAACE,IAAP,CAAYJ,GAAZ,EAAiBC,MAAM,IAAI,QAA3B;AACH;AACJ;;;WAED,kBAAgBP,IAAhB,EAAsB;AAClB,kCAAqBD,OAAO,CAACY,aAAR,CAAsBX,IAAtB,CAArB;AAAA,UAAKY,IAAL,yBAAKA,IAAL;AAAA,UAAWC,MAAX,yBAAWA,MAAX;;AACA,UAAI,CAACA,MAAM,CAACC,KAAZ,EAAmB;AACf;AACAF,QAAAA,IAAI,GAAGA,IAAI,CAACT,OAAL,CAAa,UAAb,EAAyB,EAAzB,CAAP;AACAS,QAAAA,IAAI,GAAGA,IAAI,CAACR,IAAL,EAAP;AACA,YAAMW,KAAK,GAAGH,IAAI,CAACT,OAAL,CAAa,KAAb,EAAoB,EAApB,EAAwBa,KAAxB,CAA8B,IAA9B,CAAd;;AACA,aAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGF,KAAK,CAACG,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;AACnC,cAAIF,KAAK,CAACE,CAAD,CAAL,CAASE,UAAT,CAAoB,IAApB,CAAJ,EAA+B;AAC3B,mBAAOJ,KAAK,CAACE,CAAD,CAAL,CAASG,SAAT,CAAmB,CAAnB,EAAsBhB,IAAtB,EAAP;AACH;AACJ;;AACD,eAAO,EAAP;AACH,OAXD,MAWO;AACH,eAAOS,MAAM,CAACC,KAAd;AACH;AACJ;;;WAED,uBAAqBd,IAArB,EAA2B;AACvB,UAAMqB,KAAK,GAAG,EAAd;;AACA,UAAIrB,IAAI,CAACoB,SAAL,CAAe,CAAf,EAAkB,CAAlB,MAAyB,KAA7B,EAAoC;AAChC,YAAME,GAAG,GAAGtB,IAAI,CAACoB,SAAL,CAAe,CAAf,EAAkBG,OAAlB,CAA0B,OAA1B,CAAZ;;AACA,YAAID,GAAG,KAAK,CAAC,CAAb,EAAgB;AACZ,cAAME,OAAO,GAAGxB,IAAI,CAACoB,SAAL,CAAe,CAAf,EAAkBE,GAAG,GAAG,CAAxB,CAAhB;;AACA,cAAMP,KAAK,GAAGS,OAAO,CAACrB,OAAR,CAAgB,KAAhB,EAAuB,EAAvB,EAA2Ba,KAA3B,CAAiC,IAAjC,CAAd;;AACAD,UAAAA,KAAK,CAACU,OAAN,CAAc,UAAAC,IAAI,EAAI;AAClB,gBAAI,CAACA,IAAI,CAACtB,IAAL,EAAL,EAAkB;AACd;AACH;;AACD,gBAAMkB,GAAG,GAAGI,IAAI,CAACH,OAAL,CAAa,GAAb,CAAZ;;AACA,gBAAID,GAAG,KAAK,CAAC,CAAb,EAAgB;AACZ,kBAAMK,IAAI,GAAGD,IAAI,CAACN,SAAL,CAAe,CAAf,EAAkBE,GAAlB,EAAuBlB,IAAvB,EAAb;AACAiB,cAAAA,KAAK,CAACM,IAAD,CAAL,GAAcD,IAAI,CAACN,SAAL,CAAeE,GAAG,GAAG,CAArB,EAAwBlB,IAAxB,EAAd;AACAiB,cAAAA,KAAK,CAACM,IAAD,CAAL,GAAcN,KAAK,CAACM,IAAD,CAAL,CAAYxB,OAAZ,CAAoB,cAApB,EAAoC,EAApC,CAAd;;AACA,kBAAIkB,KAAK,CAACM,IAAD,CAAL,KAAgB,MAApB,EAA4B;AACxBN,gBAAAA,KAAK,CAACM,IAAD,CAAL,GAAc,IAAd;AACH,eAFD,MAEO,IAAIN,KAAK,CAACM,IAAD,CAAL,KAAgB,OAApB,EAA6B;AAChCN,gBAAAA,KAAK,CAACM,IAAD,CAAL,GAAc,KAAd;AACH,eAFM,MAEA,IAAIC,UAAU,CAACP,KAAK,CAACM,IAAD,CAAN,CAAV,CAAwBE,QAAxB,OAAuCR,KAAK,CAACM,IAAD,CAAhD,EAAwD;AAC3DN,gBAAAA,KAAK,CAACM,IAAD,CAAL,GAAcC,UAAU,CAACP,KAAK,CAACM,IAAD,CAAN,CAAxB;AACH;AACJ,aAXD,MAWO;AACHN,cAAAA,KAAK,CAACK,IAAI,CAACtB,IAAL,EAAD,CAAL,GAAqB,IAArB;AACH;AACJ,WAnBD;AAoBAJ,UAAAA,IAAI,GAAGA,IAAI,CAACoB,SAAL,CAAeE,GAAG,GAAG,CAArB,CAAP;AACH;AACJ;;AACD,aAAO;AAACT,QAAAA,MAAM,EAAEQ,KAAT;AAAgBT,QAAAA,IAAI,EAAEZ;AAAtB,OAAP;AACH;;;WAED,uBAAqBA,IAArB,EAA2B;AACvB,UAAMC,CAAC,GAAGD,IAAI,CAACE,KAAL,CAAW,kBAAX,CAAV;;AACA,UAAID,CAAJ,EAAO;AACHA,QAAAA,CAAC,CAACwB,OAAF,CAAU,UAAAK,GAAG;AAAA,iBAAI9B,IAAI,GAAGA,IAAI,CAACG,OAAL,CAAa2B,GAAb,EAAkB,EAAlB,CAAX;AAAA,SAAb;AACH;;AACD,aAAO9B,IAAP;AACH;;;WAED,gBAAc+B,CAAd,EAAiB/B,IAAjB,EAAuB;AACnB,uCAAKA,IAAL;AACA+B,MAAAA,CAAC,IAAIA,CAAC,CAACC,eAAF,EAAL;AACAD,MAAAA,CAAC,IAAIA,CAAC,CAACE,cAAF,EAAL;AACH;;;;;;eAGUlC,O","sourcesContent":["/**\n * Copyright 2018-2022 bluefox <dogafox@gmail.com>\n *\n * MIT License\n *\n **/\nimport React from 'react';\nimport copy from './copy-to-clipboard';\n\nclass MDUtils {\n static text2link(text) {\n const m = text.match(/\\d+\\.\\)\\s/);\n if (m) {\n text = text.replace(m[0], m[0].replace(/\\s/, '&nbsp;'));\n }\n\n return text.replace(/[^a-zA-Zа-яА-Я0-9]/g, '').trim().replace(/\\s/g, '').toLowerCase();\n }\n\n static openLink(url, target) {\n if (target === 'this') {\n window.location = url;\n } else {\n window.open(url, target || '_blank');\n }\n }\n\n static getTitle(text) {\n let {body, header} = MDUtils.extractHeader(text);\n if (!header.title) {\n // remove {docsify-bla}\n body = body.replace(/{[^}]*}/g, '');\n body = body.trim();\n const lines = body.replace(/\\r/g, '').split('\\n');\n for (let i = 0; i < lines.length; i++) {\n if (lines[i].startsWith('# ')) {\n return lines[i].substring(2).trim();\n }\n }\n return '';\n } else {\n return header.title;\n }\n }\n\n static extractHeader(text) {\n const attrs = {};\n if (text.substring(0, 3) === '---') {\n const pos = text.substring(3).indexOf('\\n---');\n if (pos !== -1) {\n const _header = text.substring(3, pos + 3);\n const lines = _header.replace(/\\r/g, '').split('\\n');\n lines.forEach(line => {\n if (!line.trim()) {\n return;\n }\n const pos = line.indexOf(':');\n if (pos !== -1) {\n const attr = line.substring(0, pos).trim();\n attrs[attr] = line.substring(pos + 1).trim();\n attrs[attr] = attrs[attr].replace(/^['\"]|['\"]$/g, '');\n if (attrs[attr] === 'true') {\n attrs[attr] = true;\n } else if (attrs[attr] === 'false') {\n attrs[attr] = false;\n } else if (parseFloat(attrs[attr]).toString() === attrs[attr]) {\n attrs[attr] = parseFloat(attrs[attr]);\n }\n } else {\n attrs[line.trim()] = true;\n }\n });\n text = text.substring(pos + 7);\n }\n }\n return {header: attrs, body: text};\n }\n\n static removeDocsify(text) {\n const m = text.match(/{docsify-[^}]*}/g);\n if (m) {\n m.forEach(doc => text = text.replace(doc, ''));\n }\n return text;\n }\n\n static onCopy(e, text) {\n copy(text);\n e && e.stopPropagation();\n e && e.preventDefault();\n }\n}\n\nexport default MDUtils;"],"file":"MDUtils.js"}
@@ -357,14 +357,14 @@ var styles = function styles(theme) {
357
357
  userSelect: 'none',
358
358
  width: '100%',
359
359
  '&:hover': {
360
- background: "".concat(theme.palette.type === 'dark' ? theme.palette.primary.dark : theme.palette.primary.light, " !important"),
360
+ background: "".concat(theme.palette.mode === 'dark' ? theme.palette.primary.dark : theme.palette.primary.light, " !important"),
361
361
  color: _Utils["default"].invertColor(theme.palette.primary.main, true)
362
362
  },
363
363
  whiteSpace: 'nowrap',
364
364
  flexWrap: 'nowrap'
365
365
  },
366
366
  tableRowLines: {
367
- borderBottom: "1px solid ".concat(theme.palette.type === 'dark' ? '#8888882e' : '#8888882e')
367
+ borderBottom: "1px solid ".concat(theme.palette.mode === 'dark' ? '#8888882e' : '#8888882e')
368
368
  },
369
369
  tableRowNoDragging: {
370
370
  cursor: 'pointer'
@@ -472,7 +472,7 @@ var styles = function styles(theme) {
472
472
  fontSize: 12,
473
473
  opacity: 0.7,
474
474
  '&:hover': {
475
- color: theme.palette.type === 'dark' ? '#009900' : '#007700'
475
+ color: theme.palette.mode === 'dark' ? '#009900' : '#007700'
476
476
  }
477
477
  },
478
478
  cellIdAliasReadWriteDiv: {
@@ -596,7 +596,7 @@ var styles = function styles(theme) {
596
596
  color: '#008000'
597
597
  },
598
598
  '100%': {
599
- color: theme.palette.type === 'dark' ? '#fff' : '#000'
599
+ color: theme.palette.mode === 'dark' ? '#fff' : '#000'
600
600
  }
601
601
  },
602
602
  cellValueTextState: {
@@ -797,7 +797,7 @@ var styles = function styles(theme) {
797
797
  backgroundColor: theme.palette.background["default"]
798
798
  },
799
799
  iconDeviceConnected: {
800
- color: theme.palette.type === 'dark' ? COLOR_NAME_CONNECTED_DARK : COLOR_NAME_CONNECTED_LIGHT,
800
+ color: theme.palette.mode === 'dark' ? COLOR_NAME_CONNECTED_DARK : COLOR_NAME_CONNECTED_LIGHT,
801
801
  opacity: 0.8,
802
802
  position: 'absolute',
803
803
  top: 4,
@@ -805,7 +805,7 @@ var styles = function styles(theme) {
805
805
  width: 20
806
806
  },
807
807
  iconDeviceDisconnected: {
808
- color: theme.palette.type === 'dark' ? COLOR_NAME_DISCONNECTED_DARK : COLOR_NAME_DISCONNECTED_LIGHT,
808
+ color: theme.palette.mode === 'dark' ? COLOR_NAME_DISCONNECTED_DARK : COLOR_NAME_DISCONNECTED_LIGHT,
809
809
  opacity: 0.8,
810
810
  position: 'absolute',
811
811
  top: 4,
@@ -813,7 +813,7 @@ var styles = function styles(theme) {
813
813
  width: 20
814
814
  },
815
815
  iconDeviceError: {
816
- color: theme.palette.type === 'dark' ? COLOR_NAME_ERROR_DARK : COLOR_NAME_ERROR_LIGHT,
816
+ color: theme.palette.mode === 'dark' ? COLOR_NAME_ERROR_DARK : COLOR_NAME_ERROR_LIGHT,
817
817
  opacity: 0.8,
818
818
  position: 'absolute',
819
819
  top: 4,