@iobroker/adapter-react-v5 3.1.26 → 3.1.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Components/FileViewer.js +10 -9
- package/Components/FileViewer.js.map +1 -1
- package/Components/IconPicker.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigCustom.js +4 -3
- package/Components/JsonConfigComponent/ConfigCustom.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigGeneric.d.ts +1 -1
- package/Components/JsonConfigComponent/ConfigGeneric.js +9 -7
- package/Components/JsonConfigComponent/ConfigGeneric.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigLanguage.js +1 -1
- package/Components/JsonConfigComponent/ConfigLanguage.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigNumber.js +33 -11
- package/Components/JsonConfigComponent/ConfigNumber.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigPanel.js +1 -0
- package/Components/JsonConfigComponent/ConfigPanel.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigSelectSendTo.js +3 -3
- package/Components/JsonConfigComponent/ConfigSelectSendTo.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigSendto.js +85 -24
- package/Components/JsonConfigComponent/ConfigSendto.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigStaticText.d.ts +1 -1
- package/Components/JsonConfigComponent/ConfigStaticText.js +45 -4
- package/Components/JsonConfigComponent/ConfigStaticText.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigTable.js +36 -25
- package/Components/JsonConfigComponent/ConfigTable.js.map +1 -1
- package/Components/JsonConfigComponent/ConfigText.js +15 -12
- package/Components/JsonConfigComponent/ConfigText.js.map +1 -1
- package/Components/JsonConfigComponent/index.js +4 -6
- package/Components/JsonConfigComponent/index.js.map +1 -1
- package/Components/ObjectBrowser.js +58 -13
- package/Components/ObjectBrowser.js.map +1 -1
- package/Connection.d.ts +5 -0
- package/Connection.js +78 -16
- package/Connection.js.map +1 -1
- package/Dialogs/FileSelect.js +2 -1
- package/Dialogs/FileSelect.js.map +1 -1
- package/Dialogs/SelectID.js.map +1 -1
- package/README.md +7 -0
- package/i18n/de.json +2 -1
- package/i18n/en.json +2 -1
- package/i18n/es.json +2 -1
- package/i18n/fr.json +2 -1
- package/i18n/it.json +2 -1
- package/i18n/nl.json +2 -1
- package/i18n/pl.json +2 -1
- package/i18n/pt.json +2 -1
- package/i18n/ru.json +2 -1
- package/i18n/zh-cn.json +2 -1
- package/package.json +1 -1
package/Components/FileViewer.js
CHANGED
|
@@ -29,8 +29,6 @@ var _styles = require("@mui/styles");
|
|
|
29
29
|
|
|
30
30
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
31
31
|
|
|
32
|
-
var _buffer = require("buffer");
|
|
33
|
-
|
|
34
32
|
var _TextField = _interopRequireDefault(require("@mui/material/TextField"));
|
|
35
33
|
|
|
36
34
|
var _Button = _interopRequireDefault(require("@mui/material/Button"));
|
|
@@ -163,13 +161,13 @@ var FileViewer = /*#__PURE__*/function (_Component) {
|
|
|
163
161
|
var data = _this.state.editingValue;
|
|
164
162
|
parts.splice(0, 2);
|
|
165
163
|
var adapter = parts[0];
|
|
166
|
-
var name = parts.splice(1).join('/');
|
|
164
|
+
var name = parts.splice(1).join('/'); // File viewer in adapter-react does not support write
|
|
167
165
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
166
|
+
/*
|
|
167
|
+
this.props.socket.writeFile64(adapter, name, Buffer.from(data).toString('base64'))
|
|
168
|
+
.then(_ => this.props.onClose())
|
|
169
|
+
.catch(e => window.alert('Cannot write file: ' + e));
|
|
170
|
+
*/
|
|
173
171
|
});
|
|
174
172
|
|
|
175
173
|
var ext = _Utils["default"].getFileExtension(_this.props.href);
|
|
@@ -178,7 +176,10 @@ var FileViewer = /*#__PURE__*/function (_Component) {
|
|
|
178
176
|
text: null,
|
|
179
177
|
code: null,
|
|
180
178
|
ext: ext,
|
|
181
|
-
|
|
179
|
+
// File viewer in adapter-react does not support write
|
|
180
|
+
editing:
|
|
181
|
+
/* !!this.props.formatEditFile || */
|
|
182
|
+
false,
|
|
182
183
|
editingValue: null,
|
|
183
184
|
copyPossible: EXTENSIONS.code.includes(ext) || EXTENSIONS.txt.includes(ext),
|
|
184
185
|
forceUpdate: Date.now(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileViewer.js","names":["styles","theme","dialog","height","paper","content","textAlign","textarea","width","img","objectFit","dialogTitle","justifyContent","display","EXTENSIONS","images","code","txt","audio","video","bufferToBase64","buffer","binary","bytes","Uint8Array","len","byteLength","i","String","fromCharCode","window","btoa","FileViewer","props","id","fileName","size","state","changed","timeout","clearTimeout","setTimeout","alert","text","readFile","setState","forceUpdate","Date","now","parts","href","split","data","editingValue","splice","adapter","name","join","socket","writeFile64","Buffer","from","toString","then","_","onClose","e","ext","Utils","getFileExtension","editing","formatEditFile","copyPossible","includes","imgError","file","undefined","newState","type","detectMimeType","supportSubscribes","subscribeFiles","onFileChanged","clsx","classes","getClassBackgroundImage","target","onerror","newValue","readOnly","scrollPaper","t","setStateBackgroundImage","getContent","copyToClipboard","Component","propTypes","PropTypes","func","lang","string","expertMode","bool","isRequired","_export","withWidth","withStyles"],"sources":["FileViewer.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { withStyles } from '@mui/styles';\nimport PropTypes from 'prop-types';\n\nimport { Buffer } from 'buffer';\n\nimport TextField from '@mui/material/TextField';\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 { IconButton } from '@mui/material';\n\nimport IconNoIcon from '../icons/IconNoIcon';\nimport withWidth from './withWidth';\nimport Utils from './Utils';\n\n// Icons\nimport { FaCopy as CopyIcon } from 'react-icons/fa';\nimport Brightness5Icon from '@mui/icons-material/Brightness6';\nimport CloseIcon from '@mui/icons-material/Close';\nimport SaveIcon from '@mui/icons-material/Save';\n\nconst styles = theme => ({\n dialog: {\n height: '100%',\n },\n paper: {\n height: 'calc(100% - 64px)',\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 dialogTitle: {\n justifyContent: 'space-between',\n display: 'flex'\n }\n});\n\nexport const EXTENSIONS = {\n images: ['png', 'jpg', 'svg', 'jpeg', 'bmp'],\n code: ['js', 'json', 'json5', 'md'],\n txt: ['log', 'txt', 'html', 'css', 'xml'],\n audio: ['mp3', 'wav', 'ogg', 'acc'],\n video: ['mp4', 'mov', 'avi'],\n};\n\nfunction bufferToBase64(buffer) {\n let binary = '';\n let bytes = new Uint8Array(buffer);\n let len = bytes.byteLength;\n for (let i = 0; i < len && i < 50; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return window.btoa(binary);\n}\n\n/**\n * @typedef {object} FileViewerProps\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 Component {\n /**\n * @param {Readonly<FileViewerProps>} props\n */\n constructor(props) {\n super(props);\n const ext = Utils.getFileExtension(this.props.href);\n\n this.state = {\n text: null,\n code: null,\n ext,\n editing: !!this.props.formatEditFile || false,\n editingValue: null,\n copyPossible: EXTENSIONS.code.includes(ext) || EXTENSIONS.txt.includes(ext),\n forceUpdate: Date.now(),\n changed: false,\n imgError: false,\n };\n }\n\n readFile() {\n if (this.props.href) {\n const parts = this.props.href.split('/');\n parts.splice(0, 2);\n const adapter = parts[0];\n const name = parts.splice(1).join('/');\n\n this.props.socket.readFile(adapter, name)\n .then(data => {\n if (data.file !== undefined) {\n data = data.file;\n }\n\n const newState = {copyPossible: this.state.copyPossible};\n // try to detect valid extension\n if (data.type === 'Buffer') {\n const ext = Utils.detectMimeType(bufferToBase64(data.data));\n if (ext) {\n newState.ext = ext;\n newState.copyPossible = EXTENSIONS.code.includes(ext) || EXTENSIONS.txt.includes(ext);\n }\n }\n\n if (newState.copyPossible) {\n if (EXTENSIONS.txt.includes(this.state.ext)) {\n newState.text = data;\n newState.editingValue = data;\n } else if (EXTENSIONS.code.includes(this.state.ext)) {\n newState.code = data;\n newState.editingValue = data;\n }\n }\n\n this.setState(newState);\n })\n .catch(e => window.alert('Cannot read file: ' + e));\n }\n }\n\n componentDidMount() {\n this.readFile();\n\n const parts = this.props.href.split('/');\n parts.splice(0, 2);\n const adapter = parts[0];\n const name = parts.splice(1).join('/');\n\n this.props.supportSubscribes && this.props.socket.subscribeFiles(adapter, name, this.onFileChanged);\n }\n\n componentWillUnmount() {\n this.timeout && clearTimeout(this.timeout);\n const parts = this.props.href.split('/');\n parts.splice(0, 2);\n const adapter = parts[0];\n const name = parts.splice(1).join('/');\n this.props.supportSubscribes && this.props.socket.subscribeFiles(adapter, name, this.onFileChanged);\n }\n\n onFileChanged = (id, fileName, size) => {\n if (!this.state.changed) {\n this.timeout && clearTimeout(this.timeout);\n this.timeout = setTimeout(() => {\n this.timeout = null;\n if (size === null) {\n window.alert('Show file was deleted!');\n } else if (this.state.text !== null || this.state.code !== null) {\n this.readFile();\n } else {\n this.setState({ forceUpdate: Date.now() });\n }\n }, 300);\n }\n };\n\n writeFile64 = () => {\n const parts = this.props.href.split('/');\n const data = this.state.editingValue;\n parts.splice(0, 2);\n const adapter = parts[0];\n const name = parts.splice(1).join('/');\n this.props.socket.writeFile64(adapter, name, Buffer.from(data).toString('base64'))\n .then(_ => this.props.onClose())\n .catch(e => window.alert('Cannot write file: ' + e));\n }\n\n static getEditFile(ext) {\n switch (ext) {\n case 'json':\n return 'json';\n case 'json5':\n return 'json5';\n case 'js':\n return 'javascript';\n case 'html':\n return 'html';\n case 'txt':\n return 'html';\n default:\n return 'json';\n }\n }\n\n getContent() {\n if (EXTENSIONS.images.includes(this.state.ext)) {\n if (this.state.imgError) {\n return <IconNoIcon className={Utils.clsx(this.props.classes.img, this.props.getClassBackgroundImage())} />;\n } else {\n return <img\n onError={e => {\n e.target.onerror = null;\n this.setState({ imgError: true });\n }}\n className={Utils.clsx(this.props.classes.img, this.props.getClassBackgroundImage())}\n src={this.props.href + '?ts=' + this.state.forceUpdate}\n alt={this.props.href}\n />;\n }\n } else if (this.state.code !== null || this.state.text !== null || this.state.editing) {\n return <TextField\n variant=\"standard\"\n className={ this.props.classes.textarea }\n multiline\n value={ this.state.editingValue || this.state.code || this.state.text }\n onChange={newValue => this.setState({ editingValue: newValue, changed: true })}\n InputProps={{ readOnly: !this.state.editing }}\n />;\n }\n }\n\n render() {\n return <Dialog\n classes={{ scrollPaper: this.props.classes.dialog, paper: this.props.classes.paper }}\n scroll=\"paper\"\n open={!!this.props.href}\n onClose={() => this.props.onClose()}\n fullWidth={true}\n maxWidth=\"xl\"\n aria-labelledby=\"form-dialog-title\"\n >\n <div className={this.props.classes.dialogTitle}>\n <DialogTitle id=\"form-dialog-title\">{this.props.t(this.state.editing ? 'Edit' : 'View') + ': ' + this.props.href}</DialogTitle>\n {EXTENSIONS.images.includes(this.state.ext) && <div>\n <IconButton size=\"large\"\n color={'inherit'}\n onClick={this.props.setStateBackgroundImage}\n >\n <Brightness5Icon />\n </IconButton>\n </div>\n }\n </div>\n <DialogContent className={this.props.classes.content}>\n {this.getContent()}\n </DialogContent>\n <DialogActions>\n {this.state.copyPossible ?\n <Button\n color=\"grey\"\n onClick={e => Utils.copyToClipboard(this.state.text || this.state.code, e)}\n startIcon={<CopyIcon />}\n >\n {this.props.t('Copy content')}\n </Button> : null}\n {this.state.editing ?\n <Button\n color=\"grey\"\n disabled={this.state.editingValue === this.state.code || this.state.editingValue === this.state.text}\n variant=\"contained\"\n onClick={this.writeFile64}\n startIcon={<SaveIcon />}\n >\n {this.props.t('Save')}\n </Button> : null}\n <Button\n variant=\"contained\"\n onClick={() => this.props.onClose()}\n color=\"primary\"\n startIcon={<CloseIcon />}\n >\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 supportSubscribes: PropTypes.bool,\n};\n\n/** @type {typeof FileViewer} */\nconst _export = withWidth()(withStyles(styles)(FileViewer));\nexport default _export;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FileViewer.js","names":["styles","theme","dialog","height","paper","content","textAlign","textarea","width","img","objectFit","dialogTitle","justifyContent","display","EXTENSIONS","images","code","txt","audio","video","bufferToBase64","buffer","binary","bytes","Uint8Array","len","byteLength","i","String","fromCharCode","window","btoa","FileViewer","props","id","fileName","size","state","changed","timeout","clearTimeout","setTimeout","alert","text","readFile","setState","forceUpdate","Date","now","parts","href","split","data","editingValue","splice","adapter","name","join","ext","Utils","getFileExtension","editing","copyPossible","includes","imgError","socket","then","file","undefined","newState","type","detectMimeType","e","supportSubscribes","subscribeFiles","onFileChanged","clsx","classes","getClassBackgroundImage","target","onerror","newValue","readOnly","scrollPaper","onClose","t","setStateBackgroundImage","getContent","copyToClipboard","writeFile64","Component","propTypes","PropTypes","func","lang","string","expertMode","bool","isRequired","_export","withWidth","withStyles"],"sources":["FileViewer.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { withStyles } from '@mui/styles';\nimport PropTypes from 'prop-types';\n\n// File viewer in adapter-react does not support write\n// import { Buffer } from 'buffer';\n\nimport TextField from '@mui/material/TextField';\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 { IconButton } from '@mui/material';\n\nimport IconNoIcon from '../icons/IconNoIcon';\nimport withWidth from './withWidth';\nimport Utils from './Utils';\n\n// Icons\nimport { FaCopy as CopyIcon } from 'react-icons/fa';\nimport Brightness5Icon from '@mui/icons-material/Brightness6';\nimport CloseIcon from '@mui/icons-material/Close';\nimport SaveIcon from '@mui/icons-material/Save';\n\nconst styles = theme => ({\n dialog: {\n height: '100%',\n },\n paper: {\n height: 'calc(100% - 64px)',\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 dialogTitle: {\n justifyContent: 'space-between',\n display: 'flex'\n }\n});\n\nexport const EXTENSIONS = {\n images: ['png', 'jpg', 'svg', 'jpeg', 'bmp'],\n code: ['js', 'json', 'json5', 'md'],\n txt: ['log', 'txt', 'html', 'css', 'xml'],\n audio: ['mp3', 'wav', 'ogg', 'acc'],\n video: ['mp4', 'mov', 'avi'],\n};\n\nfunction bufferToBase64(buffer) {\n let binary = '';\n let bytes = new Uint8Array(buffer);\n let len = bytes.byteLength;\n for (let i = 0; i < len && i < 50; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return window.btoa(binary);\n}\n\n/**\n * @typedef {object} FileViewerProps\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 Component {\n /**\n * @param {Readonly<FileViewerProps>} props\n */\n constructor(props) {\n super(props);\n const ext = Utils.getFileExtension(this.props.href);\n\n this.state = {\n text: null,\n code: null,\n ext,\n // File viewer in adapter-react does not support write\n editing: /* !!this.props.formatEditFile || */ false,\n editingValue: null,\n copyPossible: EXTENSIONS.code.includes(ext) || EXTENSIONS.txt.includes(ext),\n forceUpdate: Date.now(),\n changed: false,\n imgError: false,\n };\n }\n\n readFile() {\n if (this.props.href) {\n const parts = this.props.href.split('/');\n parts.splice(0, 2);\n const adapter = parts[0];\n const name = parts.splice(1).join('/');\n\n this.props.socket.readFile(adapter, name)\n .then(data => {\n if (data.file !== undefined) {\n data = data.file;\n }\n\n const newState = {copyPossible: this.state.copyPossible};\n // try to detect valid extension\n if (data.type === 'Buffer') {\n const ext = Utils.detectMimeType(bufferToBase64(data.data));\n if (ext) {\n newState.ext = ext;\n newState.copyPossible = EXTENSIONS.code.includes(ext) || EXTENSIONS.txt.includes(ext);\n }\n }\n\n if (newState.copyPossible) {\n if (EXTENSIONS.txt.includes(this.state.ext)) {\n newState.text = data;\n newState.editingValue = data;\n } else if (EXTENSIONS.code.includes(this.state.ext)) {\n newState.code = data;\n newState.editingValue = data;\n }\n }\n\n this.setState(newState);\n })\n .catch(e => window.alert('Cannot read file: ' + e));\n }\n }\n\n componentDidMount() {\n this.readFile();\n\n const parts = this.props.href.split('/');\n parts.splice(0, 2);\n const adapter = parts[0];\n const name = parts.splice(1).join('/');\n\n this.props.supportSubscribes && this.props.socket.subscribeFiles(adapter, name, this.onFileChanged);\n }\n\n componentWillUnmount() {\n this.timeout && clearTimeout(this.timeout);\n const parts = this.props.href.split('/');\n parts.splice(0, 2);\n const adapter = parts[0];\n const name = parts.splice(1).join('/');\n this.props.supportSubscribes && this.props.socket.subscribeFiles(adapter, name, this.onFileChanged);\n }\n\n onFileChanged = (id, fileName, size) => {\n if (!this.state.changed) {\n this.timeout && clearTimeout(this.timeout);\n this.timeout = setTimeout(() => {\n this.timeout = null;\n if (size === null) {\n window.alert('Show file was deleted!');\n } else if (this.state.text !== null || this.state.code !== null) {\n this.readFile();\n } else {\n this.setState({ forceUpdate: Date.now() });\n }\n }, 300);\n }\n };\n\n writeFile64 = () => {\n const parts = this.props.href.split('/');\n const data = this.state.editingValue;\n parts.splice(0, 2);\n const adapter = parts[0];\n const name = parts.splice(1).join('/');\n // File viewer in adapter-react does not support write\n /*\n this.props.socket.writeFile64(adapter, name, Buffer.from(data).toString('base64'))\n .then(_ => this.props.onClose())\n .catch(e => window.alert('Cannot write file: ' + e));\n */\n }\n\n static getEditFile(ext) {\n switch (ext) {\n case 'json':\n return 'json';\n case 'json5':\n return 'json5';\n case 'js':\n return 'javascript';\n case 'html':\n return 'html';\n case 'txt':\n return 'html';\n default:\n return 'json';\n }\n }\n\n getContent() {\n if (EXTENSIONS.images.includes(this.state.ext)) {\n if (this.state.imgError) {\n return <IconNoIcon className={Utils.clsx(this.props.classes.img, this.props.getClassBackgroundImage())} />;\n } else {\n return <img\n onError={e => {\n e.target.onerror = null;\n this.setState({ imgError: true });\n }}\n className={Utils.clsx(this.props.classes.img, this.props.getClassBackgroundImage())}\n src={this.props.href + '?ts=' + this.state.forceUpdate}\n alt={this.props.href}\n />;\n }\n } else if (this.state.code !== null || this.state.text !== null || this.state.editing) {\n return <TextField\n variant=\"standard\"\n className={ this.props.classes.textarea }\n multiline\n value={ this.state.editingValue || this.state.code || this.state.text }\n onChange={newValue => this.setState({ editingValue: newValue, changed: true })}\n InputProps={{ readOnly: !this.state.editing }}\n />;\n }\n }\n\n render() {\n return <Dialog\n classes={{ scrollPaper: this.props.classes.dialog, paper: this.props.classes.paper }}\n scroll=\"paper\"\n open={!!this.props.href}\n onClose={() => this.props.onClose()}\n fullWidth={true}\n maxWidth=\"xl\"\n aria-labelledby=\"form-dialog-title\"\n >\n <div className={this.props.classes.dialogTitle}>\n <DialogTitle id=\"form-dialog-title\">{this.props.t(this.state.editing ? 'Edit' : 'View') + ': ' + this.props.href}</DialogTitle>\n {EXTENSIONS.images.includes(this.state.ext) && <div>\n <IconButton size=\"large\"\n color={'inherit'}\n onClick={this.props.setStateBackgroundImage}\n >\n <Brightness5Icon />\n </IconButton>\n </div>\n }\n </div>\n <DialogContent className={this.props.classes.content}>\n {this.getContent()}\n </DialogContent>\n <DialogActions>\n {this.state.copyPossible ?\n <Button\n color=\"grey\"\n onClick={e => Utils.copyToClipboard(this.state.text || this.state.code, e)}\n startIcon={<CopyIcon />}\n >\n {this.props.t('Copy content')}\n </Button> : null}\n {this.state.editing ?\n <Button\n color=\"grey\"\n disabled={this.state.editingValue === this.state.code || this.state.editingValue === this.state.text}\n variant=\"contained\"\n onClick={this.writeFile64}\n startIcon={<SaveIcon />}\n >\n {this.props.t('Save')}\n </Button> : null}\n <Button\n variant=\"contained\"\n onClick={() => this.props.onClose()}\n color=\"primary\"\n startIcon={<CloseIcon />}\n >\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 supportSubscribes: PropTypes.bool,\n};\n\n/** @type {typeof FileViewer} */\nconst _export = withWidth()(withStyles(styles)(FileViewer));\nexport default _export;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IconPicker.js","names":["IconPicker","props","IconCustom","icon","useStyles","makeStyles","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","useCallback","acceptedFiles","reader","FileReader","addEventListener","onChange","result","readAsDataURL","useDropzone","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"],"sources":["IconPicker.js"],"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={
|
|
1
|
+
{"version":3,"file":"IconPicker.js","names":["IconPicker","props","IconCustom","icon","useStyles","makeStyles","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","useCallback","acceptedFiles","reader","FileReader","addEventListener","onChange","result","readAsDataURL","useDropzone","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"],"sources":["IconPicker.js"],"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;"],"mappings":"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"}
|
|
@@ -214,9 +214,10 @@ var ConfigCustom = /*#__PURE__*/function (_Component) {
|
|
|
214
214
|
return _context3.abrupt("return");
|
|
215
215
|
|
|
216
216
|
case 4:
|
|
217
|
-
if (this.props.schema.url.startsWith('http:') || this.props.schema.url.startsWith('https:')) {
|
|
218
|
-
|
|
219
|
-
} else
|
|
217
|
+
/*if (this.props.schema.url.startsWith('http:') || this.props.schema.url.startsWith('https:')) {
|
|
218
|
+
url = this.props.schema.url;
|
|
219
|
+
} else */
|
|
220
|
+
if (this.props.schema.url.startsWith('./')) {
|
|
220
221
|
url = "".concat(window.location.protocol, "//").concat(window.location.host).concat(this.props.schema.url.replace(/^\./, ''));
|
|
221
222
|
} else {
|
|
222
223
|
url = "".concat(window.location.protocol, "//").concat(window.location.host, "/adapter/").concat(this.props.adapterName, "/").concat(this.props.schema.url);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigCustom.js","names":["getOrLoadRemote","remote","shareScope","remoteFallbackUrl","undefined","Promise","resolve","reject","window","existingRemote","document","querySelector","onload","__initialized","__webpack_share_scopes__","init","console","error","onerror","d","script","createElement","type","setAttribute","async","src","getElementsByTagName","appendChild","loadComponent","sharedScope","module","url","container","get","factory","Module","ConfigCustom","props","state","Component","schema","setState","startsWith","location","protocol","host","replace","adapterName","i18n","pos","lastIndexOf","i18nURL","substring","lang","getLanguage","file","fetch","then","data","json","extendTranslations","log","name","split","uniqueName","fileToLoad","componentName","join","component","keys","Object","item","xs","lg","md","sm","assign","marginBottom","textAlign","width","style","themeType","darkStyle","newLine","flexBasis","height","propTypes","socket","PropTypes","object","string","themeName","className","attr","isRequired","onError","func","onChange"],"sources":["JsonConfigComponent/ConfigCustom.jsx"],"sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport LinearProgress from '@mui/material/LinearProgress';\nimport Grid from '@mui/material/Grid';\n\nimport i18n from '../../i18n';\nconst getOrLoadRemote = (remote, shareScope, remoteFallbackUrl = undefined) =>\n new Promise((resolve, reject) => {\n // check if remote exists on window\n if (!window[remote]) {\n // search dom to see if remote tag exists, but might still be loading (async)\n const existingRemote = document.querySelector(`script[data-webpack=\"${remote}\"]`);\n // when remote is loaded.\n const onload = async () => {\n // check if it was initialized\n if (window[remote]) {\n if (!window[remote].__initialized) {\n // if share scope doesn't exist (like in webpack 4) then expect shareScope to be a manual object\n if (typeof __webpack_share_scopes__ === 'undefined') {\n // use default share scope object passed in manually\n await window[remote].init(shareScope.default);\n } else {\n // otherwise, init share scope as usual\n // eslint-disable-next-line\n await window[remote].init(__webpack_share_scopes__[shareScope]);\n }\n // mark remote as initialized\n window[remote].__initialized = true;\n }\n } else {\n console.error('Cannot load ' + remote);\n return reject('Cannot load ' + remote);\n }\n // resolve promise so marking remote as loaded\n resolve(window[remote]);\n };\n\n if (existingRemote) {\n // if existing remote but not loaded, hook into its onload and wait for it to be ready\n existingRemote.onload = onload;\n existingRemote.onerror = reject;\n // check if remote fallback exists as param passed to function\n // TODO: should scan public config for a matching key if no override exists\n } else if (remoteFallbackUrl) {\n // inject remote if a fallback exists and call the same onload function\n const d = document;\n const script = d.createElement('script');\n script.type = 'text/javascript';\n // mark as data-webpack so runtime can track it internally\n script.setAttribute('data-webpack', `${remote}`);\n script.async = true;\n script.onerror = reject;\n script.onload = onload;\n script.src = remoteFallbackUrl;\n d.getElementsByTagName('head')[0].appendChild(script);\n } else {\n // no remote and no fallback exist, reject\n reject(`Cannot Find Remote ${remote} to inject`);\n }\n } else {\n // remote already instantiated, resolve\n resolve(window[remote]);\n }\n });\n\nconst loadComponent = (remote, sharedScope, module, url) => async () => {\n const container = await getOrLoadRemote(remote, sharedScope, url);\n const factory = await container.get(module);\n const Module = factory();\n return Module;\n};\n\nclass ConfigCustom extends Component {\n constructor(props) {\n super(props);\n // schema.url - location of Widget\n // schema.name - Component name\n // schema.i18n - i18n\n\n this.state = {\n Component: null,\n error: '',\n };\n }\n\n // load component dynamically\n async componentDidMount() {\n if (!this.props.schema.url) {\n console.error('URL is empty. Cannot load custom component!');\n this.setState({ error: 'URL is empty. Cannot load custom component!' });\n return;\n }\n\n let url;\n if (this.props.schema.url.startsWith('http:') || this.props.schema.url.startsWith('https:')) {\n url = this.props.schema.url;\n } else if (this.props.schema.url.startsWith('./')) {\n url = `${window.location.protocol}//${window.location.host}${this.props.schema.url.replace(/^\\./, '')}`;\n } else {\n url = `${window.location.protocol}//${window.location.host}/adapter/${this.props.adapterName}/${this.props.schema.url}`;\n }\n\n if (this.props.schema.i18n === true) {\n // load i18n from files\n const pos = url.lastIndexOf('/');\n let i18nURL;\n if (pos !== -1) {\n i18nURL = url.substring(0, pos);\n } else {\n i18nURL = url;\n }\n const lang = i18n.getLanguage();\n const file = `${i18nURL}/i18n/${lang}.json`;\n\n await fetch(file)\n .then(data => data.json())\n .then(json => i18n.extendTranslations(json, lang))\n .catch(error => console.log(`Cannot load i18n \"${file}\": ${error}`));\n } else if (this.props.schema.i18n && typeof this.props.schema.i18n === 'object') {\n try {\n i18n.extendTranslations(this.props.schema.i18n);\n } catch (error) {\n console.error(`Cannot import i18n: ${error}`);\n }\n }\n\n try {\n const [uniqueName, fileToLoad, ...componentName] = this.props.schema.name.split('/');\n console.log(uniqueName, fileToLoad, componentName.join('/'));\n // const component = await window.importFederation(uniqueName, {url, format: 'esm', from: 'vite'}, fileToLoad);\n const component = (await loadComponent(uniqueName, 'default', `./${fileToLoad}`, url)()).default;\n\n if (!component || !component || !component[componentName.join('/')]) {\n const keys = Object.keys(component || {});\n console.error('URL is empty. Cannot load custom component!');\n this.setState({ error: `Component ${this.props.schema.name} not found in ${this.props.schema.url}. Found: ${keys.join(', ')}` });\n } else {\n this.setState({ Component: component[componentName.join('/')] });\n }\n } catch (error) {\n this.setState({ error: `Cannot import from ${this.props.schema.url}: ${error}` });\n }\n }\n\n render() {\n const Component = this.state.Component;\n\n // render temporary placeholder\n if (!Component) {\n if (this.state.error) {\n return;\n } else {\n const schema = this.props.schema || {};\n\n const item = <Grid\n item\n xs={schema.xs || undefined}\n lg={schema.lg || undefined}\n md={schema.md || undefined}\n sm={schema.sm || undefined}\n style={Object.assign({}, {\n marginBottom: 0,\n //marginRight: 8,\n textAlign: 'left',\n width: schema.type === 'divider' || schema.type === 'header' ? schema.width || '100%' : undefined\n }, schema.style, this.props.themeType === 'dark' ? schema.darkStyle : {})}>\n {this.state.error ? <div>{this.state.error}</div> : <LinearProgress />}\n </Grid>;\n\n if (schema.newLine) {\n return <>\n <div style={{ flexBasis: '100%', height: 0 }} />\n {item}\n </>;\n } else {\n return item;\n }\n }\n }\n\n return <Component {...this.props} />;\n }\n}\n\nConfigCustom.propTypes = {\n socket: PropTypes.object,\n themeType: PropTypes.string,\n themeName: PropTypes.string,\n style: PropTypes.object,\n className: PropTypes.string,\n attr: PropTypes.string,\n data: PropTypes.object.isRequired,\n schema: PropTypes.object.isRequired,\n onError: PropTypes.func,\n onChange: PropTypes.func,\n};\n\nexport default ConfigCustom;"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ConfigCustom.js","names":["getOrLoadRemote","remote","shareScope","remoteFallbackUrl","undefined","Promise","resolve","reject","window","existingRemote","document","querySelector","onload","__initialized","__webpack_share_scopes__","init","console","error","onerror","d","script","createElement","type","setAttribute","async","src","getElementsByTagName","appendChild","loadComponent","sharedScope","module","url","container","get","factory","Module","ConfigCustom","props","state","Component","schema","setState","startsWith","location","protocol","host","replace","adapterName","i18n","pos","lastIndexOf","i18nURL","substring","lang","I18n","getLanguage","file","fetch","then","data","json","extendTranslations","log","name","split","uniqueName","fileToLoad","componentName","join","component","keys","Object","item","xs","lg","md","sm","assign","marginBottom","textAlign","width","style","themeType","darkStyle","newLine","flexBasis","height","propTypes","socket","PropTypes","object","string","themeName","className","attr","isRequired","onError","func","onChange"],"sources":["JsonConfigComponent/ConfigCustom.jsx"],"sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport LinearProgress from '@mui/material/LinearProgress';\nimport Grid from '@mui/material/Grid';\n\nimport I18n from '../../i18n';\nconst getOrLoadRemote = (remote, shareScope, remoteFallbackUrl = undefined) =>\n new Promise((resolve, reject) => {\n // check if remote exists on window\n if (!window[remote]) {\n // search dom to see if remote tag exists, but might still be loading (async)\n const existingRemote = document.querySelector(`script[data-webpack=\"${remote}\"]`);\n // when remote is loaded.\n const onload = async () => {\n // check if it was initialized\n if (window[remote]) {\n if (!window[remote].__initialized) {\n // if share scope doesn't exist (like in webpack 4) then expect shareScope to be a manual object\n if (typeof __webpack_share_scopes__ === 'undefined') {\n // use default share scope object passed in manually\n await window[remote].init(shareScope.default);\n } else {\n // otherwise, init share scope as usual\n // eslint-disable-next-line\n await window[remote].init(__webpack_share_scopes__[shareScope]);\n }\n // mark remote as initialized\n window[remote].__initialized = true;\n }\n } else {\n console.error('Cannot load ' + remote);\n return reject('Cannot load ' + remote);\n }\n // resolve promise so marking remote as loaded\n resolve(window[remote]);\n };\n\n if (existingRemote) {\n // if existing remote but not loaded, hook into its onload and wait for it to be ready\n existingRemote.onload = onload;\n existingRemote.onerror = reject;\n // check if remote fallback exists as param passed to function\n // TODO: should scan public config for a matching key if no override exists\n } else if (remoteFallbackUrl) {\n // inject remote if a fallback exists and call the same onload function\n const d = document;\n const script = d.createElement('script');\n script.type = 'text/javascript';\n // mark as data-webpack so runtime can track it internally\n script.setAttribute('data-webpack', `${remote}`);\n script.async = true;\n script.onerror = reject;\n script.onload = onload;\n script.src = remoteFallbackUrl;\n d.getElementsByTagName('head')[0].appendChild(script);\n } else {\n // no remote and no fallback exist, reject\n reject(`Cannot Find Remote ${remote} to inject`);\n }\n } else {\n // remote already instantiated, resolve\n resolve(window[remote]);\n }\n });\n\nconst loadComponent = (remote, sharedScope, module, url) => async () => {\n const container = await getOrLoadRemote(remote, sharedScope, url);\n const factory = await container.get(module);\n const Module = factory();\n return Module;\n};\n\nclass ConfigCustom extends Component {\n constructor(props) {\n super(props);\n // schema.url - location of Widget\n // schema.name - Component name\n // schema.i18n - i18n\n\n this.state = {\n Component: null,\n error: '',\n };\n }\n\n // load component dynamically\n async componentDidMount() {\n if (!this.props.schema.url) {\n console.error('URL is empty. Cannot load custom component!');\n this.setState({ error: 'URL is empty. Cannot load custom component!' });\n return;\n }\n\n let url;\n /*if (this.props.schema.url.startsWith('http:') || this.props.schema.url.startsWith('https:')) {\n url = this.props.schema.url;\n } else */\n if (this.props.schema.url.startsWith('./')) {\n url = `${window.location.protocol}//${window.location.host}${this.props.schema.url.replace(/^\\./, '')}`;\n } else {\n url = `${window.location.protocol}//${window.location.host}/adapter/${this.props.adapterName}/${this.props.schema.url}`;\n }\n\n if (this.props.schema.i18n === true) {\n // load i18n from files\n const pos = url.lastIndexOf('/');\n let i18nURL;\n if (pos !== -1) {\n i18nURL = url.substring(0, pos);\n } else {\n i18nURL = url;\n }\n const lang = I18n.getLanguage();\n const file = `${i18nURL}/i18n/${lang}.json`;\n\n await fetch(file)\n .then(data => data.json())\n .then(json => I18n.extendTranslations(json, lang))\n .catch(error => console.log(`Cannot load i18n \"${file}\": ${error}`));\n } else if (this.props.schema.i18n && typeof this.props.schema.i18n === 'object') {\n try {\n I18n.extendTranslations(this.props.schema.i18n);\n } catch (error) {\n console.error(`Cannot import i18n: ${error}`);\n }\n }\n\n try {\n const [uniqueName, fileToLoad, ...componentName] = this.props.schema.name.split('/');\n console.log(uniqueName, fileToLoad, componentName.join('/'));\n // const component = await window.importFederation(uniqueName, {url, format: 'esm', from: 'vite'}, fileToLoad);\n const component = (await loadComponent(uniqueName, 'default', `./${fileToLoad}`, url)()).default;\n\n if (!component || !component || !component[componentName.join('/')]) {\n const keys = Object.keys(component || {});\n console.error('URL is empty. Cannot load custom component!');\n this.setState({ error: `Component ${this.props.schema.name} not found in ${this.props.schema.url}. Found: ${keys.join(', ')}` });\n } else {\n this.setState({ Component: component[componentName.join('/')] });\n }\n } catch (error) {\n this.setState({ error: `Cannot import from ${this.props.schema.url}: ${error}` });\n }\n }\n\n render() {\n const Component = this.state.Component;\n\n // render temporary placeholder\n if (!Component) {\n if (this.state.error) {\n return;\n } else {\n const schema = this.props.schema || {};\n\n const item = <Grid\n item\n xs={schema.xs || undefined}\n lg={schema.lg || undefined}\n md={schema.md || undefined}\n sm={schema.sm || undefined}\n style={Object.assign({}, {\n marginBottom: 0,\n //marginRight: 8,\n textAlign: 'left',\n width: schema.type === 'divider' || schema.type === 'header' ? schema.width || '100%' : undefined\n }, schema.style, this.props.themeType === 'dark' ? schema.darkStyle : {})}>\n {this.state.error ? <div>{this.state.error}</div> : <LinearProgress />}\n </Grid>;\n\n if (schema.newLine) {\n return <>\n <div style={{ flexBasis: '100%', height: 0 }} />\n {item}\n </>;\n } else {\n return item;\n }\n }\n }\n\n return <Component {...this.props} />;\n }\n}\n\nConfigCustom.propTypes = {\n socket: PropTypes.object,\n themeType: PropTypes.string,\n themeName: PropTypes.string,\n style: PropTypes.object,\n className: PropTypes.string,\n attr: PropTypes.string,\n data: PropTypes.object.isRequired,\n schema: PropTypes.object.isRequired,\n onError: PropTypes.func,\n onChange: PropTypes.func,\n};\n\nexport default ConfigCustom;"],"mappings":"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"}
|
|
@@ -37,7 +37,7 @@ declare class ConfigGeneric extends React.Component<any, any, any> {
|
|
|
37
37
|
onError(attr: any, error: any): void;
|
|
38
38
|
renderItem(error: any, disabled: any, defaultValue: any): any;
|
|
39
39
|
renderHelp(text: any, link: any, noTranslation: any): any;
|
|
40
|
-
getPattern(pattern: any): any;
|
|
40
|
+
getPattern(pattern: any, data: any): any;
|
|
41
41
|
render(): JSX.Element;
|
|
42
42
|
}
|
|
43
43
|
declare namespace ConfigGeneric {
|
|
@@ -488,14 +488,17 @@ var ConfigGeneric = /*#__PURE__*/function (_Component) {
|
|
|
488
488
|
target: "_blank",
|
|
489
489
|
rel: "noreferrer",
|
|
490
490
|
style: {
|
|
491
|
-
color: this.props.themeType === 'dark' ? '#
|
|
491
|
+
color: this.props.themeType === 'dark' ? '#a147ff' : '#5b238f',
|
|
492
|
+
textDecoration: 'underline'
|
|
492
493
|
}
|
|
493
494
|
}, this.getText(text, noTranslation));
|
|
494
495
|
}
|
|
495
496
|
}
|
|
496
497
|
}, {
|
|
497
498
|
key: "getPattern",
|
|
498
|
-
value: function getPattern(pattern) {
|
|
499
|
+
value: function getPattern(pattern, data) {
|
|
500
|
+
data = data || this.props.data;
|
|
501
|
+
|
|
499
502
|
if (!pattern) {
|
|
500
503
|
return '';
|
|
501
504
|
} else {
|
|
@@ -506,14 +509,13 @@ var ConfigGeneric = /*#__PURE__*/function (_Component) {
|
|
|
506
509
|
try {
|
|
507
510
|
if (this.props.custom) {
|
|
508
511
|
// eslint-disable-next-line no-new-func
|
|
509
|
-
var f = new Function('data', 'originalData', '_system', 'instanceObj', 'customObj', '_socket', 'return `' + pattern.replace(/`/g, '\\`') + '`');
|
|
510
|
-
|
|
511
|
-
return result;
|
|
512
|
+
var f = new Function('data', 'originalData', 'arrayIndex', 'globalData', '_system', 'instanceObj', 'customObj', '_socket', 'return `' + pattern.replace(/`/g, '\\`') + '`');
|
|
513
|
+
return f(data, this.props.originalData, this.props.arrayIndex, this.props.globalData, this.props.systemConfig, this.props.instanceObj, this.props.customObj, this.props.socket, this.props.arrayIndex, this.props.globalData);
|
|
512
514
|
} else {
|
|
513
515
|
// eslint-disable-next-line no-new-func
|
|
514
|
-
var _f = new Function('data', 'originalData', '_system', '_alive', '_common', '_socket', 'return `' + pattern.replace(/`/g, '\\`') + '`');
|
|
516
|
+
var _f = new Function('data', 'originalData', 'arrayIndex', 'globalData', '_system', '_alive', '_common', '_socket', 'return `' + pattern.replace(/`/g, '\\`') + '`');
|
|
515
517
|
|
|
516
|
-
return _f(this.props.
|
|
518
|
+
return _f(data, this.props.originalData, this.props.arrayIndex, this.props.globalData, this.props.systemConfig, this.props.alive, this.props.common, this.props.socket);
|
|
517
519
|
}
|
|
518
520
|
} catch (e) {
|
|
519
521
|
console.error("Cannot execute ".concat(pattern, ": ").concat(e));
|