@iobroker/adapter-react-v5 4.6.12 → 4.7.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 (36) hide show
  1. package/Components/FileViewer.js +1 -1
  2. package/Components/FileViewer.js.map +1 -1
  3. package/Components/JsonConfigComponent/ConfigColor.d.ts +2 -1
  4. package/Components/JsonConfigComponent/ConfigFile.js +1 -1
  5. package/Components/JsonConfigComponent/ConfigFile.js.map +1 -1
  6. package/Components/JsonConfigComponent/ConfigFileSelector.js +4 -4
  7. package/Components/JsonConfigComponent/ConfigFileSelector.js.map +1 -1
  8. package/Components/JsonConfigComponent/ConfigGeneric.d.ts +68 -67
  9. package/Components/JsonConfigComponent/ConfigGeneric.js +600 -665
  10. package/Components/JsonConfigComponent/ConfigInterface.d.ts +14 -0
  11. package/Components/JsonConfigComponent/ConfigInterface.js +146 -0
  12. package/Components/JsonConfigComponent/ConfigInterface.js.map +1 -0
  13. package/Components/JsonConfigComponent/ConfigJsonEditor.d.ts +0 -1
  14. package/Components/JsonConfigComponent/ConfigJsonEditor.js +6 -11
  15. package/Components/JsonConfigComponent/ConfigJsonEditor.js.map +1 -1
  16. package/Components/JsonConfigComponent/ConfigLicense.d.ts +2 -1
  17. package/Components/JsonConfigComponent/ConfigNumber.d.ts +16 -2
  18. package/Components/JsonConfigComponent/ConfigNumber.js +105 -201
  19. package/Components/JsonConfigComponent/ConfigPattern.d.ts +2 -1
  20. package/Components/JsonConfigComponent/ConfigPort.d.ts +1 -1
  21. package/Components/JsonConfigComponent/ConfigPort.js +159 -210
  22. package/Components/JsonConfigComponent/ConfigUUID.d.ts +2 -1
  23. package/Components/JsonConfigComponent/wrapper/AdminConnection.d.ts +2 -0
  24. package/Components/JsonConfigComponent/wrapper/AdminConnection.js +7 -0
  25. package/Components/MDUtils.js +3 -3
  26. package/Components/MDUtils.js.map +1 -1
  27. package/Components/SimpleCron/cron2text.js +31 -36
  28. package/Components/SimpleCron/cron2text.js.map +1 -1
  29. package/Components/SimpleCron/index.js +10 -10
  30. package/Components/SimpleCron/index.js.map +1 -1
  31. package/LegacyConnection.js.map +1 -1
  32. package/README.md +1 -1
  33. package/package.json +1 -1
  34. package/Components/JsonConfigComponent/ConfigGeneric.js.map +0 -1
  35. package/Components/JsonConfigComponent/ConfigNumber.js.map +0 -1
  36. package/Components/JsonConfigComponent/ConfigPort.js.map +0 -1
@@ -63,7 +63,7 @@ var styles = function styles() {
63
63
  };
64
64
  };
65
65
  var EXTENSIONS = exports.EXTENSIONS = {
66
- images: ['png', 'jpg', 'svg', 'jpeg', 'bmp', 'gif'],
66
+ images: ['png', 'jpg', 'svg', 'jpeg', 'bmp', 'gif', 'apng', 'avif', 'webp'],
67
67
  code: ['js', 'json', 'json5', 'md'],
68
68
  txt: ['log', 'txt', 'html', 'css', 'xml'],
69
69
  audio: ['mp3', 'wav', 'ogg', 'acc'],
@@ -1 +1 @@
1
- {"version":3,"file":"FileViewer.js","names":["_react","_interopRequireWildcard","require","_styles","_propTypes","_interopRequireDefault","_material","_fa","_iconsMaterial","_IconNoIcon","_withWidth","_Utils","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","Reflect","construct","arguments","apply","_possibleConstructorReturn2","sham","Proxy","Boolean","valueOf","styles","dialog","height","paper","content","textAlign","textarea","width","img","objectFit","dialogTitle","justifyContent","display","EXTENSIONS","exports","images","code","txt","audio","video","bufferToBase64","buffer","isFull","binary","bytes","Uint8Array","len","byteLength","String","fromCharCode","window","btoa","FileViewer","_Component","_inherits2","_super","props","_this","_classCallCheck2","_defineProperty2","_assertThisInitialized2","id","fileName","size","state","changed","timeout","clearTimeout","setTimeout","alert","text","readFile","setState","forceUpdate","Date","now","ext","Utils","getFileExtension","href","editing","editingValue","copyPossible","includes","imgError","_createClass2","key","value","_this2","parts","split","splice","adapter","name","join","socket","then","data","file","undefined","newState","type","toLowerCase","endsWith","atob","console","error","detectMimeType","concat","componentDidMount","supportSubscribes","subscribeFiles","onFileChanged","componentWillUnmount","getContent","_this3","createElement","className","clsx","classes","getClassBackgroundImage","onError","target","onerror","src","alt","TextField","variant","multiline","inputProps","readOnly","InputProps","render","_this4","Dialog","scrollPaper","scroll","open","onClose","fullWidth","maxWidth","DialogTitle","IconButton","color","onClick","setStateBackgroundImage","Brightness6","DialogContent","DialogActions","Button","copyToClipboard","startIcon","FaCopy","disabled","writeFile64","Save","Close","getEditFile","Component","propTypes","PropTypes","func","string","isRequired","bool","_export","withWidth","withStyles","_default"],"sources":["FileViewer.js"],"sourcesContent":["// File viewer in adapter-react does not support write\n// import { Buffer } from 'buffer';\nimport React, { Component } from 'react';\nimport { withStyles } from '@mui/styles';\nimport PropTypes from 'prop-types';\n\n// File viewer in adapter-react does not use ace editor\n// import AceEditor from 'react-ace';\n// import 'ace-builds/src-min-noconflict/mode-json';\n// import 'ace-builds/src-min-noconflict/mode-json5';\n// import 'ace-builds/src-min-noconflict/worker-json';\n// import 'ace-builds/src-min-noconflict/theme-clouds_midnight';\n// import 'ace-builds/src-min-noconflict/theme-chrome';\n// import 'ace-builds/src-min-noconflict/ext-language_tools';\n\nimport {\n TextField,\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n} from '@mui/material';\n\n// Icons\nimport { FaCopy as CopyIcon } from 'react-icons/fa';\nimport {\n Close as CloseIcon,\n Save as SaveIcon,\n Brightness6 as Brightness5Icon,\n} from '@mui/icons-material';\n\nimport IconNoIcon from '../icons/IconNoIcon';\nimport withWidth from './withWidth';\nimport Utils from './Utils';\n\nconst styles = () => ({\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', 'gif'],\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, isFull) {\n let binary = '';\n const bytes = new Uint8Array(buffer);\n const len = bytes.byteLength;\n for (let i = 0; i < len && (isFull || i < 50); i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return window.btoa(binary);\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 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, ext: this.state.ext };\n // try to detect valid extension\n if (data.type === 'Buffer') {\n if (name.toLowerCase().endsWith('.json5')) {\n newState.ext = 'json5';\n newState.copyPossible = true;\n try {\n data = atob(bufferToBase64(data.data, true));\n } catch (e) {\n console.error('Cannot convert base64 to string');\n data = '';\n }\n } else {\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\n if (newState.copyPossible) {\n if (EXTENSIONS.txt.includes(newState.ext)) {\n newState.text = data;\n newState.editingValue = data;\n } else if (EXTENSIONS.code.includes(newState.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 /*\n // File viewer in adapter-react does not support write\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\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 }\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 if (this.state.code !== null || this.state.text !== null || this.state.editing) {\n // File viewer does use ace in adapter-react\n // return <AceEditor\n // mode={FileViewer.getEditFile(this.props.formatEditFile)}\n // width=\"100%\"\n // height=\"100%\"\n // theme={this.props.themeName === 'dark' ? 'clouds_midnight' : 'chrome'}\n // value={this.state.editingValue || this.state.code || this.state.text}\n // onChange={newValue => this.setState({ editingValue: newValue, changed: true })}\n // name=\"UNIQUE_ID_OF_DIV\"\n // readOnly={!this.state.editing}\n // fontSize={14}\n // setOptions={{\n // enableBasicAutocompletion: true,\n // enableLiveAutocompletion: true,\n // enableSnippets: true,\n // }}\n // editorProps={{ $blockScrolling: true }}\n // />;\n return <TextField\n variant=\"standard\"\n className={this.props.classes.textarea}\n multiline\n inputProps={{ readOnly: !this.state.editing }}\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 return null;\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\n maxWidth=\"xl\"\n aria-labelledby=\"ar_dialog_file_view_title\"\n >\n <div className={this.props.classes.dialogTitle}>\n <DialogTitle id=\"ar_dialog_file_view_title\">{`${this.props.t(this.state.editing ? 'Edit' : 'View')}: ${this.props.href}`}</DialogTitle>\n {EXTENSIONS.images.includes(this.state.ext) && <div>\n <IconButton\n size=\"large\"\n color=\"inherit\"\n onClick={this.props.setStateBackgroundImage}\n >\n <Brightness5Icon />\n </IconButton>\n </div>}\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 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":["_react","_interopRequireWildcard","require","_styles","_propTypes","_interopRequireDefault","_material","_fa","_iconsMaterial","_IconNoIcon","_withWidth","_Utils","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","Reflect","construct","arguments","apply","_possibleConstructorReturn2","sham","Proxy","Boolean","valueOf","styles","dialog","height","paper","content","textAlign","textarea","width","img","objectFit","dialogTitle","justifyContent","display","EXTENSIONS","exports","images","code","txt","audio","video","bufferToBase64","buffer","isFull","binary","bytes","Uint8Array","len","byteLength","String","fromCharCode","window","btoa","FileViewer","_Component","_inherits2","_super","props","_this","_classCallCheck2","_defineProperty2","_assertThisInitialized2","id","fileName","size","state","changed","timeout","clearTimeout","setTimeout","alert","text","readFile","setState","forceUpdate","Date","now","ext","Utils","getFileExtension","href","editing","editingValue","copyPossible","includes","imgError","_createClass2","key","value","_this2","parts","split","splice","adapter","name","join","socket","then","data","file","undefined","newState","type","toLowerCase","endsWith","atob","console","error","detectMimeType","concat","componentDidMount","supportSubscribes","subscribeFiles","onFileChanged","componentWillUnmount","getContent","_this3","createElement","className","clsx","classes","getClassBackgroundImage","onError","target","onerror","src","alt","TextField","variant","multiline","inputProps","readOnly","InputProps","render","_this4","Dialog","scrollPaper","scroll","open","onClose","fullWidth","maxWidth","DialogTitle","IconButton","color","onClick","setStateBackgroundImage","Brightness6","DialogContent","DialogActions","Button","copyToClipboard","startIcon","FaCopy","disabled","writeFile64","Save","Close","getEditFile","Component","propTypes","PropTypes","func","string","isRequired","bool","_export","withWidth","withStyles","_default"],"sources":["FileViewer.js"],"sourcesContent":["// File viewer in adapter-react does not support write\n// import { Buffer } from 'buffer';\nimport React, { Component } from 'react';\nimport { withStyles } from '@mui/styles';\nimport PropTypes from 'prop-types';\n\n// File viewer in adapter-react does not use ace editor\n// import AceEditor from 'react-ace';\n// import 'ace-builds/src-min-noconflict/mode-json';\n// import 'ace-builds/src-min-noconflict/mode-json5';\n// import 'ace-builds/src-min-noconflict/worker-json';\n// import 'ace-builds/src-min-noconflict/theme-clouds_midnight';\n// import 'ace-builds/src-min-noconflict/theme-chrome';\n// import 'ace-builds/src-min-noconflict/ext-language_tools';\n\nimport {\n TextField,\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n} from '@mui/material';\n\n// Icons\nimport { FaCopy as CopyIcon } from 'react-icons/fa';\nimport {\n Close as CloseIcon,\n Save as SaveIcon,\n Brightness6 as Brightness5Icon,\n} from '@mui/icons-material';\n\nimport IconNoIcon from '../icons/IconNoIcon';\nimport withWidth from './withWidth';\nimport Utils from './Utils';\n\nconst styles = () => ({\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', 'gif', 'apng', 'avif', 'webp'],\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, isFull) {\n let binary = '';\n const bytes = new Uint8Array(buffer);\n const len = bytes.byteLength;\n for (let i = 0; i < len && (isFull || i < 50); i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return window.btoa(binary);\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 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, ext: this.state.ext };\n // try to detect valid extension\n if (data.type === 'Buffer') {\n if (name.toLowerCase().endsWith('.json5')) {\n newState.ext = 'json5';\n newState.copyPossible = true;\n try {\n data = atob(bufferToBase64(data.data, true));\n } catch (e) {\n console.error('Cannot convert base64 to string');\n data = '';\n }\n } else {\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\n if (newState.copyPossible) {\n if (EXTENSIONS.txt.includes(newState.ext)) {\n newState.text = data;\n newState.editingValue = data;\n } else if (EXTENSIONS.code.includes(newState.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 /*\n // File viewer in adapter-react does not support write\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\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 }\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 if (this.state.code !== null || this.state.text !== null || this.state.editing) {\n // File viewer does use ace in adapter-react\n // return <AceEditor\n // mode={FileViewer.getEditFile(this.props.formatEditFile)}\n // width=\"100%\"\n // height=\"100%\"\n // theme={this.props.themeName === 'dark' ? 'clouds_midnight' : 'chrome'}\n // value={this.state.editingValue || this.state.code || this.state.text}\n // onChange={newValue => this.setState({ editingValue: newValue, changed: true })}\n // name=\"UNIQUE_ID_OF_DIV\"\n // readOnly={!this.state.editing}\n // fontSize={14}\n // setOptions={{\n // enableBasicAutocompletion: true,\n // enableLiveAutocompletion: true,\n // enableSnippets: true,\n // }}\n // editorProps={{ $blockScrolling: true }}\n // />;\n return <TextField\n variant=\"standard\"\n className={this.props.classes.textarea}\n multiline\n inputProps={{ readOnly: !this.state.editing }}\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 return null;\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\n maxWidth=\"xl\"\n aria-labelledby=\"ar_dialog_file_view_title\"\n >\n <div className={this.props.classes.dialogTitle}>\n <DialogTitle id=\"ar_dialog_file_view_title\">{`${this.props.t(this.state.editing ? 'Edit' : 'View')}: ${this.props.href}`}</DialogTitle>\n {EXTENSIONS.images.includes(this.state.ext) && <div>\n <IconButton\n size=\"large\"\n color=\"inherit\"\n onClick={this.props.setStateBackgroundImage}\n >\n <Brightness5Icon />\n </IconButton>\n </div>}\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 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,5 +1,6 @@
1
1
  export default ConfigColor;
2
- declare class ConfigColor extends ConfigGeneric {
2
+ declare class ConfigColor extends ConfigGeneric<any, any> {
3
+ constructor(props: any);
3
4
  renderColorDialog(): React.JSX.Element;
4
5
  renderItem(error: any, disabled: any): React.JSX.Element;
5
6
  }
@@ -42,7 +42,7 @@ var styles = function styles() {
42
42
  }
43
43
  };
44
44
  };
45
- var IMAGE_EXT = ['jpg', 'jpeg', 'svg', 'png', 'webp', 'gif'];
45
+ var IMAGE_EXT = ['jpg', 'jpeg', 'svg', 'png', 'webp', 'gif', 'apng', 'avif', 'webp'];
46
46
  var AUDIO_EXT = ['mp3', 'ogg', 'wav', 'aac'];
47
47
  var VIDEO_EXT = ['avi', 'mp4', 'mov'];
48
48
  var DOC_EXT = ['txt', 'log', 'html', 'htm'];
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigFile.js","names":["_react","_interopRequireDefault","require","_propTypes","_styles","_material","_iconsMaterial","_SelectFile","_ConfigGeneric2","_ConfigFileSelector","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","Reflect","construct","arguments","apply","_possibleConstructorReturn2","sham","Proxy","Boolean","prototype","valueOf","call","e","styles","fullWidth","width","fullWidthOneButton","marginRight","fullWidthIcon","selectedImage","height","display","IMAGE_EXT","AUDIO_EXT","VIDEO_EXT","DOC_EXT","JS_EXT","ConfigFile","_ConfigGeneric","_inherits2","_super","_classCallCheck2","_createClass2","key","value","componentDidMount","_get2","ConfigGeneric","getValue","props","data","attr","imagePrefix","undefined","setState","loadFile","pos","state","indexOf","adapter","substring","path","socket","readFile","Promise","resolve","play","then","AudioContext","file","context","buf","ConfigFileSelector","base64ToArrayBuffer","decodeAudioData","buffer","source","createBufferSource","connect","destination","start","err","window","alert","concat","getIcon","_this","extension","split","pop","toLowerCase","includes","createElement","className","classes","style","backgroundImage","backgroundSize","backgroundRepeat","IconButton","color","onClick","PlayArrow","Article","Videocam","Code","renderFileBrowser","_this2","showFileBrowser","selected","onClose","onOk","onChange","schema","trim","selectOnlyFolders","allowUpload","allowDownload","allowCreateFolder","allowView","showToolbar","limitPath","renderItem","error","disabled","_this3","icon","TextField","variant","inputProps","maxLength","max","readOnly","disableEdit","target","placeholder","getText","label","helperText","renderHelp","help","helpLink","noTranslation","Button","getDerivedStateFromProps","toString","propTypes","PropTypes","object","isRequired","themeType","string","themeName","onError","func","_default","exports","withStyles"],"sources":["JsonConfigComponent/ConfigFile.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@mui/styles';\n\nimport {\n Button,\n TextField,\n IconButton,\n} from '@mui/material';\n\nimport {\n Article as IconText,\n Code as IconCode,\n PlayArrow as IconPlay,\n Videocam as IconVideo,\n} from '@mui/icons-material';\n\nimport SelectFileDialog from './wrapper/Dialogs/SelectFile';\n\nimport ConfigGeneric from './ConfigGeneric';\nimport ConfigFileSelector from './ConfigFileSelector';\n\nconst styles = () => ({\n fullWidth: {\n width: '100%',\n },\n fullWidthOneButton: {\n width: 'calc(100% - 69px)',\n marginRight: 4,\n },\n fullWidthIcon: {\n width: 'calc(100% - 119px)',\n marginRight: 4,\n },\n selectedImage: {\n height: 40,\n width: 40,\n display: 'inline-block',\n marginRight: 8,\n },\n});\n\nconst IMAGE_EXT = ['jpg', 'jpeg', 'svg', 'png', 'webp', 'gif'];\nconst AUDIO_EXT = ['mp3', 'ogg', 'wav', 'aac'];\nconst VIDEO_EXT = ['avi', 'mp4', 'mov'];\nconst DOC_EXT = ['txt', 'log', 'html', 'htm'];\nconst JS_EXT = ['json', 'js', 'ts'];\n\nclass ConfigFile extends ConfigGeneric {\n componentDidMount() {\n super.componentDidMount();\n const value = ConfigGeneric.getValue(this.props.data, this.props.attr);\n this.imagePrefix = this.props.imagePrefix === undefined ? './files' : this.props.imagePrefix;\n this.setState({ value });\n }\n\n static getDerivedStateFromProps(props, state) {\n const value = ConfigGeneric.getValue(props.data, props.attr);\n if (value === null || value === undefined || value.toString().trim() !== (state.value || '').toString().trim()) {\n return { value };\n }\n return null;\n }\n\n loadFile() {\n const pos = this.state.value.indexOf('/');\n if (pos !== -1) {\n const adapter = this.state.value.substring(0, pos);\n const path = this.state.value.substring(pos + 1);\n return this.props.socket.readFile(adapter, path, true);\n }\n\n return Promise.resolve(null);\n }\n\n play() {\n this.loadFile()\n .then(data => {\n if (typeof AudioContext !== 'undefined' && data?.file) {\n const context = new AudioContext();\n const buf = ConfigFileSelector.base64ToArrayBuffer(data.file);\n context.decodeAudioData(buf, buffer => {\n const source = context.createBufferSource(); // creates a sound source\n source.buffer = buffer; // tell the source which sounds to play\n source.connect(context.destination); // connect the source to the context's destination (the speakers)\n source.start(0);\n }, err => window.alert(`Cannot play: ${err}`));\n }\n });\n }\n\n getIcon() {\n const extension = this.state.value.split('.').pop().toLowerCase();\n if (IMAGE_EXT.includes(extension)) {\n return <div\n className={this.props.classes.selectedImage}\n style={{\n backgroundImage: `url(${this.imagePrefix}/${this.state.value})`,\n backgroundSize: 'contain',\n backgroundRepeat: 'no-repeat',\n }}\n />;\n } if (AUDIO_EXT.includes(extension)) {\n return <IconButton style={{ color: '#00FF00' }} onClick={() => this.play()}><IconPlay /></IconButton>;\n } if (DOC_EXT.includes(extension)) {\n return <IconText />;\n } if (VIDEO_EXT.includes(extension)) {\n return <IconVideo />;\n } if (JS_EXT.includes(extension)) {\n return <IconCode />;\n }\n return null;\n }\n\n renderFileBrowser() {\n if (!this.state.showFileBrowser) {\n return null;\n }\n return <SelectFileDialog\n imagePrefix={this.props.imagePrefix}\n socket={this.props.socket}\n selected={this.state.value}\n onClose={() => this.setState({ showFileBrowser: false })}\n onOk={value => {\n this.setState({ value }, () =>\n this.onChange(this.props.attr, this.props.schema.trim === false ? value : (value || '').trim()));\n }}\n selectOnlyFolders={this.props.schema.selectOnlyFolders}\n allowUpload={this.props.schema.allowUpload}\n allowDownload={this.props.schema.allowDownload}\n allowCreateFolder={this.props.schema.allowCreateFolder}\n allowView={this.props.schema.allowView}\n showToolbar={this.props.schema.showToolbar}\n limitPath={this.props.schema.limitPath}\n />;\n }\n\n renderItem(error, disabled /* , defaultValue */) {\n const icon = this.getIcon();\n\n return <div className={this.props.classes.fullWidth}>\n {icon}\n <TextField\n variant=\"standard\"\n className={icon ? this.props.classes.fullWidthIcon : this.props.classes.fullWidthOneButton}\n value={this.state.value === null || this.state.value === undefined ? '' : this.state.value}\n error={!!error}\n disabled={!!disabled}\n inputProps={{\n maxLength: this.props.schema.maxLength || this.props.schema.max || undefined,\n readOnly: !!this.props.schema.disableEdit,\n }}\n onChange={e => {\n const value = e.target.value;\n this.setState({ value }, () =>\n this.onChange(this.props.attr, this.props.schema.trim === false ? value : (value || '').trim()));\n }}\n placeholder={this.getText(this.props.schema.placeholder)}\n label={this.getText(this.props.schema.label)}\n helperText={this.renderHelp(this.props.schema.help, this.props.schema.helpLink, this.props.schema.noTranslation)}\n />\n <Button variant=\"outlined\" onClick={() => this.setState({ showFileBrowser: true })}>...</Button>\n {this.renderFileBrowser()}\n </div>;\n }\n}\n\nConfigFile.propTypes = {\n socket: PropTypes.object.isRequired,\n themeType: PropTypes.string,\n themeName: PropTypes.string,\n style: PropTypes.object,\n className: PropTypes.string,\n data: PropTypes.object.isRequired,\n schema: PropTypes.object,\n onError: PropTypes.func,\n onChange: PropTypes.func,\n imagePrefix: PropTypes.func,\n};\n\nexport default withStyles(styles)(ConfigFile);\n"],"mappings":"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"}
1
+ {"version":3,"file":"ConfigFile.js","names":["_react","_interopRequireDefault","require","_propTypes","_styles","_material","_iconsMaterial","_SelectFile","_ConfigGeneric2","_ConfigFileSelector","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","Reflect","construct","arguments","apply","_possibleConstructorReturn2","sham","Proxy","Boolean","prototype","valueOf","call","e","styles","fullWidth","width","fullWidthOneButton","marginRight","fullWidthIcon","selectedImage","height","display","IMAGE_EXT","AUDIO_EXT","VIDEO_EXT","DOC_EXT","JS_EXT","ConfigFile","_ConfigGeneric","_inherits2","_super","_classCallCheck2","_createClass2","key","value","componentDidMount","_get2","ConfigGeneric","getValue","props","data","attr","imagePrefix","undefined","setState","loadFile","pos","state","indexOf","adapter","substring","path","socket","readFile","Promise","resolve","play","then","AudioContext","file","context","buf","ConfigFileSelector","base64ToArrayBuffer","decodeAudioData","buffer","source","createBufferSource","connect","destination","start","err","window","alert","concat","getIcon","_this","extension","split","pop","toLowerCase","includes","createElement","className","classes","style","backgroundImage","backgroundSize","backgroundRepeat","IconButton","color","onClick","PlayArrow","Article","Videocam","Code","renderFileBrowser","_this2","showFileBrowser","selected","onClose","onOk","onChange","schema","trim","selectOnlyFolders","allowUpload","allowDownload","allowCreateFolder","allowView","showToolbar","limitPath","renderItem","error","disabled","_this3","icon","TextField","variant","inputProps","maxLength","max","readOnly","disableEdit","target","placeholder","getText","label","helperText","renderHelp","help","helpLink","noTranslation","Button","getDerivedStateFromProps","toString","propTypes","PropTypes","object","isRequired","themeType","string","themeName","onError","func","_default","exports","withStyles"],"sources":["JsonConfigComponent/ConfigFile.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@mui/styles';\n\nimport {\n Button,\n TextField,\n IconButton,\n} from '@mui/material';\n\nimport {\n Article as IconText,\n Code as IconCode,\n PlayArrow as IconPlay,\n Videocam as IconVideo,\n} from '@mui/icons-material';\n\nimport SelectFileDialog from './wrapper/Dialogs/SelectFile';\n\nimport ConfigGeneric from './ConfigGeneric';\nimport ConfigFileSelector from './ConfigFileSelector';\n\nconst styles = () => ({\n fullWidth: {\n width: '100%',\n },\n fullWidthOneButton: {\n width: 'calc(100% - 69px)',\n marginRight: 4,\n },\n fullWidthIcon: {\n width: 'calc(100% - 119px)',\n marginRight: 4,\n },\n selectedImage: {\n height: 40,\n width: 40,\n display: 'inline-block',\n marginRight: 8,\n },\n});\n\nconst IMAGE_EXT = ['jpg', 'jpeg', 'svg', 'png', 'webp', 'gif', 'apng', 'avif', 'webp'];\nconst AUDIO_EXT = ['mp3', 'ogg', 'wav', 'aac'];\nconst VIDEO_EXT = ['avi', 'mp4', 'mov'];\nconst DOC_EXT = ['txt', 'log', 'html', 'htm'];\nconst JS_EXT = ['json', 'js', 'ts'];\n\nclass ConfigFile extends ConfigGeneric {\n componentDidMount() {\n super.componentDidMount();\n const value = ConfigGeneric.getValue(this.props.data, this.props.attr);\n this.imagePrefix = this.props.imagePrefix === undefined ? './files' : this.props.imagePrefix;\n this.setState({ value });\n }\n\n static getDerivedStateFromProps(props, state) {\n const value = ConfigGeneric.getValue(props.data, props.attr);\n if (value === null || value === undefined || value.toString().trim() !== (state.value || '').toString().trim()) {\n return { value };\n }\n return null;\n }\n\n loadFile() {\n const pos = this.state.value.indexOf('/');\n if (pos !== -1) {\n const adapter = this.state.value.substring(0, pos);\n const path = this.state.value.substring(pos + 1);\n return this.props.socket.readFile(adapter, path, true);\n }\n\n return Promise.resolve(null);\n }\n\n play() {\n this.loadFile()\n .then(data => {\n if (typeof AudioContext !== 'undefined' && data?.file) {\n const context = new AudioContext();\n const buf = ConfigFileSelector.base64ToArrayBuffer(data.file);\n context.decodeAudioData(buf, buffer => {\n const source = context.createBufferSource(); // creates a sound source\n source.buffer = buffer; // tell the source which sounds to play\n source.connect(context.destination); // connect the source to the context's destination (the speakers)\n source.start(0);\n }, err => window.alert(`Cannot play: ${err}`));\n }\n });\n }\n\n getIcon() {\n const extension = this.state.value.split('.').pop().toLowerCase();\n if (IMAGE_EXT.includes(extension)) {\n return <div\n className={this.props.classes.selectedImage}\n style={{\n backgroundImage: `url(${this.imagePrefix}/${this.state.value})`,\n backgroundSize: 'contain',\n backgroundRepeat: 'no-repeat',\n }}\n />;\n } if (AUDIO_EXT.includes(extension)) {\n return <IconButton style={{ color: '#00FF00' }} onClick={() => this.play()}><IconPlay /></IconButton>;\n } if (DOC_EXT.includes(extension)) {\n return <IconText />;\n } if (VIDEO_EXT.includes(extension)) {\n return <IconVideo />;\n } if (JS_EXT.includes(extension)) {\n return <IconCode />;\n }\n return null;\n }\n\n renderFileBrowser() {\n if (!this.state.showFileBrowser) {\n return null;\n }\n return <SelectFileDialog\n imagePrefix={this.props.imagePrefix}\n socket={this.props.socket}\n selected={this.state.value}\n onClose={() => this.setState({ showFileBrowser: false })}\n onOk={value => {\n this.setState({ value }, () =>\n this.onChange(this.props.attr, this.props.schema.trim === false ? value : (value || '').trim()));\n }}\n selectOnlyFolders={this.props.schema.selectOnlyFolders}\n allowUpload={this.props.schema.allowUpload}\n allowDownload={this.props.schema.allowDownload}\n allowCreateFolder={this.props.schema.allowCreateFolder}\n allowView={this.props.schema.allowView}\n showToolbar={this.props.schema.showToolbar}\n limitPath={this.props.schema.limitPath}\n />;\n }\n\n renderItem(error, disabled /* , defaultValue */) {\n const icon = this.getIcon();\n\n return <div className={this.props.classes.fullWidth}>\n {icon}\n <TextField\n variant=\"standard\"\n className={icon ? this.props.classes.fullWidthIcon : this.props.classes.fullWidthOneButton}\n value={this.state.value === null || this.state.value === undefined ? '' : this.state.value}\n error={!!error}\n disabled={!!disabled}\n inputProps={{\n maxLength: this.props.schema.maxLength || this.props.schema.max || undefined,\n readOnly: !!this.props.schema.disableEdit,\n }}\n onChange={e => {\n const value = e.target.value;\n this.setState({ value }, () =>\n this.onChange(this.props.attr, this.props.schema.trim === false ? value : (value || '').trim()));\n }}\n placeholder={this.getText(this.props.schema.placeholder)}\n label={this.getText(this.props.schema.label)}\n helperText={this.renderHelp(this.props.schema.help, this.props.schema.helpLink, this.props.schema.noTranslation)}\n />\n <Button variant=\"outlined\" onClick={() => this.setState({ showFileBrowser: true })}>...</Button>\n {this.renderFileBrowser()}\n </div>;\n }\n}\n\nConfigFile.propTypes = {\n socket: PropTypes.object.isRequired,\n themeType: PropTypes.string,\n themeName: PropTypes.string,\n style: PropTypes.object,\n className: PropTypes.string,\n data: PropTypes.object.isRequired,\n schema: PropTypes.object,\n onError: PropTypes.func,\n onChange: PropTypes.func,\n imagePrefix: PropTypes.func,\n};\n\nexport default withStyles(styles)(ConfigFile);\n"],"mappings":"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"}
@@ -107,7 +107,7 @@ var styles = function styles() {
107
107
  }
108
108
  };
109
109
  };
110
- var IMAGE_EXT = ['jpg', 'jpeg', 'svg', 'png', 'webp', 'gif'];
110
+ var IMAGE_EXT = ['jpg', 'jpeg', 'svg', 'png', 'webp', 'gif', 'apng', 'avif', 'webp'];
111
111
  var AUDIO_EXT = ['mp3', 'ogg', 'wav', 'aac'];
112
112
  var VIDEO_EXT = ['avi', 'mp4', 'mov'];
113
113
  var DOC_EXT = ['txt', 'log', 'html', 'htm'];
@@ -510,7 +510,7 @@ var ConfigFileSelector = /*#__PURE__*/function (_ConfigGeneric) {
510
510
  };
511
511
  if (this.props.schema.fileTypes === 'image') {
512
512
  accept = {
513
- 'image/*': ['.png', '.jpg', '.svg', '.gif']
513
+ 'image/*': ['.png', '.jpg', '.svg', '.gif', '.apng', '.avif', '.webp']
514
514
  };
515
515
  } else if (this.props.schema.fileTypes === 'audio') {
516
516
  accept = {
@@ -523,9 +523,9 @@ var ConfigFileSelector = /*#__PURE__*/function (_ConfigGeneric) {
523
523
  }
524
524
  if (this.props.schema.pattern) {
525
525
  var last = this.props.schema.pattern.split('/').pop().toLowerCase().replace(/.*\./, '');
526
- if (last === 'png' || last === 'jpg' || last === 'svg' || last === 'gif') {
526
+ if (last === 'png' || last === 'jpg' || last === 'svg' || last === 'gif' || last === 'apng' || last === 'avif' || last === 'webp') {
527
527
  accept = {
528
- 'image/*': ['.png', '.jpg', '.svg', '.gif']
528
+ 'image/*': ['.png', '.jpg', '.svg', '.gif', '.apng', '.avif', '.webp']
529
529
  };
530
530
  } else if (last === 'mp3' || last === 'ogg' || last === 'wav') {
531
531
  accept = {
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigFileSelector.js","names":["_react","_interopRequireDefault","require","_propTypes","_styles","_reactDropzone","_material","_iconsMaterial","_fa","_Utils","_i18n","_Confirm","_ConfigGeneric2","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","Reflect","construct","arguments","apply","_possibleConstructorReturn2","sham","Proxy","Boolean","prototype","valueOf","call","e","styles","fullWidth","width","fullWidthOneButton","fullWidthTwoButtons","fullWidthThreeButtons","dropZone","height","position","dropZoneEmpty","image","objectFit","margin","display","uploadDiv","uploadDivDragging","opacity","background","uploadCenterDiv","border","borderRadius","uploadCenterIcon","paddingTop","uploadCenterText","fontSize","uploadCenterTextAndIcon","textAlign","top","bottom","left","right","flexDirection","alignItems","justifyContent","disabledOpacity","cursor","error","deleteButton","selectedImage","marginRight","IMAGE_EXT","AUDIO_EXT","VIDEO_EXT","DOC_EXT","JS_EXT","ConfigFileSelector","_ConfigGeneric","_inherits2","_super","props","_this","_classCallCheck2","dropzoneRef","React","createRef","imagePrefix","undefined","_createClass2","key","value","componentDidMount","_this2","_get2","objectID","schema","replace","instance","path","upload","endsWith","concat","updateFiles","then","ConfigGeneric","getValue","data","attr","setState","_this3","readFiles","pattern","files","_readFolder","_asyncToGenerator2","_regenerator","mark","_callee","folderName","filter","dirFiles","f","file","ok","regExp","wrap","_callee$","_context","prev","next","socket","readDir","sent","length","isDir","readFolder","includes","startsWith","RegExp","test","push","name","size","stats","Utils","formatBytes","t0","console","abrupt","stop","_x","_x2","_x3","_readFiles","_callee2","pos","pos_","folder","_callee2$","_context2","lastIndexOf","substring","_x4","onDrop","acceptedFiles","_this4","reader","FileReader","maxSize","onabort","log","onerror","onload","ext","split","pop","toLowerCase","window","alert","I18n","t","Math","round","base64","btoa","Uint8Array","reduce","byte","String","fromCharCode","writeFile64","readAsArrayBuffer","renderDeleteDialog","_this5","state","deleteFile","createElement","title","text","cancel","onClose","isOk","loadFile","readFile","play","AudioContext","context","buf","base64ToArrayBuffer","decodeAudioData","buffer","source","createBufferSource","connect","destination","start","err","getIcon","item","extension","className","classes","style","backgroundImage","backgroundSize","backgroundRepeat","MusicNote","Article","Videocam","Code","renderItem","disabled","_this6","folders","withFolder","forEach","selectOptions","map","label","noSize","noNone","unshift","find","buttons","refresh","element","FormControl","variant","InputLabel","getText","Select","renderValue","Fragment","onChange","target","it","MenuItem","ListItemIcon","ListItemText","IconButton","onClick","Delete","help","FormHelperText","renderHelp","helpLink","noTranslation","Refresh","_this6$dropzoneRef$cu","current","open","UploadFile","color","PlayArrow","accept","fileTypes","last","ref","multiple","noKeyboard","noClick","onDragEnter","uploadFile","onDragLeave","errors","message","_ref","getRootProps","getInputProps","_extends2","clsx","uploadError","FaFileUpload","binaryString","atob","len","bytes","i","charCodeAt","propTypes","PropTypes","object","isRequired","themeType","string","themeName","onError","func","_default","exports","withStyles"],"sources":["JsonConfigComponent/ConfigFileSelector.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@mui/styles';\nimport Dropzone from 'react-dropzone';\n\nimport {\n InputLabel,\n MenuItem,\n FormHelperText,\n FormControl,\n Select,\n IconButton,\n ListItemText,\n ListItemIcon,\n} from '@mui/material';\n\nimport {\n Refresh as IconRefresh,\n UploadFile as IconUpload,\n Delete as IconDelete,\n PlayArrow as IconPlay,\n MusicNote as IconAudio,\n Videocam as IconVideo,\n Article as IconText,\n Code as IconCode,\n} from '@mui/icons-material';\nimport { FaFileUpload as UploadIcon } from 'react-icons/fa';\n\nimport Utils from './wrapper/Components/Utils';\nimport I18n from './wrapper/i18n';\nimport ConfirmDialog from './wrapper/Dialogs/Confirm';\n\nimport ConfigGeneric from './ConfigGeneric';\n\nconst styles = () => ({\n fullWidth: {\n width: '100%',\n },\n fullWidthOneButton: {\n width: 'calc(100% - 42px)',\n },\n fullWidthTwoButtons: {\n width: 'calc(100% - 84px)',\n },\n fullWidthThreeButtons: {\n width: 'calc(100% - 126x)',\n },\n dropZone: {\n width: '100%',\n height: '100%',\n position: 'absolute',\n },\n dropZoneEmpty: {\n\n },\n image: {\n objectFit: 'contain',\n margin: 'auto',\n display: 'flex',\n width: '100%',\n height: '100%',\n },\n uploadDiv: {\n position: 'relative',\n width: '100%',\n },\n uploadDivDragging: {\n opacity: 1,\n background: 'rgba(128,255,128,0.1)',\n },\n uploadCenterDiv: {\n margin: 5,\n border: '3px dashed grey',\n borderRadius: 5,\n width: '100%',\n height: '100%',\n position: 'absolute',\n display: 'flex',\n },\n uploadCenterIcon: {\n paddingTop: 10,\n width: 48,\n height: 48,\n },\n uploadCenterText: {\n fontSize: 16,\n },\n uploadCenterTextAndIcon: {\n textAlign: 'center',\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n },\n disabledOpacity: {\n opacity: 0.3,\n cursor: 'default',\n },\n error: {\n border: '2px solid red',\n },\n deleteButton: {\n\n },\n selectedImage: {\n height: 40,\n width: 40,\n display: 'inline-block',\n marginRight: 8,\n },\n});\n\nconst IMAGE_EXT = ['jpg', 'jpeg', 'svg', 'png', 'webp', 'gif'];\nconst AUDIO_EXT = ['mp3', 'ogg', 'wav', 'aac'];\nconst VIDEO_EXT = ['avi', 'mp4', 'mov'];\nconst DOC_EXT = ['txt', 'log', 'html', 'htm'];\nconst JS_EXT = ['json', 'js', 'ts'];\n\nclass ConfigFileSelector extends ConfigGeneric {\n constructor(props) {\n super(props);\n this.dropzoneRef = React.createRef();\n this.imagePrefix = this.props.imagePrefix === undefined ? './files' : this.props.imagePrefix;\n }\n\n componentDidMount() {\n super.componentDidMount();\n\n this.objectID = (this.props.schema.objectID || '0_userdata.0').replace('%INSTANCE%', this.props.instance);\n this.path = this.props.schema.upload;\n if (this.path) {\n if (this.path === '/') {\n this.path = '';\n } else if (!this.path.endsWith('/')) {\n this.path = `${this.path}/`;\n }\n }\n\n // read files\n this.updateFiles()\n .then(() => {\n const value = ConfigGeneric.getValue(this.props.data, this.props.attr);\n this.setState({ value });\n });\n }\n\n updateFiles() {\n return this.readFiles(this.props.schema.pattern)\n .then(files => this.setState({ files }));\n }\n\n async readFolder(folderName, files, filter) {\n try {\n const dirFiles = await this.props.socket.readDir(this.objectID, folderName.replace(/^\\//, '') || null);\n for (let f = 0; f < dirFiles.length; f++) {\n const file = dirFiles[f];\n if (file.isDir) {\n // read it\n await this.readFolder(`${folderName + file.file}/`, files, filter);\n } else {\n let ok = false;\n if (filter === '*.*' && file.file.includes('.')) {\n ok = true;\n } else if (!filter || filter === '*') {\n ok = true;\n } else if (filter === '.*' && file.file.startsWith('.')) {\n ok = true;\n } else {\n const regExp = new RegExp(`^${filter.replace(/\\./g, '\\\\.').replace(/\\*/g, '.*')}$`);\n ok = regExp.test(file.file);\n }\n\n ok && files.push({ name: folderName + file.file, size: file.stats ? Utils.formatBytes(file.stats.size) : '--' });\n }\n }\n } catch (e) {\n console.error(`Cannot read \"${folderName}\": ${e}`);\n }\n\n return files;\n }\n\n async readFiles(pattern) {\n const files = [];\n pattern = pattern || this.props.schema.pattern;\n if (!pattern) {\n pattern = '**/*.*';\n }\n let filter;\n const pos = pattern.lastIndexOf('/');\n if (pos === -1) {\n filter = pattern;\n } else {\n filter = pattern.substring(pos + 1);\n }\n\n if (pattern.startsWith('**')) {\n // read all folders\n await this.readFolder('/', files, filter);\n } else {\n const pos_ = pattern.lastIndexOf('/');\n if (pos_ === -1) {\n await this.readFolder('/', files, filter);\n } else {\n const folder = pattern.substring(0, pos_ + 1);\n await this.readFolder(folder, files, filter);\n }\n }\n\n return files;\n }\n\n onDrop(acceptedFiles) {\n const file = acceptedFiles[0];\n const reader = new FileReader();\n const maxSize = this.props.schema.maxSize || (2 * 1024 * 1024);\n\n reader.onabort = () => console.log('file reading was aborted');\n reader.onerror = () => console.log('file reading has failed');\n reader.onload = () => {\n let ext = `image/${file.name.split('.').pop().toLowerCase()}`;\n if (ext === 'image/jpg') {\n ext = 'image/jpeg';\n } else if (ext.includes('svg')) {\n ext = 'image/svg+xml';\n }\n if (file.size > maxSize) {\n window.alert(I18n.t('File is too big. Max %sk allowed. Try use SVG.', Math.round(maxSize / 1024)));\n return;\n }\n const base64 = `data:${ext};base64,${btoa(\n new Uint8Array(reader.result)\n .reduce((data, byte) => data + String.fromCharCode(byte), ''),\n )}`;\n\n this.props.socket.writeFile64(this.objectID, this.path + file.name, base64)\n .then(() => this.updateFiles())\n .catch(e => window.alert(`Cannot upload file: ${e}`));\n };\n reader.readAsArrayBuffer(file);\n }\n\n renderDeleteDialog() {\n if (!this.state.deleteFile) {\n return null;\n }\n return <ConfirmDialog\n title={I18n.t('ra_Are you sure?')}\n text={I18n.t('ra_File will be deleted')}\n ok={I18n.t('ra_Delete')}\n cancel={I18n.t('ra_Cancel')}\n onClose={isOk => {\n const deleteFile = this.state.deleteFile;\n this.setState({ deleteFile: false }, () => {\n if (isOk) {\n this.props.socket.deleteFile(this.objectID, deleteFile)\n .then(() => this.updateFiles())\n .catch(e => window.alert(`Cannot delete file: ${e}`));\n }\n });\n }}\n />;\n }\n\n static base64ToArrayBuffer(base64) {\n const binaryString = window.atob(base64);\n const len = binaryString.length;\n const bytes = new Uint8Array(len);\n for (let i = 0; i < len; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes.buffer;\n }\n\n loadFile() {\n return this.props.socket.readFile(this.objectID, this.state.value, true);\n }\n\n play() {\n this.loadFile()\n .then(data => {\n if (typeof AudioContext !== 'undefined') {\n const context = new AudioContext();\n const buf = ConfigFileSelector.base64ToArrayBuffer(data.file);\n context.decodeAudioData(buf, buffer => {\n const source = context.createBufferSource(); // creates a sound source\n source.buffer = buffer; // tell the source which sound to play\n source.connect(context.destination); // connect the source to the context's destination (the speakers)\n source.start(0);\n }, err => window.alert(`Cannot play: ${err}`));\n }\n });\n }\n\n getIcon(item) {\n if (!item || !item.extension) {\n return null;\n }\n if (IMAGE_EXT.includes(item.extension)) {\n return <div\n className={this.props.classes.selectedImage}\n style={{\n backgroundImage: `url(${this.imagePrefix}/${this.objectID}/${item.value})`,\n backgroundSize: 'contain',\n backgroundRepeat: 'no-repeat',\n }}\n />;\n } if (AUDIO_EXT.includes(item.extension)) {\n return <IconAudio />;\n } if (DOC_EXT.includes(item.extension)) {\n return <IconText />;\n } if (VIDEO_EXT.includes(item.extension)) {\n return <IconVideo />;\n } if (JS_EXT.includes(item.extension)) {\n return <IconCode />;\n }\n return null;\n }\n\n renderItem(error, disabled /* , defaultValue */) {\n if (!this.state.files) {\n return null;\n }\n const folders = [];\n if (!this.props.schema.withFolder) {\n this.state.files.forEach(file => {\n const pos = file.name.lastIndexOf('/');\n if (pos === -1) {\n if (!folders.includes('/')) {\n folders.push('/');\n }\n } else {\n const folder = file.name.substring(0, pos + 1);\n if (!folders.includes(folder)) {\n folders.push(folder);\n }\n }\n });\n }\n\n const selectOptions = this.state.files\n .map(file => ({\n value: file.name,\n label: !this.props.schema.withFolder && folders.length === 1 ? `${file.name.substring(folders[0].length)}` : `${file.name}${this.props.schema.noSize ? '' : `(${file.size})`}`,\n extension: file.name.toLowerCase().split('.').pop(),\n }));\n\n if (!this.props.schema.noNone) {\n selectOptions.unshift({ label: I18n.t('ra_none'), value: '' });\n }\n\n // eslint-disable-next-line\n const item = selectOptions.find(item => item.value === this.state.value);\n\n let buttons = 0;\n\n if (this.props.schema.upload) {\n buttons++;\n }\n if (this.props.schema.refresh) {\n buttons++;\n }\n const play = this.state.value && (this.state.value.endsWith('.mp3') || this.state.value.endsWith('.ogg') || this.state.value.endsWith('.wav'));\n // show play button\n if (play) {\n buttons++;\n }\n\n const element = <div className={this.props.classes.fullWidth}>\n <FormControl variant=\"standard\" style={{ width: `calc(100% - ${buttons * 42}px)` }}>\n {this.props.schema.label ? <InputLabel>{this.getText(this.props.schema.label)}</InputLabel> : null}\n <Select\n variant=\"standard\"\n error={!!error}\n disabled={!!disabled}\n value={this.state.value || '_'}\n renderValue={() => <>\n {this.getIcon(item)}\n <span>{item?.label || ''}</span>\n </>}\n onChange={e => {\n this.setState({ value: e.target.value === '_' ? '' : e.target.value }, () =>\n this.onChange(this.props.attr, this.state.value));\n }}\n >\n {selectOptions.map(it => <MenuItem key={it.value} value={it.value}>\n <ListItemIcon>{this.getIcon(item)}</ListItemIcon>\n <ListItemText>{item.label}</ListItemText>\n {this.props.schema.delete && item.value ?\n <IconButton\n className={this.props.classes.deleteButton}\n size=\"small\"\n onClick={() => this.setState({ deleteFile: item.value })}\n >\n <IconDelete />\n </IconButton> : null}\n </MenuItem>)}\n </Select>\n {this.props.schema.help ? <FormHelperText>{this.renderHelp(this.props.schema.help, this.props.schema.helpLink, this.props.schema.noTranslation)}</FormHelperText> : null}\n </FormControl>\n { this.props.schema.refresh && <IconButton onClick={() => this.updateFiles()}><IconRefresh /></IconButton> }\n { this.props.schema.upload && <IconButton onClick={() => this.dropzoneRef.current?.open()}><IconUpload /></IconButton> }\n { play && <IconButton style={{ color: '#00FF00' }} onClick={() => this.play()}><IconPlay /></IconButton> }\n </div>;\n\n if (!this.props.schema.upload) {\n return <>\n {element}\n {this.renderDeleteDialog()}\n </>;\n }\n let accept = { '*/*': [] };\n if (this.props.schema.fileTypes === 'image') {\n accept = {\n 'image/*': ['.png', '.jpg', '.svg', '.gif'],\n };\n } else if (this.props.schema.fileTypes === 'audio') {\n accept = {\n 'audio/*': ['.mp3', '.ogg', '.wav', '.mp4'],\n };\n } else if (this.props.schema.fileTypes === 'text') {\n accept = {\n 'text/plain': ['.txt'],\n };\n }\n if (this.props.schema.pattern) {\n const last = this.props.schema.pattern.split('/').pop().toLowerCase().replace(/.*\\./, '');\n if (last === 'png' || last === 'jpg' || last === 'svg' || last === 'gif') {\n accept = {\n 'image/*': ['.png', '.jpg', '.svg', '.gif'],\n };\n } else if (last === 'mp3' || last === 'ogg' || last === 'wav') {\n accept = {\n 'audio/*': ['.mp3', '.ogg', '.wav', '.mp4'],\n };\n } else if (last === 'ics') {\n accept = {\n 'text/calendar': ['.ics'],\n };\n } else if (last === 'txt') {\n accept = {\n 'text/plain': ['.txt'],\n };\n } else if (last === 'pem') {\n accept = {\n 'text/plain': ['.pem'],\n };\n } else {\n accept = {\n '*/*': [`.${last}`],\n };\n }\n }\n\n return <Dropzone\n ref={this.dropzoneRef}\n multiple={false}\n accept={accept}\n noKeyboard\n noClick\n maxSize={this.props.schema.maxSize || 2 * 1024 * 1024}\n onDragEnter={() => {\n this.setState({ uploadFile: 'dragging' });\n }}\n onDragLeave={() => this.setState({ uploadFile: true })}\n onDrop={(acceptedFiles, errors) => {\n this.setState({ uploadFile: false });\n if (!acceptedFiles.length) {\n window.alert((errors && errors[0] && errors[0].errors && errors[0].errors[0] && errors[0].errors[0].message) || I18n.t('Cannot upload'));\n } else {\n this.onDrop(acceptedFiles);\n }\n }}\n >\n {({ getRootProps, getInputProps }) => <div\n className={Utils.clsx(\n this.props.classes.uploadDiv,\n this.state.uploadFile === 'dragging' && this.props.classes.uploadDivDragging,\n disabled && this.props.classes.disabledOpacity,\n )}\n {...getRootProps()}\n >\n <input {...getInputProps()} />\n {this.state.uploadFile === 'dragging' ? <div className={Utils.clsx(this.props.classes.uploadCenterDiv, this.state.uploadError && this.props.classes.error)}>\n <div className={this.props.classes.uploadCenterTextAndIcon}>\n <UploadIcon className={this.props.classes.uploadCenterIcon} />\n <div className={this.props.classes.uploadCenterText}>\n {\n this.state.uploadFile === 'dragging' ? I18n.t('ra_Drop file here') :\n I18n.t('ra_Place your files here or click here to open the browse dialog')\n }\n </div>\n </div>\n </div> : null}\n {element}\n {this.renderDeleteDialog()}\n </div>}\n </Dropzone>;\n }\n}\n\nConfigFileSelector.propTypes = {\n socket: PropTypes.object.isRequired,\n themeType: PropTypes.string,\n themeName: PropTypes.string,\n style: PropTypes.object,\n className: PropTypes.string,\n data: PropTypes.object.isRequired,\n schema: PropTypes.object,\n onError: PropTypes.func,\n onChange: PropTypes.func,\n imagePrefix: PropTypes.func,\n};\n\nexport default withStyles(styles)(ConfigFileSelector);\n"],"mappings":"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"}
1
+ {"version":3,"file":"ConfigFileSelector.js","names":["_react","_interopRequireDefault","require","_propTypes","_styles","_reactDropzone","_material","_iconsMaterial","_fa","_Utils","_i18n","_Confirm","_ConfigGeneric2","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","Reflect","construct","arguments","apply","_possibleConstructorReturn2","sham","Proxy","Boolean","prototype","valueOf","call","e","styles","fullWidth","width","fullWidthOneButton","fullWidthTwoButtons","fullWidthThreeButtons","dropZone","height","position","dropZoneEmpty","image","objectFit","margin","display","uploadDiv","uploadDivDragging","opacity","background","uploadCenterDiv","border","borderRadius","uploadCenterIcon","paddingTop","uploadCenterText","fontSize","uploadCenterTextAndIcon","textAlign","top","bottom","left","right","flexDirection","alignItems","justifyContent","disabledOpacity","cursor","error","deleteButton","selectedImage","marginRight","IMAGE_EXT","AUDIO_EXT","VIDEO_EXT","DOC_EXT","JS_EXT","ConfigFileSelector","_ConfigGeneric","_inherits2","_super","props","_this","_classCallCheck2","dropzoneRef","React","createRef","imagePrefix","undefined","_createClass2","key","value","componentDidMount","_this2","_get2","objectID","schema","replace","instance","path","upload","endsWith","concat","updateFiles","then","ConfigGeneric","getValue","data","attr","setState","_this3","readFiles","pattern","files","_readFolder","_asyncToGenerator2","_regenerator","mark","_callee","folderName","filter","dirFiles","f","file","ok","regExp","wrap","_callee$","_context","prev","next","socket","readDir","sent","length","isDir","readFolder","includes","startsWith","RegExp","test","push","name","size","stats","Utils","formatBytes","t0","console","abrupt","stop","_x","_x2","_x3","_readFiles","_callee2","pos","pos_","folder","_callee2$","_context2","lastIndexOf","substring","_x4","onDrop","acceptedFiles","_this4","reader","FileReader","maxSize","onabort","log","onerror","onload","ext","split","pop","toLowerCase","window","alert","I18n","t","Math","round","base64","btoa","Uint8Array","reduce","byte","String","fromCharCode","writeFile64","readAsArrayBuffer","renderDeleteDialog","_this5","state","deleteFile","createElement","title","text","cancel","onClose","isOk","loadFile","readFile","play","AudioContext","context","buf","base64ToArrayBuffer","decodeAudioData","buffer","source","createBufferSource","connect","destination","start","err","getIcon","item","extension","className","classes","style","backgroundImage","backgroundSize","backgroundRepeat","MusicNote","Article","Videocam","Code","renderItem","disabled","_this6","folders","withFolder","forEach","selectOptions","map","label","noSize","noNone","unshift","find","buttons","refresh","element","FormControl","variant","InputLabel","getText","Select","renderValue","Fragment","onChange","target","it","MenuItem","ListItemIcon","ListItemText","IconButton","onClick","Delete","help","FormHelperText","renderHelp","helpLink","noTranslation","Refresh","_this6$dropzoneRef$cu","current","open","UploadFile","color","PlayArrow","accept","fileTypes","last","ref","multiple","noKeyboard","noClick","onDragEnter","uploadFile","onDragLeave","errors","message","_ref","getRootProps","getInputProps","_extends2","clsx","uploadError","FaFileUpload","binaryString","atob","len","bytes","i","charCodeAt","propTypes","PropTypes","object","isRequired","themeType","string","themeName","onError","func","_default","exports","withStyles"],"sources":["JsonConfigComponent/ConfigFileSelector.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@mui/styles';\nimport Dropzone from 'react-dropzone';\n\nimport {\n InputLabel,\n MenuItem,\n FormHelperText,\n FormControl,\n Select,\n IconButton,\n ListItemText,\n ListItemIcon,\n} from '@mui/material';\n\nimport {\n Refresh as IconRefresh,\n UploadFile as IconUpload,\n Delete as IconDelete,\n PlayArrow as IconPlay,\n MusicNote as IconAudio,\n Videocam as IconVideo,\n Article as IconText,\n Code as IconCode,\n} from '@mui/icons-material';\nimport { FaFileUpload as UploadIcon } from 'react-icons/fa';\n\nimport Utils from './wrapper/Components/Utils';\nimport I18n from './wrapper/i18n';\nimport ConfirmDialog from './wrapper/Dialogs/Confirm';\n\nimport ConfigGeneric from './ConfigGeneric';\n\nconst styles = () => ({\n fullWidth: {\n width: '100%',\n },\n fullWidthOneButton: {\n width: 'calc(100% - 42px)',\n },\n fullWidthTwoButtons: {\n width: 'calc(100% - 84px)',\n },\n fullWidthThreeButtons: {\n width: 'calc(100% - 126x)',\n },\n dropZone: {\n width: '100%',\n height: '100%',\n position: 'absolute',\n },\n dropZoneEmpty: {\n\n },\n image: {\n objectFit: 'contain',\n margin: 'auto',\n display: 'flex',\n width: '100%',\n height: '100%',\n },\n uploadDiv: {\n position: 'relative',\n width: '100%',\n },\n uploadDivDragging: {\n opacity: 1,\n background: 'rgba(128,255,128,0.1)',\n },\n uploadCenterDiv: {\n margin: 5,\n border: '3px dashed grey',\n borderRadius: 5,\n width: '100%',\n height: '100%',\n position: 'absolute',\n display: 'flex',\n },\n uploadCenterIcon: {\n paddingTop: 10,\n width: 48,\n height: 48,\n },\n uploadCenterText: {\n fontSize: 16,\n },\n uploadCenterTextAndIcon: {\n textAlign: 'center',\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n },\n disabledOpacity: {\n opacity: 0.3,\n cursor: 'default',\n },\n error: {\n border: '2px solid red',\n },\n deleteButton: {\n\n },\n selectedImage: {\n height: 40,\n width: 40,\n display: 'inline-block',\n marginRight: 8,\n },\n});\n\nconst IMAGE_EXT = ['jpg', 'jpeg', 'svg', 'png', 'webp', 'gif', 'apng', 'avif', 'webp'];\nconst AUDIO_EXT = ['mp3', 'ogg', 'wav', 'aac'];\nconst VIDEO_EXT = ['avi', 'mp4', 'mov'];\nconst DOC_EXT = ['txt', 'log', 'html', 'htm'];\nconst JS_EXT = ['json', 'js', 'ts'];\n\nclass ConfigFileSelector extends ConfigGeneric {\n constructor(props) {\n super(props);\n this.dropzoneRef = React.createRef();\n this.imagePrefix = this.props.imagePrefix === undefined ? './files' : this.props.imagePrefix;\n }\n\n componentDidMount() {\n super.componentDidMount();\n\n this.objectID = (this.props.schema.objectID || '0_userdata.0').replace('%INSTANCE%', this.props.instance);\n this.path = this.props.schema.upload;\n if (this.path) {\n if (this.path === '/') {\n this.path = '';\n } else if (!this.path.endsWith('/')) {\n this.path = `${this.path}/`;\n }\n }\n\n // read files\n this.updateFiles()\n .then(() => {\n const value = ConfigGeneric.getValue(this.props.data, this.props.attr);\n this.setState({ value });\n });\n }\n\n updateFiles() {\n return this.readFiles(this.props.schema.pattern)\n .then(files => this.setState({ files }));\n }\n\n async readFolder(folderName, files, filter) {\n try {\n const dirFiles = await this.props.socket.readDir(this.objectID, folderName.replace(/^\\//, '') || null);\n for (let f = 0; f < dirFiles.length; f++) {\n const file = dirFiles[f];\n if (file.isDir) {\n // read it\n await this.readFolder(`${folderName + file.file}/`, files, filter);\n } else {\n let ok = false;\n if (filter === '*.*' && file.file.includes('.')) {\n ok = true;\n } else if (!filter || filter === '*') {\n ok = true;\n } else if (filter === '.*' && file.file.startsWith('.')) {\n ok = true;\n } else {\n const regExp = new RegExp(`^${filter.replace(/\\./g, '\\\\.').replace(/\\*/g, '.*')}$`);\n ok = regExp.test(file.file);\n }\n\n ok && files.push({ name: folderName + file.file, size: file.stats ? Utils.formatBytes(file.stats.size) : '--' });\n }\n }\n } catch (e) {\n console.error(`Cannot read \"${folderName}\": ${e}`);\n }\n\n return files;\n }\n\n async readFiles(pattern) {\n const files = [];\n pattern = pattern || this.props.schema.pattern;\n if (!pattern) {\n pattern = '**/*.*';\n }\n let filter;\n const pos = pattern.lastIndexOf('/');\n if (pos === -1) {\n filter = pattern;\n } else {\n filter = pattern.substring(pos + 1);\n }\n\n if (pattern.startsWith('**')) {\n // read all folders\n await this.readFolder('/', files, filter);\n } else {\n const pos_ = pattern.lastIndexOf('/');\n if (pos_ === -1) {\n await this.readFolder('/', files, filter);\n } else {\n const folder = pattern.substring(0, pos_ + 1);\n await this.readFolder(folder, files, filter);\n }\n }\n\n return files;\n }\n\n onDrop(acceptedFiles) {\n const file = acceptedFiles[0];\n const reader = new FileReader();\n const maxSize = this.props.schema.maxSize || (2 * 1024 * 1024);\n\n reader.onabort = () => console.log('file reading was aborted');\n reader.onerror = () => console.log('file reading has failed');\n reader.onload = () => {\n let ext = `image/${file.name.split('.').pop().toLowerCase()}`;\n if (ext === 'image/jpg') {\n ext = 'image/jpeg';\n } else if (ext.includes('svg')) {\n ext = 'image/svg+xml';\n }\n if (file.size > maxSize) {\n window.alert(I18n.t('File is too big. Max %sk allowed. Try use SVG.', Math.round(maxSize / 1024)));\n return;\n }\n const base64 = `data:${ext};base64,${btoa(\n new Uint8Array(reader.result)\n .reduce((data, byte) => data + String.fromCharCode(byte), ''),\n )}`;\n\n this.props.socket.writeFile64(this.objectID, this.path + file.name, base64)\n .then(() => this.updateFiles())\n .catch(e => window.alert(`Cannot upload file: ${e}`));\n };\n reader.readAsArrayBuffer(file);\n }\n\n renderDeleteDialog() {\n if (!this.state.deleteFile) {\n return null;\n }\n return <ConfirmDialog\n title={I18n.t('ra_Are you sure?')}\n text={I18n.t('ra_File will be deleted')}\n ok={I18n.t('ra_Delete')}\n cancel={I18n.t('ra_Cancel')}\n onClose={isOk => {\n const deleteFile = this.state.deleteFile;\n this.setState({ deleteFile: false }, () => {\n if (isOk) {\n this.props.socket.deleteFile(this.objectID, deleteFile)\n .then(() => this.updateFiles())\n .catch(e => window.alert(`Cannot delete file: ${e}`));\n }\n });\n }}\n />;\n }\n\n static base64ToArrayBuffer(base64) {\n const binaryString = window.atob(base64);\n const len = binaryString.length;\n const bytes = new Uint8Array(len);\n for (let i = 0; i < len; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes.buffer;\n }\n\n loadFile() {\n return this.props.socket.readFile(this.objectID, this.state.value, true);\n }\n\n play() {\n this.loadFile()\n .then(data => {\n if (typeof AudioContext !== 'undefined') {\n const context = new AudioContext();\n const buf = ConfigFileSelector.base64ToArrayBuffer(data.file);\n context.decodeAudioData(buf, buffer => {\n const source = context.createBufferSource(); // creates a sound source\n source.buffer = buffer; // tell the source which sound to play\n source.connect(context.destination); // connect the source to the context's destination (the speakers)\n source.start(0);\n }, err => window.alert(`Cannot play: ${err}`));\n }\n });\n }\n\n getIcon(item) {\n if (!item || !item.extension) {\n return null;\n }\n if (IMAGE_EXT.includes(item.extension)) {\n return <div\n className={this.props.classes.selectedImage}\n style={{\n backgroundImage: `url(${this.imagePrefix}/${this.objectID}/${item.value})`,\n backgroundSize: 'contain',\n backgroundRepeat: 'no-repeat',\n }}\n />;\n } if (AUDIO_EXT.includes(item.extension)) {\n return <IconAudio />;\n } if (DOC_EXT.includes(item.extension)) {\n return <IconText />;\n } if (VIDEO_EXT.includes(item.extension)) {\n return <IconVideo />;\n } if (JS_EXT.includes(item.extension)) {\n return <IconCode />;\n }\n return null;\n }\n\n renderItem(error, disabled /* , defaultValue */) {\n if (!this.state.files) {\n return null;\n }\n const folders = [];\n if (!this.props.schema.withFolder) {\n this.state.files.forEach(file => {\n const pos = file.name.lastIndexOf('/');\n if (pos === -1) {\n if (!folders.includes('/')) {\n folders.push('/');\n }\n } else {\n const folder = file.name.substring(0, pos + 1);\n if (!folders.includes(folder)) {\n folders.push(folder);\n }\n }\n });\n }\n\n const selectOptions = this.state.files\n .map(file => ({\n value: file.name,\n label: !this.props.schema.withFolder && folders.length === 1 ? `${file.name.substring(folders[0].length)}` : `${file.name}${this.props.schema.noSize ? '' : `(${file.size})`}`,\n extension: file.name.toLowerCase().split('.').pop(),\n }));\n\n if (!this.props.schema.noNone) {\n selectOptions.unshift({ label: I18n.t('ra_none'), value: '' });\n }\n\n // eslint-disable-next-line\n const item = selectOptions.find(item => item.value === this.state.value);\n\n let buttons = 0;\n\n if (this.props.schema.upload) {\n buttons++;\n }\n if (this.props.schema.refresh) {\n buttons++;\n }\n const play = this.state.value && (this.state.value.endsWith('.mp3') || this.state.value.endsWith('.ogg') || this.state.value.endsWith('.wav'));\n // show play button\n if (play) {\n buttons++;\n }\n\n const element = <div className={this.props.classes.fullWidth}>\n <FormControl variant=\"standard\" style={{ width: `calc(100% - ${buttons * 42}px)` }}>\n {this.props.schema.label ? <InputLabel>{this.getText(this.props.schema.label)}</InputLabel> : null}\n <Select\n variant=\"standard\"\n error={!!error}\n disabled={!!disabled}\n value={this.state.value || '_'}\n renderValue={() => <>\n {this.getIcon(item)}\n <span>{item?.label || ''}</span>\n </>}\n onChange={e => {\n this.setState({ value: e.target.value === '_' ? '' : e.target.value }, () =>\n this.onChange(this.props.attr, this.state.value));\n }}\n >\n {selectOptions.map(it => <MenuItem key={it.value} value={it.value}>\n <ListItemIcon>{this.getIcon(item)}</ListItemIcon>\n <ListItemText>{item.label}</ListItemText>\n {this.props.schema.delete && item.value ?\n <IconButton\n className={this.props.classes.deleteButton}\n size=\"small\"\n onClick={() => this.setState({ deleteFile: item.value })}\n >\n <IconDelete />\n </IconButton> : null}\n </MenuItem>)}\n </Select>\n {this.props.schema.help ? <FormHelperText>{this.renderHelp(this.props.schema.help, this.props.schema.helpLink, this.props.schema.noTranslation)}</FormHelperText> : null}\n </FormControl>\n { this.props.schema.refresh && <IconButton onClick={() => this.updateFiles()}><IconRefresh /></IconButton> }\n { this.props.schema.upload && <IconButton onClick={() => this.dropzoneRef.current?.open()}><IconUpload /></IconButton> }\n { play && <IconButton style={{ color: '#00FF00' }} onClick={() => this.play()}><IconPlay /></IconButton> }\n </div>;\n\n if (!this.props.schema.upload) {\n return <>\n {element}\n {this.renderDeleteDialog()}\n </>;\n }\n let accept = { '*/*': [] };\n if (this.props.schema.fileTypes === 'image') {\n accept = {\n 'image/*': ['.png', '.jpg', '.svg', '.gif', '.apng', '.avif', '.webp'],\n };\n } else if (this.props.schema.fileTypes === 'audio') {\n accept = {\n 'audio/*': ['.mp3', '.ogg', '.wav', '.mp4'],\n };\n } else if (this.props.schema.fileTypes === 'text') {\n accept = {\n 'text/plain': ['.txt'],\n };\n }\n if (this.props.schema.pattern) {\n const last = this.props.schema.pattern.split('/').pop().toLowerCase().replace(/.*\\./, '');\n if (last === 'png' || last === 'jpg' || last === 'svg' || last === 'gif' || last === 'apng' || last === 'avif' || last === 'webp') {\n accept = {\n 'image/*': ['.png', '.jpg', '.svg', '.gif', '.apng', '.avif', '.webp'],\n };\n } else if (last === 'mp3' || last === 'ogg' || last === 'wav') {\n accept = {\n 'audio/*': ['.mp3', '.ogg', '.wav', '.mp4'],\n };\n } else if (last === 'ics') {\n accept = {\n 'text/calendar': ['.ics'],\n };\n } else if (last === 'txt') {\n accept = {\n 'text/plain': ['.txt'],\n };\n } else if (last === 'pem') {\n accept = {\n 'text/plain': ['.pem'],\n };\n } else {\n accept = {\n '*/*': [`.${last}`],\n };\n }\n }\n\n return <Dropzone\n ref={this.dropzoneRef}\n multiple={false}\n accept={accept}\n noKeyboard\n noClick\n maxSize={this.props.schema.maxSize || 2 * 1024 * 1024}\n onDragEnter={() => {\n this.setState({ uploadFile: 'dragging' });\n }}\n onDragLeave={() => this.setState({ uploadFile: true })}\n onDrop={(acceptedFiles, errors) => {\n this.setState({ uploadFile: false });\n if (!acceptedFiles.length) {\n window.alert((errors && errors[0] && errors[0].errors && errors[0].errors[0] && errors[0].errors[0].message) || I18n.t('Cannot upload'));\n } else {\n this.onDrop(acceptedFiles);\n }\n }}\n >\n {({ getRootProps, getInputProps }) => <div\n className={Utils.clsx(\n this.props.classes.uploadDiv,\n this.state.uploadFile === 'dragging' && this.props.classes.uploadDivDragging,\n disabled && this.props.classes.disabledOpacity,\n )}\n {...getRootProps()}\n >\n <input {...getInputProps()} />\n {this.state.uploadFile === 'dragging' ? <div className={Utils.clsx(this.props.classes.uploadCenterDiv, this.state.uploadError && this.props.classes.error)}>\n <div className={this.props.classes.uploadCenterTextAndIcon}>\n <UploadIcon className={this.props.classes.uploadCenterIcon} />\n <div className={this.props.classes.uploadCenterText}>\n {\n this.state.uploadFile === 'dragging' ? I18n.t('ra_Drop file here') :\n I18n.t('ra_Place your files here or click here to open the browse dialog')\n }\n </div>\n </div>\n </div> : null}\n {element}\n {this.renderDeleteDialog()}\n </div>}\n </Dropzone>;\n }\n}\n\nConfigFileSelector.propTypes = {\n socket: PropTypes.object.isRequired,\n themeType: PropTypes.string,\n themeName: PropTypes.string,\n style: PropTypes.object,\n className: PropTypes.string,\n data: PropTypes.object.isRequired,\n schema: PropTypes.object,\n onError: PropTypes.func,\n onChange: PropTypes.func,\n imagePrefix: PropTypes.func,\n};\n\nexport default withStyles(styles)(ConfigFileSelector);\n"],"mappings":"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"}