iobroker.javascript 7.0.10 → 7.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/admin/asset-manifest.json +9 -9
- package/admin/google-blockly/blockly-9.3.3.tgz +0 -0
- package/admin/google-blockly/blockly_compressed.js +1704 -1469
- package/admin/google-blockly/blocks_compressed.js +218 -164
- package/admin/google-blockly/javascript_compressed.js +328 -100
- package/admin/google-blockly/msg/js/de.js +70 -64
- package/admin/google-blockly/msg/js/en.js +20 -14
- package/admin/google-blockly/msg/js/es.js +45 -39
- package/admin/google-blockly/msg/js/fr.js +65 -59
- package/admin/google-blockly/msg/js/it.js +25 -19
- package/admin/google-blockly/msg/js/nl.js +61 -55
- package/admin/google-blockly/msg/js/pl.js +52 -46
- package/admin/google-blockly/msg/js/pt.js +36 -30
- package/admin/google-blockly/msg/js/ru.js +47 -41
- package/admin/google-blockly/msg/js/uk.js +17 -13
- package/admin/google-blockly/msg/js/zh-cn.js +92 -86
- package/admin/google-blockly/own/blocks_action.js +4 -4
- package/admin/google-blockly/own/blocks_number.js +4 -3
- package/admin/google-blockly/own/blocks_procedures.js +106 -75
- package/admin/google-blockly/own/blocks_sendto.js +2 -2
- package/admin/google-blockly/own/blocks_switch.js +8 -19
- package/admin/google-blockly/own/blocks_system.js +171 -113
- package/admin/google-blockly/own/blocks_text.js +1 -1
- package/admin/google-blockly/own/blocks_time.js +2 -1
- package/admin/google-blockly/own/blocks_timeout.js +31 -27
- package/admin/google-blockly/own/blocks_trigger.js +62 -44
- package/admin/google-blockly/own/blocks_words.js +3 -3
- package/admin/google-blockly/own/field_cron.js +138 -189
- package/admin/google-blockly/own/field_oid.js +167 -249
- package/admin/google-blockly/own/field_script.js +124 -170
- package/admin/static/js/472.d73f9bde.chunk.js +3 -0
- package/admin/static/js/472.d73f9bde.chunk.js.map +1 -0
- package/admin/static/js/{512.6503862a.chunk.js → 512.e71b2bc3.chunk.js} +3 -3
- package/admin/static/js/512.e71b2bc3.chunk.js.map +1 -0
- package/admin/static/js/98.ecb7402b.chunk.js +2 -0
- package/admin/static/js/98.ecb7402b.chunk.js.map +1 -0
- package/admin/static/js/{main.d5dc2784.js → main.b8836dea.js} +2 -2
- package/admin/static/js/main.b8836dea.js.map +1 -0
- package/admin/tab.html +1 -1
- package/io-package.json +26 -26
- package/main.js +9 -10
- package/package.json +4 -4
- package/admin/blockly-9.0.1.tgz +0 -0
- package/admin/static/js/472.dae7221e.chunk.js +0 -3
- package/admin/static/js/472.dae7221e.chunk.js.map +0 -1
- package/admin/static/js/512.6503862a.chunk.js.map +0 -1
- package/admin/static/js/98.eee0c52f.chunk.js +0 -2
- package/admin/static/js/98.eee0c52f.chunk.js.map +0 -1
- package/admin/static/js/main.d5dc2784.js.map +0 -1
- /package/admin/static/js/{472.dae7221e.chunk.js.LICENSE.txt → 472.d73f9bde.chunk.js.LICENSE.txt} +0 -0
- /package/admin/static/js/{512.6503862a.chunk.js.LICENSE.txt → 512.e71b2bc3.chunk.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static/js/98.ecb7402b.chunk.js","mappings":"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","sources":["Dialogs/Rename.jsx","Dialogs/Delete.jsx","Dialogs/AddNewScript.jsx","Dialogs/New.jsx","Dialogs/Error.jsx","Dialogs/AdapterDebug.jsx","SideMenu.jsx","Log.jsx","Components/ScriptEditorVanilaMonaco.jsx","Dialogs/Export.jsx","Dialogs/Import.jsx","Components/BlocklyEditor.jsx","Dialogs/ScriptEditor.jsx","webpack://js/./src/Components/RulesEditor/style.module.scss?d9e3","webpack://js/./src/Components/RulesEditor/components/CardMenu/style.module.scss?24d8","Components/RulesEditor/helpers/MaterialDynamicIcon.jsx","Components/RulesEditor/components/CardMenu/index.jsx","webpack://js/./src/Components/RulesEditor/components/CurrentItem/style.module.scss?3318","Components/RulesEditor/helpers/deepCopy.jsx","Components/RulesEditor/helpers/filterElement.jsx","webpack://js/./src/Components/RulesEditor/components/GenericBlock/style.module.scss?9124","webpack://js/./src/Components/RulesEditor/components/CustomButton/style.module.scss?0052","Components/RulesEditor/components/CustomButton/index.jsx","webpack://js/./src/Components/RulesEditor/components/CustomCheckbox/style.module.scss?0cc5","Components/RulesEditor/components/CustomCheckbox/index.jsx","webpack://js/./src/Components/RulesEditor/components/CustomInput/style.module.scss?7193","Components/RulesEditor/components/CustomInput/index.jsx","Components/RulesEditor/components/CustomInstance/index.jsx","webpack://js/./src/Components/RulesEditor/components/CustomModal/style.module.scss?7408","Components/RulesEditor/components/CustomModal/index.jsx","webpack://js/./src/Components/RulesEditor/components/CustomSelect/style.module.scss?40f6","Components/RulesEditor/components/CustomSelect/index.jsx","webpack://js/./src/Components/RulesEditor/components/CustomSlider/style.module.scss?f41a","Components/RulesEditor/components/CustomSlider/index.jsx","webpack://js/./src/Components/RulesEditor/components/CustomSwitch/style.module.scss?0c1c","Components/RulesEditor/components/CustomSwitch/index.jsx","webpack://js/./src/Components/RulesEditor/components/CustomTime/style.module.scss?880f","Components/RulesEditor/components/CustomTime/index.jsx","webpack://js/./src/Components/RulesEditor/components/CustomDate/style.module.scss?8a42","Components/RulesEditor/components/CustomDate/index.jsx","Components/RulesEditor/helpers/utils.jsx","Components/RulesEditor/helpers/Tour.jsx","Components/RulesEditor/components/GenericBlock/index.jsx","Components/RulesEditor/components/Blocks/ActionSayText.jsx","Components/RulesEditor/components/Blocks/ActionSendEmail.jsx","Components/RulesEditor/components/Blocks/ActionTelegram.jsx","Components/RulesEditor/components/Blocks/ActionPushover.jsx","Components/RulesEditor/components/Blocks/ActionWhatsappcmb.jsx","Components/RulesEditor/components/Blocks/ActionPushsafer.jsx","Components/RulesEditor/helpers/Compile.jsx","Components/RulesEditor/components/Blocks/TriggerScriptSave.jsx","Components/RulesEditor/components/Blocks/TriggerSchedule.jsx","Components/RulesEditor/components/Blocks/TriggerState.jsx","Components/RulesEditor/components/Blocks/ConditionState.jsx","Components/RulesEditor/components/Blocks/ConditionTime.jsx","Components/RulesEditor/components/Blocks/ConditionAstrological.jsx","Components/RulesEditor/components/Blocks/ActionSetState.jsx","Components/RulesEditor/components/StandardBlocks/index.jsx","Components/RulesEditor/components/Blocks/ActionExec.jsx","Components/RulesEditor/components/Blocks/ActionHTTPCall.jsx","Components/RulesEditor/components/Blocks/ActionPrintText.jsx","Components/RulesEditor/components/Blocks/ActionPause.jsx","Components/RulesEditor/components/Blocks/ActionFunction.jsx","Components/RulesEditor/components/Blocks/ActionSetStateDelayed.jsx","Components/RulesEditor/components/Blocks/ActionOperateStates.jsx","Components/RulesEditor/components/ContextWrapper/index.jsx","Components/RulesEditor/components/CurrentItem/index.jsx","Components/RulesEditor/helpers/findElement.jsx","Components/RulesEditor/components/CustomDragLayer/index.jsx","webpack://js/./src/Components/RulesEditor/components/ContentBlockItems/style.module.scss?385e","Components/RulesEditor/hooks/useStateLocal.jsx","Components/RulesEditor/helpers/cardSort.jsx","webpack://js/./src/Components/RulesEditor/components/DragWrapper/style.module.scss?b1b7","Components/RulesEditor/components/DragWrapper/index.jsx","Components/RulesEditor/components/ContentBlockItems/DialogHelp.jsx","Components/RulesEditor/components/ContentBlockItems/DialogCondition.jsx","Components/RulesEditor/components/ContentBlockItems/index.jsx","webpack://js/./src/Components/RulesEditor/components/Menu/style.module.scss?9893","Components/RulesEditor/components/CardMenu/CustomDragItem.jsx","webpack://js/./src/Components/RulesEditor/components/HamburgerMenu/hamburgerMenu.module.scss?ab25","Components/RulesEditor/components/HamburgerMenu/index.jsx","Components/RulesEditor/components/Menu/index.jsx","Components/RulesEditor/index.jsx","Components/Debugger/Editor.jsx","Components/Debugger/Console.jsx","Components/Debugger/Stack.jsx","Components/Debugger/index.jsx","Editor.jsx","Dialogs/ImportFile.jsx","App.jsx","serviceWorker.jsx","bootstrap.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Button from '@mui/material/Button';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogActions from '@mui/material/DialogActions';\nimport Dialog from '@mui/material/Dialog';\nimport TextField from '@mui/material/TextField';\nimport FormControl from '@mui/material/FormControl';\nimport Select from '@mui/material/Select';\nimport InputLabel from '@mui/material/InputLabel';\nimport MenuItem from '@mui/material/MenuItem';\n\nimport IconCancel from '@mui/icons-material/Cancel';\nimport IconOk from '@mui/icons-material/Check';\n\nimport { I18n } from '@iobroker/adapter-react-v5';\n\nclass DialogRename extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n name: props.name,\n id: props.id,\n instance: props.instance || 0\n };\n this.isShowInstance = !props.folder && props.instances && (props.instance || props.instances[0] || props.instances.length > 1);\n this.prefix = this.getPrefix(props.id);\n this.oldId = props.id;\n }\n\n getPrefix(id) {\n const parts = (id || '').split('.');\n parts.pop();\n return parts.join('.');\n }\n\n getId(name) {\n name = (name || '').replace(/[\\\\/\\][*,;'\"`<>?\\s]/g, '_');\n return this.prefix + '.' + name;\n }\n\n componentWillReceiveProps(nextProps) {\n if (nextProps.name !== this.props.name) {\n this.setState({name: nextProps.name});\n }\n if (nextProps.id !== this.props.id) {\n this.prefix = this.getPrefix(nextProps.id);\n this.setState({id: nextProps.id});\n }\n }\n\n handleCancel = () => {\n this.props.onClose();\n };\n\n handleOk = () => {\n this.props.onRename(this.oldId, this.state.id, this.state.name, this.state.instance);\n this.props.onClose();\n };\n\n handleChange = name => {\n this.setState({name, id: this.getId(name)});\n };\n\n render() {\n return <Dialog\n onClose={(event, reason) => false}\n maxWidth=\"md\"\n fullWidth\n open={!0}\n aria-labelledby=\"confirmation-dialog-title\"\n >\n <DialogTitle id=\"confirmation-dialog-title\">{I18n.t('Rename')}</DialogTitle>\n <DialogContent>\n <form noValidate autoComplete=\"off\">\n <TextField\n variant=\"standard\"\n style={{width: '100%'}}\n id=\"standard-name\"\n autoFocus\n label={I18n.t('Name')}\n value={this.state.name}\n onKeyPress={(ev) => {\n if (ev.key === 'Enter') {\n // Do code here\n ev.preventDefault();\n setTimeout(() => this.handleOk(), 200);\n }\n }}\n onChange={e => this.handleChange(e.target.value)}\n margin=\"normal\"\n />\n <TextField\n variant=\"standard\"\n id=\"standard-name-id\"\n style={{width: '100%'}}\n label={I18n.t('ID')}\n value={this.state.id}\n disabled\n margin=\"normal\"\n />\n {\n this.isShowInstance && (\n <FormControl variant=\"standard\">\n <InputLabel htmlFor=\"instance\">{I18n.t('Instance')}</InputLabel>\n <Select\n variant=\"standard\"\n value={this.state.instance}\n onChange={e => this.setState({instance: parseInt(e.target.value, 10)})}\n inputProps={{name: 'instance', id: 'instance'}}\n >\n {this.props.instances.map(instance => <MenuItem key={instance} value={instance}>{instance || '0'}</MenuItem>)}\n </Select>\n </FormControl>)\n }\n </form>\n </DialogContent>\n <DialogActions>\n <Button variant=\"contained\" onClick={this.handleOk} color=\"primary\" startIcon={<IconOk/>}>{I18n.t('Ok')}</Button>\n <Button color=\"grey\" variant=\"contained\" onClick={this.handleCancel} startIcon={<IconCancel/>}>{I18n.t('Cancel')}</Button>\n </DialogActions>\n </Dialog>;\n }\n}\n\nDialogRename.propTypes = {\n onClose: PropTypes.func,\n onRename: PropTypes.func,\n name: PropTypes.string,\n id: PropTypes.string,\n instance: PropTypes.number,\n instances: PropTypes.array,\n folder: PropTypes.bool,\n};\n\nexport default DialogRename;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '@mui/material/Button';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogActions from '@mui/material/DialogActions';\nimport Dialog from '@mui/material/Dialog';\nimport {MdDelete as IconDelete} from 'react-icons/md';\n\nimport IconOk from '@mui/icons-material/Check';\nimport IconCancel from '@mui/icons-material/Cancel';\n\nimport { I18n } from '@iobroker/adapter-react-v5';\nimport withStyles from '@mui/styles/withStyles';\n\nconst styles = theme => ({\n\n});\n\nclass DialogDelete extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n name: props.name,\n id: props.id,\n };\n }\n\n componentWillReceiveProps(nextProps) {\n if (nextProps.name !== this.props.name) {\n this.setState({name: nextProps.name});\n }\n if (nextProps.id !== this.props.id) {\n this.setState({id: nextProps.id});\n }\n }\n\n handleCancel = () => {\n this.props.onClose(null);\n };\n\n handleOk = () => {\n this.props.onDelete(this.state.id);\n this.props.onClose(this.props.value);\n };\n\n render() {\n return <Dialog\n onClose={(event, reason) => false}\n maxWidth=\"md\"\n open={!0}\n aria-labelledby=\"confirmation-dialog-title\"\n >\n <DialogTitle id=\"confirmation-dialog-title\">{I18n.t('Are you sure?')}</DialogTitle>\n <DialogContent>\n <IconDelete/>\n <span style={{fontSize: 14, fontWeight: 'bold'}}>{I18n.t('Delete %s', this.state.name)}</span>\n </DialogContent>\n <DialogActions>\n <Button variant=\"contained\" onClick={this.handleOk} color=\"primary\" startIcon={<IconOk/>}>{I18n.t('Ok')}</Button>\n <Button color=\"grey\" variant=\"contained\" onClick={this.handleCancel} startIcon={<IconCancel/>}>{I18n.t('Cancel')}</Button>\n </DialogActions>\n </Dialog>;\n }\n}\n\nDialogDelete.propTypes = {\n onClose: PropTypes.func,\n onDelete: PropTypes.func,\n name: PropTypes.string,\n id: PropTypes.string,\n};\n\nexport default withStyles(styles)(DialogDelete);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport withStyles from '@mui/styles/withStyles';\nimport Button from '@mui/material/Button';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogActions from '@mui/material/DialogActions';\nimport Dialog from '@mui/material/Dialog';\nimport Card from '@mui/material/Card';\nimport CardActionArea from '@mui/material/CardActionArea';\nimport CardActions from '@mui/material/CardActions';\nimport CardContent from '@mui/material/CardContent';\nimport CardMedia from '@mui/material/CardMedia';\n\nimport ImgJS from '../assets/tileJS.png';\nimport ImgTS from '../assets/tileTS.png';\nimport ImgBlockly from '../assets/tileBlockly.png';\nimport ImgRules from '../assets/tileRules.png';\nimport IconCancel from '@mui/icons-material/Cancel';\n\nimport { I18n } from '@iobroker/adapter-react-v5';\n\nconst styles = theme => ({\n card: {\n maxWidth: 345,\n display: 'inline-block',\n margin: '0 10px 0 10px'\n },\n media: {\n height: 100,\n },\n text: {\n maxWidth: 200,\n },\n complexity: {\n fontWeight: 'bold',\n fontStyle: 'italic',\n marginBottom: theme.spacing(1),\n }\n});\n\nclass DialogAddNew extends React.Component {\n handleCancel = () => {\n this.props.onClose();\n };\n\n handleOk = type => {\n this.props.onClose(type);\n };\n\n openHtml(html) {\n const lang = I18n.getLanguage();\n if (!html.includes('javascript.md') && (lang === 'de' || lang === 'ru')) {\n html = html.replace(/\\/en\\//, '/' + lang + '/');\n }\n const win = window.open(html, '_blank');\n win.focus();\n }\n\n getJSCard() {\n return <Card className={this.props.classes.card}>\n <CardActionArea\n onClick={() => this.props.onClose && this.props.onClose('Javascript/js')}>\n <CardMedia\n className={this.props.classes.media}\n image={ImgJS}\n title=\"Javascript\"\n />\n <CardContent>\n <h2>Javascript</h2>\n <div className={this.props.classes.complexity}>{I18n.t('for programmers')}</div>\n <div className={this.props.classes.text}>{I18n.t('JS description')}</div>\n </CardContent>\n </CardActionArea>\n <CardActions>\n <Button size=\"small\" color=\"primary\" onClick={() => this.props.onClose && this.props.onClose('Javascript/js')}>{I18n.t('Add')}</Button>\n <Button size=\"small\" color=\"primary\" onClick={() => this.openHtml('https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md')}>{I18n.t('Learn More')}</Button>\n </CardActions>\n </Card>;\n }\n\n getTSCard() {\n return <Card className={this.props.classes.card}>\n <CardActionArea\n onClick={() => this.props.onClose && this.props.onClose('TypeScript/ts')}>\n <CardMedia\n className={this.props.classes.media}\n image={ImgTS}\n title=\"Typescript\"\n />\n <CardContent>\n <h2>Typescript</h2>\n <div className={this.props.classes.complexity}>{I18n.t('for professionals')}</div>\n <div className={this.props.classes.text}>{I18n.t('TS description')}</div>\n </CardContent>\n </CardActionArea>\n <CardActions>\n <Button size=\"small\" color=\"primary\" onClick={() => this.props.onClose && this.props.onClose('TypeScript/ts')}>{I18n.t('Add')}</Button>\n <Button size=\"small\" color=\"primary\" onClick={() => this.openHtml('https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md')}>{I18n.t('Learn More')}</Button>\n </CardActions>\n </Card>;\n }\n\n getBlocklyCard() {\n return <Card className={this.props.classes.card}>\n <CardActionArea onClick={() => this.props.onClose && this.props.onClose('Blockly')}>\n <CardMedia\n className={this.props.classes.media}\n image={ImgBlockly}\n title=\"Blockly\"\n />\n <CardContent>\n <h2>Blockly</h2>\n <div className={this.props.classes.complexity}>{I18n.t('normal')}</div>\n <div className={this.props.classes.text}>{I18n.t('Blockly description')}</div>\n </CardContent>\n </CardActionArea>\n <CardActions>\n <Button size=\"small\" color=\"primary\" onClick={() => this.props.onClose && this.props.onClose('Blockly')}>{I18n.t('Add')}</Button>\n <Button size=\"small\" color=\"primary\" onClick={() => this.openHtml('https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/blockly.md')}>{I18n.t('Learn More')}</Button>\n </CardActions>\n </Card>;\n }\n\n getRulesCard() {\n return <Card className={this.props.classes.card}>\n <CardActionArea onClick={() => this.props.onClose && this.props.onClose('Rules')}>\n <CardMedia\n className={this.props.classes.media}\n image={ImgRules}\n title=\"Rules\"\n />\n <CardContent>\n <h2>Rules</h2>\n <div className={this.props.classes.complexity}>{I18n.t('easy')}</div>\n <div className={this.props.classes.text}>{I18n.t('Rules description')}</div>\n </CardContent>\n </CardActionArea>\n <CardActions>\n <Button size=\"small\" color=\"primary\" onClick={() => this.props.onClose && this.props.onClose('Rules')}>{I18n.t('Add')}</Button>\n <Button size=\"small\" color=\"primary\" onClick={() => this.openHtml('https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md')}>{I18n.t('Learn More')}</Button>\n </CardActions>\n </Card>;\n }\n\n render() {\n return <Dialog\n onClose={() => false}\n maxWidth=\"lg\"\n fullWidth\n open={!0}\n aria-labelledby=\"confirmation-dialog-title\"\n >\n <DialogTitle id=\"confirmation-dialog-title\">{I18n.t('Add new script')}</DialogTitle>\n <DialogContent style={{ textAlign: 'center' }}>\n {this.getRulesCard()}\n {this.getBlocklyCard()}\n {this.getJSCard()}\n {this.getTSCard()}\n </DialogContent>\n <DialogActions>\n <Button color=\"grey\" onClick={this.handleCancel} startIcon={<IconCancel/>}>{I18n.t('Cancel')}</Button>\n </DialogActions>\n </Dialog>;\n }\n}\n\nDialogAddNew.propTypes = {\n onClose: PropTypes.func\n};\n\nexport default withStyles(styles)(DialogAddNew);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport withStyles from '@mui/styles/withStyles';\n\nimport Button from '@mui/material/Button';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogActions from '@mui/material/DialogActions';\nimport Dialog from '@mui/material/Dialog';\nimport TextField from '@mui/material/TextField';\nimport FormControl from '@mui/material/FormControl';\nimport Select from '@mui/material/Select';\nimport InputLabel from '@mui/material/InputLabel';\nimport MenuItem from '@mui/material/MenuItem';\n\nimport IconOk from '@mui/icons-material/Check';\nimport IconCancel from '@mui/icons-material/Cancel';\n\nimport { I18n } from '@iobroker/adapter-react-v5';\n\nconst styles = theme => ({\n\n});\n\nclass DialogNew extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n name: props.name || 'Script',\n instance: props.instance || 0,\n parent: props.parent,\n error: ''\n };\n this.isShowInstance = !props.folder && props.instances && (props.instance || props.instances[0] || props.instances.length > 1);\n }\n\n getId(name) {\n name = name || this.state.name || '';\n name = name.replace(/[\\\\/\\][.*,;'\"`<>?\\s]/g, '_').trim().replace(/\\.$/, '_');\n return (this.state ? this.state.parent : this.props.parent) + '.' + name;\n }\n\n componentWillReceiveProps(nextProps) {\n if (nextProps.name !== this.props.name) {\n this.setState({name: nextProps.name});\n }\n }\n\n handleCancel = () => {\n this.props.onClose();\n };\n\n handleOk = () => {\n this.props.onAdd(this.getId(this.state.name), this.state.name, this.state.instance, this.props.type);\n this.props.onClose();\n };\n\n handleChange = name => {\n const id = this.getId(name);\n if (!name) {\n this.setState({name, id, error: I18n.t('Empty name is not allowed')});\n } else\n if (this.props.existingItems && this.props.existingItems.indexOf(id) !== -1) {\n this.setState({name, id, error: I18n.t('Duplicate name')});\n } else {\n this.setState({name, id, error: ''});\n }\n };\n\n render() {\n return <Dialog\n onClose={(event, reason) => false}\n maxWidth=\"md\"\n fullWidth\n open={!0}\n aria-labelledby=\"confirmation-dialog-title\"\n >\n <DialogTitle id=\"confirmation-dialog-title\">{this.props.title || I18n.t('Create new')}</DialogTitle>\n <DialogContent>\n <form noValidate autoComplete=\"off\">\n <TextField\n variant=\"standard\"\n style={{width: '100%'}}\n id=\"standard-name\"\n autoFocus\n error={!!this.state.error}\n label={I18n.t('Name')}\n value={this.state.name}\n helperText={this.state.error}\n onKeyPress={(ev) => {\n if (ev.key === 'Enter') {\n // Do code here\n ev.preventDefault();\n setTimeout(() => this.handleOk(), 200);\n }\n }}\n onChange={e => this.handleChange(e.target.value)}\n margin=\"normal\"\n />\n <FormControl variant=\"standard\" style={{minWidth: 100}}>\n <InputLabel htmlFor=\"parent\">{I18n.t('Folder')}</InputLabel>\n <Select\n variant=\"standard\"\n style={{width: '100%'}}\n value={this.state.parent}\n onChange={e => this.setState({parent: e.target.value})}\n inputProps={{name: 'parent', id: 'parent',}}\n >\n {this.props.parents.map(parent => {\n const parts = parent.id.split('.');\n parts.splice(0, 2); // remove script.js\n const names = [];\n let id = 'script.js';\n parts.forEach((n, i) => {\n id += '.' + n;\n const el = this.props.parents.find(item => item.id === id);\n if (el) {\n names.push(el.name);\n } else {\n names.push(n);\n }\n });\n if (!names.length) {\n names.push(parent.name);\n }\n return (<MenuItem key={parent.id} value={parent.id}>{names.join(' / ')}</MenuItem>)\n })}\n </Select>\n </FormControl>\n <TextField\n variant=\"standard\"\n id=\"standard-name-id\"\n style={{width: '100%'}}\n label={I18n.t('ID')}\n value={this.getId()}\n disabled\n margin=\"normal\"\n />\n {\n this.isShowInstance && (\n <FormControl variant=\"standard\">\n <InputLabel htmlFor=\"instance\">{I18n.t('Instance')}</InputLabel>\n <Select\n variant=\"standard\"\n value={this.state.instance}\n onChange={e => this.setState({instance: parseInt(e.target.value, 10)})}\n inputProps={{name: 'instance', id: 'instance',}}\n >\n {this.props.instances.map(instance => (<MenuItem key={'instance' + instance} value={instance}>{instance || '0'}</MenuItem>))}\n </Select>\n </FormControl>)\n }\n </form>\n </DialogContent>\n <DialogActions>\n <Button variant=\"contained\" onClick={this.handleOk} disabled={!!this.state.error} color=\"primary\" startIcon={<IconOk/>}>{I18n.t('Ok')}</Button>\n <Button color=\"grey\" variant=\"contained\" onClick={this.handleCancel} startIcon={<IconCancel/>}>{I18n.t('Cancel')}</Button>\n </DialogActions>\n </Dialog>;\n }\n}\n\nDialogNew.propTypes = {\n onClose: PropTypes.func,\n onAdd: PropTypes.func,\n name: PropTypes.string,\n title: PropTypes.string,\n parent: PropTypes.string,\n instance: PropTypes.number,\n instances: PropTypes.array,\n parents: PropTypes.array,\n existingItems: PropTypes.array,\n folder: PropTypes.bool,\n type: PropTypes.string,\n};\n\nexport default withStyles(styles)(DialogNew);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport withStyles from '@mui/styles/withStyles';\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 DialogContentText from '@mui/material/DialogContentText';\nimport DialogTitle from '@mui/material/DialogTitle';\n\nimport IconOk from '@mui/icons-material/Check';\n\nimport { I18n } from '@iobroker/adapter-react-v5';\n\nconst styles = theme => ({\n titleBackground: {\n background: theme.palette.error.main,\n },\n titleColor: {\n color: theme.palette.error.contrastText,\n '&>h2': {\n color: theme.palette.error.contrastText,\n }\n },\n});\n\nclass DialogError extends React.Component {\n constructor(props) {\n super(props);\n console.log('Error created')\n }\n handleOk = () => {\n this.props.onClose && this.props.onClose();\n };\n\n render() {\n return <Dialog\n open={!0}\n maxWidth=\"sm\"\n fullWidth\n onClose={() => this.handleOk()}\n aria-labelledby=\"alert-dialog-title\"\n aria-describedby=\"alert-dialog-description\"\n >\n <DialogTitle className={this.props.classes.titleBackground}\n classes={{ root: this.props.classes.titleColor }}\n id=\"alert-dialog-title\">{this.props.title || I18n.t('Error')}</DialogTitle>\n <DialogContent>\n <DialogContentText id=\"alert-dialog-description\">\n {this.props.text || I18n.t('Unknown error!')}\n </DialogContentText>\n </DialogContent>\n <DialogActions>\n <Button variant=\"contained\" onClick={() => this.handleOk()} color=\"primary\" autoFocus startIcon={<IconOk/>}>{I18n.t('Ok')}</Button>\n </DialogActions>\n </Dialog>;\n }\n}\n\nDialogError.propTypes = {\n onClose: PropTypes.func,\n title: PropTypes.string,\n text: PropTypes.string,\n icon: PropTypes.object\n};\n\nexport default withStyles(styles)(DialogError);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport withStyles from '@mui/styles/withStyles';\n\nimport Button from '@mui/material/Button';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogActions from '@mui/material/DialogActions';\nimport Dialog from '@mui/material/Dialog';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport List from '@mui/material/List';\nimport ListItem from '@mui/material/ListItem';\nimport Grid from '@mui/material/Grid';\nimport ListItemText from '@mui/material/ListItemText';\nimport Input from '@mui/material/Input';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport IconButton from '@mui/material/IconButton';\n\nimport IconOk from '@mui/icons-material/Check';\nimport IconCancel from '@mui/icons-material/Cancel';\nimport IconClose from '@mui/icons-material/Close';\n\nimport { I18n } from '@iobroker/adapter-react-v5';\n\nconst styles = theme => ({\n buttonIcon: {\n marginRight: theme.spacing(1),\n },\n icon: {\n width: 24,\n height: 24,\n },\n filter: {\n width: '100%',\n },\n filterWithButton: {\n width: '100%',\n },\n title: {\n fontWeight: 'bold',\n marginTop: theme.spacing(2),\n }\n});\n\n\nclass DialogAdapterDebug extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n instances: [],\n filter: window.localStorage.getItem('javascript.debug.filter') || '',\n showAskForStop: false,\n jsInstance: window.localStorage.getItem('javascript.debug.instance') || '',\n jsInstanceHost: '',\n adapterToDebug: window.localStorage.getItem('javascript.debug.adapter') || '',\n };\n }\n\n componentDidMount() {\n this.props.socket.getAdapterInstances()\n .then(instances => {\n instances = instances.filter(i => i && !i.common?.onlyWWW).map(item => {\n const name = item._id.replace(/^system\\.adapter\\./, '');\n const [adapter] = name.split('.');\n return {\n id: name,\n enabled: item.common?.enabled,\n host: item.common?.host,\n icon: item.common?.icon ? `../../adapter/${adapter}/${item.common.icon}` : '',\n };\n });\n instances.sort((a, b) => a.id > b.id ? 1 : (a.id < b.id ? -1 : 0));\n let jsInstance = this.state.jsInstance || '';\n let jsInstanceObj = this.state.jsInstance && instances.find(item => item.id === this.state.jsInstance);\n let jsInstanceHost;\n\n // check if selected instance is in the list\n if (!this.state.jsInstance || !jsInstanceObj) {\n jsInstance = instances.find(item => item.id.startsWith('javascript.')); // take the first one\n jsInstanceHost = jsInstance ? jsInstance.host : '';\n jsInstance = jsInstance ? jsInstance.id : '';\n } else {\n jsInstanceHost = jsInstanceObj ? jsInstanceObj.host : '';\n }\n\n let adapterToDebug = this.state.adapterToDebug || '';\n if (adapterToDebug && !instances.find(item => item.id === adapterToDebug)) {\n adapterToDebug = '';\n }\n\n this.setState({instances, jsInstance, adapterToDebug, jsInstanceHost});\n });\n }\n\n handleOk = () => {\n // TODO\n if (this.state.instances.find(item => item.id === this.state.adapterToDebug).enabled) {\n return this.props.socket.getObject('system.adapter.' + this.state.adapterToDebug)\n .then(obj => {\n obj.common.enabled = false;\n this.props.socket.setObject(obj._id, obj)\n .then(() =>\n this.props.onDebug(this.state.jsInstance, this.state.adapterToDebug));\n })\n } else {\n this.props.onDebug(this.state.jsInstance, this.state.adapterToDebug);\n }\n };\n\n\n renderJavascriptList() {\n const js = this.state.instances.filter(item => item.id.startsWith('javascript.'));\n if (js.length < 2) {\n return null;\n } else {\n return <Grid item>\n <div className={this.props.classes.title}>{I18n.t('Host')}</div>\n <List component=\"nav\">\n {js.map(item => <ListItem\n button\n selected={this.state.jsInstance === item.id}\n onClick={this.setState({jsInstance: item.id, jsInstanceHost: item.host})}\n >\n <ListItemIcon><img src={item.icon} alt={item.id} className={this.props.classes.icon}/></ListItemIcon>\n <ListItemText primary={item.id} />\n </ListItem>)}\n </List>\n </Grid>;\n }\n }\n\n renderInstances() {\n if (!this.state.jsInstance) {\n return <Grid item/>;\n } else {\n const instances = this.state.instances.filter(item =>\n item.id !== this.state.jsInstance && item.host === this.state.jsInstanceHost && (!this.state.filter || item.id.includes(this.state.filter.toLowerCase()) ));\n return <Grid item>\n <div className={this.props.classes.title}>{I18n.t('Instances')}</div>\n <List component=\"nav\">\n {instances.map(item => <ListItem\n button\n selected={this.state.adapterToDebug === item.id}\n onDoubleClick={() => this.setState({adapterToDebug: item.id}, () => this.handleOk())}\n onClick={() => this.setState({adapterToDebug: item.id})}\n >\n <ListItemIcon><img src={item.icon} alt={item.id} className={this.props.classes.icon}/></ListItemIcon>\n <ListItemText primary={item.id} />\n </ListItem>)}\n </List>\n </Grid>;\n }\n }\n\n render() {\n return <Dialog\n maxWidth=\"md\"\n fullWidth={false}\n open={!0}\n onClose={(event, reason) => false}\n aria-labelledby=\"confirmation-dialog-title\"\n >\n <DialogTitle id=\"confirmation-dialog-title\">{this.props.title || I18n.t('Debug instance')}</DialogTitle>\n <DialogContent>\n <Grid container direction=\"column\">\n <Grid item>\n <Input\n classes={{root: this.props.classes.filterWithButton}}\n value={this.state.filter}\n placeholder={I18n.t('Filter')}\n onChange={e => {\n this.setState({filter: e.target.value});\n window.localStorage.setItem('javascript.debug.filter', e.target.value);\n }}\n endAdornment={\n <InputAdornment position=\"end\">\n {this.state.filter ? <IconButton\n size=\"small\"\n aria-label=\"toggle password visibility\"\n onClick={() => this.setState({filter: ''})}\n >\n <IconClose />\n </IconButton> : ''}\n </InputAdornment>\n }\n />\n </Grid>\n <Grid item>\n <Grid container>\n {this.renderJavascriptList()}\n {this.renderInstances()}\n </Grid>\n </Grid>\n </Grid>\n\n </DialogContent>\n <DialogActions>\n <Button variant=\"contained\" onClick={this.handleOk} disabled={!this.state.jsInstance || !this.state.adapterToDebug} color=\"primary\" startIcon={<IconOk/>}>{I18n.t('Start')}</Button>\n <Button color=\"grey\" variant=\"contained\" onClick={() => this.props.onClose()} startIcon={<IconCancel/>}>{I18n.t('Close')}</Button>\n </DialogActions>\n </Dialog>;\n }\n}\n\nDialogAdapterDebug.propTypes = {\n socket: PropTypes.object.isRequired,\n onClose: PropTypes.func.isRequired,\n onDebug: PropTypes.func.isRequired,\n};\n\nexport default withStyles(styles)(DialogAdapterDebug);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport withStyles from '@mui/styles/withStyles';\n\nimport Drawer from '@mui/material/Drawer';\nimport Divider from '@mui/material/Divider';\nimport List from '@mui/material/List';\nimport ListItem from '@mui/material/ListItem';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemSecondaryAction from '@mui/material/ListItemSecondaryAction';\nimport ListItemText from '@mui/material/ListItemText';\nimport IconButton from '@mui/material/IconButton';\nimport Menu from '@mui/material/Menu';\nimport MenuItem from '@mui/material/MenuItem';\nimport Input from '@mui/material/Input';\nimport { useDrag, useDrop, DndProvider as DragDropContext } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\n\nimport { MdMoreVert as IconMore } from 'react-icons/md';\nimport { FaFolder as IconFolder } from 'react-icons/fa';\nimport { FaFolderOpen as IconFolderOpened } from 'react-icons/fa';\nimport { MdContentCopy as IconCopy } from 'react-icons/md';\nimport { MdDelete as IconDelete } from 'react-icons/md';\nimport { MdInput as IconDoEdit } from 'react-icons/md';\nimport { MdClose as IconClear } from 'react-icons/md';\nimport { MdFormatClear as IconClose } from 'react-icons/md';\nimport { MdPlayArrow as IconPlay } from 'react-icons/md';\nimport { MdAdd as IconAdd } from 'react-icons/md';\nimport { MdCreateNewFolder as IconAddFolder } from 'react-icons/md';\nimport { MdPause as IconPause } from 'react-icons/md';\nimport { MdSwapVert as IconReorder } from 'react-icons/md';\nimport { MdEdit as IconEdit } from 'react-icons/md';\nimport { MdSearch as IconFind } from 'react-icons/md';\nimport { MdPersonPin as IconExpert } from 'react-icons/md';\nimport { FaFileExport as IconExport } from 'react-icons/fa';\nimport { FaFileImport as IconImport } from 'react-icons/fa';\nimport { MdPalette as IconDark } from 'react-icons/md';\nimport { MdUnfoldMore as IconExpandAll } from 'react-icons/md';\nimport { MdUnfoldLess as IconCollapseAll } from 'react-icons/md';\nimport { MdBugReport as IconDebug } from 'react-icons/md';\n\nimport { red, green, yellow } from '@mui/material/colors';\n\nimport ImgJS from './assets/js.png';\nimport ImgBlockly from './assets/blockly.png';\nimport ImgTypeScript from './assets/typescript.png';\nimport ImgRules from './assets/rules.png';\n\nimport { I18n, Utils } from '@iobroker/adapter-react-v5';\n\nimport DialogRename from './Dialogs/Rename';\nimport DialogDelete from './Dialogs/Delete';\nimport DialogAddNewScript from './Dialogs/AddNewScript';\nimport DialogNew from './Dialogs/New';\nimport DialogError from './Dialogs/Error';\nimport DialogAdapterDebug from './Dialogs/AdapterDebug';\n\nconst MENU_ITEM_HEIGHT = 48;\nconst COLOR_RUN = green[400];\nconst COLOR_PROBLEM = yellow[400];\nconst COLOR_PAUSE = red[400];\nconst ROOT_ID = 'script.js';\nconst COMMON_ID = ROOT_ID + '.common';\nconst GLOBAL_ID = ROOT_ID + '.global';\nconst NARROW_WIDTH = 350;\nconst LEVEL_PADDING = 16;\n\nconst SELECTED_STYLE = {\n background: '#164477',\n color: 'white'\n};\n\nconst styles = theme => ({\n drawerPaper: {\n position: 'relative',\n width: '100%', //Theme.menu.width,\n height: '100%',\n overflow: 'hidden'\n },\n toolbar: {\n height: theme.toolbar.height\n },\n toolbarButtons: {\n color: theme.palette.mode === 'dark'? 'white !important' : 'black !important'\n },\n iconButtonsDisabled: {\n filter: 'grayscale(100%)',\n opacity: 0.5,\n },\n toolbarSearch: {\n width: 'calc(100% - 105px)',\n lineHeight: '34px',\n marginLeft: 5\n },\n iconButtons: {\n width: 32,\n height: 32,\n padding: 2\n },\n iconDropdownMenu: {\n paddingRight: 5\n },\n iconOnTheRight: {\n position: 'absolute',\n right: 10,\n top: 'calc(50% - 8px)'\n },\n menu: {\n width: '100%',\n height: '100%'\n },\n innerMenu: {\n width: '100%',\n height: 'calc(100% - 76px)',\n overflowX: 'hidden',\n overflowY: 'auto'\n },\n listItemIcon: {\n minWidth: 32,\n },\n filterIcon: {\n width: 18,\n height: 18,\n borderRadius: 2,\n marginRight: 5\n },\n scriptIcon: {\n width: 18,\n height: 18,\n borderRadius: 2,\n marginTop: 4,\n marginBottom: 4,\n marginLeft: 8,\n marginRight: 4,\n },\n folder: {\n //background: theme.palette.mode === 'dark' ? '#6a6a6a' : '#e2e2e2',\n cursor: 'pointer',\n padding: 0,\n userSelect: 'none'\n },\n folderReorder: {\n opacity: 0.3,\n transitionDuration: '0.5s',\n transitionProperty: 'opacity'\n },\n folderIcon: {\n width: 20,\n height: 20,\n },\n folderIconReorder: {\n paddingTop: 4,\n paddingBottom: 4,\n paddingLeft: 8,\n paddingRight: 4,\n },\n folderIconNoReorder: {\n cursor: 'pointer',\n paddingTop: 4,\n paddingBottom: 4,\n paddingLeft: 8,\n paddingRight: 4,\n },\n script: {\n cursor: 'pointer',\n padding: 0,\n userSelect: 'none'\n },\n scriptReorder: {\n opacity: 1,\n transitionDuration: '0.5s',\n transitionProperty: 'opacity'\n },\n reorder: {\n //padding: '9px 16px 9px 9px',\n },\n expandButton: {\n width: 37,\n height: 37\n },\n selected: SELECTED_STYLE,\n instances: {\n color: 'gray',\n fontSize: 'smaller'\n },\n childrenCount: {\n float: 'right',\n marginRight: 5,\n fontSize: 10,\n opacity: 0.4,\n },\n footer: {\n height: 24,\n },\n footerButtons: {\n '&:hover': {\n backgroundColor: '#dbdbdb'\n },\n color: theme.palette.mode === 'dark' ? '#ffffff' : '#111111',\n cursor: 'pointer',\n marginTop: 1,\n marginRight: 2,\n height: 22,\n width: 22,\n },\n footerButtonsRight: {\n float: 'right'\n },\n\n mainList: {\n '& .js-folder-dragover>div>li>.folder-reorder': {\n background: '#40adff'\n },\n '& .js-folder-dragging .folder-reorder': {\n opacity: 1,\n },\n '& .js-folder-dragging .script-reorder': {\n opacity: 0.3,\n }\n }\n});\n\nconst images = {\n 'Blockly': ImgBlockly,\n 'Javascript/js': ImgJS,\n def: ImgJS,\n 'Rules':ImgRules,\n 'TypeScript/ts': ImgTypeScript,\n};\n\nconst getObjectName = (id, obj, lang) => {\n lang = lang || I18n.getLanguage();\n if (obj && obj.common && obj.common.name) {\n if (typeof obj.common.name === 'object') {\n return (obj.common.name[lang] || obj.common.name.en || id.replace(/^script\\.js./, '')).toString();\n } else {\n return obj.common.name.toString();\n }\n } else {\n return id.replace(/^script\\.js./, '');\n }\n};\n\nconst prepareList = data => {\n const result = [{\n id: ROOT_ID,\n depth: 0,\n index: 0,\n parent: null,\n title: 'root',\n type: 'folder'\n }];\n const ids = Object.keys(data);\n\n /*ids.sort((a, b) => {\n if ((a === 'script.js.common' || a === 'script.js.global') && (b === 'script.js.common' || b === 'script.js.global')) {\n return a > b ? 1 : -1;\n } else if (a === 'script.js.common' || a === 'script.js.global' || b === 'script.js.common' || b === 'script.js.global') {\n return 1;\n } else {\n return a > b ? 1 : -1;\n }\n });*/\n\n for (let i = 0; i < ids.length; i++) {\n const obj = data[ids[i]];\n const parts = ids[i].split('.');\n parts.pop();\n result.push({\n id: ids[i],\n title: getObjectName(ids[i], obj),\n enabled: obj && obj.common && obj.common.enabled,\n depth: parts.length - 1,\n type: obj.type === 'script' ? obj.common.engineType : 'folder',\n parent: parts.length > 1 ? parts.join('.') : null,\n instance: obj.common.engine ? parseInt(obj.common.engine.split('.').pop(), 10) || 0 : null\n });\n }\n\n // Place all folder-less scripts at start\n /*result.sort((a, b) => {\n // without folders => always at start\n if (!a.parent && a.type !== 'folder' && !b.parent && b.type !== 'folder') {\n if (a.id === b.id) {\n return 0;\n } else {\n return a.id > b.id ? 1 : -1;\n }\n } else if (!a.parent && a.type !== 'folder') {\n return -1;\n } else if (!b.parent && b.type !== 'folder') {\n return 1;\n } else {\n // common and global are always at the end\n if ((a.id.startsWith('script.js.common') || a.id.startsWith('script.js.global')) &&\n (b.id.startsWith('script.js.common') || b.id.startsWith('script.js.global'))) {\n if (a.id === b.id) {\n return 0;\n } else {\n return a.id > b.id ? 1 : -1;\n }\n } else if (a.id.startsWith('script.js.common') || a.id.startsWith('script.js.global')) {\n return 1;\n } else if (b.id.startsWith('script.js.common') || b.id.startsWith('script.js.global')) {\n return -1;\n } else {\n if (a.id === b.id) {\n return 0;\n } else {\n return a.id > b.id ? 1 : -1;\n }\n }\n }\n });*/\n\n let modified;\n do {\n modified = false;\n // check if all parents exists\n // eslint-disable-next-line\n result.forEach(item => {\n if (item.parent) {\n const parent = result.find(it => it.id === item.parent);\n if (!parent) {\n const parts = item.parent.split('.');\n parts.pop();\n result.push({\n id: item.parent,\n title: item.parent.split('.').pop(),\n depth: parts.length - 1,\n type: 'folder',\n parent: parts.length > 1 ? parts.join('.') : null\n });\n modified = true;\n }\n }\n });\n } while (modified);\n\n // Folders first\n result.sort((a, b) => {\n const idA = a.id.toLowerCase();\n const idB = b.id.toLowerCase();\n if (a.type === 'folder' && b.type !== 'folder') {\n return -1;\n } else if (b.type === 'folder' && a.type !== 'folder') {\n return 1;\n }\n\n if (idA > idB) {\n return 1;\n } else if (idA < idB) {\n return -1;\n } else {\n return 0;\n }\n });\n\n // Fill all index\n result.forEach((item, i) => item.index = i);\n\n // Fill all parentIndex\n result.forEach(item => {\n if (item.parent) {\n const parent = result.find(it => it.id === item.parent);\n if (parent) {\n item.parentIndex = parent.index;\n }\n }\n });\n\n return result;\n};\n\nexport const Droppable = (props) => {\n const { onDrop} = props;\n\n const [{ isOver, isOverAny}, drop] = useDrop({\n accept: ['script'],\n drop: e => isOver ? onDrop(e) : undefined,\n collect: monitor => ({\n isOver: monitor.isOver({ shallow: true }),\n isOverAny: monitor.isOver(),\n }),\n });\n\n return <div ref={drop} className={Utils.clsx(isOver && 'js-folder-dragover', isOverAny && 'js-folder-dragging')}>\n {props.children}\n </div>;\n};\n\nexport const Draggable = props => {\n const { name } = props;\n const [{ opacity }, drag] = useDrag({\n type: 'script',\n item: () => ({name}),\n collect: monitor => ({opacity: monitor.isDragging() ? 0.3 : 1,}),\n });\n // About transform: https://github.com/react-dnd/react-dnd/issues/832#issuecomment-442071628\n return <div ref={drag} style={{ opacity, transform: 'translate3d(0, 0, 0)' }}>\n {props.children}\n </div>;\n};\n\nclass SideDrawer extends React.Component {\n constructor(props) {\n super(props);\n\n let expanded = window.localStorage ? window.localStorage.getItem('SideMenu.expanded') : '[]';\n try {\n expanded = JSON.parse(expanded) || [];\n } catch (e) {\n expanded = [];\n }\n\n this.inputRef = new React.createRef();\n\n this.state = {\n listItems: prepareList(props.scripts || {}),\n expanded: expanded,\n problems: [],\n reorder: false,\n themeName: this.props.themeName,\n selected: window.localStorage ? window.localStorage.getItem('SideMenu.selected') || null : null,\n creatingScript: false,\n creatingFolder: false,\n copingScript: '',\n renaming: null,\n deleting: null,\n choosingType: null,\n errorText: '',\n instances: props.instances || [],\n menuOpened: false,\n menuAnchorEl: null,\n searchMode: false,\n expertMode: this.props.expertMode,\n searchText: '',\n width: this.props.width || 300,\n typeFilter: window.localStorage ? window.localStorage.getItem('SideMenu.typeFilter') || '' : '', // blockly, js, ts\n statusFilter: window.localStorage ? window.localStorage.getItem('SideMenu.statusFilter') || '' : '',\n runningInstances: this.props.runningInstances || {},\n scriptsHash: props.scriptsHash,\n showAdapterDebug: false,\n };\n\n const newExp = this.ensureSelectedIsVisible();\n if (newExp) {\n this.state.expanded = newExp;\n }\n\n // debounce search process\n this.filterTimer = null;\n\n this.state.isAllZeroInstances = this.getIsAllZeroInstances();\n\n this.problems = null; //cache\n this.problemsTimer = null;\n this.onProblemUpdatedBound = this.onProblemUpdated.bind(this);\n }\n\n readProblems(cb, tasks) {\n if (!tasks) {\n tasks = Object.keys(this.props.scripts);\n }\n if (!tasks || !tasks.length) {\n cb && cb();\n } else {\n const id = tasks.shift();\n if (this.props.scripts[id] &&\n this.props.scripts[id].type === 'script' &&\n this.props.scripts[id].common &&\n this.props.scripts[id].common.enabled &&\n !id.match(/^script\\.js\\.global\\./) // GLOBAL_ID\n ) {\n const instance = this.props.scripts[id].common.engine.split('.').pop();\n const that = this; // sometimes lambda does not work\n const _id = 'javascript.' + instance + '.scriptProblem.' + id.substring(ROOT_ID.length + 1);\n\n this.props.socket.getState(_id, (err, state) => {\n that.onProblemUpdated(_id, state);\n setTimeout(() => that.readProblems(cb, tasks), 0);\n });\n } else {\n setTimeout(() => this.readProblems(cb, tasks), 0);\n }\n }\n }\n\n componentDidMount() {\n this.readProblems(() => {\n this.props.instances.forEach(instance => {\n this.props.socket.subscribeState('javascript.' + instance + '.scriptProblem.*', this.onProblemUpdatedBound);\n });\n });\n }\n\n componentWillUnmount() {\n this.props.instances.forEach(instance => {\n this.props.socket.unsubscribeState('javascript.' + instance + '.scriptProblem.*', this.onProblemUpdatedBound);\n });\n }\n\n onProblemUpdated(id, state) {\n if (!state || !id) return;\n id = ROOT_ID + '.' + id.replace(/^javascript\\.\\d+\\.scriptProblem\\./, '');\n\n if (!this.problems) {\n this.problems = JSON.parse(JSON.stringify(this.state.problems));\n }\n let changed = false;\n\n if (state.val) {\n if (this.problems.indexOf(id) === -1) {\n this.problems.push(id);\n changed = true;\n }\n } else {\n const pos = this.problems.indexOf(id);\n if (pos !== -1) {\n this.problems.splice(pos, 1);\n changed = true;\n }\n }\n\n if (changed && !this.problemsTimer) {\n this.problemsTimer = setTimeout(() => {\n this.problemsTimer = null;\n this.setState({ problems: this.problems });\n this.problems = null;\n }, 300);\n }\n }\n\n static filterListStatic(isSearchEnabled, listItems, searchMode, searchText, objects) {\n listItems = JSON.parse(JSON.stringify(listItems));\n let changed = false;\n let newState = {listItems};\n if (isSearchEnabled !== false && searchMode && searchText) {\n const text = searchText.toLowerCase();\n listItems.forEach(item => {\n const id = item.title.toLowerCase();\n item.filteredPartly = false;\n let found = id.indexOf(text) !== -1;\n if (!found && (objects && objects[item.id] && objects[item.id].common && objects[item.id].common.source)) {\n if (objects[item.id].common.engineType === 'Blockly') {\n const pos = objects[item.id].common.source.lastIndexOf('//');\n found = objects[item.id].common.source.substring(0, pos).toLowerCase().indexOf(text) !== -1;\n } else {\n found = objects[item.id].common.source.toLowerCase().indexOf(text) !== -1;\n }\n }\n if (found) {\n if (item.filtered) {\n item.filtered = false;\n changed = true;\n }\n } else if (!item.filtered) {\n item.filtered = true;\n changed = true;\n }\n });\n\n if (changed) {\n // check that all parents of every non-filtered item are visible\n for (let i = listItems.length - 1; i >= 0; i--) {\n const item = listItems[i];\n if (!item.filtered || item.filteredPartly) {\n let it = item;\n do {\n if (it.parent && listItems[it.parentIndex]) {\n changed = true;\n listItems[it.parentIndex].filteredPartly = true;\n }\n it = it.parent && listItems[it.parentIndex] ? listItems[it.parentIndex] : null;\n } while(it);\n }\n }\n }\n } else {\n listItems.forEach(item => {\n if (item.filtered || item.filteredPartly) {\n item.filtered = false;\n item.filteredPartly = false;\n changed = true;\n }\n });\n if (isSearchEnabled === false) {\n newState.searchText = '';\n newState.searchMode = false;\n changed = true;\n }\n }\n\n return changed ? newState : null;\n }\n\n filterList(isSearchEnabled, cb) {\n const newState = SideDrawer.filterListStatic(\n isSearchEnabled,\n this.state.listItems,\n this.state.searchMode,\n this.state.searchText,\n this.props.scripts\n );\n\n if (newState) {\n this.setState(newState, () => cb && cb());\n } else if (cb) {\n cb();\n }\n }\n\n static ensureSelectedIsVisibleStatic(selected, expanded, listItems) {\n expanded = JSON.parse(JSON.stringify(expanded));\n let changed = false;\n\n // ensure that the item is visible\n let el = typeof selected === 'object' ? selected : listItems.find(it => it.id === selected);\n do {\n // eslint-disable-next-line\n el = el && el.parent && listItems.find(it => it.id === el.parent);\n if (el) {\n if (expanded.indexOf(el.id) === -1) {\n expanded.push(el.id);\n changed = true;\n }\n }\n } while(el);\n return changed && expanded;\n }\n\n ensureSelectedIsVisible(selected, expanded) {\n SideDrawer.ensureSelectedIsVisibleStatic(selected || this.state.selected, expanded || this.state.expanded, this.state.listItems);\n }\n\n static getDerivedStateFromProps(props, state) {\n const newState = {};\n let changed = false;\n if (state.expertMode !== props.expertMode) {\n changed = true;\n newState.expertMode = props.expertMode;\n }\n if (state.scriptsHash !== props.scriptsHash && props.scripts) {\n const listItems = prepareList(props.scripts || {});\n\n newState.listItems = listItems;\n\n if (state.searchText) {\n const nState = SideDrawer.filterListStatic(true, listItems, state.searchMode, state.searchText, props.scripts);\n nState && Object.assign(newState, nState);\n }\n\n const isAllZeroInstances = SideDrawer.getIsAllZeroInstancesStatic(listItems, props.instances || []);\n\n const newExp = SideDrawer.ensureSelectedIsVisibleStatic(state.selected, state.expanded, state.listItems);\n\n newState.isAllZeroInstances = isAllZeroInstances;\n if (newExp) {\n newState.expanded = newExp;\n }\n changed = true;\n }\n\n if (state.width !== props.width) {\n changed = true;\n newState.width = props.width;\n }\n if (state.themeName !== props.themeName) {\n changed = true;\n newState.themeName = props.themeName;\n }\n\n if (props.selectId && state.selected !== props.selectId) {\n const item = state.listItems.find(item => item.id === props.selectId);\n\n if (!state.reorder && item) {\n const expanded = SideDrawer.ensureSelectedIsVisibleStatic(item, state.expanded, state.listItems);\n newState.selected = item.id;\n if (expanded) {\n newState.expanded = expanded;\n }\n changed = true;\n window.localStorage && window.localStorage.setItem('SideMenu.selected', item.id);\n }\n }\n\n if (changed) {\n return newState;\n } else {\n return null;\n }\n }\n\n static getIsAllZeroInstancesStatic(listItems, instances) {\n let isAllZeroInstances = !instances[0] && instances.length <= 1;\n\n if (isAllZeroInstances) {\n listItems.forEach(item => {\n if (item.type !== 'folder' && item.instance !== 0) {\n isAllZeroInstances = false;\n }\n });\n }\n return isAllZeroInstances;\n }\n\n getIsAllZeroInstances(listItems, instances) {\n listItems = listItems || this.state.listItems;\n instances = instances || this.state.instances;\n return SideDrawer.getIsAllZeroInstancesStatic(listItems || this.state.listItems, instances || this.state.instances);\n }\n\n saveExpanded(expanded) {\n window.localStorage.setItem('SideMenu.expanded', JSON.stringify(expanded || this.state.expanded));\n }\n\n showError(errorText) {\n this.setState({ errorText });\n }\n\n onToggle(id, e) {\n e && e.stopPropagation();\n if (id === ROOT_ID) {\n return;\n }\n const expanded = [...this.state.expanded];\n const newState = {expanded};\n const pos = expanded.indexOf(id);\n if (pos !== -1) {\n expanded.splice(pos, 1);\n if (this.state.selected && this.state.selected.startsWith(id + '.')) {\n newState.selected = id;\n window.localStorage && window.localStorage.setItem('SideMenu.selected', id);\n }\n } else {\n expanded.push(id);\n expanded.sort();\n }\n this.setState({ expanded });\n this.saveExpanded(expanded);\n }\n\n renderItemButtonsOnEnd(item, children) {\n if (this.state.reorder) {\n return null;\n }\n if (item.type !== 'folder') {\n let color = item.enabled ? COLOR_RUN : COLOR_PAUSE;\n if (item.enabled && this.state.problems.includes(item.id)) {\n color = COLOR_PROBLEM;\n }\n\n return [\n <IconButton\n className={Utils.clsx(this.props.classes.iconButtons, this.props.debugMode && this.props.classes.iconButtonsDisabled)}\n onClick={e => {\n e.stopPropagation();\n this.props.onEnableDisable && this.props.onEnableDisable(item.id, !item.enabled)\n }}\n title={item.enabled ? I18n.t('Pause script') : I18n.t('Run script')}\n disabled={this.props.debugMode}\n key=\"startStop\"\n style={{ color }}\n size=\"medium\"\n >\n {item.enabled ? <IconPause /> : <IconPlay />}\n </IconButton>,\n this.state.width > NARROW_WIDTH ? <IconButton\n key=\"delete\"\n className={Utils.clsx(this.props.debugMode && this.props.classes.iconButtonsDisabled)}\n title={I18n.t('Delete script')}\n disabled={item.id === GLOBAL_ID || item.id === COMMON_ID || this.props.debugMode}\n onClick={e => this.onDelete(item, e)}\n size=\"medium\"\n >\n <IconDelete/>\n </IconButton> : null,\n <IconButton\n className={Utils.clsx(this.props.debugMode && this.props.classes.iconButtonsDisabled)}\n disabled={this.props.debugMode}\n key=\"openInEdit\"\n title={I18n.t('Edit script or just double click')}\n onClick={e => this.onEdit(item, e)}\n size=\"medium\">\n <IconDoEdit/>\n </IconButton>,\n ];\n } else if (this.state.width > NARROW_WIDTH) {\n if (item.id !== ROOT_ID && item.id !== COMMON_ID && item.id !== GLOBAL_ID && (!children || !children.length)) {\n return (\n <IconButton\n className={Utils.clsx(this.props.debugMode && this.props.classes.iconButtonsDisabled)}\n key=\"delete\"\n title={I18n.t('Delete folder')}\n disabled={item.id === GLOBAL_ID || item.id === COMMON_ID || this.props.debugMode}\n onClick={e => this.onDelete(item, e)}\n size=\"medium\"><IconDelete/></IconButton>\n );\n } else {\n return null;\n }\n }\n }\n\n onDelete(item, e) {\n e && e.stopPropagation();\n return new Promise(resolve => {\n if (typeof item !== 'object') {\n this.setState({ deleting: item });\n } else {\n this.setState({ deleting: item.id });\n }\n });\n }\n\n onEdit(item, e) {\n this.onClick(item, e);\n this.props.onEdit && this.props.onEdit(item.id);\n }\n\n getTextStyle(item) {\n if (!this.state.reorder && item.type !== 'folder') {\n return {\n //width: 130,\n width: `calc(100% - ${this.state.width > NARROW_WIDTH ? 185 : 137}px)`,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n flex: 'none',\n padding: '0 16px 0 0'\n };\n } else {\n return {\n whiteSpace: 'nowrap',\n padding: '0 16px 0 0'\n };\n }\n }\n\n onClick(item, e) {\n e && e.stopPropagation();\n if (!this.state.reorder && item) {\n const expanded = this.ensureSelectedIsVisible(item);\n const newState = {selected: item.id};\n if (expanded) {\n newState.expanded = expanded;\n }\n this.setState(newState);\n window.localStorage && window.localStorage.setItem('SideMenu.selected', item.id);\n }\n }\n\n onDblClick(item, e) {\n e && e.stopPropagation();\n if (this.state.reorder) {\n return;\n }\n if (item.type === 'folder') {\n this.onToggle(item.id);\n } else {\n this.onEdit(item);\n }\n }\n\n isFilteredOut(item) {\n if (item.filtered && !item.filteredPartly) return true;\n\n if (this.state.typeFilter && item.type !== 'folder' && item.type !== this.state.typeFilter) {\n return true;\n }\n\n if (this.state.statusFilter &&\n item.type !== 'folder' &&\n (\n (this.state.statusFilter === 'running' && !item.enabled) ||\n (this.state.statusFilter === 'paused' && item.enabled) ||\n (this.state.statusFilter === 'problems' && (!item.enabled || this.state.problems.indexOf(item.id) === -1)))\n ) {\n return true;\n }\n\n return (item.id === GLOBAL_ID && !this.state.expertMode);\n }\n\n renderListItem(item, children, childrenFiltered) {\n if (item.id === ROOT_ID && !this.state.reorder) {\n return null;\n }\n\n const depthPx = (this.state.reorder ? item.depth : item.depth - 1) * LEVEL_PADDING;\n\n let title = item.title;\n\n if (this.state.searchText) {\n const pos = title.toLowerCase().indexOf(this.state.searchText.toLowerCase());\n if (pos !== -1) {\n title = [\n <span key=\"first\">{title.substring(0, pos)}</span>,\n <span key=\"second\" style={{ color: 'orange' }}>{title.substring(pos, pos + this.state.searchText.length)}</span>,\n <span key=\"third\">{title.substring(pos + this.state.searchText.length)}</span>,\n ];\n }\n }\n\n if (!this.state.isAllZeroInstances && item.type !== 'folder') {\n title = [\n <span key=\"instance\" title={I18n.t('Instance')} className={this.props.classes.instances}>[{item.instance}] </span>,\n <span key=\"title\">{title}</span>\n ];\n }\n const reorder = this.state.reorder && !this.props.debugMode;\n\n const style = Object.assign({\n marginLeft: depthPx,\n cursor: item.type === 'folder' && reorder ? 'default' : 'inherit',\n width: `calc(100% - ${depthPx}px)`\n }, item.id === this.state.selected && !reorder ? SELECTED_STYLE : {});\n\n if (!reorder) {\n style.opacity = item.filteredPartly ? 0.5 : 1;\n }\n\n if (item.id === GLOBAL_ID && item.id !== this.state.selected) {\n style.color = '#00a200';\n }\n\n let isExpanded = item.id === ROOT_ID;\n if (!isExpanded && children) {\n isExpanded = this.state.expanded.includes(item.id);\n }\n\n let iconStyle = {};\n if (item.id === GLOBAL_ID) {\n iconStyle.color = '#356956';\n } else if (item.id === COMMON_ID) {\n iconStyle.color = '#4899e1';\n }\n let iconClass;\n if (item.type === 'folder') {\n iconClass = Utils.clsx(this.props.classes.folderIcon, reorder ? this.props.classes.folderIconReorder : this.props.classes.folderIconNoReorder);\n } else {\n iconClass = Utils.clsx(this.props.classes.scriptIcon, reorder ? this.props.classes.scriptIconReorder : this.props.classes.scriptIconNoReorder);\n }\n\n let childrenCount = null;\n if ((childrenFiltered && childrenFiltered.length) || (children && children.length)) {\n childrenCount = <span className={this.props.classes.childrenCount}>{childrenFiltered && childrenFiltered.length !== children.length ? `${childrenFiltered.length}(${children.length})` : children.length}</span>;\n }\n\n return <ListItem\n key={item.id}\n style={style}\n className={Utils.clsx(\n item.type === 'folder' ? this.props.classes.folder : this.props.classes.script,\n reorder && item.type === 'folder' && 'folder-reorder',\n reorder && item.type !== 'folder' && 'script-reorder',\n reorder && this.props.classes.reorder,\n reorder && item.type !== 'folder' && this.props.classes.scriptReorder,\n reorder && item.type === 'folder' && this.props.classes.folderReorder,\n )}\n onClick={e => this.onClick(item, e)}\n onDoubleClick={e => this.onDblClick(item, e)}\n >\n <ListItemIcon classes={{ root: this.props.classes.listItemIcon }}>{\n item.type === 'folder' ? (\n reorder || isExpanded ?\n <IconFolderOpened className={iconClass} style={iconStyle} onClick={e => !reorder && this.onToggle(item.id, e)} /> :\n <IconFolder className={iconClass} style={iconStyle} onClick={e => !reorder && this.onToggle(item.id, e)} />\n )\n :\n <img className={iconClass} alt={item.type} src={images[item.type] || images.def} />\n }</ListItemIcon>\n <ListItemText\n classes={{ primary: item.id === this.state.selected && !reorder ? this.props.classes.selected : undefined }}\n style={this.getTextStyle(item)} primary={<span>{title}{childrenCount}</span>} />\n <ListItemSecondaryAction>{this.renderItemButtonsOnEnd(item, children)}</ListItemSecondaryAction>\n </ListItem>;\n }\n\n onDragFinish(source, target) {\n let newId = `${target}.${source.split('.').pop()}`;\n if (newId !== source) {\n // If target yet exists => add Copy to\n if (this.state.listItems.find(item => item.id === newId)) {\n newId += `_${I18n.t('copy')}`;\n }\n\n this.props.onRename && this.props.onRename(source, newId);\n }\n return undefined;\n }\n\n renderOneItem(items, item /* , dragging */) {\n let childrenFiltered = (this.state.statusFilter || this.state.typeFilter) && items.filter(i => i.parent === item.id ? !this.isFilteredOut(i) : false);\n let children = items.filter(i => i.parent === item.id);\n\n if (this.isFilteredOut(item)) {\n return;\n }\n\n if (item.type === 'folder' && (this.state.statusFilter || this.state.typeFilter) && !childrenFiltered.length) {\n return;\n }\n const reorder = this.state.reorder && !this.props.debugMode;\n\n const element = this.renderListItem(item, children, childrenFiltered);\n const result = [];\n let reactChildren;\n if (children && (reorder || this.state.expanded.includes(item.id) || item.id === ROOT_ID)) {\n reactChildren = children.map(it => this.renderOneItem(items, it));\n }\n\n if (reorder) {\n if (item.type === 'folder') {\n result.push(<Droppable key={`droppable_${item.id}`} onDrop={e => this.onDragFinish(e.name, item.id)}>\n <Draggable key={`draggable_${item.id}`} name={item.id}>{element}</Draggable>\n {reactChildren || null}\n </Droppable>);\n } else {\n result.push(<Draggable key={`draggable_${item.id}`} name={item.id}>\n {element}\n {reactChildren || null}\n </Draggable>);\n }\n } else {\n result.push(element);\n reactChildren && reactChildren.forEach(e => result.push(e));\n }\n\n return result;\n }\n\n renderAllItems(items) {\n const result = items\n .filter(item => !item.parent)\n .map(item =>\n this.renderOneItem(items, item));\n\n return <List\n dense\n disablePadding\n className={this.props.classes.mainList}\n >\n {result}\n </List>;\n }\n\n onAddNew(e) {\n e && e.stopPropagation();\n let item = this.state.listItems.find(i => i.id === this.state.selected);\n let parent = ROOT_ID;\n while (item && item.type !== 'folder') {\n item = this.state.listItems[item.parentIndex];\n }\n if (item) {\n parent = item.id;\n }\n\n this.parent = parent;\n this.setState({ choosingType: true });\n }\n\n onCopy(e, id) {\n e && e.stopPropagation();\n let item = this.state.listItems.find(i => i.id === id);\n let parent = ROOT_ID;\n while (item && item.type !== 'folder') {\n item = this.state.listItems[item.parentIndex];\n }\n if (item) {\n parent = item.id;\n }\n\n this.parent = parent;\n this.setState({ copingScript: id });\n }\n\n onAddNewFolder(e) {\n e && e.stopPropagation();\n let item = this.state.listItems.find(i => i.id === this.state.selected);\n let parent = ROOT_ID;\n while (item && item.type !== 'folder') {\n item = this.state.listItems[item.parentIndex];\n }\n if (item) {\n parent = item.id;\n }\n\n this.parent = parent;\n this.setState({ creatingFolder: true });\n }\n\n onRename(e) {\n e && e.stopPropagation();\n this.setState({ renaming: this.state.selected });\n }\n\n getUniqueName(copyId) {\n let i = 1;\n let word = `${I18n.t('Script')} `;\n if (copyId) {\n let name = getObjectName(copyId, this.props.scripts[copyId]);\n const m = name.match(/\\d+$/);\n if (m) {\n word = name.replace(/\\d+$/, '');\n i = parseInt(m[0], 10) + 1;\n } else {\n word = name;\n }\n }\n\n // eslint-disable-next-line\n while (this.state.listItems.find(it => it.id === `${this.parent}.${word.replace(/\\.\\s/g, '_')}${i}`)) {\n i++;\n }\n /*ignore jslint end*/\n return word + i;\n }\n\n getUniqueFolderName() {\n let i = 1;\n // eslint-disable-next-line\n while (this.state.listItems.find(it => it.id === `${this.parent}.${I18n.t('Folder')}_${i}`)) {\n i++;\n }\n return `${I18n.t('Folder')} ${i}`;\n }\n\n onCloseMenu(cb) {\n this.setState({ menuOpened: false, menuAnchorEl: null, menuAnchorFilterEl: null }, cb);\n }\n\n getFilterBadge() {\n return [\n this.state.statusFilter === true && <IconPlay className={this.props.classes.filterIcon} style={{ color: COLOR_RUN }}/>,\n this.state.statusFilter === false && <IconPause className={this.props.classes.filterIcon} style={{ color: COLOR_PAUSE }}/>,\n this.state.typeFilter === 'Blockly' && 'Bl',\n this.state.typeFilter === 'Javascript/js' && 'JS',\n this.state.typeFilter === 'TypeScript/ts' && 'TS',\n ];\n }\n\n getMainMenu(children, selectedItem) {\n return <Menu\n key=\"menu\"\n id=\"long-menu\"\n anchorEl={this.state.menuAnchorEl}\n open={this.state.menuOpened}\n onClose={() => this.setState({ menuOpened: false, menuAnchorEl: null })}\n PaperProps={{\n style: {\n maxHeight: MENU_ITEM_HEIGHT * 7.5,\n // width: 200,\n },\n }}\n >\n {this.state.width <= NARROW_WIDTH ? <MenuItem\n key=\"delete\"\n disabled={this.props.debugMode || !this.state.selected || this.state.selected === GLOBAL_ID || this.state.selected === COMMON_ID || (children && children.length)}\n onClick={event => {\n event.stopPropagation();\n event.preventDefault();\n if (this.state.listItems.find(item => item.parent === this.state.selected)) {\n this.showError(I18n.t('Cannot delete non empty item!'));\n return;\n }\n\n this.setState({ menuOpened: false, menuAnchorEl: null }, () =>\n this.onDelete(this.state.selected).then(() => {}));\n }}><IconDelete className={this.props.classes.iconDropdownMenu} style={{ color: 'red' }}/>{I18n.t('Delete')}\n </MenuItem> : null}\n <MenuItem\n key=\"expertMode\"\n disabled={this.props.debugMode}\n selected={this.state.expertMode}\n onClick={event => {\n event.stopPropagation();\n event.preventDefault();\n this.onCloseMenu(() =>\n this.props.onExpertModeChange && this.props.onExpertModeChange(!this.state.expertMode));\n }}>\n <IconExpert className={this.props.classes.iconDropdownMenu} style={{ color: this.state.expertMode ? 'orange' : 'inherit' }}/>{I18n.t('Expert mode')}\n </MenuItem>\n {this.props.onExport && <MenuItem\n key=\"exportAll\"\n onClick={event => {\n event.stopPropagation();\n event.preventDefault();\n this.onCloseMenu(() => this.props.onExport());\n }}>\n <IconExport className={this.props.classes.iconDropdownMenu} />{I18n.t('Export all scripts')}\n </MenuItem>}\n {this.props.onImport && <MenuItem\n disabled={this.props.debugMode}\n key=\"import\"\n onClick={event => {\n event.stopPropagation();\n event.preventDefault();\n this.onCloseMenu(() => this.props.onImport());\n }}>\n <IconImport className={this.props.classes.iconDropdownMenu} />{I18n.t('Import scripts')}\n </MenuItem>}\n {this.props.onThemeChange && <MenuItem\n key=\"dark\"\n onClick={() =>\n this.onCloseMenu(() => {\n // TODO: use Utils.toggleTheme(themeName)\n // newThemeName = Utils.toggleTheme(themeName);\n const newThemeName = this.state.themeName === 'dark' ? 'blue' :\n this.state.themeName === 'blue' ? 'colored' : this.state.themeName === 'colored' ? 'light' :\n this.state.themeName === 'light' ? 'dark' : 'colored';\n this.props.onThemeChange(newThemeName);\n })}>\n <IconDark className={this.props.classes.iconDropdownMenu} />{I18n.t('Change theme (actual \"%s\")', this.state.themeName)}\n </MenuItem>}\n {this.props.onAddNew && <MenuItem key=\"copy\"\n disabled={!this.state.selected || !selectedItem || selectedItem.type === 'folder'}\n onClick={event => {\n const selected = this.state.selected;\n this.onCloseMenu(() => this.onCopy(event, selected))\n }}>\n <IconCopy className={this.props.classes.iconDropdownMenu} />{I18n.t('Copy script')}\n </MenuItem>}\n {this.state.expertMode && <MenuItem\n disabled={this.props.debugMode}\n key=\"debugInstance\"\n onClick={event => {\n event.stopPropagation();\n event.preventDefault();\n this.onCloseMenu(() =>\n this.setState({ showAdapterDebug: true }));\n }}>\n <IconDebug className={this.props.classes.iconDropdownMenu} />{I18n.t('Debug instance')}\n </MenuItem>}\n </Menu>;\n }\n\n // render menu and toolbar\n getToolbarButtons() {\n const result = [];\n const classes = this.props.classes;\n const reorder = this.state.reorder && !this.props.debugMode;\n if (this.state.searchMode && !this.props.debugMode) {\n result.push(<Input\n key=\"searchInput\"\n value={this.state.searchText}\n className={classes.toolbarSearch}\n ref={this.inputRef}\n autoFocus\n placeholder={I18n.t('Search...')}\n onChange={e => {\n this.setState({ searchText: e.target.value });\n this.filterTimer && clearTimeout(this.filterTimer);\n this.filterTimer = setTimeout(() => {\n this.filterTimer = null;\n this.filterList(true);\n this.props.onSearch && this.props.onSearch(this.state.searchText);\n }, 400);\n }}\n />);\n\n result.push(<IconButton\n key=\"disableSearch\"\n className={classes.toolbarButtons}\n style={{ float: 'right' }}\n title={I18n.t('End search mode')}\n onClick={e => {\n e.stopPropagation();\n this.filterList(false, () => this.props.onSearch && this.props.onSearch(this.state.searchText));\n }}\n size=\"medium\"><IconClose /></IconButton>);\n\n this.state.searchText && result.push(<IconButton\n key=\"cleanSearch\"\n mini=\"true\"\n title={I18n.t('Clear search input')}\n className={classes.toolbarButtons}\n style={{ marginTop: 7, float: 'right' }}\n onClick={e => {\n e.stopPropagation();\n this.setState({ searchText: '' }, () => {\n this.filterList(true);\n this.props.onSearch && this.props.onSearch(this.state.searchText);\n });\n }}\n size=\"medium\"><IconClear fontSize=\"small\"/></IconButton>);\n } else {\n if (!reorder) {\n // Open Menu\n result.push(<IconButton\n key=\"menuButton\"\n aria-label=\"More\"\n aria-owns={this.state.menuOpened ? 'long-menu' : undefined}\n title={I18n.t('Menu')}\n aria-haspopup=\"true\"\n onClick={event => {\n event.stopPropagation();\n event.preventDefault();\n this.setState({ menuOpened: true, menuAnchorEl: event.currentTarget });\n }}\n size=\"medium\">\n {/*<Badge className={classes.margin} badgeContent={this.getFilterBadge()}>*/}\n <IconMore />\n {/*</Badge>*/}\n </IconButton>);\n\n const selectedItem = this.state.listItems.find(it => it.id === this.state.selected);\n let children;\n if (selectedItem && this.state.width <= NARROW_WIDTH && selectedItem.type === 'folder') {\n children = this.state.listItems.filter(i => i.parent === this.state.selected);\n }\n\n // Menu\n result.push(this.getMainMenu(children, selectedItem));\n\n // New Script\n result.push(<IconButton\n disabled={this.props.debugMode}\n key=\"new-script\"\n title={I18n.t('Create new script')}\n className={Utils.clsx(classes.toolbarButtons, this.props.debugMode && classes.iconButtonsDisabled)}\n style={{ color: reorder ? 'red' : 'inherit' }}\n onClick={e => this.onAddNew(e)}\n size=\"medium\"><IconAdd/></IconButton>);\n\n // New Folder\n result.push(<IconButton\n disabled={this.props.debugMode}\n key=\"new-folder\"\n title={I18n.t('Create new folder')}\n className={Utils.clsx(classes.toolbarButtons, this.props.debugMode && classes.iconButtonsDisabled)}\n style={{ color: reorder ? 'red' : 'inherit' }}\n onClick={() => this.onAddNewFolder()}\n size=\"medium\"><IconAddFolder/></IconButton>);\n }\n\n // Search\n result.push(<IconButton\n key=\"search\"\n disabled={reorder || this.props.debugMode}\n className={Utils.clsx(classes.toolbarButtons, this.props.debugMode && classes.iconButtonsDisabled)}\n title={I18n.t('Search in scripts')}\n style={{ float: 'right', opacity: this.props.debugMode ? 0.5 : (reorder ? 0 : 1) }}\n onClick={e => {\n e.stopPropagation();\n this.setState({ searchMode: true });\n }}\n size=\"medium\"><IconFind/></IconButton>);\n\n // Reorder button\n result.push(<IconButton\n disabled={this.props.debugMode}\n key=\"reorder\"\n title={I18n.t('Reorder scripts in folders')}\n className={Utils.clsx(classes.toolbarButtons, this.props.debugMode && classes.iconButtonsDisabled)}\n style={{ color: reorder ? 'red' : 'inherit', float: 'right' }}\n onClick={e => {\n e.stopPropagation();\n this.setState({ reorder: !this.state.reorder });\n }}\n size=\"medium\"><IconReorder/></IconButton>);\n\n if (!reorder && this.state.selected && this.state.selected !== GLOBAL_ID && this.state.selected !== COMMON_ID) {\n // Rename\n result.push(<IconButton\n className={Utils.clsx(classes.toolbarButtons, this.props.debugMode && classes.iconButtonsDisabled)}\n disabled={this.props.debugMode}\n title={I18n.t('Rename')}\n key=\"rename\"\n onClick={e => this.onRename(e)}\n size=\"medium\"><IconEdit/></IconButton>);\n\n // const selectedItem = this.state.listItems.find(i => i.id === this.state.selected);\n // if (selectedItem && selectedItem.type !== 'folder') {\n // // Restart\n // result.push((<IconButton className={classes.toolbarButtons}\n // key=\"restart\"\n // onClick={e => {\n // e.stopPropagation();\n // this.props.onEnableDisable && this.props.onEnableDisable();\n // }}\n // ><IconRestart/></IconButton>));\n // }\n }\n\n }\n return result;\n }\n\n getFolders() {\n const folders = [{id: ROOT_ID, name: I18n.t('Root folder')}];\n this.state.listItems.forEach(item =>\n item.type === 'folder' && folders.push({id: item.id, name: item.title})\n );\n return folders;\n }\n\n onCollapseAll() {\n this.setState({ expanded: [] });\n this.saveExpanded([]);\n }\n\n onExpandAll() {\n const expanded = [];\n this.state.listItems.forEach(item =>\n this.state.listItems.find(it => it.parent === item.id) && expanded.push(item.id));\n this.setState({ expanded });\n this.saveExpanded(expanded);\n }\n\n getBottomButtons() {\n if (this.state.reorder || this.props.debugMode) {\n return null;\n }\n return [\n <IconPause\n key=\"filterByRunning\"\n className={this.props.classes.footerButtons}\n style={{ color: COLOR_RUN, opacity: this.state.statusFilter === 'running' ? 1 : 0.3, background: this.state.statusFilter === 'running' ? 'gray' : 'inherit' }}\n title={I18n.t('Show only running scripts')}\n onClick={event => {\n event.stopPropagation();\n event.preventDefault();\n const statusFilter = this.state.statusFilter === 'running' ? '' : 'running';\n window.localStorage && window.localStorage.setItem('SideMenu.statusFilter', statusFilter);\n this.setState({ statusFilter });\n }}\n />,\n\n <IconPlay\n key=\"filterByPaused\"\n title={I18n.t('Show only paused scripts')}\n className={this.props.classes.footerButtons}\n style={{ color: COLOR_PAUSE, opacity: this.state.statusFilter === 'paused' ? 1 : 0.3, background: this.state.statusFilter === 'paused' ? 'gray' : 'inherit' }}\n onClick={() => {\n const statusFilter = this.state.statusFilter === 'paused' ? '' : 'paused';\n window.localStorage && window.localStorage.setItem('SideMenu.statusFilter', statusFilter);\n this.setState({ statusFilter });\n }}\n />,\n <IconPause\n key=\"filterByProblem\"\n title={I18n.t('Show only scripts with problems')}\n className={this.props.classes.footerButtons}\n style={{ color: COLOR_PROBLEM, opacity: this.state.statusFilter === 'problems' ? 1 : 0.3, background: this.state.statusFilter === 'problems' ? 'gray' : 'inherit' }}\n onClick={() => {\n const statusFilter = this.state.statusFilter === 'problems' ? '' : 'problems';\n window.localStorage && window.localStorage.setItem('SideMenu.statusFilter', statusFilter);\n this.setState({ statusFilter });\n }}\n />,\n <img\n key=\"filterBlockly\"\n className={this.props.classes.footerButtons}\n alt=\"Blockly\"\n style={{ opacity: this.state.typeFilter === 'Blockly' ? 1 : 0.3, background: this.state.typeFilter === 'Blockly' ? 'gray' : 'inherit' }}\n src={images.Blockly || images.def}\n onClick={() => {\n const typeFilter = this.state.typeFilter === 'Blockly' ? '' : 'Blockly';\n window.localStorage && window.localStorage.setItem('SideMenu.typeFilter', typeFilter);\n this.setState({ typeFilter });\n }}\n />,\n <img\n key=\"filterJS\"\n className={this.props.classes.footerButtons}\n alt=\"Javascript\"\n style={{ opacity: this.state.typeFilter === 'Javascript/js' ? 1 : 0.3, background: this.state.typeFilter === 'Javascript/js' ? 'gray' : 'inherit' }}\n src={images['Javascript/js'] || images.def}\n onClick={() => {\n const typeFilter = this.state.typeFilter === 'Javascript/js' ? '' : 'Javascript/js';\n window.localStorage && window.localStorage.setItem('SideMenu.typeFilter', typeFilter);\n this.setState({ typeFilter });\n }}\n />,\n <img\n key=\"filterTS\"\n className={this.props.classes.footerButtons}\n alt=\"TypeScript\"\n style={{ opacity: this.state.typeFilter === 'TypeScript/ts' ? 1 : 0.3, background: this.state.typeFilter === 'TypeScript/ts' ? 'gray' : 'inherit' }}\n src={images['TypeScript/ts'] || images.def}\n onClick={() => {\n const typeFilter = this.state.typeFilter === 'TypeScript/ts' ? '' : 'TypeScript/ts';\n window.localStorage && window.localStorage.setItem('SideMenu.typeFilter', typeFilter);\n this.setState({ typeFilter });\n }}\n />,\n <img\n key=\"filterRules\"\n className={this.props.classes.footerButtons}\n alt=\"Rules\"\n style={{ opacity: this.state.typeFilter === 'Rules' ? 1 : 0.3, background: this.state.typeFilter === 'Rules' ? 'gray' : 'inherit' }}\n src={images['Rules'] || images.def}\n onClick={event => {\n const typeFilter = this.state.typeFilter === 'Rules' ? '' : 'Rules';\n window.localStorage && window.localStorage.setItem('SideMenu.typeFilter', typeFilter);\n this.setState({ typeFilter });\n }}\n />,\n <IconExpandAll key=\"expandAll\" className={`${this.props.classes.footerButtons} ${this.props.classes.footerButtonsRight}`} title={I18n.t('Expand all')} onClick={() => this.onExpandAll()} />,\n this.state.expanded.length ? <IconCollapseAll key=\"collapseAll\" className={`${this.props.classes.footerButtons} ${this.props.classes.footerButtonsRight}`} title={I18n.t('Collapse all')} onClick={() => this.onCollapseAll()} /> : null,\n ];\n }\n\n getAdapterDebugDialog() {\n if (this.state.showAdapterDebug) {\n return <DialogAdapterDebug\n socket={this.props.socket}\n onClose={() => this.setState({ showAdapterDebug: false })}\n onDebug={(instance, adapter) => this.setState({ showAdapterDebug: false }, () => this.props.onDebugInstance({instance, adapter}))}\n />;\n }\n }\n\n render() {\n const {classes} = this.props;\n\n const renamingItem = this.state.renaming && this.state.listItems.find(i => i.id === this.state.renaming);\n const copingItem = this.state.copingScript && this.props.scripts[this.state.copingScript];\n\n return [\n <Drawer\n key=\"drawer\"\n variant=\"permanent\"\n className={classes.menu}\n classes={{ paper: classes.drawerPaper }}\n anchor='left'\n onClick={() => this.onClick({id: ''})}\n >\n <div className={classes.toolbar}>\n {this.getToolbarButtons()}\n </div>\n\n <Divider/>\n\n <DragDropContext backend={HTML5Backend}>\n <div className={classes.innerMenu}>\n {this.renderAllItems(this.state.listItems)}\n </div>\n </DragDropContext>\n\n <Divider/>\n\n <div className={classes.footer}>{this.getBottomButtons()}</div>\n </Drawer>,\n\n renamingItem ? <DialogRename\n key=\"dialog-rename\"\n name={renamingItem.title}\n title={I18n.t('Rename')}\n id={this.state.renaming}\n folder={renamingItem.type === 'folder'}\n instance={renamingItem.instance}\n instances={this.props.instances}\n onClose={() => this.setState({ renaming: false })}\n onRename={(oldId, newName, newId, newInstance) => this.props.onRename && this.props.onRename(oldId, newName, newId, newInstance)}\n /> : null,\n\n this.state.deleting ? <DialogDelete\n key=\"dialog-delete\"\n name={this.state.listItems.find(i => i.id === this.state.deleting).title}\n id={this.state.deleting}\n onClose={() => this.setState({ deleting: false })}\n onDelete={id => this.props.onDelete && this.props.onDelete(id)}\n /> : null,\n\n this.state.choosingType ? <DialogAddNewScript\n key=\"dialog-script-type\"\n onClose={type => {\n this.setState({ choosingType: false });\n type && this.setState({ creatingScript: type })\n }}\n /> : null,\n\n this.state.creatingScript ? <DialogNew\n key=\"dialog-new-script\"\n onClose={() => this.setState({ creatingScript: false })}\n title={I18n.t('Create new script')}\n name={this.getUniqueName()}\n parents={this.getFolders()}\n folder={false}\n existingItems={this.state.listItems.map(item => item.id)}\n instance={this.props.instances[0] || 0}\n instances={this.props.instances}\n type={this.state.creatingScript}\n parent={this.parent}\n onAdd={(id, name, instance, type) =>\n this.props.onAddNew && this.props.onAddNew(id, name, false, instance, type)}\n /> : null,\n\n this.state.copingScript ? <DialogNew\n key=\"dialog-copy-script\"\n onClose={() => this.setState({ copingScript: '' })}\n title={I18n.t('Copy script')}\n name={this.getUniqueName(this.state.copingScript)}\n parents={this.getFolders()}\n folder={false}\n instance={parseInt((copingItem && copingItem.common && copingItem.common.engine && copingItem.common.engine.split('.').pop()) || 0, 10)}\n instances={this.props.instances}\n type={(copingItem && copingItem.common && copingItem.common.engineType) || 'Javascript/js'}\n parent={this.parent}\n onAdd={(id, name, instance, type) => {\n const copingItem = this.state.copingScript && this.props.scripts[this.state.copingScript];\n if (copingItem && copingItem.common) {\n // disable script by coping\n copingItem.common.enabled = false;\n }\n this.props.onAddNew && this.props.onAddNew(id, name, false, instance, type, copingItem && copingItem.common && copingItem.common.source);\n }}\n /> : null,\n\n this.state.creatingFolder ? <DialogNew\n key=\"dialog-new-folder\"\n onClose={() => this.setState({ creatingFolder: false })}\n title={I18n.t('Create new folder')}\n parents={this.getFolders()}\n name={this.getUniqueFolderName()}\n parent={this.parent}\n onAdd={(id, name) =>\n this.props.onAddNew && this.props.onAddNew(id, name, true)}\n /> : null,\n\n this.state.errorText ? <DialogError onClose={() => this.setState({ errorText: '' })} text={this.state.errorText} /> : null,\n\n this.getAdapterDebugDialog(),\n ];\n }\n}\n\nSideDrawer.propTypes = {\n classes: PropTypes.object.isRequired,\n instances: PropTypes.array.isRequired,\n scripts: PropTypes.object.isRequired,\n scriptsHash: PropTypes.number,\n onEdit: PropTypes.func,\n selectId: PropTypes.string,\n expertMode: PropTypes.bool,\n onExpertModeChange: PropTypes.func,\n onEnableDisable: PropTypes.func,\n runningInstances: PropTypes.object,\n socket: PropTypes.object,\n themeName: PropTypes.string,\n themeType: PropTypes.string,\n onSelect: PropTypes.func,\n onAddNew: PropTypes.func,\n onRename: PropTypes.func,\n onDelete: PropTypes.func,\n onImport: PropTypes.func,\n onExport: PropTypes.func,\n onSearch: PropTypes.func,\n onThemeChange: PropTypes.func,\n onDebugInstance: PropTypes.func,\n width: PropTypes.number,\n debugMode: PropTypes.bool,\n};\n\nexport default withStyles(styles)(SideDrawer);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport withStyles from '@mui/styles/withStyles';\n\nimport IconButton from '@mui/material/IconButton';\n\nimport { MdDeleteForever as IconDelete } from 'react-icons/md';\nimport { MdVerticalAlignBottom as IconBottom } from 'react-icons/md';\nimport { MdContentCopy as IconCopy } from 'react-icons/md';\nimport { MdVisibilityOff as IconHide } from 'react-icons/md';\n\nimport { I18n, Utils } from '@iobroker/adapter-react-v5';\n\n// replace later with MdHorizontalSplit and MdVerticalSplit\nconst IconVerticalSplit = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgAQMAAADYVuV7AAAABlBMVEUAAAAzMzPI8eYgAAAAAXRSTlMAQObYZgAAACFJREFUeAFjAIJRwP////8PYIKWHCigNQdKj/pn1D+jAABTG16wVQqVpQAAAABJRU5ErkJggg==';\nconst IconHorizontalSplit = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgAQMAAADYVuV7AAAABlBMVEUAAAAzMzPI8eYgAAAAAXRSTlMAQObYZgAAABtJREFUeAFjAIJRwP8fCj7QkENn/4z6Z5QzCgBjbWaoyx1PqQAAAABJRU5ErkJggg==';\n\nfunction getTimeString(d) {\n let text;\n let i = d.getHours();\n if (i < 10) {\n i = `0${i.toString()}`;\n }\n text = `${i}:`;\n\n i = d.getMinutes();\n if (i < 10) {\n i = `0${i.toString()}`;\n }\n text += `${i}:`;\n i = d.getSeconds();\n if (i < 10) {\n i = `0${i.toString()}`;\n }\n text += `${i}.`;\n i = d.getMilliseconds();\n if (i < 10) {\n i = `00${i.toString()}`;\n } else if (i < 100) {\n i = `0${i.toString()}`;\n }\n text += i;\n return text;\n}\nconst TOOLBOX_WIDTH = 34;\n\nconst styles = theme => ({\n logBox: {\n width: '100%',\n height: '100%',\n position: 'relative',\n overflow: 'hidden',\n },\n logBoxInner: {\n display: 'inline-block',\n color: theme.palette.mode === 'dark' ? 'white' : 'black',\n width: `calc(100% - ${TOOLBOX_WIDTH}px)`,\n height: '100%',\n //marginLeft: TOOLBOX_WIDTH,\n overflow: 'auto',\n position: 'relative',\n verticalAlign: 'top',\n },\n info: {\n background: theme.palette.mode === 'dark' ? 'darkgrey' : 'lightgrey',\n color: theme.palette.mode === 'dark' ? 'black' : 'black',\n },\n error: {\n background: '#FF0000',\n color: theme.palette.mode === 'dark' ? 'black' : 'white',\n },\n warn: {\n background: '#FF8000',\n color: theme.palette.mode === 'dark' ? 'black' : 'white',\n },\n debug: {\n background: 'gray',\n opacity: 0.8,\n color: theme.palette.mode === 'dark' ? 'black' : 'white',\n },\n silly: {\n background: 'gray',\n opacity: 0.6,\n color: theme.palette.mode === 'dark' ? 'black' : 'white',\n },\n table: {\n fontFamily: 'monospace',\n width: '100%',\n\n },\n toolbox: {\n width: TOOLBOX_WIDTH,\n height: '100%',\n boxShadow: '2px 0px 4px -1px rgba(0, 0, 0, 0.2), 4px 0px 5px 0px rgba(0, 0, 0, 0.14), 1px 0px 10px 0px rgba(0, 0, 0, 0.12)',\n display: 'inline-block',\n verticalAlign: 'top',\n overflow: 'hidden',\n },\n trTime: {\n width: 90,\n },\n trSeverity: {\n width: 40,\n fontWeight: 'bold',\n },\n iconButtons: {\n width: 32,\n height: 32,\n padding: 4,\n },\n layoutIcon: {\n width: 24,\n height: 24,\n background: theme.palette.mode === 'dark' ? '#9d9d9d' : undefined,\n borderRadius: theme.palette.mode === 'dark' ? 30 : undefined,\n },\n});\n\nfunction paddingMs(ms) {\n if (ms < 10) {\n return `00${ms}`;\n }\n if (ms < 100) {\n return `0${ms}`;\n }\n return ms;\n}\n\nlet gText = {};\n\nclass Log extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n lines: {},\n goBottom: true,\n selected: null,\n editing: this.props.editing || [],\n };\n this.lastIndex = null;\n this.messagesEnd = React.createRef();\n }\n\n generateLine(message) {\n return <tr key={`tr_${message.ts}_${message.message.substr(-10)}`} className={this.props.classes[message.severity]}>\n <td key=\"tdTime\" className={this.props.classes.trTime}>{getTimeString(new Date(message.ts))}</td>\n <td key=\"tdSeverity\" className={this.props.classes.trSeverity}>{message.severity}</td>\n <td key=\"tdMessage\">{message.message}</td>\n </tr>;\n }\n\n scrollToBottom() {\n this.messagesEnd && this.messagesEnd.current && this.messagesEnd.current.scrollIntoView({ behavior: 'smooth' });\n }\n\n logHandler = message => {\n let allLines = this.state.lines;\n const scripts = this.state.editing.filter(id => message.message.includes(id));\n let selected;\n if (!scripts.length) {\n return;\n } else if (scripts.length === 1) {\n selected = scripts[0];\n } else {\n // try to get the script with the longest common substring\n scripts.sort();\n selected = scripts[scripts.length - 1];\n }\n\n let lines = allLines[selected] || [];\n let text = gText[selected] || [];\n\n lines.push(this.generateLine(message));\n let severity = message.severity;\n if (severity === 'info' || severity === 'warn') {\n severity += ' ';\n }\n const date = new Date(message.ts);\n text.push(`${date.toLocaleString()}.${paddingMs(date.getMilliseconds())}\\t[${severity}]: ${message.message}`);\n if (lines.length > 300) {\n lines.splice(0, lines.length - 300);\n text.splice(0, lines.length - 300);\n }\n gText[selected] = text;\n allLines[selected] = lines;\n\n this.setState({ lines: allLines });\n }\n\n componentDidMount() {\n this.props.socket.registerLogHandler(this.logHandler);\n }\n\n componentWillUnmount() {\n this.props.socket.unregisterLogHandler(this.logHandler);\n }\n\n componentDidUpdate() {\n this.state.goBottom && this.scrollToBottom();\n }\n\n static getDerivedStateFromProps(props, state) {\n let changed = false;\n let newState = {};\n\n if (props.selected !== state.selected) {\n let selected = props.selected;\n let allLines = state.lines;\n allLines[selected] = allLines[selected] || [];\n gText[selected] = gText[selected] || [];\n newState.selected = selected;\n changed = true;\n }\n\n if (JSON.stringify(props.editing) !== JSON.stringify(state.editing)) {\n const editing = JSON.parse(JSON.stringify(props.editing));\n changed = true;\n let allLines = state.lines;\n\n for (const id in gText) {\n if (gText.hasOwnProperty(id)) {\n if (!editing.includes(id)) {\n delete gText[id];\n delete allLines[id];\n }\n }\n }\n\n newState.editing = editing;\n }\n return changed ? newState : null;\n }\n\n onCopy() {\n Utils.copyToClipboard((gText[this.state.selected] || []).join('\\n'));\n }\n\n clearLog() {\n let allLines = this.state.lines;\n if (allLines[this.state.selected]) {\n allLines[this.state.selected] = [];\n }\n if (gText[this.state.selected]) {\n gText[this.state.selected] = [];\n }\n this.setState({ lines: allLines });\n }\n\n renderLogList(lines) {\n if (this.state.selected && lines && lines.length) {\n return <div className={this.props.classes.logBoxInner} key=\"logList\">\n <table key=\"logTable\" className={this.props.classes.table}><tbody>{lines}</tbody></table>\n <div key=\"logScrollPoint\" ref={this.messagesEnd} style={{ float: 'left', clear: 'both' }}/>\n </div>;\n } else {\n return <div key=\"logList\" className={this.props.classes.logBoxInner} style={{ paddingLeft: 10 }}>{I18n.t('Log outputs')}</div>;\n }\n }\n\n render() {\n const lines = this.state.selected && this.state.lines[this.state.selected];\n return <div className={this.props.classes.logBox}>\n <div className={this.props.classes.toolbox} key=\"toolbox\">\n <IconButton\n className={this.props.classes.iconButtons}\n onClick={() => this.setState({ goBottom: !this.state.goBottom })}\n color={this.state.goBottom ? 'secondary' : ''}\n size=\"medium\"><IconBottom /></IconButton>\n {lines && lines.length ? <IconButton\n className={this.props.classes.iconButtons}\n onClick={() => this.clearLog()}\n size=\"medium\"><IconDelete /></IconButton> : null}\n {lines && lines.length ? <IconButton\n className={this.props.classes.iconButtons}\n onClick={() => this.onCopy()}\n size=\"medium\"><IconCopy /></IconButton> : null}\n {this.props.onLayoutChange ? <IconButton\n className={this.props.classes.iconButtons}\n onClick={() => this.props.onLayoutChange()}\n title={I18n.t('Change layout')}\n size=\"medium\"><img className={this.props.classes.layoutIcon} alt=\"split\" src={this.props.verticalLayout ? IconVerticalSplit : IconHorizontalSplit} /></IconButton> : null}\n <IconButton\n className={this.props.classes.iconButtons}\n onClick={() => this.props.onHideLog()}\n title={I18n.t('Hide logs')}\n size=\"medium\"><IconHide /></IconButton>\n </div>\n {this.renderLogList(lines)}\n </div>;\n }\n}\n\nLog.propTypes = {\n selected: PropTypes.string,\n socket: PropTypes.object,\n onLayoutChange: PropTypes.func,\n verticalLayout: PropTypes.bool,\n};\n\nexport default withStyles(styles)(Log);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Fab from '@mui/material/Fab';\n\nimport {MdGTranslate as IconNoCheck} from 'react-icons/md';\nimport { I18n } from '@iobroker/adapter-react-v5';\n\nfunction isIdOfGlobalScript(id) {\n return /^script\\.js\\.global\\./.test(id);\n}\nlet index = 0;\nclass ScriptEditor extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n name: 'current',\n isDark: props.isDark || false,\n language: props.language || 'javascript',\n readOnly: props.readOnly || false,\n alive: true,\n check: false,\n searchText: this.props.searchText || '',\n typingsLoaded: false,\n };\n this.runningInstancesStr = JSON.stringify(this.props.runningInstances);\n this.monacoDiv = null; //ref\n this.editor = null;\n this.monaco = window.monaco;\n this.insert = '';\n this.originalCode = props.code || '';\n this.typings = {}; // TypeScript declarations\n this.lastSearch = '';\n }\n\n waitForMonaco(cb) {\n if (!this.monaco || !this.props.runningInstances) {\n this.monaco = window.monaco;\n this.monacoCounter = this.monacoCounter || 0;\n this.monacoCounter++;\n if (!this.monaco && this.monacoCounter < 20) {\n console.log('wait for monaco loaded');\n return setTimeout(() => this.waitForMonaco(cb), 200);\n } else if (this.monacoCounter >= 20) {\n console.error('Cannot load monaco!');\n }\n } else {\n cb && cb();\n }\n }\n\n loadTypings(runningInstances) {\n if (!this.editor) {\n return;\n }\n runningInstances = runningInstances || this.props.runningInstances;\n let scriptAdapterInstance = runningInstances && Object.keys(runningInstances).find(id => runningInstances[id]);\n if (scriptAdapterInstance) {\n this.props.socket.sendTo(scriptAdapterInstance.replace('system.adapter.', ''), 'loadTypings', null)\n .then(result => {\n this.setState({alive: true, check: true, typingsLoaded: true});\n this.setTypeCheck(true);\n if (result.typings) {\n this.typings = result.typings;\n this.setEditorTypings(this.state.name);\n } else {\n console.error(`failed to load typings: ${result.error}`);\n }\n });\n }\n }\n\n componentDidMount() {\n if (!this.monaco || !this.props.runningInstances) {\n this.monaco = window.monaco;\n if (!this.monaco) {\n console.log('wait for monaco loaded');\n return this.waitForMonaco(() => this.componentDidMount());\n }\n }\n if (!this.editor) {\n this.props.onRegisterSelect && this.props.onRegisterSelect(() => this.editor.getModel().getValueInRange(this.editor.getSelection()));\n // For some reason we have to get the original compiler options\n // and assign new properties one by one\n const compilerOptions = this.monaco.languages.typescript.typescriptDefaults['getCompilerOptions']();\n compilerOptions.target = this.monaco.languages.typescript.ScriptTarget.ES2015;\n compilerOptions.allowJs = true;\n compilerOptions.checkJs = this.props.checkJs !== false;\n compilerOptions.noLib = true;\n compilerOptions.lib = [];\n compilerOptions.useUnknownInCatchVariables = false;\n compilerOptions.moduleResolution = this.monaco.languages.typescript.ModuleResolutionKind.NodeJs;\n this.monaco.languages.typescript.typescriptDefaults.setCompilerOptions(compilerOptions);\n\n this.setTypeCheck(false);\n\n // Create the editor instances\n this.editor = this.monaco.editor.create(this.monacoDiv, {\n lineNumbers: 'on',\n scrollBeyondLastLine: false,\n automaticLayout: true,\n glyphMargin: !!this.props.breakpoints,\n });\n\n this.editor.onDidChangeModelContent(e =>\n this.onChange(this.editor.getValue()));\n\n // Load typings for the JS editor\n /** @type {string} */\n this.loadTypings();\n\n this.editor.addCommand(this.monaco.KeyMod.CtrlCmd | this.monaco.KeyCode.KEY_S, () =>\n this.onForceSave());\n\n setTimeout(() => {\n this.highlightText(this.state.searchText);\n this.location = this.props.location;\n this.breakpoints = this.props.breakpoints;\n this.showDecorators();\n });\n }\n const options = {\n selectOnLineNumbers: true,\n scrollBeyondLastLine: false,\n automaticLayout: true,\n readOnly: this.state.readOnly,\n language: this.state.language,\n isDark: this.state.isDark,\n };\n\n this.setEditorOptions(options);\n this.editor.focus();\n this.editor.setValue(this.originalCode);\n if (this.props.onToggleBreakpoint) {\n // add onMouseDown listener to toggle breakpoints\n this.editor.onMouseDown(e => {\n if (e.target.detail && e.target.detail.glyphMarginLeft !== undefined) {\n this.props.onToggleBreakpoint(e.target.position.lineNumber - 1);\n }\n });\n } else {\n // remove onMouseDown listener\n this.editor.onMouseDown(() => { /* nop */ });\n }\n }\n\n /**\n * Sets some options of the code editor\n * @param {object} options The editor options to change\n * @param {Partial<{readOnly: boolean, lineWrap: boolean, language: EditorLanguage, typeCheck: boolean}>} options\n */\n setEditorOptions(options) {\n if (options) {\n if (options.language) {\n this.setEditorLanguage(options.language);\n }\n if (options.readOnly !== undefined) {\n this.editor.updateOptions({readOnly: options.readOnly});\n }\n if (options.lineWrap !== undefined) {\n this.editor.updateOptions({wordWrap: options.lineWrap ? 'on' : 'off'});\n }\n if (options.typeCheck !== undefined) {\n this.setTypeCheck(options.typeCheck);\n }\n if (options.isDark !== undefined) {\n this.monaco.editor.setTheme(options.isDark ? 'vs-dark' : 'vs');\n }\n }\n }\n\n componentWillUnmount() {\n if (this.editor) {\n this.props.onRegisterSelect && this.props.onRegisterSelect(null);\n this.editor.dispose();\n this.editor = null;\n }\n }\n\n /** @typedef {\"javascript\" | \"typescript\" | \"coffeescript\"} EditorLanguage */\n\n /**\n * Sets the language of the code editor\n * @param {EditorLanguage} language\n */\n setEditorLanguage(language) {\n // we need to recreate the model when changing languages,\n // so remember its settings\n const model = this.editor.getModel();\n const code = model.getValue();\n const uri = model.uri.path;\n\n const filenameWithoutExtension =\n typeof uri === 'string' && uri.includes('.')\n ? uri.substr(0, uri.lastIndexOf('.'))\n : 'index';\n\n const extension =\n language === 'javascript' ? 'js'\n : (language === 'typescript' ? 'ts' : language);\n\n // get rid of the original model\n model.dispose();\n\n // Both JS and TS need the model to work in TypeScript as the script type\n // is inferred from the file extension\n const newLanguage = (language === 'javascript' || language === 'typescript') ? 'typescript' : language;\n\n const newModel = this.monaco.editor.createModel(\n code,\n newLanguage,\n this.monaco.Uri.from({path: `${filenameWithoutExtension}${index++}.${extension}`})\n );\n\n this.editor.setModel(newModel);\n }\n\n /**\n * Enables or disables the type checking in the editor\n * @param {boolean} enabled - Whether type checking is enabled or not\n */\n setTypeCheck(enabled) {\n const options = {\n noSemanticValidation: !this.state.alive || !enabled, // toggle the type checking\n noSyntaxValidation: !this.state.alive // always check the syntax\n };\n this.monaco.languages.typescript.typescriptDefaults.setDiagnosticsOptions(options);\n }\n\n /**\n * @param {string} [currentScriptName] The name of the current script\n */\n setEditorTypings(currentScriptName = '') {\n const isGlobalScript = isIdOfGlobalScript(currentScriptName);\n // The filename of the declarations this script can see if it is a global script\n const partialDeclarationsPath = `${currentScriptName}.d.ts`;\n const wantedTypings = [];\n for (const path of Object.keys(this.typings)) {\n // global scripts don't get to see all other global scripts\n // but only a part of them\n if (isGlobalScript) {\n if (path === 'global.d.ts') {\n continue;\n }\n if (path.startsWith('script.js.global') && path !== partialDeclarationsPath) {\n continue;\n }\n }\n wantedTypings.push({\n filePath: path,\n content: this.typings[path],\n });\n }\n\n // TODO BF: check https://microsoft.github.io/monaco-editor/playground.html#extending-language-services-semantic-tokens-provider-example\n // to support 0.21.0\n\n if (this.monaco && this.monaco.languages.typescript.typescriptDefaults.setExtraLibs) {\n this.monaco.languages.typescript.typescriptDefaults.setExtraLibs(wantedTypings);\n } else if (this.monaco && this.monaco.languages.typescript.typescriptDefaults.addExtraLib) {\n const existingLibs = this.monaco.languages.typescript.typescriptDefaults.getExtraLibs();\n wantedTypings.forEach(lib => {\n if (!existingLibs[lib.filePath]) {\n this.monaco.languages.typescript.typescriptDefaults.addExtraLib(lib, lib.filePath);\n }\n });\n }\n }\n\n /**\n * Inserts some text into the given editor\n * @param {string} text The text to add\n */\n insertTextIntoEditor(text) {\n const selection = this.editor.getSelection();\n const range = new this.monaco.Range(\n selection.startLineNumber,\n selection.startColumn,\n selection.endLineNumber,\n selection.endColumn,\n );\n this.editor.executeEdits('', [{ range: range, text: text, forceMoveMarkers: true }]);\n this.editor.focus();\n }\n\n highlightText(text) {\n let range = text && this.editor.getModel().findMatches(text);\n if (range && range.length) {\n range.forEach(r => this.editor.setSelection(r.range));\n this.editor.revealLine(range[0].range.startLineNumber);\n } else if (this.editor) {\n const row = this.editor.getPosition().lineNumber;\n const col = this.editor.getPosition().column;\n this.editor.setSelection(new this.monaco.Range(row, col, row, col));\n }\n }\n\n showDecorators() {\n this.decorations = this.decorations || [];\n const decorations = [];\n if (this.location) {\n decorations.push({\n range: new this.monaco.Range(this.location.lineNumber + 1, this.location.columnNumber + 1, this.location.lineNumber + 1, 1000),\n options: {\n isWholeLine: false,\n className: this.props.isDark ? 'monacoCurrentLineDark' : 'monacoCurrentLine',\n }\n });\n decorations.push({\n range: new this.monaco.Range(this.location.lineNumber + 1, 0, this.location.lineNumber + 1, 0),\n options: {\n isWholeLine: true,\n className: this.props.isDark ? 'monacoCurrentFullLineDark' : 'monacoCurrentFullLine',\n }\n });\n }\n\n if (this.breakpoints) {\n this.breakpoints.forEach(bp => {\n decorations.push({\n range: new this.monaco.Range(bp.location.lineNumber + 1, 0, bp.location.lineNumber + 1, 100),\n options: {\n isWholeLine: true,\n glyphMarginClassName: this.props.isDark ? 'monacoBreakPointDark' : 'monacoBreakPoint',\n }\n });\n });\n }\n this.editor && (this.decorations =\n this.editor.deltaDecorations(this.decorations, decorations));\n }\n\n initNewScript(name, code) {\n this.setState({name});\n this.originalCode = code || '';\n this.editor && this.editor.setValue(code);\n this.highlightText(this.lastSearch);\n this.showDecorators();\n //this.setEditorLanguage();\n // Update the typings because global scripts need different typings than normal scripts\n // and each global script has different typings\n this.setEditorTypings(name);\n }\n\n scrollToLineIfNeeded(lineNumber) {\n if (this.editor) {\n const ranges = this.editor.getVisibleRanges();\n if (!ranges || !ranges[0] || ranges[0].startLineNumber > lineNumber || lineNumber > ranges[0].endLineNumber) {\n this.editor.revealLineInCenter(lineNumber);\n }\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const options = {};\n if (this.state.name !== nextProps.name) {\n // A different script was selected\n this.initNewScript(nextProps.name, nextProps.code);\n }\n\n // if some running instance will be found and\n if (JSON.stringify(nextProps.runningInstances) !== this.runningInstancesStr) {\n this.runningInstancesStr = JSON.stringify(nextProps.runningInstances);\n if (!this.state.typingsLoaded) {\n this.loadTypings(nextProps.runningInstances);\n }\n }\n\n // if the code not yet changed, update the new code\n if (!nextProps.changed && (nextProps.code !== this.originalCode || nextProps.code !== this.editor.getValue())) {\n this.originalCode = nextProps.code;\n this.editor.setValue(this.originalCode);\n this.showDecorators();\n this.location && this.scrollToLineIfNeeded(this.location.lineNumber + 1);\n }\n\n if (nextProps.searchText !== this.lastSearch) {\n this.lastSearch = nextProps.searchText;\n this.highlightText(this.lastSearch);\n }\n\n if (JSON.stringify(nextProps.location) !== JSON.stringify(this.location) &&\n JSON.stringify(nextProps.breakpoints) !== JSON.stringify(this.breakpoints)\n ) {\n this.location = nextProps.location;\n this.breakpoints = nextProps.breakpoints;\n this.showDecorators();\n this.editor && this.location && this.scrollToLineIfNeeded(this.location.lineNumber + 1);\n //this.editor && this.location && this.editor.setPosition(this.location.lineNumber + 1, this.location.columnNumber + 1);\n } else if (JSON.stringify(nextProps.breakpoints) !== JSON.stringify(this.breakpoints)) {\n this.breakpoints = nextProps.breakpoints;\n this.showDecorators();\n } else if (JSON.stringify(nextProps.location) !== JSON.stringify(this.location)) {\n this.location = nextProps.location;\n this.showDecorators();\n this.editor && this.location && this.scrollToLineIfNeeded(this.location.lineNumber + 1);\n //this.editor && this.location && this.editor.setPosition(this.location.lineNumber + 1, this.location.columnNumber + 1);\n }\n\n if (this.state.language !== (nextProps.language || 'javascript')) {\n this.setState({language: nextProps.language || 'javascript'});\n options.language = nextProps.language || 'javascript';\n } else if (this.state.readOnly !== (nextProps.readOnly || false)) {\n this.setState({readOnly: nextProps.readOnly || false});\n options.readOnly = nextProps.readOnly;\n } else if (this.state.isDark !== (nextProps.isDark || false)) {\n this.setState({isDark: nextProps.isDark || false});\n options.isDark = nextProps.isDark;\n }\n\n this.setEditorOptions(options);\n\n if (this.insert !== nextProps.insert) {\n this.insert = nextProps.insert;\n if (this.insert) {\n console.log('Insert text' + this.insert);\n setTimeout(insert => {\n this.insertTextIntoEditor(insert);\n setTimeout(() => this.props.onInserted && this.props.onInserted(), 100);\n }, 100, this.insert);\n }\n }\n }\n\n onChange(newValue, e) {\n if (!this.props.readOnly) {\n this.props.onChange && this.props.onChange(this.editor.getValue());\n }\n }\n\n render() {\n if (!this.monaco || !this.props.runningInstances) {\n setTimeout(() => {\n this.monaco = window.monaco;\n this.forceUpdate()\n }, 200);\n return null;\n }\n\n return <div ref={el => this.monacoDiv = el} style={{width: '100%', height: '100%', overflow: 'hidden', position: 'relative'}}>\n {!this.state.check && <Fab\n size=\"small\"\n title={I18n.t('Check is not active, because javascript adapter is disabled')}\n style={{bottom: 10, right: 10, opacity: 0.5, position: 'absolute', zIndex: 1, background: 'red', color: 'white'}}\n color=\"secondary\"><IconNoCheck/></Fab>}\n </div>;\n }\n}\n\nScriptEditor.propTypes = {\n adapterName: PropTypes.string.isRequired,\n socket: PropTypes.object,\n runningInstances: PropTypes.object,\n name: PropTypes.string,\n onChange: PropTypes.func,\n onForceSave: PropTypes.func,\n onInserted: PropTypes.func,\n isDark: PropTypes.bool,\n readOnly: PropTypes.bool,\n code: PropTypes.string,\n language: PropTypes.string,\n onRegisterSelect: PropTypes.func,\n searchText: PropTypes.string,\n checkJs: PropTypes.bool,\n changed: PropTypes.bool,\n\n breakpoints: PropTypes.array,\n location: PropTypes.object,\n onToggleBreakpoint: PropTypes.func,\n};\n\nexport default ScriptEditor;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport withStyles from '@mui/styles/withStyles';\n\nimport Button from '@mui/material/Button';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogActions from '@mui/material/DialogActions';\nimport Dialog from '@mui/material/Dialog';\nimport Popper from '@mui/material/Popper';\nimport Fade from '@mui/material/Fade';\nimport Paper from '@mui/material/Paper';\n\nimport IconCopy from '@mui/icons-material/FileCopy';\nimport IconCancel from '@mui/icons-material/Cancel';\n\nimport { I18n, Utils } from '@iobroker/adapter-react-v5';\n\nconst styles = theme => ({\n textArea: {\n width: '100%',\n height: '100%',\n overflow: 'auto',\n },\n textAreaLight: {\n background: 'lightgray',\n },\n dialog: {\n height: '95%',\n },\n typography: {\n padding: theme.spacing(2),\n },\n overflowY: {\n overflowY: 'hidden',\n },\n});\n\nclass DialogExport extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n anchorEl: null,\n popper: '',\n };\n }\n handleCancel = () => {\n this.props.onClose();\n };\n\n onCopy(event) {\n Utils.copyToClipboard(this.props.text);\n const anchorEl = event.currentTarget;\n\n setTimeout(() => {\n this.setState({ popper: I18n.t('Copied'), anchorEl });\n setTimeout(() => this.setState({ popper: '', anchorEl: null }), 1000);\n }, 50);\n }\n\n render() {\n const classes = this.props.classes;\n\n return <Dialog\n key=\"export-dialog\"\n onClose={(event, reason) => false}\n maxWidth=\"lg\"\n classes={{ paper: classes.dialog }}\n fullWidth\n open={this.props.open}\n aria-labelledby=\"export-dialog-title\"\n >\n <DialogTitle id=\"export-dialog-title\">{I18n.t('Export selected blocks')}</DialogTitle>\n <DialogContent\n classes={{ root: classes.overflowY }}>\n <pre\n id=\"export-text\"\n className={`${classes.textArea} ${this.props.themeType === 'dark' ? '' : classes.textAreaLight}`}\n >{this.props.text}</pre>\n </DialogContent>\n <DialogActions>\n <Button variant=\"contained\" onClick={event => this.onCopy(event)} color=\"secondary\" startIcon={<IconCopy/>}>{I18n.t('Copy to clipboard')}</Button>\n <Button variant=\"contained\" onClick={() => this.handleCancel()} color=\"primary\" startIcon={<IconCancel/>}>{I18n.t('Close')}</Button>\n\n <Popper\n id=\"popper\"\n style={{ zIndex: 10000 }}\n open={!!this.state.popper}\n placement=\"top\"\n anchorEl={this.state.anchorEl} transition>\n {({ TransitionProps }) => (\n <Fade {...TransitionProps} timeout={350}>\n <Paper>\n <p className={classes.typography}>{this.state.popper}</p>\n </Paper>\n </Fade>\n )}\n </Popper>\n <textarea id=\"copy_input\" readOnly style={{ position: 'absolute', left: -9999 }} tabIndex={-1} aria-hidden value={this.props.text} />\n </DialogActions>\n </Dialog>;\n }\n}\n\nDialogExport.defaultProps = {\n open: true\n}\n\nDialogExport.propTypes = {\n classes: PropTypes.object.isRequired,\n onClose: PropTypes.func,\n text: PropTypes.string,\n themeType: PropTypes.string,\n};\n\nexport default withStyles(styles)(DialogExport);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport withStyles from '@mui/styles/withStyles';\nimport Button from '@mui/material/Button';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogActions from '@mui/material/DialogActions';\nimport Dialog from '@mui/material/Dialog';\n\nimport IconOk from '@mui/icons-material/Check';\nimport IconCancel from '@mui/icons-material/Cancel';\n\nimport { I18n } from '@iobroker/adapter-react-v5';\n\nconst styles = theme => ({\n textArea: {\n width: 'calc(100% - 10px)',\n height: '100%',\n resize: 'none'\n },\n dialog: {\n height: '95%'\n },\n fullHeight: {\n height: '100%',\n overflow: 'hidden'\n },\n});\n\nclass DialogImport extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n text: '',\n };\n }\n\n componentDidMount() {\n setTimeout(() => {\n try {\n window.document.getElementById('import-text-area').focus();\n } catch (e) {\n\n }\n }, 100);\n }\n\n handleCancel() {\n this.props.onClose();\n }\n\n handleOk() {\n this.props.onClose(this.state.text);\n }\n\n onChange(e) {\n this.setState({ text: e.target.value });\n }\n\n render() {\n const classes = this.props.classes;\n\n return <Dialog\n onClose={(event, reason) => false}\n maxWidth=\"lg\"\n classes={{ paper: classes.dialog }}\n fullWidth\n open={this.props.open}\n aria-labelledby=\"import-dialog-title\"\n >\n <DialogTitle id=\"import-dialog-title\">{I18n.t('Import blocks')}</DialogTitle>\n <DialogContent className={classes.fullHeight}>\n <textarea\n autoFocus\n id=\"import-text-area\"\n className={classes.textArea}\n onChange={e => this.onChange(e)}\n />\n </DialogContent>\n <DialogActions>\n <Button variant=\"contained\" disabled={!this.state.text} onClick={event => this.handleOk()} color=\"primary\" startIcon={<IconOk/>}>{I18n.t('Import')}</Button>\n <Button color=\"grey\" variant=\"contained\" onClick={() => this.handleCancel()} startIcon={<IconCancel/>}>{I18n.t('Close')}</Button>\n </DialogActions>\n </Dialog>;\n }\n}\n\nDialogImport.defaultProps = {\n open: true\n}\n\nDialogImport.propTypes = {\n classes: PropTypes.object.isRequired,\n onClose: PropTypes.func,\n text: PropTypes.string,\n};\n\nexport default withStyles(styles)(DialogImport);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { I18n } from '@iobroker/adapter-react-v5';\nimport DialogMessage from '@iobroker/adapter-react-v5/Dialogs/Message';\nimport DialogError from '../Dialogs/Error';\nimport DialogExport from '../Dialogs/Export';\nimport DialogImport from '../Dialogs/Import';\n\nlet languageBlocklyLoaded = false;\nlet languageOwnLoaded = false;\nlet toolboxText = null;\nlet toolboxXml;\nlet scriptsLoaded = [];\n\n// BF (2020-10-31) I have no Idea, why it does not work as static in BlocklyEditor, but outside of BlocklyEditor it works\nfunction searchXml(root, text, _id, _result) {\n _result = _result || [];\n if (root.tagName === 'BLOCK' || root.tagName === 'block') {\n _id = root.id;\n }\n if (root.tagName === 'FIELD' || root.tagName === 'field') {\n for (let a = 0; a < root.attributes.length; a++) {\n const val = (root.attributes[a].value || '').toLowerCase();\n if (root.attributes[a].nodeName === 'name' && (val === 'oid' || val === 'text')) {\n if ((root.innerHTML || root.innerText || '').toLowerCase().includes(text)) {\n _result.push(_id);\n }\n }\n }\n }\n root.childNodes.forEach(node =>\n searchXml(node, text, _id, _result));\n\n return _result;\n}\n\n\nclass BlocklyEditor extends React.Component {\n constructor(props) {\n super(props);\n\n this.blockly = null; //ref\n this.blocklyWorkspace = null;\n this.toolbox = null;\n this.Blockly = window.Blockly;\n\n this.state = {\n languageOwnLoaded,\n languageBlocklyLoaded,\n changed: false,\n message: '',\n error: '',\n themeType: this.props.themeType,\n exportText: '',\n importText: false,\n searchText: this.props.searchText || '',\n };\n this.originalCode = props.code || '';\n\n this.someSelected = null;\n this.changeTimer = null;\n\n this.onResizeBind = this.onResize.bind(this);\n\n this.lastCommand = '';\n this.lastSearch = this.props.searchText || '';\n this.blinkBlock = null;\n this.loadLanguages();\n }\n\n static loadJS(url, callback, location) {\n const scriptTag = document.createElement('script');\n try {\n scriptTag.src = url;\n\n scriptTag.onload = callback;\n scriptTag.onreadystatechange = callback;\n scriptTag.onerror = callback;\n\n (location || window.document.body).appendChild(scriptTag);\n } catch (e) {\n console.error('Cannot load ' + url + ': ' + e);\n callback && callback();\n }\n };\n\n static loadScripts(scripts, callback) {\n if (!scripts || !scripts.length) {\n return callback && callback();\n }\n const adapter = scripts.pop();\n if (scriptsLoaded.indexOf(adapter) === -1) {\n scriptsLoaded.push(adapter);\n BlocklyEditor.loadJS('../../adapter/' + adapter + '/blockly.js', (/*data, textStatus, jqxhr*/) =>\n setTimeout(() => BlocklyEditor.loadScripts(scripts, callback), 0));\n } else {\n setTimeout(() => BlocklyEditor.loadScripts(scripts, callback), 0);\n }\n }\n\n static loadCustomBlockly(adapters, callback) {\n // get all adapters, that can have blockly\n const toLoad = [];\n for (const id in adapters) {\n if (!adapters.hasOwnProperty(id) ||\n !adapters[id] ||\n !id.match(/^system\\.adapter\\./) ||\n adapters[id].type !== 'adapter'\n ) {\n continue;\n }\n\n if (adapters[id].common && adapters[id].common.blockly) {\n console.log('Detected custom blockly: ' + adapters[id].common.name);\n toLoad.push(adapters[id].common.name);\n }\n }\n\n BlocklyEditor.loadScripts(toLoad, callback);\n }\n\n static loadXMLDoc(text) {\n let parseXml;\n if (window.DOMParser) {\n parseXml = function(xmlStr) {\n return ( new window.DOMParser() ).parseFromString(xmlStr, \"text/xml\");\n };\n } else if (typeof window.ActiveXObject != \"undefined\" && new window.ActiveXObject(\"Microsoft.XMLDOM\")) {\n parseXml = function(xmlStr) {\n var xmlDoc = new window.ActiveXObject(\"Microsoft.XMLDOM\");\n xmlDoc.async = \"false\";\n xmlDoc.loadXML(xmlStr);\n return xmlDoc;\n };\n } else {\n parseXml = function() { return null; }\n }\n return parseXml(text);\n }\n\n searchBlocks(text) {\n if (this.blocklyWorkspace) {\n const dom = this.Blockly.Xml.workspaceToDom(this.blocklyWorkspace);\n const ids = searchXml(dom, text.toLowerCase());\n const allBlocks = this.blocklyWorkspace.getAllBlocks();\n const result = [];\n allBlocks.filter(b => ids.includes(b.id)).forEach(b => result.push(b));\n return result;\n }\n }\n\n searchId() {\n const blocks = this.lastSearch && this.searchBlocks(this.lastSearch);\n if (blocks && blocks.length) {\n this.someSelected = blocks;\n this.someSelected.forEach(b => b.addSelect());\n this.someSelectedTime = Date.now();\n } else if (this.someSelected) {\n // remove selection\n this.someSelected.forEach(b => b.removeSelect());\n this.someSelected = null;\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.command && this.lastCommand !== nextProps.command) {\n this.lastCommand = nextProps.command;\n setTimeout(() => this.lastCommand = '', 300);\n if (this.lastCommand === 'check') {\n this.blocklyCheckBlocks((err, badBlock) => {\n if (!err) {\n this.setState({message: I18n.t('Ok')});\n } else {\n badBlock && this.blocklyBlinkBlock(badBlock);\n this.setState({error: {text: I18n.t(err), title: I18n.t('Error was found')}});\n this.blinkBlock = badBlock;\n }\n });\n } else if (this.lastCommand === 'export') {\n this.exportBlocks();\n } else if (this.lastCommand === 'import') {\n this.importBlocks();\n }\n }\n\n if (nextProps.searchText !== this.lastSearch) {\n this.lastSearch = nextProps.searchText;\n this.searchId();\n }\n\n if (this.state.themeType !== nextProps.themeType) {\n this.setState({themeType: nextProps.themeType}, () => this.updateBackground());\n }\n\n if (this.originalCode !== nextProps.code) {\n this.originalCode = nextProps.code || '';\n this.loadCode();\n this.searchId();\n }\n }\n\n loadLanguages() {\n // load blockly language\n if (!languageBlocklyLoaded) {\n const fileLang = window.document.createElement('script');\n fileLang.setAttribute('type', 'text/javascript');\n fileLang.setAttribute('src', 'google-blockly/msg/js/' + I18n.getLanguage() + '.js');\n\n // most browsers\n fileLang.onload = () => {\n languageBlocklyLoaded = true;\n this.setState({languageBlocklyLoaded});\n };\n // IE 6 & 7\n fileLang.onreadystatechange = () => {\n if (this.readyState === 'complete') {\n languageBlocklyLoaded = true;\n this.setState({languageBlocklyLoaded});\n }\n };\n window.document.getElementsByTagName('head')[0].appendChild(fileLang);\n }\n if (!languageOwnLoaded) {\n const fileCustom = window.document.createElement('script');\n fileCustom.setAttribute('type', 'text/javascript');\n fileCustom.setAttribute('src', 'google-blockly/own/msg/' + I18n.getLanguage() + '.js');\n // most browsers\n fileCustom.onload = () => {\n languageOwnLoaded = true;\n this.setState({languageOwnLoaded});\n };\n // IE 6 & 7\n fileCustom.onreadystatechange = () => {\n if (this.readyState === 'complete') {\n languageOwnLoaded = true;\n this.setState({languageOwnLoaded});\n }\n };\n window.document.getElementsByTagName('head')[0].appendChild(fileCustom);\n }\n }\n\n onResize() {\n this.Blockly.svgResize(this.blocklyWorkspace);\n }\n\n jsCode2Blockly(text) {\n text = text || '';\n const lines = text.split(/[\\r\\n]+|\\r|\\n/g);\n let xml = '';\n for (let l = lines.length - 1; l >= 0; l--) {\n if (lines[l].substring(0, 2) === '//') {\n xml = lines[l].substring(2);\n break;\n }\n }\n if (xml.substring(0, 4) === '<xml') {\n return xml;\n } else {\n let code;\n try {\n code = window.decodeURIComponent(window.atob(xml));\n } catch (e) {\n code = null;\n console.error('cannot decode: ' + xml);\n console.error(e);\n }\n return code;\n }\n }\n\n blocklyBlinkBlock(block) {\n for (let i = 300; i < 3000; i = i + 300) {\n setTimeout(() => block.select(), i);\n setTimeout(() => block.unselect(), i + 150);\n }\n }\n\n blocklyRemoveOrphanedShadows() {\n if (this.blocklyWorkspace) {\n let blocks = this.blocklyWorkspace.getAllBlocks();\n let block;\n for (let i = 0; (block = blocks[i]); i++) {\n if (block.isShadow()) {\n const connections = block.getConnections_(true);\n let conn;\n for (let j = 0; (conn = connections[j]); j++) {\n if (!conn.targetConnection) {\n // remove it\n block.dispose();\n break;\n }\n }\n }\n }\n }\n }\n\n blocklyCheckBlocks(cb) {\n let warningText;\n if (!this.blocklyWorkspace || this.blocklyWorkspace.getAllBlocks().length === 0) {\n cb && cb('no blocks found');\n return;\n }\n let badBlock = this.blocklyGetUnconnectedBlock();\n if (badBlock) {\n warningText = 'not properly connected';\n } else {\n badBlock = this.blocklyGetBlockWithWarning();\n if (badBlock) {\n warningText = 'warning on this block';\n }\n }\n\n if (badBlock) {\n if (cb) {\n cb(warningText, badBlock);\n } else {\n this.blocklyBlinkBlock(badBlock);\n }\n return false;\n }\n\n cb();\n\n return true;\n }\n\n // get unconnected block\n blocklyGetUnconnectedBlock () {\n const blocks = this.blocklyWorkspace.getAllBlocks();\n let block;\n for (let i = 0; (block = blocks[i]); i++) {\n const connections = block.getConnections_(true);\n let conn;\n for (let j = 0; (conn = connections[j]); j++) {\n if (!conn.sourceBlock_ || ((conn.type === this.Blockly.INPUT_VALUE || conn.type === this.Blockly.OUTPUT_VALUE) && !conn.targetConnection && !conn._optional)) {\n return block;\n }\n }\n }\n return null;\n }\n\n // get block with warning\n blocklyGetBlockWithWarning() {\n const blocks = this.blocklyWorkspace.getAllBlocks();\n let block;\n for (let i = 0; (block = blocks[i]); i++) {\n if (block.warning) {\n return block;\n }\n }\n return null;\n }\n\n blocklyCode2JSCode(oneWay) {\n let code = this.Blockly.JavaScript.workspaceToCode(this.blocklyWorkspace);\n if (!oneWay) {\n code += '\\n';\n const dom = this.Blockly.Xml.workspaceToDom(this.blocklyWorkspace);\n const text = this.Blockly.Xml.domToText(dom);\n code += '//' + btoa(encodeURIComponent(text));\n }\n\n return code;\n }\n\n exportBlocks() {\n let exportText;\n if (this.Blockly.selected) {\n const xmlBlock = this.Blockly.Xml.blockToDom(this.Blockly.selected);\n if (this.Blockly.dragMode_ !== this.Blockly.DRAG_FREE) {\n this.Blockly.Xml.deleteNext(xmlBlock);\n }\n // Encode start position in XML.\n const xy = this.Blockly.selected.getRelativeToSurfaceXY();\n xmlBlock.setAttribute('x', this.Blockly.selected.RTL ? -xy.x : xy.x);\n xmlBlock.setAttribute('y', xy.y);\n\n exportText = this.Blockly.Xml.domToPrettyText(xmlBlock);\n } else {\n const dom = this.Blockly.Xml.workspaceToDom(this.blocklyWorkspace);\n exportText = this.Blockly.Xml.domToPrettyText(dom);\n }\n this.setState({exportText});\n }\n\n importBlocks() {\n this.setState({importText: true});\n }\n\n onImportBlocks(xml) {\n xml = (xml || '').trim();\n if (xml) {\n try {\n if (!xml.startsWith('<xml')) {\n xml = '<xml xmlns=\"http://www.w3.org/1999/xhtml\">' + xml + '</xml>';\n }\n let variables = xml.replace(/[\\n\\r]/g, '').match(/<variables>(.*)<\\/variables>/);\n if (variables) {\n let vars = this.Blockly.utils.xml.textToDomDocument('<variables>' + variables[1] + '</variables>');\n if (vars) {\n let nodes = vars.childNodes && vars.childNodes[0] && vars.childNodes[0].childNodes;\n if (nodes) {\n for (let i = 0; i < nodes.length; i++) {\n nodes[i].id && this.blocklyWorkspace.createVariable(nodes[i].id);\n }\n }\n }\n }\n xml = xml.replace(/[\\n\\r]/g, '').replace(/<variables>.*<\\/variables>/g, '');\n window.scripts.loading = true;\n let xmlBlocks = this.Blockly.utils.xml.textToDom(xml);\n if (xmlBlocks.nodeName === 'xml') {\n for (let b = 0; b < xmlBlocks.children.length; b++) {\n this.blocklyWorkspace.paste(xmlBlocks.children[b]);\n }\n } else {\n this.blocklyWorkspace.paste(xmlBlocks);\n }\n\n window.scripts.loading = false;\n\n\n this.onBlocklyChanged();\n } catch (e) {\n this.setState({error: {text: e, title: I18n.t('Import error')}});\n }\n }\n }\n\n loadCode() {\n if (!this.blocklyWorkspace) {\n return;\n }\n\n this.ignoreChanges = true;\n this.blocklyWorkspace.clear();\n\n try {\n const xml = this.jsCode2Blockly(this.originalCode) || '<xml xmlns=\"http://www.w3.org/1999/xhtml\"></xml>';\n window.scripts.loading = true;\n const dom = this.Blockly.utils.xml.textToDom(xml);\n this.Blockly.Xml.domToWorkspace(dom, this.blocklyWorkspace);\n window.scripts.loading = false;\n } catch (e) {\n console.error(e);\n setTimeout(() => this.setState({error: I18n.t('Cannot extract Blockly code!')}));\n }\n setTimeout(() => this.ignoreChanges = false, 100);\n }\n\n onBlocklyChanged() {\n this.blocklyRemoveOrphanedShadows();\n this.setState({changed: true});\n this.onChange();\n }\n\n async componentDidUpdate() {\n if (!this.blockly) {\n return;\n }\n if (this.didUpdate) {\n clearTimeout(this.didUpdate);\n this.didUpdate = null;\n }\n\n if (this.blocklyWorkspace) {\n return;\n }\n\n window.addEventListener('resize', this.onResizeBind, false);\n toolboxText = toolboxText || (await this.getToolbox());\n toolboxXml = toolboxXml || this.Blockly.utils.xml.textToDom(toolboxText);\n\n this.blocklyWorkspace = this.Blockly.inject(\n this.blockly,\n {\n media: 'google-blockly/media/',\n toolbox: toolboxXml,\n zoom: {\n controls: true,\n wheel: false,\n startScale: 1.0,\n maxScale: 3,\n minScale: 0.3,\n scaleSpeed: 1.2\n },\n move: {\n scrollbars: true,\n drag: true,\n wheel: true\n },\n trashcan: true,\n grid: {\n spacing: 25,\n length: 3,\n colour: '#ccc',\n snap: true\n },\n sounds: false, // disable sounds\n }\n );\n // for blockly itself\n window.scripts = {\n blocklyWorkspace: this.blocklyWorkspace\n };\n\n // Workaround: Replace procedure category flyout\n this.blocklyWorkspace.registerToolboxCategoryCallback('PROCEDURE', this.Blockly.Procedures.flyoutCategoryNew);\n\n // Listen to events on master workspace.\n this.blocklyWorkspace.addChangeListener(masterEvent => {\n if (this.someSelected && Date.now() - this.someSelectedTime > 500) {\n const allBlocks = this.blocklyWorkspace.getAllBlocks();\n this.someSelected = null;\n allBlocks.forEach(b => b.removeSelect());\n }\n\n if (masterEvent.type === this.Blockly.Events.UI || masterEvent.type === this.Blockly.Events.CREATE) {\n return; // Don't mirror UI events.\n }\n if (this.ignoreChanges) {\n return;\n }\n this.changeTimer && clearTimeout(this.changeTimer);\n this.changeTimer = setTimeout(() => {\n this.changeTimer = null;\n this.onBlocklyChanged();\n }, 200);\n });\n this.loadCode();\n this.onResize();\n // Move toolbar to the valid position\n const toolbar = document.getElementsByClassName('blocklyToolboxDiv')[0];\n this.blockly.appendChild(toolbar);\n\n this.updateBackground();\n setTimeout(() => this.searchId(), 200); // select found blocks\n }\n\n updateBackground() {\n const background = document.getElementsByClassName('blocklyMainBackground')[0];\n if (this.state.themeType === 'dark') {\n if (!background._originalStyle) {\n background._originalStyle = {\n stroke: background.style.stroke,\n fill: background.style.fill\n };\n }\n // add class\n background.style.stroke = '#3a3a3a';\n background.style.fill = '#515151';\n } else if (background._originalStyle) {\n background.style.stroke = background._originalStyle.stroke;\n background.style.fill = background._originalStyle.fill;\n }\n }\n\n componentWillUnmount() {\n if (!this.blocklyWorkspace) {\n return;\n }\n this.blocklyWorkspace.dispose();\n this.blocklyWorkspace = null;\n this.changeTimer && clearTimeout(this.changeTimer);\n this.changeTimer = null;\n window.removeEventListener('resize', this.onResizeBind);\n }\n\n onChange() {\n this.originalCode = this.blocklyCode2JSCode();\n this.props.onChange && this.props.onChange(this.originalCode);\n }\n\n async getToolbox(retry) {\n // Interpolate translated messages into toolbox.\n const el = window.document.getElementById('toolbox');\n let toolboxText = el && el.outerHTML;\n if (!toolboxText) {\n if (!retry) {\n return new Promise(resolve =>\n setTimeout(() => resolve(this.getToolbox(true)), 500));\n } else {\n console.error('Cannot load blocks!');\n return '';\n }\n }\n toolboxText = toolboxText.replace(/{(\\w+)}/g, (m, p1) => window.MSG[p1]);\n\n if (this.Blockly.CustomBlocks) {\n let blocks = '';\n const lang = I18n.getLanguage();\n for (let cb = 0; cb < this.Blockly.CustomBlocks.length; cb++) {\n const name = this.Blockly.CustomBlocks[cb];\n // add blocks\n blocks += '<category name=\"' + this.Blockly.Words[name][lang] + '\" colour=\"' + this.Blockly[name].HUE + '\">';\n for (const _b in this.Blockly[name].blocks) {\n if (this.Blockly[name].blocks.hasOwnProperty(_b)) {\n blocks += this.Blockly[name].blocks[_b];\n }\n }\n blocks += '</category>';\n }\n toolboxText = toolboxText.replace('<category><block>%%CUSTOM_BLOCKS%%</block></category>', blocks);\n }\n\n return toolboxText;\n }\n\n renderMessageDialog() {\n return this.state.message ?\n <DialogMessage\n key=\"dialogMessage\"\n text={typeof this.state.message === 'object' ? this.state.message.text : this.state.message}\n title={typeof this.state.message === 'object' ? this.state.message.title : ''}\n onClose={() => this.setState({message: ''})}\n /> :\n null;\n }\n\n renderErrorDialog() {\n return this.state.error ?\n <DialogError\n key=\"dialogError\"\n text={typeof this.state.error === 'object' ? this.state.error.text.toString() : this.state.error}\n title={typeof this.state.error === 'object' ? this.state.error.title : ''}\n onClose={() => {\n if (this.blinkBlock) {\n this.blocklyBlinkBlock(this.blinkBlock);\n this.blinkBlock = null;\n }\n this.setState({error: ''});\n }}/> :\n null;\n }\n\n renderExportDialog() {\n return this.state.exportText ? <DialogExport key=\"dialogExport\" theme={this.state.themeType} onClose={() => this.setState({exportText: ''})} text={this.state.exportText}/> : null;\n }\n\n renderImportDialog() {\n return this.state.importText ? <DialogImport key=\"dialogImport\" onClose={text => {\n this.setState({importText: false});\n this.onImportBlocks(text);\n }}/> : null;\n }\n\n render() {\n if (this.state.languageBlocklyLoaded && this.state.languageOwnLoaded) {\n this.didUpdate = setTimeout(() => {\n this.didUpdate = null;\n this.componentDidUpdate();\n }, 100);\n\n return [\n <div key=\"blocklyDOM\" ref={el => this.blockly = el} style={{\n //marginLeft: 180,\n width: '100%',//'calc(100% - 180px)',\n height: '100%',\n //overflow: 'hidden',\n position: 'relative'}}/>,\n\n this.renderMessageDialog(),\n this.renderErrorDialog(),\n this.renderExportDialog(),\n this.renderImportDialog(),\n ];\n } else {\n return null;\n }\n }\n}\n\nBlocklyEditor.propTypes = {\n command: PropTypes.string,\n onChange: PropTypes.func,\n searchText: PropTypes.string,\n themeType: PropTypes.string\n};\n\nexport default BlocklyEditor;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport withStyles from '@mui/styles/withStyles';\n\nimport Button from '@mui/material/Button';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogActions from '@mui/material/DialogActions';\nimport Dialog from '@mui/material/Dialog';\n\nimport IconSave from '@mui/icons-material/Save';\nimport IconCancel from '@mui/icons-material/Cancel';\n\nimport { I18n } from '@iobroker/adapter-react-v5';\n\nimport ScriptEditorComponent from '../Components/ScriptEditorVanilaMonaco';\n\nconst styles = theme => ({\n textArea: {\n width: 'calc(100% - 10px)',\n resize: 'none'\n },\n dialog: {\n height: '95%'\n },\n fullHeight: {\n height: '100%',\n overflow: 'hidden'\n },\n args: {\n color: theme.palette.mode === 'dark' ? 'white' : 'black',\n height: 30,\n width: '100%',\n fontSize: 16\n },\n argsTitle: {\n color: theme.palette.mode === 'dark' ? 'white' : 'black',\n fontWeight: 'bold'\n }\n});\n\nclass DialogScriptEditor extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n changed: false,\n source: this.props.source,\n };\n if (!this.state.source && this.props.isReturn) {\n this.state.source = '\\nreturn false';\n }\n }\n\n componentDidMount() {\n setTimeout(() => {\n try {\n window.document.getElementById('source-text-area').focus();\n } catch (e) {\n\n }\n }, 100);\n }\n\n handleCancel () {\n this.props.onClose(false);\n }\n\n handleOk () {\n if (this.props.isReturn && !this.state.source.includes('return ')) {\n\n } else {\n this.props.onClose(this.state.source);\n }\n }\n\n onChange(value) {\n this.setState({changed: true, source: value});\n }\n\n render() {\n const classes = this.props.classes;\n\n return <Dialog\n onClose={(event, reason) => false}\n maxWidth=\"lg\"\n classes={{paper: classes.dialog}}\n fullWidth\n open={!0}\n aria-labelledby=\"source-dialog-title\"\n >\n <DialogTitle id=\"source-dialog-title\">{I18n.t('Function editor')}</DialogTitle>\n <DialogContent className={classes.fullHeight}>\n {this.props.args && (<div key=\"arguments\" className={classes.args}>\n <span className={classes.argsTitle}>{I18n.t('function (')}</span>\n {this.props.args}\n <span className={classes.argsTitle}>)</span>\n </div>)}\n <ScriptEditorComponent\n adapterName={this.props.adapterName}\n runningInstances={this.props.runningInstances}\n className={classes.textArea}\n style={{height: this.props.args ? 'calc(100% - 30px)' : '100%'}}\n key=\"scriptEditor\"\n name={'blockly'}\n socket={this.props.socket}\n readOnly={false}\n checkJs={false}\n changed={this.state.changed}\n code={this.state.source}\n isDark={this.props.themeType === 'dark'}\n onChange={newValue => this.onChange(newValue)}\n language={'javascript'}\n />\n </DialogContent>\n <DialogActions>\n <Button variant=\"contained\" onClick={() => this.handleOk()} color=\"primary\" startIcon={<IconSave/>}>{I18n.t('Save')}</Button>\n <Button color=\"grey\" variant=\"contained\" onClick={() => this.handleCancel()} startIcon={<IconCancel/>}>{I18n.t('Cancel')}</Button>\n </DialogActions>\n </Dialog>;\n }\n}\n\nDialogScriptEditor.propTypes = {\n classes: PropTypes.object.isRequired,\n adapterName: PropTypes.string.isRequired,\n runningInstances: PropTypes.object.isRequired,\n onClose: PropTypes.func,\n source: PropTypes.string,\n args: PropTypes.string,\n isReturn: PropTypes.bool,\n themeType: PropTypes.string,\n socket: PropTypes.object\n};\n\nexport default withStyles(styles)(DialogScriptEditor);\n","// extracted by mini-css-extract-plugin\nexport default {\"wrapperRules\":\"style_wrapperRules__Js-Pp\",\"rootWrapper\":\"style_rootWrapper__0Dpqp\",\"addClass\":\"style_addClass__ry424\"};","// extracted by mini-css-extract-plugin\nexport default {\"switchesItem\":\"style_switchesItem__RBQz7\",\"switchesItemActive\":\"style_switchesItemActive__FU8S9\",\"iconTheme\":\"style_iconTheme__inJLE\"};","import { useState, useEffect } from 'react';\nimport * as Icons from '@mui/icons-material/';\n\nconst ICON_CACHE = {};\n\nconst MaterialDynamicIcon = ({ iconName, className, adapter, socket, onClick }) => {\n let [url, setUrl] = useState('');\n\n useEffect(() => {\n if (adapter && socket) {\n ICON_CACHE[adapter] = ICON_CACHE[adapter] || socket.getObject(`system.adapter.${adapter}`);\n ICON_CACHE[adapter].then(obj =>\n obj?.common?.icon && setUrl(`../../adapter/${adapter}/${obj.common.icon}`));\n }\n }, [adapter, socket]);\n\n if (adapter) {\n return <img onClick={e => onClick && onClick(e)} src={url || ''} className={className} alt=\"\" />;\n } else {\n const Element = Icons[iconName || 'Help'];\n return <Element\n className={className}\n onClick={e => onClick && onClick(e)}\n />;\n }\n}\n\nMaterialDynamicIcon.defaultProps = {\n className: null,\n iconName: 'Help'\n};\n\nexport default MaterialDynamicIcon;","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { I18n, Utils } from '@iobroker/adapter-react-v5';\n\nimport cls from './style.module.scss';\nimport MaterialDynamicIcon from '../../helpers/MaterialDynamicIcon';\n\nconst CardMenu = ({ name, id, active, icon, adapter, socket, onDoubleClick, title, onTouchMove }) => <div\n onDoubleClick={onDoubleClick}\n onTouchMove={onTouchMove}\n key={id}\n title={I18n.t(title)}\n className={Utils.clsx(cls.switchesItem, active && cls.switchesItemActive, 'block-' + id)}\n>\n <MaterialDynamicIcon iconName={icon} className={cls.iconTheme} adapter={adapter} socket={socket} />\n <span>\n {name ? I18n.t(name) : ''}\n </span>\n</div>;\n\nCardMenu.defaultProps = {\n name: '',\n active: false,\n id: '',\n onDoubleClick: () => { }\n};\n\nCardMenu.propTypes = {\n name: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n active: PropTypes.bool\n};\n\nexport default CardMenu;","// extracted by mini-css-extract-plugin\nexport default {\"cardStyle\":\"style_cardStyle__5c+lG\",\"cardStyleActive\":\"style_cardStyleActive__n6Nq8\",\"controlMenu\":\"style_controlMenu__J0sIm\",\"closeBtn\":\"style_closeBtn__TzVMw\",\"isDelete\":\"style_isDelete__0Sa6U\",\"drag_mobile\":\"style_drag_mobile__RVp7B\"};","export function deepCopy(name, userRules, additionalParameter) {\n let newItemsSwitches;\n switch (name) {\n case 'actions':\n newItemsSwitches = {\n ...userRules,\n [name]: {\n ...userRules[name],\n [additionalParameter]: [...userRules[name][additionalParameter]]\n }\n };\n return newItemsSwitches;\n\n default:\n newItemsSwitches = {\n ...userRules,\n [name]: [...userRules[name]]\n };\n return newItemsSwitches;\n }\n}","export function filterElement(name, userRules, additionalParameter, _id) {\n switch (name) {\n case 'actions':\n userRules[name][additionalParameter] = userRules[name][additionalParameter].filter(el => el._id !== _id);\n return userRules;\n case 'conditions':\n userRules[name][additionalParameter] = userRules[name][additionalParameter].filter(el => el._id !== _id);\n return userRules;\n default:\n userRules[name] = userRules[name].filter(el => el._id !== _id);\n return userRules;\n }\n}","// extracted by mini-css-extract-plugin\nexport default {\"cardStyle\":\"style_cardStyle__A9pAJ\",\"nameCard\":\"style_nameCard__m2nJe\",\"cardStyleActive\":\"style_cardStyleActive__sMSgj\",\"iconThemCard\":\"style_iconThemCard__wx6Kq\",\"iconThemCardSelectable\":\"style_iconThemCardSelectable__H9okn\",\"iconHelp\":\"style_iconHelp__iIi1g\",\"inputCard\":\"style_inputCard__qf8Q+\",\"blockName\":\"style_blockName__CqwBy\",\"controlMenu\":\"style_controlMenu__8kQnd\",\"closeBtn\":\"style_closeBtn__LcbOd\",\"controlMenuTop\":\"style_controlMenuTop__AkzEp\",\"debugInfo\":\"style_debugInfo__wPdyv\",\"fadeIn\":\"style_fadeIn__zKsCh\",\"tagCard\":\"style_tagCard__CEY-X\",\"displayFlex\":\"style_displayFlex__5sr+i\",\"blockMarginTop\":\"style_blockMarginTop__Qn7Lh\",\"nameBlock\":\"style_nameBlock__MZ53S\",\"frontText\":\"style_frontText__3cVcg\",\"backText\":\"style_backText__sF8Y-\",\"iconTag\":\"style_iconTag__2cpM6\",\"displayItalic\":\"style_displayItalic__9KtQw\"};","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"style_root__h6PjP\",\"square\":\"style_square__ahzCN\",\"icon\":\"style_icon__jwNl0\"};","import { Button } from '@mui/material';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Utils, Icon as CustomIcon } from '@iobroker/adapter-react-v5';\n\nimport cls from './style.module.scss';\n\nconst CustomButton = ({ fullWidth, size, onClick, style, className, value, square, icon }) => {\n return <Button\n variant=\"outlined\"\n color=\"primary\"\n onClick={onClick}\n fullWidth={fullWidth}\n style={style}\n className={Utils.clsx(cls.root, className, square ? cls.square : '')}\n margin=\"normal\"\n size={size}\n >{icon ? <CustomIcon className={cls.icon} src={icon} /> : value}</Button>;\n}\n\nCustomButton.defaultProps = {\n value: '',\n className: null,\n variant: 'standard',\n size: 'medium',\n fullWidth: false,\n square: false\n};\n\nCustomButton.propTypes = {\n title: PropTypes.string,\n attr: PropTypes.string,\n type: PropTypes.string,\n style: PropTypes.object,\n};\n\nexport default CustomButton;","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"style_root__8DT4l\"};","import { Checkbox } from '@mui/material';\nimport React, { memo, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Utils } from '@iobroker/adapter-react-v5';\n\nimport cls from './style.module.scss';\n\nconst CustomCheckbox = ({ size, value, style, title, onChange, className, customValue, disabled }) => {\n const [switchChecked, setSwitchChecked] = useState(false);\n\n return <>\n <Checkbox\n disabled={disabled}\n checked={Boolean(customValue ? value : switchChecked)}\n // style={Object.assign(type ? color[type] : null, style)}\n className={Utils.clsx(cls.root, className)}\n onChange={e => {\n customValue && setSwitchChecked(e.target.checked);\n onChange(e.target.checked);\n }}\n size={size}\n />\n {title || null}\n </>;\n}\n\nCustomCheckbox.defaultProps = {\n value: false,\n disabled: false,\n type: null,\n error: '',\n className: null,\n table: false,\n native: {},\n variant: 'standard',\n size: 'medium',\n component: null,\n styleComponentBlock: null,\n onChange: () => { },\n fullWidth: false,\n autoComplete: '',\n customValue: false,\n label: 'all'\n};\n\nCustomCheckbox.propTypes = {\n title: PropTypes.string,\n attr: PropTypes.string,\n type: PropTypes.string,\n style: PropTypes.object,\n native: PropTypes.object,\n onChange: PropTypes.func,\n component: PropTypes.object,\n styleComponentBlock: PropTypes.object\n};\n\nexport default memo(CustomCheckbox);","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"style_root__WINKv\"};","import React, { useState } from 'react';\nimport { TextField } from '@mui/material';\nimport PropTypes from 'prop-types';\n\nimport InputAdornment from '@mui/material/InputAdornment';\n\nimport { Utils, Icon as CustomIcon } from '@iobroker/adapter-react-v5';\n\nimport cls from './style.module.scss';\n\nconst CustomInput = ({ autoFocus, fullWidth, disabled, multiline, rows, autoComplete, label, error, size, variant, value, type, style, onChange, className, customValue, icon }) => {\n const [inputText, setInputText] = useState('');\n return <TextField\n error={!!error}\n autoFocus={autoFocus}\n fullWidth={fullWidth}\n label={label}\n disabled={disabled}\n variant={variant}\n multiline={multiline}\n rows={rows}\n value={customValue ? value : inputText}\n type={type}\n helperText={error}\n style={style}\n className={Utils.clsx(cls.root, className)}\n autoComplete={autoComplete}\n onChange={e => {\n !customValue && setInputText(e.target.value);\n onChange(e.target.value);\n }}\n InputProps={{\n endAdornment: icon ?\n <InputAdornment position=\"end\"><CustomIcon className={cls.icon} src={icon} /></InputAdornment>\n : null\n }}\n margin=\"normal\"\n size={size}\n />;\n}\n\nCustomInput.defaultProps = {\n value: '',\n type: 'text',\n error: '',\n className: null,\n table: false,\n native: {},\n variant: 'standard',\n size: 'medium',\n component: null,\n styleComponentBlock: null,\n onChange: () => { },\n fullWidth: false,\n autoComplete: '',\n customValue: false,\n autoFocus: false,\n rows: 1\n};\n\nCustomInput.propTypes = {\n title: PropTypes.string,\n attr: PropTypes.string,\n type: PropTypes.string,\n style: PropTypes.object,\n native: PropTypes.object,\n onChange: PropTypes.func,\n component: PropTypes.object,\n styleComponentBlock: PropTypes.object\n};\n\nexport default CustomInput;","import { FormControl, FormHelperText, Input, MenuItem, Select } from '@mui/material';\nimport withStyles from '@mui/styles/withStyles';\nimport React, { useEffect, useState } from 'react';\nimport { I18n } from '@iobroker/adapter-react-v5';\nimport PropTypes from 'prop-types';\n\nconst SelectMod = withStyles({\n root: {\n margin: '10px 0',\n '& .MuiFormControl-marginNormal': {\n marginTop: 0,\n marginBottom: 0,\n },\n '& > *': {\n color: '#2d0440 !important'\n },\n '& .MuiSelect-icon': {\n color: '#81688c'\n },\n '& label.Mui-focused': {\n color: '#81688c',\n },\n '& .MuiInput-underline:after': {\n borderBottomColor: '#510573',\n },\n '& .MuiInput-underline:before': {\n borderBottomColor: '#81688c',\n },\n '& .MuiInput-underline:hover:before': {\n borderBottomColor: '#81688c',\n },\n },\n})(FormControl);\n\nconst CustomInstance = ({ multiple, value, customValue, socket, title, attr, adapter, style, onChange, className, onInstanceHide }) => {\n const [inputText, setInputText] = useState(value || 'test1');\n const [options, setOptions] = useState([]);\n\n useEffect(() => {\n socket && socket.getAdapterInstances(adapter)\n .then(instances => {\n const _options = instances.map(obj => ({value: obj._id.replace('system.adapter.', ''), title: obj._id.replace('system.adapter.', '')}));\n if (_options.length === 1) {\n onInstanceHide(_options[0].value);\n } else {\n _options.unshift({value: adapter, title: I18n.t('All')});\n }\n setOptions(_options);\n });\n }, [socket, adapter, onInstanceHide]);\n\n return <SelectMod\n className={className}\n fullWidth\n style={style}\n >\n <Select\n variant=\"standard\"\n value={(customValue ? value : inputText) || '_'}\n fullWidth\n multiple={multiple}\n renderValue={(selected) => multiple && selected.join ? selected.join(', ') : selected}\n onChange={e => {\n !customValue && setInputText(e.target.value);\n onChange(e.target.value);\n }}\n input={attr ? <Input name={attr} id={attr + '-helper'} /> : <Input name={attr} />}\n >\n {options.map(item =>\n <MenuItem style={{placeContent:'space-between'}} key={'key-' + item.value} value={item.value || '_'}>{I18n.t(item.title)}{item.title2 && <div>{item.title2}</div>}</MenuItem>)}\n </Select>\n <FormHelperText>{I18n.t(title)}</FormHelperText>\n </SelectMod>;\n}\n\nCustomInstance.defaultProps = {\n value: '',\n className: null,\n table: false,\n customValue: false\n};\n\nCustomInstance.propTypes = {\n title: PropTypes.string,\n socket: PropTypes.object,\n attr: PropTypes.string,\n adapter: PropTypes.string,\n style: PropTypes.object,\n onChange: PropTypes.func,\n};\n\nexport default CustomInstance;","// extracted by mini-css-extract-plugin\nexport default {\"modalContentWrapper\":\"style_modalContentWrapper__ewzzR\",\"modalButtonBlock\":\"style_modalButtonBlock__otBeq\",\"modalButtonBlockTwo\":\"style_modalButtonBlockTwo__bh8rw\",\"modalWrapper\":\"style_modalWrapper__VUeGq\",\"modalDialog\":\"style_modalDialog__MI8Ka\",\"close\":\"style_close__Z8qAY\"};","import React, {useState} from 'react';\nimport Button from '@mui/material/Button';\nimport { Dialog, DialogActions, DialogContent } from '@mui/material';\nimport PropTypes from 'prop-types';\nimport cls from './style.module.scss';\nimport i18n from '@iobroker/adapter-react-v5/i18n';\nimport CustomInput from \"../CustomInput\";\n\nconst CustomModal = ({ open, onClose, children, titleButtonApply, titleButtonClose, onApply, className, textInput, defaultValue}) => {\n let [value, setValue] = useState(defaultValue);\n\n return <Dialog\n open={open}\n maxWidth=\"md\"\n disableEscapeKeyDown={false}\n onClose={onClose}\n classes={{paper: cls.modalDialog, /*paper: classes.background*/}}\n className={cls.modalWrapper}\n >\n <DialogContent>\n {textInput && <CustomInput\n className={className}\n autoComplete=\"off\"\n fullWidth\n variant=\"outlined\"\n size=\"medium\"\n rows={10}\n multiline\n value={value}\n onChange={setValue}\n customValue\n />}\n {!textInput && children}\n </DialogContent>\n <DialogActions>\n <Button onClick={() => onApply(textInput ? value : null)} variant=\"contained\" color=\"primary\">\n {i18n.t(titleButtonApply)}\n </Button>\n <Button color=\"grey\" onClick={onClose} variant=\"contained\">\n {i18n.t(titleButtonClose)}\n </Button>\n </DialogActions>\n </Dialog>;\n}\n\nCustomModal.defaultProps = {\n open: false,\n onApply: () => { },\n onClose: () => { },\n titleButtonClose: 'Cancel',\n titleButtonApply: 'Ok'\n};\n\nCustomModal.propTypes = {\n open: PropTypes.bool,\n onClose: PropTypes.func,\n children: PropTypes.any,\n titleButtonClose: PropTypes.string,\n titleButtonApply: PropTypes.string,\n onApply: PropTypes.func\n};\n\nexport default CustomModal;","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"style_root__AZ3ER\"};","import React, { useState } from 'react';\nimport { FormControl, FormHelperText, Input, MenuItem, Select } from '@mui/material';\nimport PropTypes from 'prop-types';\n\nimport { I18n, Utils } from '@iobroker/adapter-react-v5';\n\nimport cls from './style.module.scss';\nimport CustomCheckbox from '../CustomCheckbox';\n\nconst CustomSelect = ({ multiple, value, customValue, title, attr, options, style, onChange, className, doNotTranslate, doNotTranslate2 }) => {\n const [inputText, setInputText] = useState(value === undefined ? options[0].value : value);\n\n const v = customValue ? value : inputText;\n const text = v === '' || v === null || v === undefined ? '_' : v;\n\n return <FormControl\n variant=\"standard\"\n className={Utils.clsx(cls.root, className)}\n fullWidth\n style={style}\n >\n <Select\n variant=\"standard\"\n value={text}\n fullWidth\n multiple={multiple}\n renderValue={selected => {\n if (multiple && selected.join) {\n // sort\n selected.sort();\n let pos = selected.indexOf('0');\n if (pos !== -1) {\n selected.splice(pos, 1);\n selected.push('0');\n }\n pos = selected.indexOf('_');\n if (pos !== -1) {\n selected.splice(pos, 1);\n selected.unshift('_');\n }\n\n const onlyItem = options.find(el => el.only);\n if (selected.includes(onlyItem.value)) {\n return onlyItem.titleShort ? (doNotTranslate ? onlyItem.titleShort : I18n.t(onlyItem.titleShort)) : (doNotTranslate ? onlyItem.title : I18n.t(onlyItem.title))\n }\n\n const titles = selected\n .map(sel => options.find(item => item.value === sel || (sel === '_' && item.value === '')) || sel)\n .map(item => typeof item === 'object' ? (item.titleShort ? (doNotTranslate ? item.titleShort : I18n.t(item.titleShort)) : (doNotTranslate ? item.title : I18n.t(item.title))) : (doNotTranslate ? item : I18n.t(item)));\n\n return titles.join(', ');\n } else {\n const item = options ? options.find(item => item.value === selected || (selected === '_' && item.value === '')) : null;\n return item?.title ? (doNotTranslate ? item?.title : I18n.t(item?.title)) : selected;\n }\n }}\n onChange={e => {\n !customValue && setInputText(e.target.value);\n if (multiple) {\n const onlyItem = options.find(el => el.only);\n if (onlyItem) {\n const valueOnly = onlyItem.value;\n if (e.target.value.length === options.length - 1 && e.target.value.includes(valueOnly)) {\n return onChange(e.target.value.filter(el => el !== valueOnly), attr);\n }\n if (e.target.value.includes(valueOnly)) {\n return onChange(options.map(el => el.value), attr);\n }\n }\n }\n onChange(e.target.value, attr);\n }}\n input={attr ? <Input name={attr} id={`${attr}-helper`} /> : <Input name={attr} />}\n >\n {!multiple && options && options.map(item => <MenuItem style={{ placeContent: 'space-between' }} key={`key-${item.value}`} value={item.value === '' || item.value === null || item.value === undefined ? '_' : item.value}>{doNotTranslate ? item.title : I18n.t(item.title)}{item.title2 && <div>{doNotTranslate2 ? item.title2 : I18n.t(item.title2)}</div>}</MenuItem>)}\n {multiple && options && options.map(item => <MenuItem style={{ placeContent: 'space-between' }} key={`key-${item.value}`} value={item.value || '_'}>{doNotTranslate ? item.title : I18n.t(item.title)} <CustomCheckbox customValue value={value.includes(item.value)} /></MenuItem>)}\n </Select>\n {title ? <FormHelperText>{I18n.t(title)}</FormHelperText> : null}\n </FormControl>;\n}\n\nCustomSelect.defaultProps = {\n value: '',\n className: null,\n table: false,\n customValue: false,\n multiple: false\n};\n\nCustomSelect.propTypes = {\n title: PropTypes.string,\n attr: PropTypes.string,\n options: PropTypes.array.isRequired,\n style: PropTypes.object,\n onChange: PropTypes.func\n};\n\nexport default CustomSelect;","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"style_root__BGOBc\",\"mark\":\"style_mark__MLqoT\"};","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Slider } from '@mui/material';\n\nimport { Utils } from '@iobroker/adapter-react-v5';\n\nimport cls from './style.module.scss';\n\nconst CustomSlider = ({ fullWidth, autoComplete, label, error, size, variant, value, type, style, onChange, className, customValue, min, max, step, unit }) => {\n const [inputText, setInputText] = useState(0);\n min = min !== undefined ? min : 0;\n max = max !== undefined ? max : 0;\n step = step !== undefined ? step : (max - min) / 100;\n\n const marks = [\n {\n value: min,\n label: min + (unit || ''),\n },\n {\n value: max,\n label: max + (unit || ''),\n },\n ];\n\n return <Slider\n defaultValue={customValue ? value : inputText}\n // getAriaValueText={customValue ? value : inputText}\n aria-labelledby=\"discrete-slider\"\n valueLabelDisplay=\"auto\"\n classes={{mark: cls.mark}}\n marks={marks}\n step={step}\n min={min}\n max={max}\n error={error || ''}\n //fullWidth={fullWidth}\n label={label}\n variant={variant}\n value={customValue ? value : inputText}\n type={type}\n //helperText={error || ''}\n style={style}\n className={Utils.clsx(cls.root, className)}\n autoComplete={autoComplete}\n onChange={(e, newValue) => {\n !customValue && setInputText(newValue);\n onChange(newValue);\n }}\n margin=\"normal\"\n size={size}\n />;\n}\n\nCustomSlider.defaultProps = {\n value: '',\n type: 'text',\n error: '',\n className: null,\n table: false,\n native: {},\n variant: 'standard',\n size: 'medium',\n component: null,\n styleComponentBlock: null,\n onChange: () => { },\n fullWidth: false,\n autoComplete: '',\n customValue: false\n};\n\nCustomSlider.propTypes = {\n title: PropTypes.string,\n attr: PropTypes.string,\n type: PropTypes.string,\n style: PropTypes.object,\n native: PropTypes.object,\n onChange: PropTypes.func,\n component: PropTypes.object,\n styleComponentBlock: PropTypes.object\n};\n\nexport default CustomSlider;","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"style_root__anA9+\"};","import { FormControlLabel, Switch } from '@mui/material';\nimport React, { memo, useState } from 'react';\n// import { I18n } from '@iobroker/adapter-react-v5';\nimport PropTypes from 'prop-types';\nimport cls from './style.module.scss';\n\nconst CustomSwitch = ({ label, size, value, style, onChange, className, customValue }) => {\n const [switchChecked, setSwitchChecked] = useState(false);\n return <FormControlLabel\n className={cls.root}\n control={<Switch\n checked={customValue ? value : switchChecked}\n style={style}\n className={className}\n onChange={e => {\n if (!customValue) setSwitchChecked(e.target.checked);\n onChange(e.target.checked);\n }}\n size={size}\n />\n }\n label={label}\n />;\n}\n\nCustomSwitch.defaultProps = {\n value: false,\n type: 'text',\n error: '',\n className: null,\n table: false,\n native: {},\n variant: 'standard',\n size: 'medium',\n component: null,\n styleComponentBlock: null,\n onChange: () => { },\n fullWidth: false,\n autoComplete: '',\n customValue: false,\n label: 'all'\n};\n\nCustomSwitch.propTypes = {\n title: PropTypes.string,\n attr: PropTypes.string,\n type: PropTypes.string,\n style: PropTypes.object,\n native: PropTypes.object,\n onChange: PropTypes.func,\n component: PropTypes.object,\n styleComponentBlock: PropTypes.object\n};\n\nexport default memo(CustomSwitch);","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"style_root__xyxno\"};","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { TextField } from '@mui/material';\n\nimport { Utils } from '@iobroker/adapter-react-v5';\n\nimport cls from './style.module.scss';\n\nconst CustomTime = ({ value, style, onChange, className }) => {\n return <TextField\n variant=\"standard\"\n id=\"time\"\n type=\"time\"\n onChange={(e) => onChange(e.currentTarget.value)}\n value={value}\n className={Utils.clsx(cls.root, className)}\n fullWidth\n style={style}\n InputLabelProps={{\n shrink: true,\n }}\n inputProps={{\n step: 300, // 5 min\n }}\n />;\n}\n\nCustomTime.defaultProps = {\n value: '',\n className: null,\n table: false\n};\n\nCustomTime.propTypes = {\n title: PropTypes.string,\n attr: PropTypes.string,\n style: PropTypes.object,\n onChange: PropTypes.func\n};\n\nexport default CustomTime;","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"style_root__FwemI\"};","import React from 'react';\nimport { FormControl, MenuItem, Select } from '@mui/material';\nimport PropTypes from 'prop-types';\n\nimport { I18n, Utils } from '@iobroker/adapter-react-v5';\n\nimport cls from './style.module.scss';\n\nconst DAYS = [\n 31, // 1\n 29, // 2\n 31, // 3\n 30, // 4\n 31, // 5\n 30, // 6\n 31, // 7\n 31, // 8\n 30, // 9\n 31, // 10\n 30, // 11\n 31 // 12\n];\n\nconst CustomDate = ({ value, onChange, className, title, style }) => {\n let [month, date] = (value || '01.01').toString().split('.');\n date = parseInt(date, 10) || 0;\n month = parseInt(month, 10) || 0;\n if (month > 12) {\n month = 12;\n } else if (month < 0) {\n month = 0;\n }\n\n if (date > DAYS[month]) {\n date = DAYS[month];\n } else if (date < 0) {\n date = 0;\n }\n\n let days = [];\n for (let i = 0; i < DAYS[month]; i++) {\n days.push(i + 1);\n }\n\n return <div>\n <FormControl\n variant=\"standard\"\n className={Utils.clsx(cls.root, className)}\n style={style}\n >\n <Select\n variant=\"standard\"\n className={Utils.clsx(cls.root, className)}\n margin=\"dense\"\n label={I18n.t('Month')}\n onChange={e =>\n onChange(`${e.target.value.toString().padStart(2, '0')}.${date.toString().padStart(2, '0')}`)}\n value={month}\n >\n <MenuItem style={{ placeContent: 'space-between' }} key={0} value={0}>{I18n.t('Any month')}</MenuItem>\n <MenuItem style={{ placeContent: 'space-between' }} key={1} value={1}>{I18n.t('January')}</MenuItem>\n <MenuItem style={{ placeContent: 'space-between' }} key={2} value={2}>{I18n.t('February')}</MenuItem>\n <MenuItem style={{ placeContent: 'space-between' }} key={3} value={3}>{I18n.t('March')}</MenuItem>\n <MenuItem style={{ placeContent: 'space-between' }} key={4} value={4}>{I18n.t('April')}</MenuItem>\n <MenuItem style={{ placeContent: 'space-between' }} key={5} value={5}>{I18n.t('May')}</MenuItem>\n <MenuItem style={{ placeContent: 'space-between' }} key={6} value={6}>{I18n.t('June')}</MenuItem>\n <MenuItem style={{ placeContent: 'space-between' }} key={7} value={7}>{I18n.t('July')}</MenuItem>\n <MenuItem style={{ placeContent: 'space-between' }} key={8} value={8}>{I18n.t('August')}</MenuItem>\n <MenuItem style={{ placeContent: 'space-between' }} key={9} value={9}>{I18n.t('September')}</MenuItem>\n <MenuItem style={{ placeContent: 'space-between' }} key={10} value={10}>{I18n.t('October')}</MenuItem>\n <MenuItem style={{ placeContent: 'space-between' }} key={11} value={11}>{I18n.t('November')}</MenuItem>\n <MenuItem style={{ placeContent: 'space-between' }} key={12} value={12}>{I18n.t('December')}</MenuItem>\n </Select>\n </FormControl>\n <FormControl\n variant=\"standard\"\n className={Utils.clsx(cls.root, className)}\n style={style}\n >\n <Select\n variant=\"standard\"\n className={Utils.clsx(cls.root, className)}\n margin=\"dense\"\n label={I18n.t('Date')}\n onChange={e =>\n onChange(`${month.toString().padStart(2, '0')}.${e.target.value.toString().padStart(2, '0')}`)}\n value={date}\n >\n <MenuItem style={{ placeContent: 'space-between' }} key={'A'} value={0}>{I18n.t('Any')}</MenuItem>\n {days.map(i => <MenuItem style={{ placeContent: 'space-between' }} key={i} value={i}>{i}</MenuItem>)}\n </Select>\n </FormControl>\n </div>;\n}\n\nCustomDate.defaultProps = {\n value: '',\n className: null,\n};\n\nCustomDate.propTypes = {\n title: PropTypes.string,\n attr: PropTypes.string,\n style: PropTypes.object,\n onChange: PropTypes.func\n};\n\nexport default CustomDate;","import { I18n } from '@iobroker/adapter-react-v5';\n\nlet lang;\nconst getName = obj => {\n lang = lang || I18n.getLanguage();\n if (typeof obj === 'object') {\n return obj[lang] || obj.en;\n } else {\n return obj;\n }\n};\n\nconst utils = {\n getName\n};\n\nexport default utils;","const STEPS = {\n selectTriggers: 0,\n addScheduleByDoubleClick: 1,\n openTagsMenu: 2,\n selectIntervalTag: 3,\n selectActions: 4,\n addActionPrintText: 5,\n showJavascript: 6,\n switchBackToRules: 7,\n saveTheScript: 8,\n};\n\nconst steps = [\n { // 0\n selector: '.blocks-triggers',\n content: 'Select triggers',\n },\n { // 1\n selector: '.block-TriggerScheduleBlock',\n content: 'Double click to add the block',\n },\n { // 2\n selector: '.tag-card',\n content: 'Open drop down menu',\n },\n { // 3\n selector: '.tag-card-interval',\n content: 'Select interval',\n },\n { // 4\n selector: '.blocks-actions',\n content: 'Select action blocks',\n },\n { // 5\n selector: '.block-ActionPrintText',\n content: 'Double click to add the block',\n },\n { // 6\n selector: '.button-js-code',\n content: 'Check the script',\n },\n { // 7\n selector: '.button-js-code',\n content: 'Switch back to rules',\n },\n { // 8\n selector: '.button-save',\n content: 'Save the script',\n }\n];\n\nexport {STEPS};\n\nexport default steps;","import React, { PureComponent, Fragment } from 'react';\nimport cls from './style.module.scss';\n\nimport { Menu, MenuItem } from '@mui/material';\nimport IconButton from '@mui/material/IconButton';\nimport IconHelp from '@mui/icons-material/HelpOutline';\n\nimport DialogSelectID from '@iobroker/adapter-react-v5/Dialogs/SelectID';\nimport DialogError from '@iobroker/adapter-react-v5/Dialogs/Error';\nimport DialogMessage from '@iobroker/adapter-react-v5/Dialogs/Message';\nimport { getSelectIdIcon } from '@iobroker/adapter-react-v5/Components/Icon';\nimport { I18n, Utils } from '@iobroker/adapter-react-v5';\n\n\nimport CustomButton from '../CustomButton';\nimport CustomCheckbox from '../CustomCheckbox';\nimport CustomInput from '../CustomInput';\nimport CustomInstance from '../CustomInstance';\nimport CustomModal from '../CustomModal';\nimport CustomSelect from '../CustomSelect';\nimport CustomSlider from '../CustomSlider';\nimport CustomSwitch from '../CustomSwitch';\nimport CustomTime from '../CustomTime';\nimport CustomDate from '../CustomDate';\n\nimport MaterialDynamicIcon from '../../helpers/MaterialDynamicIcon';\nimport utils from '../../helpers/utils';\nimport { STEPS } from '../../helpers/Tour';\n\nclass GenericBlock extends PureComponent {\n constructor(props, item) {\n super(props);\n item = item || {};\n let settings = props.settings || {\n tagCard: item.tagCardArray ? typeof item.tagCardArray[0] !== 'string' ? item.tagCardArray[0].title : item.tagCardArray[0] : '',\n };\n\n if (!settings.tagCard && item.tagCardArray) {\n settings.tagCard = typeof item.tagCardArray[0] !== 'string' ? item.tagCardArray[0].title : item.tagCardArray[0];\n }\n\n this.state = {\n inputs: item.inputs || props.inputs || [],\n name: item.name || props.name || '',\n icon: item.icon || props.icon || '',\n adapter: item.adapter || props.adapter || '',\n helpDialog: item.helpDialog || props.helpDialog || '',\n\n tagCardArray: item.tagCardArray || [],\n\n openTagMenu: false,\n openModal: false,\n iconTag: false,\n error: '',\n helpText: '',\n\n oid: {},\n instanceSelectionOptions: [],\n instanceSelectionDef: '',\n\n hideAttributes: [], // e.g. instance\n\n settings,\n debugMessage: null,\n enableSimulation: this.props.enableSimulation,\n };\n\n this.debugHideTimeout = null;\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (!nextProps || !nextProps.settings) {\n console.log(JSON.stringify(nextProps));\n return;\n }\n\n const settings = JSON.parse(JSON.stringify(nextProps.settings));\n if (!settings.tagCard && this.state.tagCardArray && this.state.tagCardArray.length) {\n settings.tagCard = typeof this.state.tagCardArray[0] !== 'string' ? this.state.tagCardArray[0].title : this.state.tagCardArray[0];\n }\n\n let newState = null;\n\n if (nextProps.onDebugMessage && nextProps.onDebugMessage.blockId === this.props._id) {\n newState = {};\n newState.debugMessage = JSON.parse(JSON.stringify(nextProps.onDebugMessage));\n this.debugHideTimeout && clearTimeout(this.debugHideTimeout);\n this.debugHideTimeout = setTimeout(() =>\n this.setState({ debugMessage: null }),\n nextProps.onDebugMessage.hideTimeout || 5000);\n }\n\n if (JSON.stringify(settings) !== JSON.stringify(this.state.settings)) {\n newState = newState || {};\n newState.settings = settings;\n }\n\n if (this.state.enableSimulation !== nextProps.enableSimulation) {\n newState = newState || {};\n newState.enableSimulation = nextProps.enableSimulation;\n }\n\n newState && this.setState(newState);\n }\n\n componentWillUnmount() {\n this.debugHideTimeout && clearTimeout(this.debugHideTimeout);\n this.debugHideTimeout = null;\n }\n\n // called every time, the tagCard changes or at start\n onTagChange(tagCard, cb) {\n // analyse inputs and fill the attributes with default values\n let changed = false;\n let settings = JSON.parse(JSON.stringify(this.state.settings));\n this.state.inputs.forEach(input => {\n if (input.attr && input.defaultValue !== undefined) {\n if (settings[input.attr] === undefined) {\n changed = true;\n settings[input.attr] = input.defaultValue;\n }\n }\n });\n if (changed) {\n this.setState({ settings }, () => cb && cb());\n this.props.onChange(settings);\n } else {\n cb && cb();\n }\n }\n\n // called if trigger added or removed\n onUpdate() {\n // do nothing, but blocks can overwrite it\n }\n\n // called every time if some attribute changes\n onValueChanged(value, attr) {\n // do nothing, but blocks can overwrite it\n }\n\n renderText = (input, value, onChange) => {\n const { className } = this.props;\n const { attr, frontText, backText, nameBlock, name, doNotTranslate, doNotTranslateBack } = input;\n return <Fragment key={attr}>\n <div className={Utils.clsx(cls.displayFlex, cls.blockMarginTop)}>\n {frontText && <div className={cls.frontText}>{doNotTranslate ? frontText : I18n.t(frontText)}</div>}\n <CustomInput\n className={className}\n autoComplete=\"off\"\n label={utils.getName(name)}\n variant=\"outlined\"\n size=\"small\"\n fullWidth\n value={value}\n onChange={onChange}\n customValue\n />\n {backText && <div className={cls.backText}>{doNotTranslateBack ? backText : I18n.t(backText)}</div>}\n </div>\n {nameBlock && <div className={cls.nameBlock}>{I18n.t(nameBlock)}</div>}\n </Fragment>;\n }\n\n renderSwitch = (input, value, onChange) => {\n const { className } = this.props;\n const { attr, frontText, backText, nameBlock, doNotTranslate, doNotTranslateBack } = input;\n return <div key={attr}>\n <div className={Utils.clsx(cls.displayFlex, cls.blockMarginTop)}>\n {frontText && <div className={cls.frontText}>{doNotTranslate ? frontText : I18n.t(frontText)}</div>}\n <CustomSwitch\n className={className}\n label=''\n customValue\n value={value}\n onChange={onChange}\n />\n {backText && <div className={cls.backText}>{doNotTranslateBack ? backText : I18n.t(backText)}</div>}\n </div>\n {nameBlock && <div className={cls.nameBlock}>{I18n.t(nameBlock)}</div>}\n </div>;\n }\n\n renderNameText = ({ attr, signature, doNotTranslate, defaultValue }, value) => <div\n className={Utils.clsx(!!signature ? cls.displayItalic : cls.displayFlex, cls.blockMarginTop)}\n key={attr}>\n {value ? (doNotTranslate ? value : I18n.t(value)) : (doNotTranslate ? defaultValue : I18n.t(defaultValue))}\n </div>;\n\n renderNumber = (input, value, onChange) => {\n const { className } = this.props;\n const { settings } = this.state;\n const { attr, backText, frontText, openCheckbox, doNotTranslate, doNotTranslateBack } = input;\n let visibility = true;\n if (openCheckbox) {\n visibility = typeof settings['offset'] === 'boolean' ? settings['offset'] : true;\n }\n return visibility ? <div key={attr} className={Utils.clsx(cls.displayFlex, cls.blockMarginTop)}>\n {frontText && <div className={cls.frontText}>{doNotTranslate ? frontText : I18n.t(frontText)}</div>}\n <CustomInput\n className={Utils.clsx(className, input.className)}\n fullWidth\n autoComplete=\"off\"\n label={input.noHelperText ? '' : 'number'}\n variant=\"outlined\"\n size=\"small\"\n type=\"number\"\n value={value}\n onChange={onChange}\n customValue\n />\n {backText && <div className={cls.backText}>{doNotTranslateBack ? backText : I18n.t(backText)}</div>}\n </div> : null;\n }\n\n renderColor = (input, value, onChange) => {\n const { className } = this.props;\n const { attr, backText, frontText, doNotTranslate, doNotTranslateBack } = input;\n return <div key={attr} className={Utils.clsx(cls.displayFlex, cls.blockMarginTop)}>\n {frontText && <div className={cls.frontText}>{doNotTranslate ? frontText : I18n.t(frontText)}</div>}\n <CustomInput\n className={className}\n autoComplete=\"off\"\n fullWidth\n variant=\"outlined\"\n size=\"small\"\n type=\"color\"\n value={value}\n onChange={onChange}\n />\n {backText && <div className={cls.backText}>{doNotTranslateBack ? backText : I18n.t(backText)}</div>}\n </div>;\n }\n\n renderCheckbox = (input, value, onChange) => {\n const { className } = this.props;\n const { settings } = this.state;\n const { attr, backText, frontText, defaultValue, doNotTranslate, doNotTranslateBack } = input;\n return <div key={attr} className={cls.displayFlex}>\n {frontText && <div className={cls.frontText}>{doNotTranslate ? frontText : I18n.t(frontText)}</div>}\n <CustomCheckbox\n className={className}\n size=\"small\"\n style={{ marginRight: 5 }}\n value={typeof settings[attr] === 'boolean' ? settings[attr] : defaultValue}\n customValue\n onChange={onChange}\n />\n {backText && <div onClick={() => onChange(typeof settings[attr] === 'boolean' ? !settings[attr] : !defaultValue)} className={cls.backText}>{doNotTranslateBack ? backText : I18n.t(backText)}</div>}\n </div>;\n }\n\n renderSlider = (input, value, onChange) => {\n const { className } = this.props;\n const { attr, frontText, backText, nameBlock, min, max, step, unit, doNotTranslate, doNotTranslateBack } = input;\n return <div key={attr}>\n <div className={cls.displayFlex} style={{ marginRight: 20 }}>\n {frontText && <div className={cls.frontText}>{doNotTranslate ? frontText : I18n.t(frontText)}</div>}\n <CustomSlider\n customValue\n min={min}\n max={max}\n step={step}\n unit={unit}\n className={className}\n autoComplete=\"off\"\n label=\"number\"\n variant=\"outlined\"\n size=\"small\"\n value={value}\n onChange={val => {\n console.log(val);\n onChange(val);\n }}\n />\n {backText && <div style={{ marginLeft: 20 }} className={cls.backText}>{doNotTranslateBack ? backText : I18n.t(backText)}</div>}\n </div>\n {nameBlock && <div className={cls.nameBlock}>{I18n.t(nameBlock)}</div>}\n </div>;\n }\n\n renderButton = (input, value, onClick) => {\n const { className } = this.props;\n const { attr, frontText, backText, buttonText, doNotTranslate, doNotTranslateBack } = input;\n return <div key={attr} className={Utils.clsx(cls.displayFlex, cls.blockMarginTop)}>\n {frontText && <div className={cls.frontText}>{doNotTranslate ? frontText : I18n.t(frontText)}</div>}\n <CustomButton\n label={buttonText}\n fullWidth\n value={value}\n className={className}\n onClick={onClick}\n />\n {backText && <div className={cls.backText}>{doNotTranslateBack ? backText : I18n.t(backText)}</div>}\n </div>;\n }\n\n findIcon = obj => {\n if (!obj) {\n return Promise.resolve(null);\n } else\n if (obj.common?.icon) {\n return Promise.resolve(getSelectIdIcon(obj, '../..'));\n } else if (obj.type === 'state' || obj.type === 'channel') {\n const parts = obj._id.split('.');\n parts.pop();\n const newId = parts.join('.');\n return this.props.socket.getObject(newId)\n .then(obj => this.findIcon(obj))\n .catch(() => null);\n }\n }\n\n renderObjectID = (input, value, onChange) => {\n const { attr, openCheckbox, checkReadOnly } = input;\n const { settings } = this.state;\n const showSelectId = this.state[`showSelectId${attr}`];\n const { className, socket } = this.props;\n let visibility = true;\n if (openCheckbox) {\n visibility = typeof settings['offset'] === 'boolean' ? settings['offset'] : true;\n }\n\n if (settings[attr] && !this.state[settings[attr]]) {\n setTimeout(() => {\n socket.getObject(value)\n .then(obj => {\n this.findIcon(obj)\n .then(icon => this.setState({\n [settings[attr]]: obj,\n [`${settings[attr]}___icon`]: icon,\n error: checkReadOnly && this.lastObjectIdChange && Date.now() - this.lastObjectIdChange < 1000 && obj?.common?.write === false ?\n I18n.t('Read only ID selected: %s', settings[attr]) : '',\n }))\n });\n }, 0);\n }\n\n // return null\n return visibility ? <div className={cls.blockMarginTop} key={attr}>\n <div className={cls.displayFlex}>\n {input.title ? <div>{I18n.t(input.title)}</div> : null}\n <CustomInput\n className={className}\n autoComplete=\"off\"\n fullWidth\n disabled\n variant=\"outlined\"\n size=\"small\"\n value={value}\n customValue\n />\n <CustomButton\n icon={this.state[`${this.state.settings[input.attr]}___icon`]}\n square\n style={{ marginLeft: 7 }}\n value='...'\n className={className}\n onClick={() => {\n const settings = {};\n settings[`showSelectId${attr}`] = true;\n this.setState(settings);\n }}\n />\n </div>\n {this.state[this.state.settings[input.attr]] && <div className={Utils.clsx(cls.nameBlock, cls.displayItalic)}>{Utils.getObjectNameFromObj(this.state[settings[attr]], I18n.getLanguage())}</div>}\n {showSelectId ? <DialogSelectID\n imagePrefix=\"../..\"\n dialogName=\"javascript\"\n themeType={Utils.getThemeName()}\n socket={socket}\n statesOnly\n selected={value}\n onClose={() => {\n const settings = {};\n settings[`showSelectId${attr}`] = false;\n this.setState(settings);\n }}\n onOk={(selected, name, common) => {\n const settings = {};\n settings[`showSelectId${attr}`] = false;\n this.setState(settings, () =>\n // read type of object\n socket.getObject(selected)\n .then(obj => {\n this.lastObjectIdChange = Date.now();\n onChange({\n [attr]: selected,\n [`${attr}Role`]: obj.common.role,\n [`${attr}Type`]: obj.common.type,\n [`${attr}Unit`]: obj.common.unit,\n [`${attr}States`]: obj.common.states,\n [`${attr}Min`]: obj.common.min,\n [`${attr}Max`]: obj.common.max,\n [`${attr}Step`]: obj.common.step,\n [`${attr}Def`]: obj.common.def,\n [`${attr}Write`]: obj.common.write,\n [`${attr}Read`]: obj.common.read,\n }, null, () =>\n this.props.setOnUpdate && this.props.setOnUpdate(true))\n }))}\n }\n /> : null}\n </div> : null;\n }\n\n renderIconTag = () => {\n return <div\n className={cls.iconTag}\n onClick={e => {\n if (this.state.settings.tagCard) {\n if (this.state.tagCardArray.length < 3) {\n this.onChangeTag();\n } else {\n this.setState({ openTagMenu: e.currentTarget })\n }\n }\n }}>\n {this.state.settings.tagCard}\n </div>;\n }\n\n renderTime = (input, value, onChange) => {\n const { attr, backText, frontText, doNotTranslate, doNotTranslateBack } = input\n return <div key={attr} className={cls.displayFlex} style={{ whiteSpace: 'nowrap' }}>\n {frontText && <div className={cls.frontText}>{doNotTranslate ? frontText : I18n.t(frontText)}</div>}\n <CustomTime\n value={value}\n onChange={onChange}\n />\n {backText && <div className={cls.backText}>{doNotTranslateBack ? backText : I18n.t(backText)}</div>}\n </div>;\n };\n\n renderSelect = (input, value, onChange) => {\n const { className } = this.props;\n const { name, options, frontText, backText, attr, multiple, doNotTranslate, doNotTranslate2, doNotTranslateBack } = input;\n return <div key={attr} className={Utils.clsx(cls.displayFlex, cls.blockMarginTop)} style={{ whiteSpace: 'nowrap' }}>\n {frontText && <div className={cls.frontText}>{I18n.t(frontText)}</div>}\n <CustomSelect\n attr={attr}\n doNotTranslate={doNotTranslate}\n doNotTranslate2={doNotTranslate2}\n title={name}\n className={className}\n options={options}\n value={value}\n onChange={onChange}\n multiple={multiple}\n customValue\n />\n {backText && <div className={cls.backText}>{doNotTranslateBack ? backText : I18n.t(backText)}</div>}\n </div>;\n };\n\n renderInstance = (input, value, onChange) => {\n const { className, socket } = this.props;\n const { name, options, frontText, backText, attr, adapter, doNotTranslate, doNotTranslateBack } = input;\n if (this.state.hideAttributes.includes(attr)) {\n return null;\n }\n return <div key={attr} className={Utils.clsx(cls.displayFlex, cls.blockMarginTop)} style={{ whiteSpace: 'nowrap' }}>\n {frontText && <div className={cls.frontText}>{doNotTranslate ? frontText : I18n.t(frontText)}</div>}\n <CustomInstance\n attr={attr}\n socket={socket}\n adapter={adapter}\n title={name}\n className={className}\n options={options}\n value={value}\n onChange={onChange}\n customValue\n onInstanceHide={value => this.setState({ hideAttributes: [...this.state.hideAttributes, attr] }, () => onChange(value))} // hide instance if only exactly one exists\n />\n {backText && <div className={cls.backText}>{doNotTranslateBack ? backText : I18n.t(backText)}</div>}\n </div>;\n }\n\n renderDialog = (input, value, onChange) => {\n const { onShowDialog, frontText, backText, attr, icon, doNotTranslate, doNotTranslateBack } = input;\n return <div key={attr} className={Utils.clsx(cls.displayFlex, cls.blockMarginTop)} style={{ whiteSpace: 'nowrap' }}>\n {frontText && <div className={cls.frontText}>{doNotTranslate ? frontText : I18n.t(frontText)}</div>}\n <MaterialDynamicIcon\n iconName={icon}\n className={Utils.clsx(cls.iconDialog)}\n onClick={e => onShowDialog && onShowDialog()}\n />\n {backText && <div className={cls.backText}>{doNotTranslateBack ? backText : I18n.t(backText)}</div>}\n </div>;\n }\n\n renderModalInput = (input, value, onChange) => {\n const { openModal } = this.state;\n const { className } = this.props;\n const { attr, nameBlock, frontText, backText, noTextEdit, doNotTranslate, doNotTranslateBack} = input;\n return <div key={attr}>\n <div className={Utils.clsx(cls.displayFlex, cls.blockMarginTop)}>\n {frontText && <div className={cls.frontText}>{doNotTranslate ? frontText : I18n.t(frontText)}</div>}\n <CustomInput\n disabled={!!noTextEdit}\n className={className}\n autoComplete=\"off\"\n fullWidth\n variant=\"outlined\"\n size=\"small\"\n value={value}\n onChange={onChange}\n customValue\n />\n <CustomButton\n square\n // fullWidth\n style={{ marginLeft: 5 }}\n value='...'\n className={className}\n onClick={() => this.setState({ openModal: true })}\n />\n {backText && <div className={cls.backText}>{doNotTranslateBack ? backText : I18n.t(backText)}</div>}\n </div>\n {openModal ? <CustomModal\n open\n onApply={val =>\n this.setState({ openModal: false }, () =>\n val !== null && val !== undefined && onChange(val))}\n onClose={() => this.setState({ openModal: false })}\n defaultValue={value}\n textInput\n /> : null}\n {nameBlock && <div className={cls.nameBlock}>{I18n.t(nameBlock)}</div>}\n </div>;\n };\n\n renderDate = (input, value, onChange) => {\n const { attr, backText, frontText, doNotTranslate, doNotTranslateBack } = input\n return <div key={attr} className={cls.displayFlex} style={{ whiteSpace: 'nowrap' }}>\n {frontText && <div className={cls.frontText}>{doNotTranslate ? frontText : I18n.t(frontText)}</div>}\n <CustomDate\n value={value}\n onChange={onChange}\n />\n {backText && <div className={cls.backText}>{doNotTranslateBack ? backText : I18n.t(backText)}</div>}\n </div>;\n };\n\n static getReplacesInText(context) {\n let value = '';\n if (context.trigger?.oidType) {\n value = '.replace(/%s/g, obj.state.val).replace(/%id/g, obj.id).replace(/%name/g, obj.common && obj.common.name).replace(/%old/g, obj.oldState.val)';\n } else if (context.conditionsStates.length) {\n value = `.replace(/%s/g, ${context.conditionsStates[0].name}).replace(/%id/g, \"${context.conditionsStates[0].id}\")`;\n }\n return value;\n }\n\n /////////////////////////////\n renderTags = () => {\n let { tagCardArray, openTagMenu } = this.state;\n let { tagCard } = this.state.settings;\n let result = tagCard !== '=' && tagCard !== '<>' && tagCard !== '>=' && tagCard !== '()' && tagCard !== '.' && tagCard !== '<=' && tagCard !== '<' && tagCard !== '>' ? I18n.t(tagCard) : tagCard;\n if (tagCardArray.length >= 3) {\n result = <div>\n <div aria-controls=\"simple-menu\" aria-haspopup=\"true\"\n onClick={e => {\n this.setState({ openTagMenu: e.currentTarget }, () => {\n this.props.isTourOpen &&\n this.props.tourStep === STEPS.openTagsMenu &&\n setTimeout(() => this.props.setTourStep(STEPS.selectIntervalTag), 300);\n });\n }}>{result}</div>\n <Menu\n id=\"simple-menu\"\n anchorEl={openTagMenu}\n keepMounted\n open={Boolean(openTagMenu)}\n onClose={() => this.setState({ openTagMenu: null })}\n >\n {tagCardArray.map(el => {\n let tag = el;\n if (typeof el !== 'string') {\n tag = el.title;\n }\n return (\n <MenuItem\n key={tag}\n selected={tag === tagCard}\n className={'tag-card-' + tag}\n style={{ placeContent: 'space-between' }}\n onClick={() => {\n const settings = { ...this.state.settings, tagCard: tag };\n this.setState({ openTagMenu: null, settings }, () => {\n this.props.onChange(settings);\n this.onTagChange(tag);\n });\n (this.props.isTourOpen &&\n (this.props.tourStep === STEPS.openTagsMenu ||\n this.props.tourStep === STEPS.selectIntervalTag) &&\n tag === 'interval' &&\n setTimeout(() => this.props.setTourStep(STEPS.selectActions), 500));\n\n }}>{tag.search(/>|<|<>|<=|>=|=/) !== -1 ? tag : I18n.t(tag)}{typeof el !== 'string' && el.title2 && <div style={{ marginLeft: 4 }}>{I18n.t(el.title2)}</div>}\n </MenuItem>\n );\n })}\n </Menu>\n </div>;\n }\n\n return result;\n };\n\n onChangeTag = () => {\n const { tagCardArray, settings, settings: { tagCard } } = this.state;\n let newTagCardArray = [...tagCardArray]\n if (typeof newTagCardArray[0] !== 'string') {\n newTagCardArray = newTagCardArray.map(el => el.title);\n }\n\n if (tagCard && newTagCardArray.length < 3) {\n const newSettings = { ...settings };\n const newTagCard = newTagCardArray[(newTagCardArray.indexOf(tagCard) + 1) % newTagCardArray.length]\n newSettings.tagCard = newTagCard;\n this.setState({ settings: newSettings }, () => {\n this.props.onChange(newSettings);\n this.onTagChange(newTagCard);\n });\n }\n };\n\n componentDidMount = () => {\n this.onTagChange();\n // detect changes\n };\n\n componentDidUpdate = prevProps => {\n if (this.props.acceptedBy !== 'triggers' && this.props.onUpdate) {\n setTimeout(() => this.onUpdate(), 0);\n }\n }\n\n onChangeInput = attribute => {\n return (value, attr, cb) => {\n const settings = JSON.parse(JSON.stringify(this.state.settings));\n\n if (typeof value === 'object' && (!attr || typeof attr === 'function')) {\n Object.keys(value).forEach(_attr => settings[_attr] = value[_attr]);\n } else {\n settings[attr || attribute] = value;\n }\n settings.id = this.getData().id;\n settings._id = this.props._id;\n\n this.setState({ settings }, () => {\n this.onValueChanged(value, attr || attribute);\n this.props.onChange(settings);\n cb && cb();\n });\n }\n }\n\n renderSpecific() {\n return null; // it can be overloaded\n }\n\n renderDebugInfo() {\n if (this.state.debugMessage) {\n return <div className={cls.debugInfo} key={this.state.debugMessage.ts} style={{ opacity: 1, height: 22, bottom: -22 }}>\n {this.renderDebug ? this.renderDebug(this.state.debugMessage) : I18n.t('executed')}\n </div>;\n } else {\n return null;\n }\n }\n\n render = () => {\n const { inputs, name, icon, iconTag, settings, adapter, settings: { tagCard }, helpDialog } = this.state;\n const { socket, notFound } = this.props;\n\n return <Fragment>\n {iconTag ? this.renderIconTag() :\n <MaterialDynamicIcon\n iconName={icon}\n className={Utils.clsx(cls.iconThemCard, tagCard && this.state.tagCardArray.length && cls.iconThemCardSelectable)}\n adapter={adapter}\n socket={socket}\n onClick={e => {\n if (tagCard) {\n if (this.state.tagCardArray.length < 3) {\n this.onChangeTag();\n } else {\n this.setState({ openTagMenu: e.currentTarget })\n }\n }\n }}\n />}\n <div className={cls.blockName}>\n <span className={cls.nameCard}>\n {I18n.t(name)}\n {!!notFound ? I18n.t(`%s not found`, settings.id) : ''}\n {helpDialog ? <IconButton className={cls.iconHelp} size=\"small\" onClick={() => this.setState({ helpText: I18n.t(helpDialog) })}><IconHelp /></IconButton> : null}\n </span>\n {inputs.filter(({ nameRender }) => this[nameRender])\n .map(input => {\n const { nameRender, defaultValue, attr, options } = input;\n return this[nameRender](\n input,\n settings[attr] !== undefined ? settings[attr] : defaultValue,\n this.onChangeInput(attr),\n options || []\n );\n })}\n </div>\n {tagCard && <div className={cls.controlMenuTop} style={{ opacity: 1, height: 22, top: -22 }}>\n <div onClick={() => this.onChangeTag()} className={Utils.clsx(cls.tagCard, 'tag-card')}>{this.renderTags()}</div>\n </div>}\n {this.renderDebugInfo()}\n {this.state.error ? <DialogError title={I18n.t('Warning')} text={this.state.error} onClose={() => this.setState({ error: '' })} /> : null}\n {this.state.helpText ? <DialogMessage title={I18n.t('Instructions')} text={this.state.helpText} onClose={() => this.setState({ helpText: '' })} /> : null}\n {this.renderSpecific()}\n </Fragment>;\n };\n}\n\nexport default GenericBlock;","import GenericBlock from '../GenericBlock';\nimport { I18n } from '@iobroker/adapter-react-v5';\n\n// copied from https://github.com/ioBroker/ioBroker.sayit/blob/master/admin/blockly.js#L37\nconst sayitEngines = {\n 'en': { name: 'Google - English', engine: 'google', params: [] },\n 'de': { name: 'Google - Deutsch', engine: 'google', params: [] },\n 'ru': { name: 'Google - Русский', engine: 'google', params: [] },\n 'it': { name: 'Google - Italiano', engine: 'google', params: [] },\n 'es': { name: 'Google - Espaniol', engine: 'google', params: [] },\n 'fr': { name: 'Google - Français', engine: 'google', params: [] },\n 'ru_YA': { name: 'Yandex - Русский', engine: 'yandex', params: ['key', 'voice', 'emotion', 'ill', 'drunk', 'robot'], voice: ['jane', 'zahar'], emotion: ['none', 'good', 'neutral', 'evil', 'mixed'] },\n 'ru_YA_CLOUD': { name: 'Yandex Cloud - Русский', engine: 'yandexCloud', params: ['key', 'folderID', 'voice', 'emotion'], voice: ['alyss', 'oksana', 'jane', 'zahar'], emotion: [ 'good', 'neutral', 'evil'] },\n\n 'en-US': { name: 'PicoTTS - Englisch US', engine: 'PicoTTS', params: [] },\n 'en-GB': { name: 'PicoTTS - Englisch GB', engine: 'PicoTTS', params: [] },\n 'de-DE': { name: 'PicoTTS - Deutsch', engine: 'PicoTTS', params: [] },\n 'it-IT': { name: 'PicoTTS - Italiano', engine: 'PicoTTS', params: [] },\n 'es-ES': { name: 'PicoTTS - Espaniol', engine: 'PicoTTS', params: [] },\n 'fr-FR': { name: 'PicoTTS - Français', engine: 'PicoTTS', params: [] },\n\n 'ru-RU_CLOUD_Female': { gender: 'Female', engine: 'cloud', params: ['cloud'], language: 'ru-RU', ename: 'Tatyana', ssml: true, name: 'Cloud - Русский - Татьяна' },\n 'ru-RU_CLOUD_Male': { gender: 'Male', engine: 'cloud', params: ['cloud'], language: 'ru-RU', ename: 'Maxim', ssml: true, name: 'Cloud - Русский - Максим' },\n 'de-DE_CLOUD_Female': { gender: 'Female', engine: 'cloud', params: ['cloud'], language: 'de-DE', ename: 'Marlene', ssml: true, name: 'Cloud - Deutsch - Marlene' },\n 'de-DE_CLOUD_Male': { gender: 'Male', engine: 'cloud', params: ['cloud'], language: 'de-DE', ename: 'Hans', ssml: true, name: 'Cloud - Deutsch - Hans' },\n 'en-US_CLOUD_Female': { gender: 'Female', engine: 'cloud', params: ['cloud'], language: 'en-US', ename: 'Salli', ssml: true, name: 'Cloud - en-US - Female - Salli' },\n 'en-US_CLOUD_Male': { gender: 'Male', engine: 'cloud', params: ['cloud'], language: 'en-US', ename: 'Joey', ssml: true, name: 'Cloud - en-US - Male - Joey' },\n 'da-DK_CLOUD_Female': { gender: 'Female', engine: 'cloud', params: ['cloud'], language: 'da-DK', ename: 'Naja', ssml: true, name: 'Cloud - da-DK - Female - Naja' },\n 'da-DK_CLOUD_Male': { gender: 'Male', engine: 'cloud', params: ['cloud'], language: 'da-DK', ename: 'Mads', ssml: true, name: 'Cloud - da-DK - Male - Mads' },\n 'en-AU_CLOUD_Female': { gender: 'Female', engine: 'cloud', params: ['cloud'], language: 'en-AU', ename: 'Nicole', ssml: true, name: 'Cloud - en-AU - Female - Nicole' },\n 'en-AU_CLOUD_Male': { gender: 'Male', engine: 'cloud', params: ['cloud'], language: 'en-AU', ename: 'Russell', ssml: true, name: 'Cloud - en-AU - Male - Russell' },\n 'en-GB_CLOUD_Female_Amy': { gender: 'Female', engine: 'cloud', params: ['cloud'], language: 'en-GB', ename: 'Amy', ssml: true, name: 'Cloud - en-GB - Female - Amy' },\n 'en-GB_CLOUD_Male': { gender: 'Male', engine: 'cloud', params: ['cloud'], language: 'en-GB', ename: 'Brian', ssml: true, name: 'Cloud - en-GB - Male - Brian' },\n 'en-GB_CLOUD_Female_Emma': { gender: 'Female', engine: 'cloud', params: ['cloud'], language: 'en-GB', ename: 'Emma', ssml: true, name: 'Cloud - en-GB - Female - Emma' },\n 'en-GB-WLS_CLOUD_Female': { gender: 'Female', engine: 'cloud', params: ['cloud'], language: 'en-GB-WLS', ename: 'Gwyneth', ssml: true, name: 'Cloud - en-GB-WLS - Female - Gwyneth' },\n 'en-GB-WLS_CLOUD_Male': { gender: 'Male', engine: 'cloud', params: ['cloud'], language: 'en-GB-WLS', ename: 'Geraint', ssml: true, name: 'Cloud - en-GB-WLS - Male - Geraint' },\n 'cy-GB_CLOUD_Female': { gender: 'Female', engine: 'cloud', params: ['cloud'], language: 'cy-GB', ename: 'Gwyneth', ssml: true, name: 'Cloud - cy-GB - Female - Gwyneth' },\n 'cy-GB_CLOUD_Male': { gender: 'Male', engine: 'cloud', params: ['cloud'], language: 'cy-GB', ename: 'Geraint', ssml: true, name: 'Cloud - cy-GB - Male - Geraint' },\n 'en-IN_CLOUD_Female': { gender: 'Female', engine: 'cloud', params: ['cloud'], language: 'en-IN', ename: 'Raveena', ssml: true, name: 'Cloud - en-IN - Female - Raveena' },\n 'en-US_CLOUD_Male_Chipmunk':{ gender: 'Male', engine: 'cloud', params: ['cloud'], language: 'en-US', ename: 'Chipmunk', ssml: true, name: 'Cloud - en-US - Male - Chipmunk' },\n 'en-US_CLOUD_Male_Eric': { gender: 'Male', engine: 'cloud', params: ['cloud'], language: 'en-US', ename: 'Eric', ssml: true, name: 'Cloud - en-US - Male - Eric' },\n 'en-US_CLOUD_Female_Ivy': { gender: 'Female', engine: 'cloud', params: ['cloud'], language: 'en-US', ename: 'Ivy', ssml: true, name: 'Cloud - en-US - Female - Ivy' },\n 'en-US_CLOUD_Female_Jennifer': { gender: 'Female', engine: 'cloud', params: ['cloud'], language: 'en-US', ename: 'Jennifer', ssml: true, name: 'Cloud - en-US - Female - Jennifer' },\n 'en-US_CLOUD_Male_Justin': { gender: 'Male', engine: 'cloud', params: ['cloud'], language: 'en-US', ename: 'Justin', ssml: true, name: 'Cloud - en-US - Male - Justin' },\n 'en-US_CLOUD_Female_Kendra': { gender: 'Female', engine: 'cloud', params: ['cloud'], language: 'en-US', ename: 'Kendra', ssml: true, name: 'Cloud - en-US - Female - Kendra' },\n 'en-US_CLOUD_Female_Kimberly': { gender: 'Female', engine: 'cloud', params: ['cloud'], language: 'en-US', ename: 'Kimberly', ssml: true, name: 'Cloud - en-US - Female - Kimberly' },\n 'es-ES_CLOUD_Female': { gender: 'Female', engine: 'cloud', params: ['cloud'], language: 'es-ES', ename: 'Conchita', ssml: true, name: 'Cloud - es-ES - Female - Conchita' },\n 'es-ES_CLOUD_Male': { gender: 'Male', engine: 'cloud', params: ['cloud'], language: 'es-ES', ename: 'Enrique', ssml: true, name: 'Cloud - es-ES - Male - Enrique' },\n 'es-US_CLOUD_Female': { gender: 'Female', engine: 'cloud', params: ['cloud'], language: 'es-US', ename: 'Penelope', ssml: true, name: 'Cloud - es-US - Female - Penelope' },\n 'es-US_CLOUD_Male': { gender: 'Male', engine: 'cloud', params: ['cloud'], language: 'es-US', ename: 'Miguel', ssml: true, name: 'Cloud - es-US - Male - Miguel' },\n 'fr-CA_CLOUD_Female': { gender: 'Female', engine: 'cloud', params: ['cloud'], language: 'fr-CA', ename: 'Chantal', ssml: true, name: 'Cloud - fr-CA - Female - Chantal' },\n 'fr-FR_CLOUD_Female': { gender: 'Female', engine: 'cloud', params: ['cloud'], language: 'fr-FR', ename: 'Celine', ssml: true, name: 'Cloud - fr-FR - Female - Celine' },\n 'fr-FR_CLOUD_Male': { gender: 'Male', engine: 'cloud', params: ['cloud'], language: 'fr-FR', ename: 'Mathieu', ssml: true, name: 'Cloud - fr-FR - Male - Mathieu' },\n 'is-IS_CLOUD_Female': { gender: 'Female', engine: 'cloud', params: ['cloud'], language: 'is-IS', ename: 'Dora', ssml: true, name: 'Cloud - is-IS - Female - Dora' },\n 'is-IS_CLOUD_Male': { gender: 'Male', engine: 'cloud', params: ['cloud'], language: 'is-IS', ename: 'Karl', ssml: true, name: 'Cloud - is-IS - Male - Karl' },\n 'it-IT_CLOUD_Female': { gender: 'Female', engine: 'cloud', params: ['cloud'], language: 'it-IT', ename: 'Carla', ssml: true, name: 'Cloud - it-IT - Female - Carla' },\n 'it-IT_CLOUD_Male': { gender: 'Male', engine: 'cloud', params: ['cloud'], language: 'it-IT', ename: 'Giorgio', ssml: true, name: 'Cloud - it-IT - Male - Giorgio' },\n 'nb-NO_CLOUD_Female': { gender: 'Female', engine: 'cloud', params: ['cloud'], language: 'nb-NO', ename: 'Liv', ssml: true, name: 'Cloud - nb-NO - Female - Liv' },\n 'nl-NL_CLOUD_Female': { gender: 'Female', engine: 'cloud', params: ['cloud'], language: 'nl-NL', ename: 'Lotte', ssml: true, name: 'Cloud - nl-NL - Female - Lotte' },\n 'nl-NL_CLOUD_Male': { gender: 'Male', engine: 'cloud', params: ['cloud'], language: 'nl-NL', ename: 'Ruben', ssml: true, name: 'Cloud - nl-NL - Male - Ruben' },\n 'pl-PL_CLOUD_Female_Agnieszka': { gender: 'Female', engine: 'cloud',params: ['cloud'], language: 'pl-PL', ename: 'Agnieszka', ssml: true, name: 'Cloud - pl-PL - Female - Agnieszka' },\n 'pl-PL_CLOUD_Male_Jacek': { gender: 'Male', engine: 'cloud', params: ['cloud'], language: 'pl-PL', ename: 'Jacek', ssml: true, name: 'Cloud - pl-PL - Male - Jacek' },\n 'pl-PL_CLOUD_Female_Ewa': { gender: 'Female', engine: 'cloud', params: ['cloud'], language: 'pl-PL', ename: 'Ewa', ssml: true, name: 'Cloud - pl-PL - Female - Ewa' },\n 'pl-PL_CLOUD_Male_Jan': { gender: 'Male', engine: 'cloud', params: ['cloud'], language: 'pl-PL', ename: 'Jan', ssml: true, name: 'Cloud - pl-PL - Male - Jan' },\n 'pl-PL_CLOUD_Female': { gender: 'Female', engine: 'cloud', params: ['cloud'], language: 'pl-PL', ename: 'Maja', ssml: true, name: 'Cloud - pl-PL - Female - Maja' },\n 'pt-BR_CLOUD_Female': { gender: 'Female', engine: 'cloud', params: ['cloud'], language: 'pt-BR', ename: 'Vitoria', ssml: true, name: 'Cloud - pt-BR - Female - Vitoria' },\n 'pt-BR_CLOUD_Male': { gender: 'Male', engine: 'cloud', params: ['cloud'], language: 'pt-BR', ename: 'Ricardo', ssml: true, name: 'Cloud - pt-BR - Male - Ricardo' },\n 'pt-PT_CLOUD_Male': { gender: 'Male', engine: 'cloud', params: ['cloud'], language: 'pt-PT', ename: 'Cristiano', ssml: true, name: 'Cloud - pt-PT - Male - Cristiano' },\n 'pt-PT_CLOUD_Female': { gender: 'Female', engine: 'cloud', params: ['cloud'], language: 'pt-PT', ename: 'Ines', ssml: true, name: 'Cloud - pt-PT - Female - Ines' },\n 'ro-RO_CLOUD_Female': { gender: 'Female', engine: 'cloud', params: ['cloud'], language: 'ro-RO', ename: 'Carmen', ssml: true, name: 'Cloud - ro-RO - Female - Carmen' },\n 'sv-SE_CLOUD_Female': { gender: 'Female', engine: 'cloud', params: ['cloud'], language: 'sv-SE', ename: 'Astrid', ssml: true, name: 'Cloud - sv-SE - Female - Astrid' },\n 'tr-TR_CLOUD_Female': { gender: 'Female', engine: 'cloud', params: ['cloud'], language: 'tr-TR', ename: 'Filiz', ssml: true, name: 'Cloud - tr-TR - Female - Filiz' },\n\n 'ru-RU_AP_Female': { gender: 'Female', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'ru-RU', ename: 'Tatyana', ssml: true, name: 'AWS Polly - Русский - Татьяна' },\n 'ru-RU_AP_Male': { gender: 'Male', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'ru-RU', ename: 'Maxim', ssml: true, name: 'AWS Polly - Русский - Максим' },\n 'de-DE_AP_Female': { gender: 'Female', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'de-DE', ename: 'Marlene', ssml: true, name: 'AWS Polly - Deutsch - Marlene' },\n 'de-DE_AP_Female_Vicky': { gender: 'Female', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'de-DE', ename: 'Vicky', ssml: true, name: 'AWS Polly - Deutsch - Vicky' },\n 'de-DE_AP_Male': { gender: 'Male', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'de-DE', ename: 'Hans', ssml: true, name: 'AWS Polly - Deutsch - Hans' },\n 'en-US_AP_Female': { gender: 'Female', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'en-US', ename: 'Salli', ssml: true, name: 'AWS Polly - en-US - Female - Salli' },\n 'en-US_AP_Male': { gender: 'Male', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'en-US', ename: 'Joey', ssml: true, name: 'AWS Polly - en-US - Male - Joey' },\n 'da-DK_AP_Female': { gender: 'Female', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'da-DK', ename: 'Naja', ssml: true, name: 'AWS Polly - da-DK - Female - Naja' },\n 'da-DK_AP_Male': { gender: 'Male', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'da-DK', ename: 'Mads', ssml: true, name: 'AWS Polly - da-DK - Male - Mads' },\n 'en-AU_AP_Female': { gender: 'Female', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'en-AU', ename: 'Nicole', ssml: true, name: 'AWS Polly - en-AU - Female - Nicole' },\n 'en-AU_AP_Male': { gender: 'Male', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'en-AU', ename: 'Russell', ssml: true, name: 'AWS Polly - en-AU - Male - Russell' },\n 'en-GB_AP_Female_Amy': { gender: 'Female', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'en-GB', ename: 'Amy', ssml: true, name: 'AWS Polly - en-GB - Female - Amy' },\n 'en-GB_AP_Male': { gender: 'Male', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'en-GB', ename: 'Brian', ssml: true, name: 'AWS Polly - en-GB - Male - Brian' },\n 'en-GB_AP_Female_Emma': { gender: 'Female', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'en-GB', ename: 'Emma', ssml: true, name: 'AWS Polly - en-GB - Female - Emma' },\n 'en-GB-WLS_AP_Female': { gender: 'Female', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'en-GB-WLS', ename: 'Gwyneth', ssml: true, name: 'AWS Polly - en-GB-WLS - Female - Gwyneth' },\n 'en-GB-WLS_AP_Male': { gender: 'Male', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'en-GB-WLS', ename: 'Geraint', ssml: true, name: 'AWS Polly - en-GB-WLS - Male - Geraint' },\n 'cy-GB_AP_Female': { gender: 'Female', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'cy-GB', ename: 'Gwyneth', ssml: true, name: 'AWS Polly - cy-GB - Female - Gwyneth' },\n 'cy-GB_AP_Male': { gender: 'Male', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'cy-GB', ename: 'Geraint', ssml: true, name: 'AWS Polly - cy-GB - Male - Geraint' },\n 'en-IN_AP_Female': { gender: 'Female', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'en-IN', ename: 'Raveena', ssml: true, name: 'AWS Polly - en-IN - Female - Raveena' },\n 'en-US_AP_Male_Chipmunk': { gender: 'Male', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'en-US', ename: 'Chipmunk', ssml: true, name: 'AWS Polly - en-US - Male - Chipmunk' },\n 'en-US_AP_Male_Eric': { gender: 'Male', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'en-US', ename: 'Eric', ssml: true, name: 'AWS Polly - en-US - Male - Eric' },\n 'en-US_AP_Female_Ivy': { gender: 'Female', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'en-US', ename: 'Ivy', ssml: true, name: 'AWS Polly - en-US - Female - Ivy' },\n 'en-US_AP_Female_Jennifer': { gender: 'Female', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'en-US', ename: 'Jennifer', ssml: true, name: 'AWS Polly - en-US - Female - Jennifer' },\n 'en-US_AP_Male_Justin': { gender: 'Male', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'en-US', ename: 'Justin', ssml: true, name: 'AWS Polly - en-US - Male - Justin' },\n 'en-US_AP_Female_Kendra': { gender: 'Female', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'en-US', ename: 'Kendra', ssml: true, name: 'AWS Polly - en-US - Female - Kendra' },\n 'en-US_AP_Female_Kimberly': { gender: 'Female', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'en-US', ename: 'Kimberly', ssml: true, name: 'AWS Polly - en-US - Female - Kimberly' },\n 'es-ES_AP_Female': { gender: 'Female', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'es-ES', ename: 'Conchita', ssml: true, name: 'AWS Polly - es-ES - Female - Conchita' },\n 'es-ES_AP_Male': { gender: 'Male', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'es-ES', ename: 'Enrique', ssml: true, name: 'AWS Polly - es-ES - Male - Enrique' },\n 'es-US_AP_Female': { gender: 'Female', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'es-US', ename: 'Penelope', ssml: true, name: 'AWS Polly - es-US - Female - Penelope' },\n 'es-US_AP_Male': { gender: 'Male', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'es-US', ename: 'Miguel', ssml: true, name: 'AWS Polly - es-US - Male - Miguel' },\n 'fr-CA_AP_Female': { gender: 'Female', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'fr-CA', ename: 'Chantal', ssml: true, name: 'AWS Polly - fr-CA - Female - Chantal' },\n 'fr-FR_AP_Female': { gender: 'Female', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'fr-FR', ename: 'Celine', ssml: true, name: 'AWS Polly - fr-FR - Female - Celine' },\n 'fr-FR_AP_Male': { gender: 'Male', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'fr-FR', ename: 'Mathieu', ssml: true, name: 'AWS Polly - fr-FR - Male - Mathieu' },\n 'is-IS_AP_Female': { gender: 'Female', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'is-IS', ename: 'Dora', ssml: true, name: 'AWS Polly - is-IS - Female - Dora' },\n 'is-IS_AP_Male': { gender: 'Male', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'is-IS', ename: 'Karl', ssml: true, name: 'AWS Polly - is-IS - Male - Karl' },\n 'it-IT_AP_Female': { gender: 'Female', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'it-IT', ename: 'Carla', ssml: true, name: 'AWS Polly - it-IT - Female - Carla' },\n 'it-IT_AP_Male': { gender: 'Male', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'it-IT', ename: 'Giorgio', ssml: true, name: 'AWS Polly - it-IT - Male - Giorgio' },\n 'nb-NO_AP_Female': { gender: 'Female', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'nb-NO', ename: 'Liv', ssml: true, name: 'AWS Polly - nb-NO - Female - Liv' },\n 'nl-NL_AP_Female': { gender: 'Female', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'nl-NL', ename: 'Lotte', ssml: true, name: 'AWS Polly - nl-NL - Female - Lotte' },\n 'nl-NL_AP_Male': { gender: 'Male', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'nl-NL', ename: 'Ruben', ssml: true, name: 'AWS Polly - nl-NL - Male - Ruben' },\n 'pl-PL_AP_Female_Agnieszka':{ gender: 'Female', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'pl-PL', ename: 'Agnieszka', ssml: true, name: 'AWS Polly - pl-PL - Female - Agnieszka' },\n 'pl-PL_AP_Male_Jacek': { gender: 'Male', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'pl-PL', ename: 'Jacek', ssml: true, name: 'AWS Polly - pl-PL - Male - Jacek' },\n 'pl-PL_AP_Female_Ewa': { gender: 'Female', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'pl-PL', ename: 'Ewa', ssml: true, name: 'AWS Polly - pl-PL - Female - Ewa' },\n 'pl-PL_AP_Male_Jan': { gender: 'Male', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'pl-PL', ename: 'Jan', ssml: true, name: 'AWS Polly - pl-PL - Male - Jan' },\n 'pl-PL_AP_Female': { gender: 'Female', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'pl-PL', ename: 'Maja', ssml: true, name: 'AWS Polly - pl-PL - Female - Maja' },\n 'pt-BR_AP_Female': { gender: 'Female', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'pt-BR', ename: 'Vitoria', ssml: true, name: 'AWS Polly - pt-BR - Female - Vitoria' },\n 'pt-BR_AP_Male': { gender: 'Male', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'pt-BR', ename: 'Ricardo', ssml: true, name: 'AWS Polly - pt-BR - Male - Ricardo' },\n 'pt-PT_AP_Male': { gender: 'Male', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'pt-PT', ename: 'Cristiano', ssml: true, name: 'AWS Polly - pt-PT - Male - Cristiano' },\n 'pt-PT_AP_Female': { gender: 'Female', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'pt-PT', ename: 'Ines', ssml: true, name: 'AWS Polly - pt-PT - Female - Ines' },\n 'ro-RO_AP_Female': { gender: 'Female', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'ro-RO', ename: 'Carmen', ssml: true, name: 'AWS Polly - ro-RO - Female - Carmen' },\n 'sv-SE_AP_Female': { gender: 'Female', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'sv-SE', ename: 'Astrid', ssml: true, name: 'AWS Polly - sv-SE - Female - Astrid' },\n 'tr-TR_AP_Female': { gender: 'Female', engine: 'polly', params: ['accessKey', 'secretKey', 'region'], language: 'tr-TR', ename: 'Filiz', ssml: true, name: 'AWS Polly - tr-TR - Female - Filiz' },\n};\n\nclass ActionSayText extends GenericBlock {\n constructor(props) {\n super(props, ActionSayText.getStaticData());\n }\n\n static compile(config, context) {\n if (!config.text) {\n return `// no text defined\n_sendToFrontEnd(${config._id}, {text: 'No text defined'});`;\n } else {\n return `// Sayit ${config.text || ''}\n\\t\\tconst subActionVar${config._id} = \"${config.language && config.language !== '_' ? `${config.language};` : ''}${config.volume ? `${config.volume};` : ''}${(config.text || '').replace(/\"/g, '\\\\\"')}\"${GenericBlock.getReplacesInText(context)};\n\\t\\t_sendToFrontEnd(${config._id}, {text: subActionVar${config._id}});\n\\t\\tawait setStateAsync(\"${config.instance}.tts.text\", subActionVar${config._id});`;\n }\n }\n\n renderDebug(debugMessage) {\n return `${I18n.t('Say:')} ${debugMessage.data.text}`;\n }\n\n onTagChange(tagCard) {\n const lang = I18n.getLanguage();\n const languages = Object.keys(sayitEngines).filter(l => l.startsWith(lang));\n const options = languages.map(lang => ({title: sayitEngines[lang].name, value: lang}));\n options.unshift({title: 'Default', value: '_'});\n\n this.setState({\n inputs: [\n {\n attr: 'instance',\n nameRender: 'renderInstance',\n adapter: 'sayit',\n defaultValue: 'sayit.0',\n frontText: 'Instance:',\n },\n {\n nameRender: 'renderSelect',\n frontText: 'Language:',\n options,\n defaultValue: '_',\n attr: 'language',\n },\n {\n nameRender: 'renderNameText',\n defaultValue: 'Volume',\n attr: 'textVol',\n },\n {\n nameRender: 'renderSlider',\n attr: 'volume',\n defaultValue: 100,\n min: 0,\n max: 100\n },\n {\n attr: 'text',\n nameRender: 'renderModalInput',\n defaultValue: 'Hallo',\n nameBlock: '',\n frontText: 'Text:',\n }\n ]\n }, () => super.onTagChange(tagCard));\n }\n\n static getStaticData() {\n return {\n acceptedBy: 'actions',\n name: 'Say It',\n id: 'ActionSayText',\n adapter: 'sayit',\n title: 'Say some text via sayit adapter',\n helpDialog: 'You can use %s in the text to display current trigger value or %id to display the triggered object ID',\n }\n }\n\n getData() {\n return ActionSayText.getStaticData();\n }\n}\n\nexport default ActionSayText;\n","import GenericBlock from '../GenericBlock';\nimport { I18n } from '@iobroker/adapter-react-v5';\n\nclass ActionSendEmail extends GenericBlock {\n constructor(props) {\n super(props, ActionSendEmail.getStaticData());\n }\n\n static compile(config, context) {\n if (!config.recipients) {\n return `// no recipients defined'\n_sendToFrontEnd(${config._id}, {text: 'No recipients defined'});`;\n } else {\n return `// Send Email ${config.text || ''}\n\\t\\tconst subActionVar${config._id} = \"${(config.text || '').replace(/\"/g, '\\\\\"')}\"${GenericBlock.getReplacesInText(context)};\n\\t\\t_sendToFrontEnd(${config._id}, {text: subActionVar${config._id}});\n\\t\\tsendTo(\"${config.instance || 'email.0'}\", {\n\\t\\t to: \"${config.recipients || ''}\",\n\\t\\t subject: \"${(config.subject || 'ioBroker').replace(/\"/g, '\\\\\"')}\"${GenericBlock.getReplacesInText(context)},\n\\t\\t text: subActionVar${config._id}\n\\t\\t});`;\n }\n }\n\n renderDebug(debugMessage) {\n return `${I18n.t('Sent:')} ${debugMessage.data.text}`;\n }\n\n onTagChange(tagCard) {\n this.setState({\n inputs: [\n {\n attr: 'instance',\n nameRender: 'renderInstance',\n defaultValue: 'email.0',\n frontText: 'Instance:',\n adapter: 'email',\n },\n {\n attr: 'recipients',\n nameRender: 'renderText',\n defaultValue: 'user@mail.ru',\n frontText: 'To:',\n },\n {\n attr: 'subject',\n nameRender: 'renderText',\n defaultValue: 'Email from iobroker',\n nameBlock: '',\n frontText: 'Subject:',\n },\n {\n attr: 'text',\n nameRender: 'renderModalInput',\n defaultValue: 'Email from iobroker',\n nameBlock: '',\n frontText: 'Body:',\n }\n ]\n }, () => super.onTagChange(tagCard));\n }\n\n static getStaticData() {\n return {\n acceptedBy: 'actions',\n name: 'Send email',\n id: 'ActionSendEmail',\n adapter: 'email',\n title: 'Sends an email',\n helpDialog: 'You can use %s in the text to display current trigger value or %id to display the triggered object ID',\n }\n }\n\n getData() {\n return ActionSendEmail.getStaticData();\n }\n}\n\nexport default ActionSendEmail;\n","import GenericBlock from '../GenericBlock';\nimport { I18n } from '@iobroker/adapter-react-v5';\n\nclass ActionTelegram extends GenericBlock {\n constructor(props) {\n super(props, ActionTelegram.getStaticData());\n this.cachePromises = {};\n }\n\n static compile(config, context) {\n let text = (config.text || '').replace(/\"/g, '\\\\\"');\n if (!text) {\n return `// no text defined\n_sendToFrontEnd(${config._id}, {text: 'No text defined'});`;\n } else {\n return `// Telegram ${text || ''}\n\\t\\tconst subActionVar${config._id} = \"${(text || '').replace(/\"/g, '\\\\\"')}\"${GenericBlock.getReplacesInText(context)};\n\\t\\t_sendToFrontEnd(${config._id}, {text: subActionVar${config._id}});\n\\t\\tsendTo(\"${config.instance}\", \"send\", ${config.user && config.user !== '_' ? `{user: \"${(config.user || '').replace(/\"/g, '\\\\\"')}\", text: subActionVar${config._id}}` : `subActionVar${config._id}`});`;\n }\n }\n\n renderDebug(debugMessage) {\n return `${I18n.t('Sent:')} ${debugMessage.data.text}`;\n }\n\n onValueChanged(value, attr) {\n if (attr === 'instance') {\n this._setUsers(value);\n }\n }\n\n _setUsers(instance) {\n instance = instance || this.state.settings.instance || 'telegram.0';\n this.cachePromises[instance] = this.cachePromises[instance] || this.props.socket.getState(`${instance}.communicate.users`);\n if (!this.state.settings._id) {\n return this.setState({\n inputs: [\n {\n nameRender: 'renderSelect',\n adapter: 'telegram',\n frontText: 'Instance:',\n defaultValue: 'telegram.0',\n attr: 'instance',\n },\n {\n nameRender: 'renderSelect',\n attr: 'user',\n options: [{title: 'telegram.0', value: 'telegram.0'}],\n defaultValue: '',\n frontText: 'User:',\n },\n {\n nameRender: 'renderModalInput',\n attr: 'text',\n defaultValue: 'Hallo',\n nameBlock: '',\n frontText: 'Text:',\n }\n ]\n }, () => super.onTagChange());\n }\n\n this.cachePromises[instance]\n .then(users => {\n try {\n users = users?.val ? JSON.parse(users.val) : null;\n users = users && Object.keys(users).map(user => ({title: users[user].userName || users[user].firstName, value: user}));\n users = users || [];\n users.unshift({ title: 'all', value: '' });\n } catch (e) {\n users = [{ title: 'all', value: '' }];\n }\n\n this.setState({\n inputs: [\n {\n nameRender: 'renderInstance',\n adapter: 'telegram',\n frontText: 'Instance:',\n defaultValue: 'telegram.0',\n attr: 'instance',\n },\n {\n nameRender: 'renderSelect',\n attr: 'user',\n options: users,\n defaultValue: '_',\n frontText: 'User:',\n },\n {\n nameRender: 'renderModalInput',\n attr: 'text',\n defaultValue: 'Hallo',\n nameBlock: '',\n frontText: 'Text:',\n },\n ]\n }, () => super.onTagChange());\n });\n }\n\n onTagChange(tagCard) {\n this._setUsers();\n }\n\n static getStaticData() {\n return {\n acceptedBy: 'actions',\n name: 'Telegram',\n id: 'ActionTelegram',\n adapter: 'telegram',\n title: 'Sends message via telegram',\n helpDialog: 'You can use %s in the text to display current trigger value or %id to display the triggered object ID',\n }\n }\n\n getData() {\n return ActionTelegram.getStaticData();\n }\n}\n\nexport default ActionTelegram;\n","import GenericBlock from '../GenericBlock';\n\nclass ActionPushover extends GenericBlock {\n constructor(props) {\n super(props, ActionPushover.getStaticData());\n this.cachePromises = {};\n }\n\n static compile(config, context) {\n let text = (config.text || '').replace(/\"/g, '\\\\\"');\n if (!text) {\n return `// no text defined\n_sendToFrontEnd(${config._id}, {text: 'No text defined'});`;\n } else {\n return `// Pushover ${config.text || ''}\n\\t\\tconst subActionVar${config._id} = \"${text}\"${GenericBlock.getReplacesInText(context)};\n\\t\\t_sendToFrontEnd(${config._id}, {text: subActionVar${config._id}});\\`; \n\\t\\tsendTo(\"${config.instance}\", \"send\", {\n\\t\\t message: subActionVar${config._id},\n\\t\\t title: \"${(config.title || '').replace(/\"/g, '\\\\\"')}\"${GenericBlock.getReplacesInText(context)},\n\\t\\t sound: \"${config.sound}\",\n\\t\\t priority: ${config.priority}\n\\t\\t});`;\n }\n }\n\n renderDebug(debugMessage) {\n return `Sent: ${debugMessage.data.text}`;\n }\n\n onTagChange(tagCard) {\n this.setState({\n inputs: [\n {\n nameRender: 'renderInstance',\n adapter: 'pushover',\n frontText: 'Instance:',\n defaultValue: 'pushover.0',\n attr: 'instance',\n },\n {\n nameRender: 'renderModalInput',\n attr: 'text',\n defaultValue: 'Hello',\n nameBlock: '',\n frontText: 'Text:',\n },\n {\n nameRender: 'renderText',\n attr: 'title',\n defaultValue: 'ioBroker',\n frontText: 'Title:',\n },\n {\n nameRender: 'renderSelect',\n attr: 'sound',\n defaultValue: 'magic',\n frontText: 'Sound:',\n doNotTranslate: true,\n options: [\n { value: 'pushover', title: 'pushover' },\n { value: 'bike', title: 'bike' },\n { value: 'bugle', title: 'bugle' },\n { value: 'cashregister', title: 'cashregister' },\n { value: 'classical', title: 'classical' },\n { value: 'cosmic', title: 'cosmic' },\n { value: 'falling', title: 'falling' },\n { value: 'gamelan', title: 'gamelan' },\n { value: 'incoming', title: 'incoming' },\n { value: 'intermission', title: 'intermission' },\n { value: 'magic', title: 'magic' },\n { value: 'mechanical', title: 'mechanical' },\n { value: 'pianobar', title: 'pianobar' },\n { value: 'siren', title: 'siren' },\n { value: 'spacealarm', title: 'spacealarm' },\n { value: 'tugboat', title: 'tugboat' },\n { value: 'alien', title: 'alien' },\n { value: 'climb', title: 'climb' },\n { value: 'persistent', title: 'persistent' },\n { value: 'echo', title: 'echo' },\n { value: 'updown', title: 'updown' },\n { value: 'none', title: 'none' },\n ]\n },\n {\n nameRender: 'renderSelect',\n attr: 'priority',\n defaultValue: -1,\n frontText: 'Priority:',\n options: [\n { value: -1, title: 'quiet' },\n { value: 0, title: 'normal' },\n { value: 1, title: 'high-priority' },\n { value: 2, title: 'acknowledgment' },\n ]\n }\n ]\n }, () => super.onTagChange());\n }\n\n static getStaticData() {\n return {\n acceptedBy: 'actions',\n name: 'Pushover',\n id: 'ActionPushover',\n adapter: 'pushover',\n title: 'Sends message via pushover',\n helpDialog: 'You can use %s in the text to display current trigger value or %id to display the triggered object ID',\n }\n }\n\n getData() {\n return ActionPushover.getStaticData();\n }\n}\n\nexport default ActionPushover;\n","import GenericBlock from '../GenericBlock';\nimport { I18n } from '@iobroker/adapter-react-v5';\n\nclass ActionWhatsappcmb extends GenericBlock {\n constructor(props) {\n super(props, ActionWhatsappcmb.getStaticData());\n this.cachePromises = {};\n }\n\n static compile(config, context) {\n let text = (config.text || '').replace(/\"/g, '\\\\\"');\n if (!text) {\n return `// no text defined\n_sendToFrontEnd(${config._id}, {text: 'No text defined'});`;\n } else {\n return `// whatsapp ${text || ''}\n\\t\\tconst subActionVar${config._id} = \"${(text || '').replace(/\"/g, '\\\\\"')}\"${GenericBlock.getReplacesInText(context)};\n\\t\\t_sendToFrontEnd(${config._id}, {text: subActionVar${config._id}});\n\\t\\tsendTo(\"${config.instance}\", \"send\", {text: subActionVar${config._id}${config.phone ? `, phone: \"${config.phone.replace(/\"/g, '\\\\\"')}\"` : ''}});`;\n }\n }\n\n renderDebug(debugMessage) {\n return `${I18n.t('Sent:')} ${debugMessage.data.text}`;\n }\n\n onTagChange(tagCard) {\n this.setState({\n inputs: [\n {\n nameRender: 'renderInstance',\n adapter: 'whatsapp-cmb',\n frontText: 'Instance:',\n defaultValue: 'whatsapp-cmb.0',\n attr: 'instance',\n },\n {\n nameRender: 'renderModalInput',\n attr: 'text',\n defaultValue: 'Hello',\n nameBlock: '',\n frontText: 'Text:',\n },\n {\n nameRender: 'renderText',\n attr: 'phone',\n defaultValue: '',\n frontText: 'Phone:',\n backText: '(optional)',\n }\n ]\n }, () => super.onTagChange());\n }\n\n static getStaticData() {\n return {\n acceptedBy: 'actions',\n name: 'Whatsapp-cmb',\n id: 'ActionWhatsappcmb',\n adapter: 'whatsapp-cmb',\n title: 'Sends message via whatsapp-cmb',\n helpDialog: 'You can use %s in the text to display current trigger value or %id to display the triggered object ID',\n }\n }\n\n getData() {\n return ActionWhatsappcmb.getStaticData();\n }\n}\n\nexport default ActionWhatsappcmb;\n","import GenericBlock from '../GenericBlock';\n\nclass ActionPushsafer extends GenericBlock {\n constructor(props) {\n super(props, ActionPushsafer.getStaticData());\n this.cachePromises = {};\n }\n\n static compile(config, context) {\n let text = (config.text || '').replace(/\"/g, '\\\\\"');\n if (!text) {\n return `// no text defined\n_sendToFrontEnd(${config._id}, {text: 'No text defined'});`;\n } else {\n return `// Pushsafer ${config.text || ''}\n\\t\\tconst subActionVar${config._id} = \"${text}\"${GenericBlock.getReplacesInText(context)};\n\\t\\t_sendToFrontEnd(${config._id}, {text: subActionVar${config._id}}); \n\\t\\tsendTo(\"${config.instance}\", \"send\", {\n\\t\\t message: subActionVar${config._id},\n\\t\\t title: \"${(config.title || '').replace(/\"/g, '\\\\\"')}\"${GenericBlock.getReplacesInText(context)},\n\\t\\t ${config.device ? `device: \"${config.device}\",` : ''}\n\\t\\t ${config.sound && config.sound !== '_' ? `sound: \"${config.sound}\",` : ''}\n\\t\\t priority: ${config.priority},\n\\t\\t ${config.vibration && config.vibration !== '_' ? `vibration: ${config.vibration},` : ''}\n\\t\\t});`;\n }\n }\n\n renderDebug(debugMessage) {\n return `Sent: ${debugMessage.data.text}`;\n }\n\n onTagChange(tagCard) {\n this.setState({\n inputs: [\n {\n nameRender: 'renderInstance',\n adapter: 'pushsafer',\n frontText: 'Instance:',\n defaultValue: 'pushsafer.0',\n attr: 'instance',\n },\n {\n nameRender: 'renderModalInput',\n attr: 'text',\n defaultValue: 'Hello',\n nameBlock: '',\n frontText: 'Text:',\n },\n {\n nameRender: 'renderText',\n attr: 'title',\n defaultValue: 'ioBroker',\n frontText: 'Title:',\n },\n {\n nameRender: 'renderSelect',\n attr: 'sound',\n defaultValue: 'magic',\n frontText: 'Sound:',\n doNotTranslate: true,\n options: [\n { value: '_', title: 'Device Default' },\n { value: '0', title: 'Silent' },\n { value: '1', title: 'Ahem (IM)' },\n { value: '2', title: 'Applause (Mail)' },\n { value: '3', title: 'Arrow (Reminder)' },\n { value: '4', title: 'Baby (SMS)' },\n { value: '5', title: 'Bell (Alarm)' },\n { value: '6', title: 'Bicycle (Alarm2)' },\n { value: '7', title: 'Boing (Alarm3)' },\n { value: '8', title: 'Buzzer (Alarm4)' },\n { value: '9', title: 'Camera (Alarm5)' },\n { value: '10', title: 'Car Horn (Alarm6)' },\n { value: '11', title: 'Cash Register (Alarm7)' },\n { value: '12', title: 'Chime (Alarm8)' },\n { value: '13', title: 'Creaky Door (Alarm9)' },\n { value: '14', title: 'Cuckoo Clock (Alarm10)' },\n { value: '15', title: 'Disconnect (Call)' },\n { value: '16', title: 'Dog (Call2)' },\n { value: '17', title: 'Doorbell (Call3)' },\n { value: '18', title: 'Fanfare (Call4)' },\n { value: '19', title: 'Gun Shot (Call5)' },\n { value: '20', title: 'Honk (Call6)' },\n { value: '21', title: 'Jaw Harp (Call7)' },\n { value: '22', title: 'Morse (Call8)' },\n { value: '23', title: 'Electricity (Call9)' },\n { value: '24', title: 'Radio Tuner (Call10)' },\n { value: '25', title: 'Sirens' },\n { value: '26', title: 'Military Trumpets' },\n { value: '27', title: 'Ufo' },\n { value: '28', title: 'Whah Whah Whah' },\n { value: '29', title: 'Man Saying Goodbye' },\n { value: '30', title: 'Man Saying Hello' },\n { value: '31', title: 'Man Saying No' },\n { value: '32', title: 'Man Saying Ok' },\n { value: '33', title: 'Man Saying Ooohhhweee' },\n { value: '34', title: 'Man Saying Warning' },\n { value: '35', title: 'Man Saying Welcome' },\n { value: '36', title: 'Man Saying Yeah' },\n { value: '37', title: 'Man Saying Yes' },\n { value: '38', title: 'Beep short' },\n { value: '39', title: 'Weeeee short' },\n { value: '40', title: 'Cut in and out short' },\n { value: '41', title: 'Finger flicking glas short' },\n { value: '42', title: 'Wa Wa Waaaa short' },\n { value: '43', title: 'Laser short' },\n { value: '44', title: 'Wind Chime short' },\n { value: '45', title: 'Echo short' },\n { value: '46', title: 'Zipper short' },\n { value: '47', title: 'HiHat short' },\n { value: '48', title: 'Beep 2 short' },\n { value: '49', title: 'Beep 3 short' },\n { value: '50', title: 'Beep 4 short' },\n { value: '51', title: 'The Alarm is armed' },\n { value: '52', title: 'The Alarm is disarmed' },\n { value: '53', title: 'The Backup is ready' },\n { value: '54', title: 'The Door is closed' },\n { value: '55', title: 'The Door is opend' },\n { value: '56', title: 'The Window is closed' },\n { value: '57', title: 'The Window is open' },\n { value: '58', title: 'The Light is off' },\n { value: '59', title: 'The Light is on' },\n { value: '60', title: 'The Doorbell rings' },\n { value: '61', title: 'Pager short' },\n { value: '62', title: 'Pager long' },\n ]\n },\n {\n nameRender: 'renderSelect',\n attr: 'priority',\n defaultValue: 0,\n frontText: 'Priority:',\n options: [\n { value: -2, title: 'lowest priority' },\n { value: -1, title: 'lower priority' },\n { value: 0, title: 'normal priority' },\n { value: 1, title: 'high priority' },\n { value: 2, title: 'highest priority' },\n ]\n },\n {\n nameRender: 'renderSelect',\n attr: 'vibration',\n defaultValue: 0,\n frontText: 'Vibration:',\n options: [\n { value: '_', title: 'default' },\n { value: 1, title: '1' },\n { value: 2, title: '2' },\n { value: 3, title: '3' },\n ]\n }\n ]\n }, () => super.onTagChange());\n }\n\n static getStaticData() {\n return {\n acceptedBy: 'actions',\n name: 'Pushsafer',\n id: 'ActionPushsafer',\n adapter: 'pushsafer',\n title: 'Sends message via Pushsafer',\n helpDialog: 'You can use %s in the text to display current trigger value or %id to display the triggered object ID',\n }\n }\n\n getData() {\n return ActionPushsafer.getStaticData();\n }\n}\n\nexport default ActionPushsafer;\n","// eslint-disable-next-line no-unused-vars\n\nconst STANDARD_FUNCTION_STATE = `async function (obj) {\n \"__%%DEBUG_TRIGGER%%__\";\n __%%CONDITIONS_VARS%%__\n const _cond = __%%CONDITION%%__;\n \n \"__%%DEBUG_CONDITIONS%%__\";\n \n if (_cond) {\n__%%THEN%%__\n } else {\n__%%ELSE%%__\n }\n}`;\nconst STANDARD_FUNCTION_STATE_ONCHANGE = `async function (obj) {\n \"__%%DEBUG_TRIGGER%%__\";\n __%%CONDITIONS_VARS%%__\n const _cond = __%%CONDITION%%__;\n \n \"__%%DEBUG_CONDITIONS%%__\";\n \n if (__%%STATE%%__ === false && _cond) {\n __%%STATE%%__ = true; \n__%%THEN%%__\n } else if (__%%STATE%%__ === true && !_cond) {\n __%%STATE%%__ = false; \n__%%ELSE%%__\n }\n}`;\nconst STANDARD_FUNCTION =\n`async function () {\n \"__%%DEBUG_TRIGGER%%__\";\n __%%CONDITIONS_VARS%%__\n const _cond = __%%CONDITION%%__;\n \n \"__%%DEBUG_CONDITIONS%%__\";\n \n if (_cond) {\n__%%THEN%%__\n } else {\n__%%ELSE%%__\n }\n}`;\n\nconst STANDARD_FUNCTION_ONCHANGE =\n`async function () {\n \"__%%DEBUG_TRIGGER%%__\";\n __%%CONDITIONS_VARS%%__\n const _cond = __%%CONDITION%%__;\n \n \"__%%DEBUG_CONDITIONS%%__\";\n \n if (__%%STATE%%__ === false && _cond) {\n __%%STATE%%__ = true; \n__%%THEN%%__\n } else if (__%%STATE%%__ === true && !_cond) {\n __%%STATE%%__ = false; \n__%%ELSE%%__\n }\n}`;\n\nconst NO_FUNCTION = `\"__%%DEBUG_TRIGGER%%__\";\n__%%CONDITIONS_VARS%%__\nconst _cond = __%%CONDITION%%__;\n\n\"__%%DEBUG_CONDITIONS%%__\";\n\nif (_cond) {\n__%%THEN%%__\n} else {\n__%%ELSE%%__\n}`;\n\nconst DEFAULT_RULE = {\n triggers: [],\n conditions: [[]],\n justCheck: false,\n actions: {\n then: [],\n 'else': []\n }\n};\n\nfunction compileTriggers(json, context, blocks) {\n const triggers = [];\n let jsonTriggers = json.triggers;\n if (!jsonTriggers.length) {\n jsonTriggers = [{id: 'TriggerScriptSave'}];\n }\n\n const vars = [];\n let prelines = [];\n let hist = json.conditions.find(conds => conds.find(cond => cond.tagCard === '()'));\n\n jsonTriggers.forEach((trigger, i) => {\n const found = findBlock(trigger.id, blocks);\n if (found) {\n const _context = {\n trigger,\n condition: {},\n justCheck: hist ? false : (json.justCheck || (!json.conditions.length || !json.conditions[0].length)),\n conditionsDebug: [],\n conditionsVars: [],\n conditionsStates: [],\n };\n const text = found.compile(trigger, _context);\n const conditions = compileConditions(json.conditions, _context, blocks);\n const then = compileActions(json.actions.then, _context, blocks);\n const _else = compileActions(json.actions.else, _context, blocks);\n\n // find indent\n vars.push(`cond${i}`);\n\n if (_context.prelines && _context.prelines.length) {\n _context.prelines.forEach(line => prelines.push(line));\n }\n\n if (text.includes(' __%%CONDITIONS_VARS%%__')) {\n _context.conditionsVars = _context.conditionsVars.map((v, i) => i ? ` ${v}` : v);\n _context.conditionsDebug = _context.conditionsDebug.map((v, i) => i ? ` ${v}` : v);\n }\n\n triggers.push(\n text\n .replace('__%%CONDITIONS_VARS%%__', _context.conditionsVars.join('\\n'))\n .replace('\"__%%DEBUG_CONDITIONS%%__\";', _context.conditionsDebug.join('\\n'))\n .replace('__%%CONDITION%%__', conditions)\n .replace('__%%THEN%%__', then || '// ignore')\n .replace('__%%ELSE%%__', _else || '// ignore')\n .replace(/__%%STATE%%__/g, 'cond' + i)\n );\n }\n });\n\n let text = triggers.join('\\n\\n');\n\n if (!json.justCheck || hist) {\n text = `${vars.map(v => `let ${v} = false;`).join('\\n')}\\n\\n${text}`;\n }\n if (prelines) {\n text = `${prelines.join('\\n')}\\n\\n${text}`;\n }\n\n return text;\n}\n\nfunction findBlock(type, blocks) {\n return blocks.find(block => block.getStaticData && block.getStaticData().id === type);\n}\n\nfunction compileActions(actions, context, blocks) {\n let result = [];\n actions && actions.forEach(action => {\n const found = findBlock(action.id, blocks);\n if (found) {\n result.push(found.compile(action, context));\n }\n });\n return `\\t\\t${result.join('\\n\\n\\t\\t')}` || '';\n}\n\nfunction compileConditions(conditions, context, blocks) {\n let result = [];\n let i = 0;\n conditions && conditions.forEach(ors => {\n if (ors.hasOwnProperty('length') && ors.length) {\n const _ors = [];\n _ors && ors.forEach(block => {\n const found = findBlock(block.id, blocks);\n if (found) {\n context.condition.index = i++;\n _ors.push(found.compile(block, context));\n }\n });\n result.push(`(${_ors.join(') &&\\n (')})`);\n } else {\n const found = findBlock(ors.id, blocks);\n if (found) {\n context.condition.index = i++;\n result.push(found.compile(ors, context));\n }\n }\n });\n\n if (!result.length) {\n return 'true';\n } else\n if (result.length === 1) {\n return result[0] || 'true';\n } else {\n return `(${result.join(') || (')})`;\n }\n}\n\nfunction compile(json, blocks) {\n return compileTriggers(json, null, blocks);\n}\n\n// eslint-disable-next-line no-unused-vars\nfunction code2json(code) {\n if (!code) {\n return DEFAULT_RULE;\n } else {\n const lines = code.split('\\n');\n try {\n let json = lines.pop().replace(/^\\/\\//, '');\n json = JSON.parse(json);\n if (!json.triggers) {\n json = DEFAULT_RULE;\n }\n return json;\n } catch (e) {\n return DEFAULT_RULE;\n }\n }\n}\n\n// eslint-disable-next-line no-unused-vars\nfunction json2code(json, blocks) {\n let code = '';\n\n const compiled = compile(json, blocks);\n code += compiled;\n\n code += `\\n/*\\nconst demo = ${JSON.stringify(json, null, 2)\n .replace(/\\*\\//g, '* /')};\\n*/\\n`;\n\n return `${code}\\n//${JSON.stringify(json)}`;\n}\n\nconst Compile = {\n code2json,\n json2code,\n compile,\n STANDARD_FUNCTION,\n STANDARD_FUNCTION_ONCHANGE,\n STANDARD_FUNCTION_STATE,\n STANDARD_FUNCTION_STATE_ONCHANGE,\n NO_FUNCTION,\n};\n\nexport default Compile;","import GenericBlock from '../GenericBlock';\nimport I18n from \"@iobroker/adapter-react-v5/i18n\";\nimport Compile from '../../helpers/Compile';\n\nclass TriggerScriptSave extends GenericBlock {\n constructor(props) {\n super(props, TriggerScriptSave.getStaticData());\n }\n\n static compile(config /* , context */) {\n return Compile.NO_FUNCTION.replace('\"__%%DEBUG_TRIGGER%%__\"', `_sendToFrontEnd(${config._id}, {trigger: true})`);\n }\n\n renderDebug(/* debugMessage */) {\n return I18n.t('Triggered');\n }\n\n onTagChange(tagCard) {\n this.setState({\n inputs: [\n {\n nameRender: 'renderNameText',\n defaultValue: 'On script save or adapter start',\n attr: 'script',\n },\n ],\n }, () => super.onTagChange());\n }\n\n static getStaticData() {\n return {\n acceptedBy: 'triggers',\n name: 'Start script',\n id: 'TriggerScriptSave',\n icon: 'PlayArrow',\n title: 'Triggers the on script saving or the javascript instance restart',\n }\n }\n\n getData() {\n return TriggerScriptSave.getStaticData();\n }\n}\n\nexport default TriggerScriptSave;\n","import React from 'react';\nimport SunCalc from 'suncalc2';\n\nimport GenericBlock from '../GenericBlock';\nimport Compile from '../../helpers/Compile';\nimport CustomInput from '../CustomInput';\nimport CustomButton from '../CustomButton';\nimport CustomModal from '../CustomModal';\n\nimport ComplexCron from '@iobroker/adapter-react-v5/Components/ComplexCron';\nimport Schedule from '@iobroker/adapter-react-v5/Components/Schedule';\nimport convertCronToText from '@iobroker/adapter-react-v5/Components/SimpleCron/cronText';\nimport { I18n } from '@iobroker/adapter-react-v5';\n\nconst DEFAULT_WIZARD = '{\"time\":{\"start\":\"00:00\",\"end\":\"24:00\",\"mode\":\"hours\",\"interval\":1},\"period\":{\"days\":1}}';\n\nclass TriggerScheduleBlock extends GenericBlock {\n constructor(props) {\n super(props, TriggerScheduleBlock.getStaticData());\n this.coordinates = null;\n }\n\n static compile(config, context) {\n let text = '';\n let func = context.justCheck ? Compile.STANDARD_FUNCTION_STATE : Compile.STANDARD_FUNCTION_STATE_ONCHANGE;\n func = func.replace('\"__%%DEBUG_TRIGGER%%__\"', `_sendToFrontEnd(${config._id}, {trigger: true})`);\n\n if (config.tagCard === 'interval') {\n text = `setInterval(${func}, ${config.interval || 1} * ${config.unit === 's' ? 1000 : (config.unit === 'm' ? 60000 : 3600000)});`;\n } else if (config.tagCard === 'cron') {\n text = `schedule(\"${config.cron}\", ${func});`;\n } else if (config.tagCard === 'at') {\n const [hours, minutes] = (config.at || '').split(':');\n let dow = '*';\n if (config?.dow?.length && !config.dow.includes('_')) {\n const _dow = [...config.dow].map(item => parseInt(item, 10));\n _dow.sort();\n\n let intervals = [];\n let start = _dow[0];\n let i = 1\n for (; i < _dow.length; i++) {\n if (_dow[i] - _dow[i - 1] > 1) {\n if (start === _dow[i - 1]) {\n intervals.push(start);\n } else if (_dow[i - 1] - start === 1) {\n intervals.push(start + ',' + _dow[i - 1]);\n } else {\n intervals.push(start + '-' + _dow[i - 1]);\n }\n\n start = _dow[i];\n } else if (i === _dow.length - 1) {\n if (start === _dow[i - 1] || _dow[i] - start === 1) {\n intervals.push(start + ',' + _dow[i]);\n } else {\n intervals.push(start + '-' + _dow[i]);\n }\n }\n }\n\n dow = intervals.join(',')\n }\n text = `schedule(\"${minutes || '0'} ${hours || '0'} * * ${dow}\", ${func});`;\n } else if (config.tagCard === 'astro') {\n text = `schedule({astro: \"${config.astro}\", shift: ${config.offset ? config.offsetValue : 0}}, ${func});`;\n } else if (config.tagCard === 'wizard') {\n text = `schedule('${config.wizard}', ${func});`;\n }\n\n return text;\n }\n\n static _time2String(time) {\n if (!time) {\n return '--:--';\n }\n return `${time.getHours().toString().padStart(2, '0')}:${time.getMinutes().toString().padStart(2, '0')}`;\n }\n\n async _setAstro(astro, offset, offsetValue) {\n astro = astro || this.state.settings.astro || 'solarNoon';\n offset = offset === undefined ? this.state.settings.offset : offset;\n offsetValue = offsetValue === undefined ? this.state.settings.offsetValue : offsetValue;\n\n offsetValue = parseInt(offsetValue, 10) || 0;\n\n if (!this.coordinates) {\n await this.props.socket.getObject('system.adapter.javascript.0')\n .then(({ native: { latitude, longitude } }) => {\n if (!latitude && !longitude) {\n return this.props.socket.getObject('system.config')\n .then(obj => {\n if (obj && (obj.common.latitude || obj.common.longitude)) {\n this.coordinates = {\n latitude: obj.common.latitude,\n longitude: obj.common.longitude\n }\n } else {\n this.coordinates = null;\n }\n });\n } else {\n this.coordinates = {\n latitude,\n longitude\n }\n }\n });\n }\n\n const sunValue = this.coordinates && SunCalc.getTimes(new Date(), this.coordinates.latitude, this.coordinates.longitude);\n const options = sunValue ? Object.keys(sunValue).map(name => ({\n value: name,\n title: name,\n title2: `[${TriggerScheduleBlock._time2String(sunValue[name])}]`,\n order: sunValue ? TriggerScheduleBlock._time2String(sunValue[name]) : '??:??',\n })) : [];\n options.sort((a, b) => a.order > b.order ? 1 : (a.order < b.order ? -1 : 0));\n\n // calculate time text\n let time = '--:--';\n if (astro && sunValue && sunValue[astro]) {\n const astroTime = new Date(sunValue[astro]);\n offset && astroTime.setMinutes(astroTime.getMinutes() + parseInt(offsetValue, 10));\n time = `(at ${TriggerScheduleBlock._time2String(astroTime)})`; // translate\n }\n\n let inputs;\n\n if (offset) {\n inputs = [\n {\n frontText: 'at',\n attr: 'astro',\n nameRender: 'renderSelect',\n options,\n defaultValue: 'solarNoon',\n },\n {\n backText: 'with offset',\n nameRender: 'renderCheckbox',\n attr: 'offset',\n },\n {\n backText: offsetValue === 1 ? 'minute' : 'minutes', // translate\n frontText: 'offset',\n nameRender: 'renderNumber',\n defaultValue: 0,\n attr: 'offsetValue',\n noHelperText: true,\n },\n {\n nameRender: 'renderNameText',\n attr: 'textTime',\n defaultValue: time,\n }\n ];\n } else {\n inputs = [\n {\n frontText: 'at', // translate\n attr: 'astro',\n nameRender: 'renderSelect',\n options,\n defaultValue: 'solarNoon',\n },\n {\n backText: 'with offset', // translate\n nameRender: 'renderCheckbox',\n attr: 'offset',\n },\n {\n nameRender: 'renderNameText',\n attr: 'textTime',\n defaultValue: time,\n }\n ];\n }\n\n this.setState({ inputs }, () => super.onTagChange());\n }\n\n async _setInterval(interval) {\n interval = parseInt(interval || this.state.settings.interval, 10) || 30;\n let options;\n if (interval === 1) {\n options = [\n { value: 's', title: 'second' },\n { value: 'm', title: 'minute' },\n { value: 'h', title: 'hour' },\n ];\n } else {\n options = [\n { value: 's', title: 'seconds' },\n { value: 'm', title: 'minutes' },\n { value: 'h', title: 'hours' },\n ];\n }\n\n this.setState({\n inputs: [\n {\n nameRender: 'renderNumber',\n prefix: {\n en: 'every',\n },\n attr: 'interval',\n frontText: 'every',\n defaultValue: 30,\n className: 'block-input-interval',\n },\n {\n nameRender: 'renderSelect',\n attr: 'unit',\n defaultValue: 's',\n options,\n }\n ]\n }, () => super.onTagChange());\n }\n\n renderDebug(debugMessage) {\n return I18n.t('Triggered');\n }\n\n onValueChanged(value, attr) {\n if (this.state.settings.tagCard === 'astro') {\n if (attr === 'astro') {\n this._setAstro(value);\n } else if (attr === 'offset') {\n this._setAstro(undefined, value);\n } else if (attr === 'offsetValue') {\n this._setAstro(undefined, undefined, value);\n }\n } else if (this.state.settings.tagCard === 'interval') {\n if (attr === 'interval') {\n this._setInterval(value);\n }\n }\n }\n\n renderCron(input, value, onChange) {\n const { className } = this.props;\n let textCron = '';\n const { settings } = this.state;\n const { attr } = input;\n return <div key={attr}>\n <div style={{ display: 'flex', alignItems: 'baseline' }}>\n <div style={{ width: '100%' }}>\n {this.renderText({\n attr: attr,\n defaultValue: value\n }, !!settings[attr] ? settings[attr] : value, onChange)}\n </div>\n <CustomButton\n square\n style={{ marginLeft: 7 }}\n value='...'\n className={className}\n onClick={() => this.setState({ openDialog: true })}\n />\n </div>\n <CustomModal\n open={this.state.openDialog}\n onApply={async () => {\n await onChange(textCron, attr);\n await onChange(convertCronToText(textCron, I18n.getLanguage()), 'addText');\n this.setState({ openDialog: false });\n }}\n onClose={() => this.setState({ openDialog: false })}>\n <ComplexCron\n cronExpression={!!settings[attr] ? settings[attr] : ''}\n onChange={el => textCron = el}\n language={I18n.getLanguage()}\n />\n </CustomModal>\n {this.renderNameText({\n defaultValue: I18n.t('every hour at 0 minutes'),\n attr: 'addText',\n signature: true,\n doNotTranslate: true,\n }, !!settings['addText'] ? settings['addText'] : I18n.t('every hour at 0 minutes'), onChange)}\n </div>;\n }\n\n renderWizard(input, value, onChange) {\n const { className } = this.props;\n const { attr } = input;\n let wizardText = '';\n let wizard = null;\n\n return <div key={attr}>\n <div style={{ display: 'flex', alignItems: 'center', marginTop: 7 }}>\n <CustomInput\n className={className}\n autoComplete=\"off\"\n fullWidth\n // disabled\n variant=\"outlined\"\n size=\"small\"\n multiline\n rows={2}\n value={this.state.settings[`${attr}Text`]}\n onChange={(el) => onChange(el)}\n customValue\n />\n <CustomButton\n square\n style={{ marginLeft: 7 }}\n value='...'\n className={className}\n onClick={() => this.setState({ openDialog: true })}\n />\n </div>\n <CustomModal\n open={this.state.openDialog}\n onApply={() =>\n this.setState({ openDialog: false }, () =>\n onChange({\n [`${attr}Text`]: wizardText,\n [attr]: wizard,\n }))}\n onClose={() => this.setState({ openDialog: false })}>\n <Schedule onChange={(val, text) => {\n wizardText = text;\n wizard = typeof val === 'object' ? JSON.parse(JSON.stringify(val)) : JSON.parse(val);\n wizard.valid = wizard.valid || {};\n wizard.valid.from = wizard.valid.from || Schedule.now2string();\n wizard = JSON.stringify(wizard);\n }} />\n </CustomModal>\n </div>;\n }\n\n onTagChange(tagCard) {\n tagCard = tagCard || this.state.settings.tagCard;\n switch (tagCard) {\n case 'interval':\n this._setInterval();\n break;\n\n case 'cron':\n this.setState({\n inputs: [\n {\n nameRender: 'renderCron',\n attr: 'cron',\n defaultValue: '0 * * * *',\n }\n ]\n }, () => super.onTagChange());\n break;\n\n case 'wizard':\n const wizard = JSON.parse(DEFAULT_WIZARD);\n wizard.valid = wizard.valid || {};\n wizard.valid.from = wizard.valid.from || Schedule.now2string();\n\n this.setState({\n inputs: [\n {\n nameRender: 'renderWizard',\n attr: 'wizard',\n defaultValue: JSON.stringify(wizard),\n },\n ],\n }, () => super.onTagChange(null, () => {\n const wizardText = Schedule.state2text(this.state.settings.wizard || wizard);\n if (this.state.settings.wizardText !== wizardText) {\n const settings = JSON.parse(JSON.stringify(this.state.settings));\n settings.wizardText = wizardText;\n this.setState({ settings });\n this.props.onChange(settings);\n }\n }));\n break;\n\n case 'at':\n this.setState({\n inputs: [\n {\n nameRender: 'renderTime',\n prefix: 'at',\n attr: 'at',\n defaultValue: '07:30',\n },\n {\n nameRender: 'renderSelect',\n attr: 'dow',\n default: '',\n multiple: true,\n defaultValue: ['_', '1', '2', '3', '4', '5', '6', '0'],\n options: [\n { value: '_', title: 'Every day', only: true },\n { value: '1', title: 'Monday', titleShort: 'Mo' },\n { value: '2', title: 'Tuesday', titleShort: 'Tu' },\n { value: '3', title: 'Wednesday', titleShort: 'We' },\n { value: '4', title: 'Thursday', titleShort: 'Th' },\n { value: '5', title: 'Friday', titleShort: 'Fr' },\n { value: '6', title: 'Saturday', titleShort: 'Sa' },\n { value: '0', title: 'Sunday', titleShort: 'Su' },\n ]\n }\n ]\n }, () => super.onTagChange());\n break;\n\n case 'astro':\n this._setAstro();\n break;\n\n default:\n break;\n }\n }\n\n static getStaticData() {\n return {\n acceptedBy: 'triggers',\n name: 'Schedule',\n id: 'TriggerScheduleBlock',\n icon: 'AccessTime',\n tagCardArray: ['cron', 'wizard', 'interval', 'at', 'astro'],\n title: 'Triggers the rule periodically or on some specific time',\n }\n }\n\n getData() {\n return TriggerScheduleBlock.getStaticData();\n }\n}\n\nexport default TriggerScheduleBlock;\n","import React from 'react';\nimport withStyles from '@mui/styles/withStyles';\n\nimport GenericBlock from '../GenericBlock';\nimport Compile from '../../helpers/Compile';\nimport Button from '@mui/material/Button';\nimport Switch from '@mui/material/Switch';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport TextField from '@mui/material/TextField';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport Slide from '@mui/material/Slide';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Checkbox from '@mui/material/Checkbox';\n\nimport { MdCancel as IconCancel } from 'react-icons/md';\nimport { MdCheck as IconCheck } from 'react-icons/md';\n\nimport { I18n } from '@iobroker/adapter-react-v5';\n\nconst styles = theme => ({\n valueAck: {\n color: '#b02323',\n },\n valueNotAck: {\n color: '#12ac15',\n },\n});\n\nconst Transition = React.forwardRef((props, ref) =>\n <Slide direction=\"up\" ref={ref} {...props} />);\n\nclass TriggerState extends GenericBlock {\n constructor(props) {\n super(props, TriggerState.getStaticData());\n this.inputRef = React.createRef();\n }\n\n static compile(config, context) {\n let func = context.justCheck ? Compile.STANDARD_FUNCTION_STATE : Compile.STANDARD_FUNCTION_STATE_ONCHANGE;\n func = func.replace('\"__%%DEBUG_TRIGGER%%__\"', `_sendToFrontEnd(${config._id}, {val: obj.state.val, ack: obj.state.ack, valOld: obj.oldState && obj.oldState.val, ackOld: obj.oldState && obj.oldState.ack})`);\n return `on({id: \"${config.oid || ''}\", change: \"${config.tagCard === 'on update' ? 'any' : 'ne'}\"}, ${func});`\n }\n\n static renderValue(val) {\n if (val === null) {\n return 'null';\n } else if (val === undefined) {\n return 'undefined';\n } else if (Array.isArray(val)) {\n return val.join(', ');\n } else if (typeof val === 'object') {\n return JSON.stringify(val);\n } else {\n return val.toString();\n }\n }\n\n renderDebug(debugMessage) {\n if (debugMessage.data.valOld !== undefined) {\n return <span>{I18n.t('Triggered')} <span className={debugMessage.data.ackOld ? this.props.classes.valueAck : this.props.classes.valueNotAck}>{TriggerState.renderValue(debugMessage.data.valOld)}</span> → <span className={debugMessage.data.ack ? this.props.classes.valueAck : this.props.classes.valueNotAck}>{TriggerState.renderValue(debugMessage.data.val)}</span></span>;\n } else {\n return <span>{I18n.t('Triggered')} <span className={debugMessage.data.ack ? this.props.classes.valueAck : this.props.classes.valueNotAck}>{TriggerState.renderValue(debugMessage.data.val)}</span></span>;\n }\n }\n\n onWriteValue() {\n this.setState({openSimulate: false});\n let simulateValue = this.state.simulateValue;\n window.localStorage.setItem(`javascript.app.${this.state.settings.oid}_ack`, this.state.simulateAck);\n\n if (this.state.settings.oidType === 'boolean') {\n simulateValue = simulateValue === true || simulateValue === 'true' || simulateValue === '1';\n } else if (this.state.settings.oidType === 'number') {\n simulateValue = parseFloat(simulateValue) || 0;\n }\n\n window.localStorage.setItem(`javascript.app.${this.state.settings.oid}`, simulateValue);\n this.props.socket.setState(this.state.settings.oid, { val: simulateValue, ack: !!this.state.simulateAck });\n }\n\n renderWriteState() {\n return <>\n <Button\n disabled={!this.state.settings.oid || !this.state.enableSimulation}\n variant=\"contained\"\n color=\"primary\"\n onClick={() => {\n this.setState({\n openSimulate: true,\n simulateValue: this.state.settings.oidType === 'boolean' ?\n window.localStorage.getItem(`javascript.app.${this.state.settings.oid}`) === 'true' :\n (window.localStorage.getItem(`javascript.app.${this.state.settings.oid}`) || ''),\n simulateAck: window.localStorage.getItem(`javascript.app.${this.state.settings.oid}_ack`) === 'true'\n });\n setTimeout(() => this.inputRef.current?.focus(), 200);\n }}>{I18n.t('Simulate')}</Button>\n <Dialog\n open={!!this.state.openSimulate}\n TransitionComponent={Transition}\n keepMounted\n onClose={() => this.setState({ openSimulate: false })}\n aria-labelledby=\"simulate-dialog-slide-title\"\n aria-describedby=\"simulate-dialog-slide-description\"\n >\n <DialogTitle id=\"simulate-dialog-slide-title\">{I18n.t('Trigger with value')}</DialogTitle>\n <DialogContent>\n {this.state.settings.oidType === 'boolean' ?\n <FormControlLabel\n control={<Switch\n inputRef={this.inputRef}\n onKeyUp={e => e.keyCode === 13 && this.onWriteValue()}\n value={!!this.state.simulateValue}\n onChange={e => this.setState({ simulateValue: e.target.checked })}\n />}\n label={I18n.t('Value')}\n />\n : <TextField\n variant=\"standard\"\n inputRef={this.inputRef}\n label={I18n.t('Value')}\n fullWidth\n onKeyUp={e => e.keyCode === 13 && this.onWriteValue()}\n value={this.state.simulateValue}\n onChange={e => this.setState({ simulateValue: e.target.value })}\n />\n }\n <br/>\n <FormControlLabel\n control={\n <Checkbox\n checked={!!this.state.simulateAck}\n onChange={e => this.setState({ simulateAck: e.target.checked })}\n color=\"primary\"\n />\n }\n label={I18n.t('Ack')}\n />\n </DialogContent>\n <DialogActions>\n <Button\n variant=\"contained\"\n onClick={() => this.onWriteValue()}\n color=\"primary\">\n <IconCheck />{I18n.t('Write')}\n </Button>\n <Button color=\"grey\"\n variant=\"contained\"\n onClick={() => this.setState({ openSimulate: false })}\n >\n <IconCancel />{I18n.t('Close')}\n </Button>\n </DialogActions>\n </Dialog>\n </>;\n }\n\n onTagChange(tagCard) {\n this.setState({\n inputs: [\n {\n nameRender: 'renderObjectID',\n attr: 'oid',\n defaultValue: '',\n },\n {\n nameRender: 'renderWriteState',\n },\n ]\n }, () => {\n super.onTagChange();\n });\n }\n\n static getStaticData() {\n return {\n acceptedBy: 'triggers',\n name: 'State',\n id: 'TriggerState',\n icon: 'FlashOn',\n tagCardArray: ['on change', 'on update'],\n title: 'Triggers the rule on update or change of some state', // translate\n }\n }\n\n getData() {\n return TriggerState.getStaticData();\n }\n}\nexport default withStyles(styles)(TriggerState);\n","import React from 'react';\n\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogContentText from '@mui/material/DialogContentText';\nimport DialogActions from '@mui/material/DialogActions';\n\nimport { I18n } from '@iobroker/adapter-react-v5';\n\nimport GenericBlock from '../GenericBlock';\n\nimport HysteresisImage from '../../../assets/hysteresis.png';\n\nconst HYSTERESIS = `function __hysteresis(val, limit, state, hist, comp) {\n let cond1, cond2;\n if (comp === '>') {\n cond1 = val > limit + hist;\n cond2 = val <= limit - hist;\n } else if (comp === '<') {\n cond1 = val < limit - hist;\n cond2 = val >= limit + hist;\n } else if (comp === '>=') {\n cond1 = val >= limit + hist;\n cond2 = val < limit - hist;\n } else if (comp === '<=') {\n cond1 = val <= limit - hist;\n cond2 = val > limit + hist;\n } else if (comp === '=') {\n cond1 = val <= limit + hist && val > limit - hist;\n cond2 = val > limit + hist || val <= limit - hist;\n } else if (comp === '<>') {\n cond1 = val > limit + hist || val <= limit - hist;\n cond2 = val <= limit + hist && val > limit - hist;\n }\n \n if (!state && cond1) {\n return true;\n } else if (state && cond2) {\n return false;\n } else {\n return state;\n }\n}`;\n\nclass ConditionState extends GenericBlock {\n constructor(props) {\n super(props, ConditionState.getStaticData());\n }\n\n isAllTriggersOnState() {\n return this.props.userRules?.triggers?.find(item => item.id === 'TriggerState') &&\n !this.props.userRules?.triggers?.find(item => item.id !== 'TriggerState');\n }\n\n static compile(config, context) {\n let value = config.value;\n if (value === null || value === undefined) {\n value = false;\n }\n let debugValue = '';\n\n let result;\n if (config.tagCard === '()') {\n context.prelines = context.prelines || [];\n !context.prelines.find(item => item !== HYSTERESIS) && context.prelines.push(HYSTERESIS);\n if (config.useTrigger) {\n debugValue = 'obj.state.val';\n if (value === '') {\n value = 0;\n }\n result = `__hysteresis(subCondVar${config._id}, ${value}, __%%STATE%%__, ${config.hist}, \"${config.histComp}\")`;\n } else {\n debugValue = `(await getStateAsync(\"${config.oid}\")).val`;\n if (value === '') {\n value = 0;\n }\n if (typeof value === 'string' && parseFloat(value.trim()).toString() !== value.trim()) {\n value = `\"${value}\"`;\n }\n\n result = `__hysteresis(subCondVar${config._id}, ${value}, __%%STATE%%__, ${config.hist}, \"${config.histComp}\")`;\n }\n } else\n if (config.tagCard !== 'includes') {\n const compare = config.tagCard === '=' ? '==' : (config.tagCard === '<>' ? '!=' : config.tagCard);\n if (config.useTrigger) {\n debugValue = 'obj.state.val';\n if (context?.trigger?.oidType === 'string') {\n value = value.replace(/\"/g, '\\\\\"');\n result = `subCondVar${config._id} ${compare} \"${value}\"`;\n } else {\n if (value === '') {\n value = 0;\n }\n if (typeof value === 'string' && parseFloat(value.trim()).toString() !== value.trim()) {\n value = `\"${value}\"`;\n }\n result = `subCondVar${config._id} ${compare} ${value}`;\n }\n } else {\n debugValue = `(await getStateAsync(\"${config.oid}\")).val`;\n if (config.oidType === 'string') {\n value = value.replace(/\"/g, '\\\\\"');\n result = `subCondVar${config._id} ${compare} \"${value}\"`;\n } else {\n if (value === '') {\n value = 0;\n }\n if (typeof value === 'string' && parseFloat(value.trim()).toString() !== value.trim()) {\n value = `\"${value}\"`;\n }\n result = `subCondVar${config._id} ${compare} ${value}`;\n }\n }\n } else {\n if (config.useTrigger) {\n debugValue = 'obj.state.val';\n if (context?.trigger?.oidType === 'string') {\n value = value.replace(/\"/g, '\\\\\"');\n result = `obj.state.val.includes(\"${value}\")`;\n } else {\n result = `false`;\n }\n } else {\n debugValue = `(await getStateAsync(\"${config.oid}\")).val`;\n if (config.oidType === 'string') {\n value = value.replace(/\"/g, '\\\\\"');\n result = `subCondVar${config._id}.includes(\"${value}\")`;\n } else {\n result = `false`;\n }\n }\n }\n context.conditionsStates.push({ name: `subCondVar${config._id}`, id: config.oid });\n context.conditionsVars.push(`const subCondVar${config._id} = ${debugValue};`);\n context.conditionsVars.push(`const subCond${config._id} = ${result};`);\n context.conditionsDebug.push(`_sendToFrontEnd(${config._id}, {result: subCond${config._id}, value: subCondVar${config._id}, compareWith: \"${value}\"});`);\n return `subCond${config._id}`;\n }\n\n renderDebug(debugMessage) {\n const condition = this.state.settings.tagCard;\n if (condition === '()') {\n // TODO\n } else {\n return `${debugMessage.data.result.toString().toUpperCase()} [${debugMessage.data.value} ${condition} ${debugMessage.data.compareWith}]`;\n }\n\n return I18n.t('Triggered');\n }\n\n onShowHelp = () => this.setState({showHysteresisHelp: true});\n\n _setInputs(useTrigger, tagCard, oidType, oidUnit, oidStates) {\n const isAllTriggersOnState = this.isAllTriggersOnState();\n\n tagCard = tagCard || this.state.settings.tagCard;\n oidType = oidType || this.state.settings.oidType;\n oidUnit = oidUnit || this.state.settings.oidUnit;\n oidStates = oidStates || this.state.settings.oidStates;\n\n if (isAllTriggersOnState && useTrigger && this.props.userRules?.triggers?.length === 1) {\n oidType = this.props.userRules.triggers[0].oidType;\n oidUnit = this.props.userRules.triggers[0].oidUnit;\n oidStates = this.props.userRules.triggers[0].oidStates;\n }\n\n const _tagCardArray = ConditionState.getStaticData().tagCardArray;\n const tag = _tagCardArray.find(item => item.title === tagCard);\n let tagCardArray;\n let options = null;\n\n if (oidType === 'number') {\n tagCardArray = [\n {\n title: '=',\n title2: '[equal]',\n text: 'equal to',\n },\n {\n title: '>=',\n title2: '[greater or equal]',\n text: 'greater or equal',\n },\n {\n title: '>',\n title2: '[greater]',\n text: 'greater than',\n },\n {\n title: '<=',\n title2: '[less or equal]',\n text: 'less or equal',\n },\n {\n title: '<',\n title2: '[less]',\n text: 'less than',\n },\n {\n title: '<>',\n title2: '[not equal]',\n text: 'not equal to',\n },\n {\n title: '()',\n title2: '[hysteresis]',\n text: 'hysteresis',\n },\n ];\n\n if (oidStates) {\n options = Object.keys(oidStates).map(val => ({ value: val, title: oidStates[val] }));\n }\n } else if (oidType === 'boolean') {\n tagCardArray = [\n {\n title: '=',\n title2: '[equal]',\n text: 'equal to',\n },\n {\n title: '<>',\n title2: '[not equal]',\n text: 'not equal to',\n }\n ];\n options = [\n { title: 'false', value: false },\n { title: 'true', value: true },\n ];\n } else {\n tagCardArray = [\n {\n title: '=',\n title2: '[equal]',\n text: 'equal to',\n },\n {\n title: '>=',\n title2: '[greater or equal]',\n text: 'greater or equal',\n },\n {\n title: '>',\n title2: '[greater]',\n text: 'greater than',\n },\n {\n title: '<=',\n title2: '[less or equal]',\n text: 'less or equal',\n },\n {\n title: '<',\n title2: '[less]',\n text: 'less than',\n },\n {\n title: '<>',\n title2: '[not equal]',\n text: 'not equal to',\n },\n {\n title: '.',\n title2: '[includes]',\n text: 'includes',\n }\n ];\n if (oidStates) {\n options = Object.keys(oidStates).map(val => ({ value: val, title: oidStates[val] }));\n }\n }\n\n let settings = null;\n if (!tagCardArray.find(item => item.title === tagCard)) {\n tagCard = tagCardArray[0].title;\n settings = settings || { ...this.state.settings };\n settings.tagCard = tagCard;\n }\n\n let inputs;\n let renderText = {\n nameRender: 'renderText',\n defaultValue: '',\n attr: 'value',\n frontText: tagCard === '()' ? 'Limit' : (tag?.text || 'compare with'),\n doNotTranslateBack: true,\n backText: oidUnit,\n };\n\n if (options) {\n renderText = {\n nameRender: 'renderSelect',\n defaultValue: options[0].value,\n options,\n attr: 'value',\n frontText: tag?.text || 'compare with',\n doNotTranslateBack: true,\n backText: oidUnit,\n };\n if (!options.find(item => item.value === this.state.settings.value)) {\n settings = settings || { ...this.state.settings };\n settings.value = options[0].value;\n }\n if (options.length <= 2) {\n tagCardArray = [\n {\n title: '=',\n title2: '[equal]',\n text: 'equal to',\n },\n {\n title: '<>',\n title2: '[not equal]',\n text: 'not equal to',\n }\n ];\n }\n }\n\n if (isAllTriggersOnState && useTrigger) {\n inputs = [\n {\n backText: 'use trigger value',\n nameRender: 'renderCheckbox',\n attr: 'useTrigger',\n defaultValue: false,\n },\n renderText,\n ];\n } else if (isAllTriggersOnState) {\n inputs = [\n {\n backText: 'use trigger value',\n nameRender: 'renderCheckbox',\n attr: 'useTrigger',\n },\n {\n nameRender: 'renderObjectID',\n attr: 'oid',\n defaultValue: '',\n },\n renderText,\n ];\n } else {\n inputs = [\n {\n nameRender: 'renderObjectID',\n attr: 'oid',\n defaultValue: '',\n },\n renderText,\n ];\n }\n\n if (tagCard === '()') {\n inputs.splice(1, 0, {\n nameRender: 'renderDialog',\n icon: 'HelpOutline',\n frontText: 'Explanation',\n onShowDialog: this.onShowHelp,\n });\n inputs.splice(2, 0, {\n nameRender: 'renderSelect',\n attr: 'histComp',\n defaultValue: '>',\n frontText: 'Condition',\n doNotTranslate: true,\n options: [\n { title: '>', value: '>' },\n { title: '>=', value: '>=' },\n { title: '<', value: '<' },\n { title: '<=', value: '<=' },\n { title: '=', value: '=' },\n { title: '<>', value: '<>' },\n ]\n });\n inputs.push({\n frontText: 'Δ',\n doNotTranslate: true,\n nameRender: 'renderNumber',\n noHelperText: true,\n attr: 'hist',\n defaultValue: 1,\n doNotTranslateBack: true,\n backText: oidUnit,\n });\n }\n\n const state = {\n iconTag: true,\n tagCardArray,\n inputs,\n };\n\n this.setState(state,() =>\n super.onTagChange(null, () => {\n if (settings) {\n this.setState({settings});\n this.props.onChange(settings);\n }\n }));\n }\n\n onValueChanged(value, attr, context) {\n if (typeof value === 'object') {\n this._setInputs(value.useTrigger, value.tagCard, value.oidType, value.states);\n } else {\n if (attr === 'useTrigger') {\n this._setInputs(value);\n } else if (attr === 'oidType') {\n this._setInputs(value, undefined, value);\n } else if (attr === 'oidUnit') {\n this._setInputs(value, undefined, undefined, value);\n } else if (attr === 'oidStates') {\n this._setInputs(value, undefined, undefined, undefined, value);\n }\n }\n }\n\n onUpdate() {\n this._setInputs(this.state.settings.useTrigger);\n }\n\n onTagChange(tagCard) {\n this._setInputs(this.state.settings.useTrigger, tagCard);\n }\n\n static getStaticData() {\n return {\n acceptedBy: 'conditions',\n name: 'State condition',\n id: 'ConditionState',\n icon: 'Shuffle',\n tagCardArray: [\n {\n title: '=',\n title2: '[equal]',\n text: 'equal to',\n },\n {\n title: '>=',\n title2: '[greater or equal]',\n text: 'greater or equal',\n },\n {\n title: '>',\n title2: '[greater]',\n text: 'greater than',\n },\n {\n title: '<=',\n title2: '[less or equal]',\n text: 'less or equal',\n },\n {\n title: '<',\n title2: '[less]',\n text: 'less than',\n },\n {\n title: '<>',\n title2: '[not equal]',\n text: 'not equal to',\n },\n {\n title: '.',\n title2: '[includes]',\n text: 'includes',\n },\n {\n title: '()',\n title2: '[hysteresis]',\n text: 'hysteresis',\n }\n ],\n title: 'Compares the state value with user defined value',\n }\n }\n\n getData() {\n return ConditionState.getStaticData();\n }\n\n renderSpecific() {\n if (this.state.showHysteresisHelp) {\n return <Dialog\n open={!0}\n maxWidth=\"md\"\n onClose={() => this.setState({ showHysteresisHelp: false })}\n aria-labelledby=\"alert-dialog-title\"\n aria-describedby=\"alert-dialog-description\"\n >\n <DialogContent>\n <DialogContentText id=\"alert-dialog-description\">\n <img src={HysteresisImage} alt=\"Hysteresis\"/>\n </DialogContentText>\n </DialogContent>\n <DialogActions>\n <Button onClick={() => this.setState({ showHysteresisHelp: false })} color=\"primary\" autoFocus>\n {I18n.t('OK')}\n </Button>\n </DialogActions>\n </Dialog>;\n } else {\n return null;\n }\n }\n}\n\nexport default ConditionState;\n","import GenericBlock from '../GenericBlock';\n\nconst DAYS = [\n 31, // 1\n 29, // 2\n 31, // 3\n 30, // 4\n 31, // 5\n 30, // 6\n 31, // 7\n 31, // 8\n 30, // 9\n 31, // 10\n 30, // 11\n 31, // 12\n];\n\nclass ConditionTime extends GenericBlock {\n constructor(props) {\n super(props, ConditionTime.getStaticData());\n }\n\n static compile(config, context) {\n const compare = config.tagCard === '=' ? '===' : (config.tagCard === '<>' ? '!==' : config.tagCard);\n let cond;\n\n if (config.withDate) {\n let [month, date] = (config.date || '01.01').toString().split('.');\n date = parseInt(date, 10) || 0;\n month = parseInt(month, 10) || 0;\n if (month > 12) {\n month = 12;\n } else if (month < 0) {\n month = 0;\n }\n\n if (date > DAYS[month]) {\n date = DAYS[month];\n } else if (date < 0) {\n date = 0;\n }\n if (date && month) {\n cond = `formatDate(Date.now(), 'MM.DD-hh:mm') ${compare} \"${config.date}-${config.time}\"`;\n } else if (date === 0 && month) {\n cond = `formatDate(Date.now(), 'MM-hh:mm') ${compare} \"${month.toString().padStart(2, '0')}-${config.time}\"`;\n } else if (month === 0 && date) {\n cond = `formatDate(Date.now(), 'DD-hh:mm') ${compare} \"${date.toString().padStart(2, '0')}-${config.time}\"`;\n } else {\n cond = `formatDate(Date.now(), 'hh:mm') ${compare} \"${config.time}\"`;\n }\n } else {\n cond = `formatDate(Date.now(), 'hh:mm') ${compare} \"${config.time}\"`;\n }\n context.conditionsVars.push(`const subCond${config._id} = ${cond};`);\n context.conditionsDebug.push(`_sendToFrontEnd(${config._id}, {result: subCond${config._id}});`);\n return `subCond${config._id}`;\n }\n\n _setInputs(tagCard, withDate, ) {\n withDate = withDate === undefined ? this.state.settings.withDate : withDate;\n tagCard = tagCard || this.state.settings.tagCard;\n const tagCardArray = ConditionTime.getStaticData().tagCardArray;\n const tag = tagCardArray.find(item => item.title === tagCard);\n const inputs = [\n {\n nameRender: 'renderNameText',\n attr: 'interval',\n defaultValue: 'Actual time of day',\n },\n {\n frontText: tag?.text || tagCard,\n nameRender: 'renderTime',\n attr: 'time',\n defaultValue: '12:00',\n },\n {\n frontText: 'with date',\n nameRender: 'renderCheckbox',\n attr: 'withDate',\n defaultValue: false,\n }\n ];\n if (withDate) {\n inputs.push({\n nameRender: 'renderDate',\n attr: 'date',\n defaultValue: '01.01',\n });\n }\n this.setState({\n inputs,\n iconTag:true\n }, () => super.onTagChange());\n }\n\n onValueChanged(value, attr) {\n if (attr === 'withDate') {\n this._setInputs(undefined, value);\n }\n }\n\n onTagChange(tagCard) {\n this._setInputs(tagCard);\n }\n\n static getStaticData() {\n return {\n acceptedBy: 'conditions',\n name: 'Time condition',\n id: 'ConditionTime',\n icon: 'Shuffle',\n tagCardArray: [\n {\n title: '=',\n title2: '[equal]',\n text: 'equal to',\n },\n {\n title: '>=',\n title2: '[greater or equal]',\n text: 'greater or equal',\n },\n {\n title: '>',\n title2: '[greater]',\n text: 'greater than',\n },\n {\n title: '<=',\n title2: '[less or equal]',\n text: 'less or equal',\n },\n {\n title: '<',\n title2: '[less]',\n text: 'less than',\n },\n {\n title: '<>',\n title2: '[not equal]',\n text: 'not equal to',\n }\n ],\n title: 'Compares current time with the user specific time',\n }\n }\n\n getData() {\n return ConditionTime.getStaticData();\n }\n}\n\nexport default ConditionTime;\n","import GenericBlock from '../GenericBlock';\nimport SunCalc from 'suncalc2';\nimport { I18n } from '@iobroker/adapter-react-v5';\n\nclass ConditionAstrological extends GenericBlock {\n constructor(props) {\n super(props, ConditionAstrological.getStaticData());\n this.coordinates = null;\n }\n\n static compile(config, context) {\n const compare = config.tagCard === '=' ? '===' : (config.tagCard === '<>' ? '!==' : config.tagCard);\n let offset;\n if (config.offset) {\n offset = parseInt(config.offsetValue, 10) || 0;\n }\n const cond = `formatDate(Date.now(), 'hh:mm') ${compare} formatDate(getAstroDate(\"${config.astro}\"${offset ? `, undefined, ${offset}` : ''}), 'hh:mm')`;\n context.conditionsVars.push(`const subCond${config._id} = ${cond};`);\n context.conditionsDebug.push(`_sendToFrontEnd(${config._id}, {result: ${cond}});`);\n return cond;\n }\n\n static _time2String(time) {\n if (!time) {\n return '--:--';\n }\n return `${time.getHours().toString().padStart(2, '0')}:${time.getMinutes().toString().padStart(2, '0')}`;\n }\n\n onValueChanged(value, attr) {\n if (attr === 'astro') {\n this._setAstro(value);\n } else if (attr === 'offset') {\n this._setAstro(undefined, value);\n } else if (attr === 'offsetValue') {\n this._setAstro(undefined, undefined, value);\n }\n }\n\n async _setAstro(astro, offset, offsetValue) {\n astro = astro || this.state.settings.astro || 'solarNoon';\n offset = offset === undefined ? this.state.settings.offset : offset;\n offsetValue = offsetValue === undefined ? this.state.settings.offsetValue : offsetValue;\n\n offsetValue = parseInt(offsetValue, 10) || 0;\n if (!this.coordinates) {\n await this.props.socket.getObject('system.adapter.javascript.0')\n .then(({ native: { latitude, longitude } }) => {\n if (!latitude && !longitude) {\n return this.props.socket.getObject('system.config')\n .then(obj => {\n if (obj && (obj.common.latitude || obj.common.longitude)) {\n this.coordinates = {\n latitude: obj.common.latitude,\n longitude: obj.common.longitude,\n }\n } else {\n this.coordinates = null;\n }\n });\n } else {\n this.coordinates = {\n latitude,\n longitude,\n };\n }\n });\n }\n const sunValue = this.coordinates && SunCalc.getTimes(new Date(), this.coordinates.latitude, this.coordinates.longitude);\n const options = sunValue ? Object.keys(sunValue).map(name => ({\n value: name,\n title: name,\n title2: `[${ConditionAstrological._time2String(sunValue[name])}]`,\n order: ConditionAstrological._time2String(sunValue[name]),\n })) : [];\n options.sort((a, b) => a.order > b.order ? 1 : (a.order < b.order ? -1 : 0));\n\n // calculate time text\n const tagCardArray = ConditionAstrological.getStaticData().tagCardArray;\n const tag = tagCardArray.find(item => item.title === this.state.settings.tagCard);\n\n let time = '--:--';\n if (astro && sunValue && sunValue[astro]) {\n const astroTime = new Date(sunValue[astro]);\n offset && astroTime.setMinutes(astroTime.getMinutes() + parseInt(offsetValue, 10));\n time = `(${I18n.t(tag.text)} ${ConditionAstrological._time2String(astroTime)})`;\n }\n\n let inputs;\n\n if (offset) {\n inputs = [\n {\n nameRender: 'renderNameText',\n defaultValue: 'Actual time of day',\n attr: 'text',\n },\n {\n frontText: tag.text,\n attr: 'astro',\n nameRender: 'renderSelect',\n options,\n doNotTranslate2: true,\n defaultValue: 'solarNoon',\n },\n {\n backText: 'with offset',\n nameRender: 'renderCheckbox',\n attr: 'offset',\n },\n {\n backText: offsetValue === 1 ? 'minute' : 'minutes',\n frontText: 'offset',\n nameRender: 'renderNumber',\n defaultValue: 0,\n attr: 'offsetValue',\n noHelperText: true,\n },\n {\n nameRender: 'renderNameText',\n attr: 'textTime',\n doNotTranslate: true,\n defaultValue: time,\n },\n ];\n } else {\n inputs = [\n {\n nameRender: 'renderNameText',\n defaultValue: 'Actual time of day',\n attr: 'text',\n },\n {\n frontText: tag.text,\n attr: 'astro',\n nameRender: 'renderSelect',\n options,\n doNotTranslate2: true,\n defaultValue: 'solarNoon',\n },\n {\n backText: 'with offset',\n nameRender: 'renderCheckbox',\n attr: 'offset',\n },\n {\n nameRender: 'renderNameText',\n attr: 'textTime',\n doNotTranslate: true,\n defaultValue: time,\n },\n ];\n }\n\n this.setState({ inputs }, () => super.onTagChange());\n }\n\n onTagChange(tagCard) {\n this._setAstro();\n }\n\n static getStaticData() {\n return {\n acceptedBy: 'conditions',\n name: 'Astrological',\n id: 'ConditionAstrological',\n icon: 'Brightness3',\n tagCardArray: [\n {\n title: '=',\n title2: '[equal]',\n text: 'equal to',\n },\n {\n title: '>=',\n title2: '[greater or equal]',\n text: 'greater or equal to',\n },\n {\n title: '>',\n title2: '[greater]',\n text: 'greater than',\n },\n {\n title: '<=',\n title2: '[less or equal]',\n text: 'less or equal to',\n },\n {\n title: '<',\n title2: '[less]',\n text: 'less than',\n },\n {\n title: '<>',\n title2: '[not equal]',\n text: 'not equal to',\n },\n ],\n title: 'Compares current time with astrological event',\n }\n }\n\n getData() {\n return ConditionAstrological.getStaticData();\n }\n}\n\nexport default ConditionAstrological;\n","import GenericBlock from '../GenericBlock';\nimport withStyles from '@mui/styles/withStyles';\nimport { I18n } from '@iobroker/adapter-react-v5';\n\nconst styles = theme => ({\n valueAck: {\n color: '#b02323',\n },\n valueNotAck: {\n color: '#12ac15',\n },\n});\n\nclass ActionSetState extends GenericBlock {\n constructor(props) {\n super(props, ActionSetState.getStaticData());\n }\n\n isAllTriggersOnState() {\n return this.props.userRules?.triggers?.find(item => item.id === 'TriggerState') &&\n !this.props.userRules?.triggers?.find(item => item.id !== 'TriggerState');\n }\n\n static compile(config, context) {\n let value = config.value;\n if (config.useTrigger) {\n value = config.toggle ? '!obj.state.val' : 'obj.state.val';\n } else {\n if (value === undefined || value === null) {\n value = '';\n }\n\n if (typeof config.value === 'string' &&\n parseFloat(config.value).toString() !== config.value &&\n config.value !== 'true' &&\n config.value !== 'false'\n ) {\n value = `\"${value.replace(/\"/g, '\\\\\"')}\"${GenericBlock.getReplacesInText(context)}`;\n }\n }\n let v;\n\n if (config.toggle && !config.useTrigger) {\n v = `const subActionVar${config._id} = !(await getStateAsync(\"${config.oid}\")).val`;\n } else {\n v = `const subActionVar${config._id} = ${value}`;\n }\n return `// set state ${config.oid} to ${config.toggle && !config.useTrigger ? 'toggle' : value} \n\\t\\t${v};\n\\t\\t_sendToFrontEnd(${config._id}, {val: subActionVar${config._id}, ack: ${config.tagCard === 'update'}});\n\\t\\tawait setStateAsync(\"${config.oid}\", subActionVar${config._id}, ${config.tagCard === 'update'});`;\n }\n\n static renderValue(val) {\n if (val === null) {\n return 'null';\n } else if (val === undefined) {\n return 'undefined';\n } else if (Array.isArray(val)) {\n return val.join(', ');\n } else if (typeof val === 'object') {\n return JSON.stringify(val);\n } else {\n return val.toString();\n }\n }\n\n renderDebug(debugMessage) {\n return <span>{I18n.t('Set:')} <span className={debugMessage.data.ack ? this.props.classes.valueAck : this.props.classes.valueNotAck}>{ActionSetState.renderValue(debugMessage.data.val)}</span></span>;\n }\n\n _setInputs(useTrigger, toggle) {\n const isAllTriggersOnState = this.isAllTriggersOnState();\n\n toggle = toggle === undefined ? this.state.settings.toggle : toggle;\n useTrigger = useTrigger === undefined ? this.state.settings.useTrigger : useTrigger;\n let type = '';\n let options;\n const {oidType, oidUnit, oidStates, oidMax, oidMin, oidRole, oidWrite, oidStep} = this.state.settings;\n let settings;\n\n if (oidType) {\n if (oidType === 'number') {\n type = 'number';\n if (oidMax !== undefined && oidMin !== undefined) {\n type = 'slider';\n }\n } else if (oidType === 'boolean') {\n type = 'boolean';\n if (oidRole && oidRole.includes('button') && oidWrite) {\n type = 'button';\n }\n } else {\n type = '';\n if (oidRole && oidRole.includes('color')) {\n type = 'color';\n }\n }\n\n if (oidStates) {\n options = Object.keys(oidStates).map(val => ({ value: val, title: oidStates[val] }));\n type = 'select';\n }\n }\n\n let inputs;\n if (isAllTriggersOnState && useTrigger) {\n inputs = [\n {\n backText: 'use trigger value',\n nameRender: 'renderCheckbox',\n attr: 'useTrigger',\n defaultValue: false,\n },\n ];\n if (type === 'boolean') {\n inputs.push({\n backText: 'toggle value',\n attr: 'toggle',\n nameRender: 'renderCheckbox',\n defaultValue: false,\n });\n }\n } else {\n switch (type) {\n case 'number':\n inputs = [{\n backText: oidUnit || '',\n frontText: 'with',\n nameRender: 'renderNumber',\n defaultValue: oidMax === undefined ? 0 : oidMax,\n attr: 'value'\n }];\n if (this.state.settings.value !== undefined && isNaN(parseFloat(this.state.settings.value))) {\n settings = { value: oidMax === undefined ? 0 : oidMax };\n }\n break;\n\n case 'slider':\n inputs = [{\n nameRender: 'renderSlider',\n defaultValue: oidMax,\n min: oidMin,\n max: oidMax,\n unit: oidUnit,\n step: oidStep,\n attr: 'value'\n }];\n const f = parseFloat(this.state.settings.value);\n if (this.state.settings.value !== undefined &&\n (isNaN(f) || f < oidMin || f > oidMax)\n ) {\n settings = { value: oidMax };\n }\n break;\n\n case 'select':\n inputs = [{\n nameRender: 'renderSelect',\n frontText: 'with',\n options,\n defaultValue: options[0].value,\n attr: 'value'\n }];\n if (this.state.settings.value !== undefined && !options.find(item => item.value === this.state.settings.value)) {\n settings = { value: options[0].value };\n }\n break;\n\n case 'boolean':\n inputs = [\n {\n backText: 'toggle value',\n attr: 'toggle',\n nameRender: 'renderCheckbox',\n defaultValue: false,\n }\n ];\n if (!toggle) {\n inputs.push({\n backText: 'true',\n frontText: 'false',\n nameRender: 'renderSwitch',\n defaultValue: false,\n attr: 'value'\n });\n }\n\n if (this.state.settings.value !== undefined && this.state.settings.value !== false && this.state.settings.value !== true) {\n settings = { value: false };\n }\n break;\n\n case 'button':\n inputs = [{\n nameRender: 'renderButton',\n defaultValue: true,\n attr: 'value'\n }];\n if (this.state.settings.value !== undefined && this.state.settings.value !== true) {\n settings = { value: true };\n }\n break;\n\n case 'color':\n inputs = [{\n nameRender: 'renderColor',\n frontText: 'with',\n defaultValue: '#FFFFFF',\n attr: 'value'\n }];\n if (this.state.settings.value !== undefined &&\n (\n typeof this.state.settings.value !== 'string' ||\n (typeof this.state.settings.value.startsWith('#') &&\n typeof this.state.settings.value.startsWith('rgb'))\n )) {\n settings = { value: '#FFFFFF' };\n }\n break;\n\n default:\n inputs = [{\n backText: oidUnit || '',\n frontText: 'with',\n nameRender: 'renderText',\n defaultValue: '',\n attr: 'value'\n }];\n break;\n }\n\n if (isAllTriggersOnState) {\n inputs.unshift({\n backText: 'use trigger value',\n nameRender: 'renderCheckbox',\n attr: 'useTrigger',\n });\n }\n }\n\n return { inputs, newSettings: settings };\n }\n\n onTagChange(tagCard, cb, ignore, toggle, useTrigger) {\n useTrigger = useTrigger === undefined ? this.state.settings.useTrigger : useTrigger;\n const { inputs, newSettings } = this._setInputs(useTrigger, toggle);\n inputs.unshift({\n nameRender: 'renderObjectID',\n attr: 'oid',\n defaultValue: '',\n checkReadOnly: true,\n });\n\n this.setState({ inputs }, () =>\n super.onTagChange(null, () => {\n if (newSettings) {\n const settings = JSON.parse(JSON.stringify(this.state.settings));\n Object.assign(settings, newSettings);\n this.setState(settings);\n this.props.onChange(settings);\n }\n }));\n }\n\n onValueChanged(value, attr, context) {\n this.onTagChange(undefined, undefined, undefined, attr === 'toggle' ? value : undefined, attr === 'useTrigger' ? value : undefined);\n }\n\n onUpdate() {\n this.onTagChange();\n }\n\n static getStaticData() {\n return {\n acceptedBy: 'actions',\n name: 'Set state action',\n id: 'ActionSetState',\n icon: 'PlayForWork',\n tagCardArray: ['control', 'update'],\n title: 'Control or update some state',\n helpDialog: 'You can use %s in the value to use the current trigger value or %id to display the triggered object ID',\n }\n }\n\n getData() {\n return ActionSetState.getStaticData();\n }\n}\n\nexport default withStyles(styles)(ActionSetState);\n","import TriggerScriptSave from '../Blocks/TriggerScriptSave';\nimport TriggerSchedule from '../Blocks/TriggerSchedule';\nimport TriggerState from '../Blocks/TriggerState';\nimport ConditionState from '../Blocks/ConditionState';\nimport ConditionTime from '../Blocks/ConditionTime';\nimport ConditionAstrological from '../Blocks/ConditionAstrological';\nimport ActionSetState from '../Blocks/ActionSetState';\nimport ActionExec from '../Blocks/ActionExec';\nimport ActionHTTPCall from '../Blocks/ActionHTTPCall';\nimport ActionPrintText from '../Blocks/ActionPrintText';\nimport ActionPause from '../Blocks/ActionPause';\nimport ActionFunction from '../Blocks/ActionFunction';\nimport ActionSetStateDelayed from '../Blocks/ActionSetStateDelayed';\nimport ActionOperateStates from '../Blocks/ActionOperateStates';\n\nconst StandardBlocks = [\n TriggerSchedule,\n TriggerScriptSave,\n TriggerState,\n ConditionState,\n ConditionTime,\n ConditionAstrological,\n ActionSetState,\n ActionExec,\n ActionHTTPCall,\n ActionPrintText,\n ActionPause,\n ActionFunction,\n ActionSetStateDelayed,\n ActionOperateStates,\n];\n\nexport default StandardBlocks;","import GenericBlock from '../GenericBlock';\n\nclass ActionExec extends GenericBlock {\n constructor(props) {\n super(props, ActionExec.getStaticData());\n }\n\n static compile(config, context) {\n return `// exec \"${config.exec}\"\n\\t\\tconst subActionVar${config._id} = \"${(config.exec || '').replace(/\"/g, '\\\\\"')}\"${GenericBlock.getReplacesInText(context)};\n\\t\\t_sendToFrontEnd(${config._id}, {exec: subActionVar${config._id}});\n\\t\\tconsole.log(subActionVar${config._id});`;\n }\n\n renderDebug(debugMessage) {\n return `Exec: ${debugMessage.data.exec}`;\n }\n\n onTagChange(tagCard) {\n this.setState({\n inputs: [\n {\n nameRender: 'renderModalInput',\n attr: 'exec',\n defaultValue: 'ls /opt/iobroker',\n nameBlock: 'Shell command',\n }\n ]\n }, () => super.onTagChange(tagCard));\n }\n\n static getStaticData() {\n return {\n acceptedBy: 'actions',\n name: 'Exec',\n id: 'ActionExec',\n icon: 'Apps',\n title: 'Executes some shell command',\n helpDialog: 'You can use %s in the command to use current trigger value or %id to use the triggered object ID',\n }\n }\n\n getData() {\n return ActionExec.getStaticData();\n }\n}\n\nexport default ActionExec;\n","import GenericBlock from '../GenericBlock';\n\nclass ActionHTTPCall extends GenericBlock {\n constructor(props) {\n super(props, ActionHTTPCall.getStaticData());\n }\n\n static compile(config, context) {\n return `// HTTP request ${config.url}\n\\t\\tconst subActionVar${config._id} = \"${(config.url || '').replace(/\"/g, '\\\\\"')}\"${GenericBlock.getReplacesInText(context)};\n\\t\\t_sendToFrontEnd(${config._id}, {url: subActionVar${config._id}});\n\\t\\trequest(subActionVar${config._id});`;\n }\n\n renderDebug(debugMessage) {\n return `URL: ${debugMessage.data.url}`;\n }\n\n onTagChange(tagCard) {\n this.setState({\n inputs: [\n {\n nameRender: 'renderModalInput',\n attr: 'url',\n defaultValue: 'http://mydevice.com?...',\n nameBlock: 'URL',\n }\n ]\n }, () => super.onTagChange(tagCard));\n }\n\n static getStaticData() {\n return {\n acceptedBy: 'actions',\n name: 'HTTP Call',\n id: 'ActionHTTPCall',\n icon: 'Language',\n title: 'Make a HTTP get request',\n helpDialog: 'You can use %s in the URL to use current trigger value or %id to use the triggered object ID',\n }\n }\n\n getData() {\n return ActionHTTPCall.getStaticData();\n }\n}\n\nexport default ActionHTTPCall;\n","import GenericBlock from '../GenericBlock';\nimport { I18n } from '@iobroker/adapter-react-v5';\n\nclass ActionPrintText extends GenericBlock {\n constructor(props) {\n super(props, ActionPrintText.getStaticData());\n }\n\n static compile(config, context) {\n return `// Log ${config.text}\n\\t\\tconst subActionVar${config._id} = \"${(config.text || '').replace(/\"/g, '\\\\\"')}\"${GenericBlock.getReplacesInText(context)};\n\\t\\t_sendToFrontEnd(${config._id}, {text: subActionVar${config._id}});\n\\t\\tconsole.log(subActionVar${config._id});`;\n }\n\n renderDebug(debugMessage) {\n return I18n.t('Log: %s', debugMessage.data.text);\n }\n\n onTagChange(tagCard) {\n this.setState({\n inputs: [\n {\n nameRender: 'renderModalInput',\n attr: 'text',\n defaultValue: 'My device triggered',\n nameBlock: 'Log text',\n }\n ]\n }, () => super.onTagChange(tagCard));\n }\n\n static getStaticData() {\n return {\n acceptedBy: 'actions',\n name: 'Log text',\n id: 'ActionPrintText',\n icon: 'Subject',\n title: 'Print some text in log',\n helpDialog: 'You can use %s in the text to display current trigger value or %id to display the triggered object ID',\n }\n }\n\n getData() {\n return ActionPrintText.getStaticData();\n }\n}\n\nexport default ActionPrintText;\n","import GenericBlock from '../GenericBlock';\nimport I18n from \"@iobroker/adapter-react-v5/i18n\";\n\nclass ActionPause extends GenericBlock {\n constructor(props) {\n super(props, ActionPause.getStaticData());\n }\n\n static compile(config, context) {\n const ms = config.unit === 'ms' ? 1 : (config.unit === 's' ? 1000 : (config.unit === 'm' ? 60000 : 3600000))\n\n return `// pause for ${ms}ms\n\\t\\t_sendToFrontEnd(${config._id}, {paused: true});\\n\n\\t\\tawait wait(${config.pause} * ${ms});\\n\n\\t\\t_sendToFrontEnd(${config._id}, {paused: false});`;\n }\n\n renderDebug(debugMessage) {\n return I18n.t('Paused: %s', debugMessage.data.paused);\n }\n\n _getOptions(pause) {\n pause = pause === undefined ? this.state.settings.pause : pause;\n if (pause === 1 || pause === '1') {\n return [\n { value: 'ms', title: 'millisecond' },\n { value: 's', title: 'second' },\n { value: 'm', title: 'minute' },\n { value: 'h', title: 'hour' },\n ];\n } else {\n return [\n { value: 'ms', title: 'milliseconds' },\n { value: 's', title: 'seconds' },\n { value: 'm', title: 'minutes' },\n { value: 'h', title: 'hours' },\n ];\n }\n }\n\n _setInputs(pause) {\n this.setState({\n inputs: [\n {\n nameRender: 'renderNumber',\n attr: 'pause',\n defaultValue: 100,\n noHelperText: true,\n },\n {\n nameRender: 'renderSelect',\n attr: 'unit',\n defaultValue: 'ms',\n options: this._getOptions(pause),\n },\n ]\n }, () => super.onTagChange());\n }\n\n onValueChanged(value, attr) {\n if (attr === 'pause') {\n this._setInputs(value);\n }\n }\n\n onTagChange(tagCard) {\n this._setInputs();\n }\n\n static getStaticData() {\n return {\n acceptedBy: 'actions',\n name: 'Pause',\n id: 'ActionPause',\n icon: 'Pause',\n title: 'Make a pause between actions',\n }\n }\n\n getData() {\n return ActionPause.getStaticData();\n }\n}\n\nexport default ActionPause;\n","import GenericBlock from '../GenericBlock';\nimport { I18n } from '@iobroker/adapter-react-v5';\n\nclass ActionFunction extends GenericBlock {\n constructor(props) {\n super(props, ActionFunction.getStaticData());\n }\n\n static compile(config, context) {\n const lines = (config.func || '')\n .split('\\n')\n .map((line, i) => ` ${line}`);\n\n lines.unshift(`\\t\\t_sendToFrontEnd(${config._id}, {func: 'executed'});`);\n lines.unshift(`// user function`);\n\n return lines.join('\\n');\n }\n\n renderDebug(debugMessage) {\n return I18n.t('Function: executed');\n }\n\n onTagChange(tagCard) {\n this.setState({\n inputs: [\n {\n nameRender: 'renderModalInput',\n attr: 'func',\n noTextEdit: true,\n defaultValue: 'console.log(\"Test\")',\n nameBlock: 'Function',\n }\n ]\n }, () => super.onTagChange(tagCard));\n }\n\n static getStaticData() {\n return {\n acceptedBy: 'actions',\n name: 'User function',\n id: 'ActionFunction',\n icon: 'Functions',\n title: 'Write your own code',\n helpDialog: 'This is advances option. You can write your own code here and it will be executed on trigger',\n }\n }\n\n getData() {\n return ActionFunction.getStaticData();\n }\n}\n\nexport default ActionFunction;\n","import GenericBlock from '../GenericBlock';\nimport { I18n } from '@iobroker/adapter-react-v5';\n\nclass ActionSetStateDelayed extends GenericBlock {\n constructor(props) {\n super(props, ActionSetStateDelayed.getStaticData());\n }\n\n isAllTriggersOnState() {\n return this.props.userRules?.triggers?.find(item => item.id === 'TriggerState') &&\n !this.props.userRules?.triggers?.find(item => item.id !== 'TriggerState');\n }\n\n static compile(config, context) {\n let value = config.value;\n if (config.useTrigger) {\n value = config.toggle ? '!obj.state.val' : 'obj.state.val';\n } else {\n if (value === undefined || value === null) {\n value = '';\n }\n\n if (typeof config.value === 'string' &&\n parseFloat(config.value).toString() !== config.value &&\n config.value !== 'true' &&\n config.value !== 'false'\n ) {\n value = `\"${value.replace(/\"/g, '\\\\\"')}\"${GenericBlock.getReplacesInText(context)}`;\n }\n }\n let v;\n if (config.toggle && !config.useTrigger) {\n v = `const subActionVar${config._id} = !(await getStateAsync(\"${config.oid}\")).val`;\n } else {\n v = `const subActionVar${config._id} = ${value}`;\n }\n\n return `// set delayed state ${config.oid} to ${config.toggle && !config.useTrigger ? 'toggle' : value} with delay of ${config.delay}ms\n\\t\\t${v};\n\\t\\t_sendToFrontEnd(${config._id}, {val: subActionVar${config._id}, ack: ${config.tagCard === 'update'}});\n\\t\\tsetStateDelayed(\"${config.oid}\", subActionVar${config._id}, ${config.tagCard === 'update'}, ${parseInt(config.delay, 10)}, ${config.clearRunning ? 'true' : 'false'});`;\n }\n\n static renderValue(val) {\n if (val === null) {\n return 'null';\n } else if (val === undefined) {\n return 'undefined';\n } else if (Array.isArray(val)) {\n return val.join(', ');\n } else if (typeof val === 'object') {\n return JSON.stringify(val);\n } else {\n return val.toString();\n }\n }\n\n renderDebug(debugMessage) {\n return <span>{I18n.t('Set:')} <span className={debugMessage.data.ack ? this.props.classes.valueAck : this.props.classes.valueNotAck}>{ActionSetStateDelayed.renderValue(debugMessage.data.val)}</span></span>;\n }\n\n _setInputs(useTrigger, toggle) {\n const isAllTriggersOnState = this.isAllTriggersOnState();\n\n toggle = toggle === undefined ? this.state.settings.toggle : toggle;\n useTrigger = useTrigger === undefined ? this.state.settings.useTrigger : useTrigger;\n let type = '';\n let options;\n const { oidType, oidUnit, oidStates, oidMax, oidMin, oidRole, oidWrite, oidStep } = this.state.settings;\n let settings;\n\n if (oidType) {\n if (oidType === 'number') {\n type = 'number';\n if (oidMax !== undefined && oidMin !== undefined) {\n type = 'slider';\n }\n } else if (oidType === 'boolean') {\n type = 'boolean';\n if (oidRole && oidRole.includes('button') && oidWrite) {\n type = 'button';\n }\n } else {\n type = '';\n if (oidRole && oidRole.includes('color')) {\n type = 'color';\n }\n }\n\n if (oidStates) {\n options = Object.keys(oidStates).map(val => ({ value: val, title: oidStates[val] }));\n type = 'select';\n }\n }\n let inputs;\n if (isAllTriggersOnState && useTrigger) {\n inputs = [\n {\n backText: 'use trigger value',\n nameRender: 'renderCheckbox',\n attr: 'useTrigger',\n defaultValue: false,\n },\n ];\n if (type === 'boolean') {\n inputs.push({\n backText: 'toggle value',\n attr: 'toggle',\n nameRender: 'renderCheckbox',\n defaultValue: false,\n });\n }\n } else {\n switch (type) {\n case 'number':\n inputs = [{\n backText: oidUnit || '',\n frontText: 'with',\n nameRender: 'renderNumber',\n defaultValue: oidMax === undefined ? 0 : oidMax,\n attr: 'value',\n }];\n if (this.state.settings.value !== undefined && isNaN(parseFloat(this.state.settings.value))) {\n settings = { value: oidMax === undefined ? 0 : oidMax };\n }\n break;\n\n case 'slider':\n inputs = [{\n nameRender: 'renderSlider',\n defaultValue: oidMax,\n min: oidMin,\n max: oidMax,\n unit: oidUnit,\n step: oidStep,\n attr: 'value',\n }];\n const f = parseFloat(this.state.settings.value);\n if (this.state.settings.value !== undefined &&\n (isNaN(f) || f < oidMin || f > oidMax)\n ) {\n settings = { value: oidMax };\n }\n break;\n\n case 'select':\n inputs = [{\n nameRender: 'renderSelect',\n frontText: 'with',\n options,\n defaultValue: options[0].value,\n attr: 'value',\n }];\n if (this.state.settings.value !== undefined && !options.find(item => item.value === this.state.settings.value)) {\n settings = { value: options[0].value };\n }\n break;\n\n case 'boolean':\n inputs = [\n {\n backText: 'toggle value',\n attr: 'toggle',\n nameRender: 'renderCheckbox',\n defaultValue: false,\n }\n ];\n if (!toggle) {\n inputs.push({\n backText: 'true',\n frontText: 'false',\n nameRender: 'renderSwitch',\n defaultValue: false,\n attr: 'value',\n });\n }\n\n if (this.state.settings.value !== undefined && this.state.settings.value !== false && this.state.settings.value !== true) {\n settings = { value: false };\n }\n break;\n\n case 'button':\n inputs = [{\n nameRender: 'renderButton',\n defaultValue: true,\n attr: 'value',\n }];\n if (this.state.settings.value !== undefined && this.state.settings.value !== true) {\n settings = { value: true };\n }\n break;\n\n case 'color':\n inputs = [{\n nameRender: 'renderColor',\n frontText: 'with',\n defaultValue: '#FFFFFF',\n attr: 'value',\n }];\n if (this.state.settings.value !== undefined &&\n (\n typeof this.state.settings.value !== 'string' ||\n (typeof this.state.settings.value.startsWith('#') &&\n typeof this.state.settings.value.startsWith('rgb'))\n )) {\n settings = { value: '#FFFFFF' };\n }\n break;\n\n default:\n inputs = [{\n backText: oidUnit || '',\n frontText: 'with',\n nameRender: 'renderText',\n defaultValue: '',\n attr: 'value',\n }];\n break;\n }\n if (isAllTriggersOnState) {\n inputs.unshift({\n backText: 'use trigger value',\n nameRender: 'renderCheckbox',\n attr: 'useTrigger',\n });\n }\n }\n\n inputs.push({\n backText: 'ms',\n frontText: 'Delay',\n nameRender: 'renderNumber',\n defaultValue: '1000',\n noHelperText: true,\n attr: 'delay',\n });\n inputs.push({\n backText: 'clear running',\n nameRender: 'renderCheckbox',\n defaultValue: true,\n attr: 'clearRunning',\n })\n\n return { inputs, newSettings: settings };\n }\n\n onTagChange(tagCard, cb, ignore, toggle, useTrigger) {\n useTrigger = useTrigger === undefined ? this.state.settings.useTrigger : useTrigger;\n const {inputs, newSettings} = this._setInputs(useTrigger, toggle);\n inputs.unshift({\n nameRender: 'renderObjectID',\n attr: 'oid',\n defaultValue: '',\n checkReadOnly: true,\n });\n\n this.setState({inputs}, () =>\n super.onTagChange(null, () => {\n if (newSettings) {\n const settings = JSON.parse(JSON.stringify(this.state.settings));\n Object.assign(settings, newSettings);\n this.setState(settings);\n this.props.onChange(settings);\n }\n }));\n }\n\n onValueChanged(value, attr, context) {\n this.onTagChange(undefined, undefined, undefined, attr === 'toggle' ? value : undefined, attr === 'useTrigger' ? value : undefined);\n }\n\n onUpdate() {\n this.onTagChange();\n }\n\n static getStaticData() {\n return {\n acceptedBy: 'actions',\n name: 'Set with delay',\n id: 'ActionSetStateDelayed',\n icon: 'PlayForWork',\n tagCardArray: ['control', 'update'],\n title: 'Control or update some state with delay',\n helpDialog: 'You can use %s in the value to use the current trigger value or %id to display the triggered object ID',\n }\n }\n\n getData() {\n return ActionSetStateDelayed.getStaticData();\n }\n}\n\nexport default ActionSetStateDelayed;\n","import GenericBlock from '../GenericBlock';\nimport { I18n } from '@iobroker/adapter-react-v5';\n\nclass ActionOperateStates extends GenericBlock {\n constructor(props) {\n super(props, ActionOperateStates.getStaticData());\n }\n\n isAllTriggersOnState() {\n return this.props.userRules?.triggers?.find(item => item.id === 'TriggerState') &&\n !this.props.userRules?.triggers?.find(item => item.id !== 'TriggerState');\n }\n\n static compile(config, context) {\n let oid1 = `const val2_${config._id} = (await getStateAsync(\"${config.oid1}\")).val;`;\n let oid2 = `const val1_${config._id} = (await getStateAsync(\"${config.oid2}\")).val;`;\n\n return `// ${config.oid1} ${config.operation} ${config.oid2} => ${config.oidResult}\n\\t\\t ${oid1}\n\\t\\t ${oid2}\n\\t\\t_sendToFrontEnd(${config._id}, {val: val1_${config._id} ${config.operation} val2_${config._id}, ack: ${config.tagCard === 'update'}});\n\\t\\tawait setStateAsync(\"${config.oidResult}\", val1_${config._id} ${config.operation} val2_${config._id}, ${config.tagCard === 'update'});`;\n }\n\n static renderValue(val) {\n if (val === null) {\n return 'null';\n } else if (val === undefined) {\n return 'undefined';\n } else if (Array.isArray(val)) {\n return val.join(', ');\n } else if (typeof val === 'object') {\n return JSON.stringify(val);\n } else {\n return val.toString();\n }\n }\n\n renderDebug(debugMessage) {\n return <span>{I18n.t('Set:')} <span className={debugMessage.data.ack ? this.props.classes.valueAck : this.props.classes.valueNotAck}>{ActionOperateStates.renderValue(debugMessage.data.val)}</span></span>;\n }\n\n onTagChange(tagCard, cb, ignore, toggle, useTrigger) {\n const inputs = [];\n\n inputs.push({\n nameRender: 'renderObjectID',\n title: 'ID1',\n attr: 'oid1',\n defaultValue: '',\n checkReadOnly: false,\n });\n\n inputs.push({\n nameRender: 'renderSelect',\n //frontText: 'with',\n options: [\n {value: '+', title: '+'},\n {value: '-', title: '-'},\n {value: '*', title: '*'},\n {value: '/', title: '/'},\n ],\n doNotTranslate: true,\n defaultValue: '+',\n attr: 'operation'\n });\n\n inputs.push({\n nameRender: 'renderObjectID',\n title: 'ID2',\n attr: 'oid2',\n defaultValue: '',\n checkReadOnly: false,\n });\n\n inputs.push({\n nameRender: 'renderNameText',\n defaultValue: 'store in',\n attr: 'textEqual',\n });\n\n inputs.push({\n nameRender: 'renderObjectID',\n attr: 'oidResult',\n defaultValue: '',\n checkReadOnly: true,\n });\n\n this.setState({inputs}, () => super.onTagChange(null, () => {\n const settings = JSON.parse(JSON.stringify(this.state.settings));\n this.props.onChange(settings);\n }));\n }\n\n onValueChanged(value, attr, context) {\n this.onTagChange(undefined, undefined, undefined, attr === 'toggle' ? value : undefined, attr === 'useTrigger' ? value : undefined);\n }\n\n onUpdate() {\n this.onTagChange();\n }\n\n static getStaticData() {\n return {\n acceptedBy: 'actions',\n name: 'Operate two states',\n id: 'ActionOperateStates',\n icon: 'AddBox',\n tagCardArray: ['control', 'update'],\n title: 'Operations with two states',\n }\n }\n\n getData() {\n return ActionOperateStates.getStaticData();\n }\n}\n\nexport default ActionOperateStates;\n","import React, {\n createContext,\n useEffect,\n useState,\n} from 'react';\n\nimport { I18n } from '@iobroker/adapter-react-v5';\n\nimport ActionSayText from '../Blocks/ActionSayText';\nimport ActionSendEmail from '../Blocks/ActionSendEmail';\nimport ActionTelegram from '../Blocks/ActionTelegram';\nimport ActionPushover from '../Blocks/ActionPushover';\nimport ActionWhatsappcmb from '../Blocks/ActionWhatsappcmb';\nimport ActionPushsafer from '../Blocks/ActionPushsafer';\nimport StandardBlocks from '../StandardBlocks';\n\nconst ADAPTERS = {\n telegram: ActionTelegram,\n email: ActionSendEmail,\n sayit: ActionSayText,\n pushover: ActionPushover,\n 'whatsapp-cmb': ActionWhatsappcmb,\n pushsafer: ActionPushsafer,\n};\n\nexport const ContextWrapperCreate = createContext();\n\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(`[data-webpack=\"${remote}\"]`);\n // when remote is loaded...\n const onload = async () => {\n // check if it was initialized\n if (!window[remote]) {\n return reject(`Cannot load Remote \"${remote}\" to inject`);\n }\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 // resolve promise so marking remote as loaded\n resolve();\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();\n }\n });\n\nconst loadComponent = (remote, sharedScope, module, url) => async () => {\n await getOrLoadRemote(remote, sharedScope, url);\n const container = window[remote];\n const factory = await container.get(module);\n const Module = factory();\n return Module;\n};\n\nexport const ContextWrapper = ({ children, socket }) => {\n const [blocks, setBlocks] = useState(null);\n const [onUpdate, setOnUpdate] = useState(false);\n const [onDebugMessage, setOnDebugMessage] = useState(false);\n const [enableSimulation, setEnableSimulation] = useState(false);\n\n useEffect(() => {\n onUpdate && setOnUpdate(false);\n }, [onUpdate]);\n\n useEffect(() => {\n (async () => {\n const instances = await socket.getAdapterInstances();\n const adapters = Object.keys(ADAPTERS).filter(adapter =>\n instances.find(obj => obj?.common?.name === adapter));\n\n const adapterDynamicBlocksArray = [];\n\n // find all adapters, that have custom rule blocks\n const dynamicRules = instances.filter(obj => obj.common.javascriptRules);\n\n const alreadyCreated = [];\n for (let k in dynamicRules) {\n const obj = dynamicRules[k];\n if (alreadyCreated.includes(obj.common.name)) {\n continue;\n }\n\n let url;\n if (obj.common.javascriptRules.url.startsWith('http:') || obj.common.javascriptRules.url.startsWith('https:')) {\n url = obj.common.javascriptRules.url;\n } else if (obj.common.javascriptRules.url.startsWith('./')) {\n url = `${window.location.protocol}//${window.location.host}${obj.common.javascriptRules.url.replace(/^\\./, '')}`;\n } else {\n url = `${window.location.protocol}//${window.location.host}/adapter/${obj.common.name}/${obj.common.javascriptRules.url}`;\n }\n\n if (obj.common.javascriptRules.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 => {\n if (lang !== 'en') {\n // try to load english\n return fetch(`${i18nURL}/i18n/en.json`)\n .then(data => data.json())\n .then(json => I18n.extendTranslations(json, lang))\n .catch(error => console.error(`Cannot load i18n \"${file}\": ${error}`))\n } else {\n console.log(`Cannot load i18n \"${file}\": ${error}`)\n }\n });\n } else if (obj.common.javascriptRules.i18n && typeof obj.common.javascriptRules.i18n === 'object') {\n try {\n I18n.extendTranslations(obj.common.javascriptRules.i18n);\n } catch (error) {\n console.error(`Cannot import i18n for \"${obj.common.javascriptRules.name}\": ${error}`);\n }\n }\n\n try {\n const Component = (await loadComponent(obj.common.javascriptRules.name, 'default', `./${obj.common.javascriptRules.name}`, url)()).default;\n\n if (Component) {\n adapterDynamicBlocksArray.push(Component);\n alreadyCreated.push(obj.common.name);\n ADAPTERS[obj.common.name] = null;\n }\n } catch (e) {\n console.error(`Cannot load component \"${obj.common.javascriptRules.name}\": ${e}`);\n }\n }\n\n const adapterBlocksArray = adapters.filter(adapter => ADAPTERS[adapter]).map(adapter => ADAPTERS[adapter]);\n\n setBlocks([...StandardBlocks, ...adapterBlocksArray, ...adapterDynamicBlocksArray]);\n })();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return <ContextWrapperCreate.Provider value={{\n blocks,\n socket,\n onUpdate,\n setOnUpdate,\n onDebugMessage,\n setOnDebugMessage,\n enableSimulation,\n setEnableSimulation\n }}>\n {children}\n </ContextWrapperCreate.Provider>;\n};","import React, {memo, useCallback, useContext, useEffect, useMemo, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport cls from './style.module.scss';\nimport { deepCopy } from '../../helpers/deepCopy';\nimport { filterElement } from '../../helpers/filterElement';\nimport { ContextWrapperCreate } from '../ContextWrapper';\nimport { findElement } from '../../helpers/findElement';\nimport GenericBlock from '../GenericBlock';\n\n// @iobroker/javascript-block\n\nconst CurrentItem = memo(props => {\n const { setUserRules, userRules, _id, id, blockValue, active, acceptedBy, isTourOpen, setTourStep, tourStep } = props;\n const [anchorEl, setAnchorEl] = useState(null);\n const { blocks, socket, onUpdate, setOnUpdate, onDebugMessage, enableSimulation } = useContext(ContextWrapperCreate);\n\n useEffect(() => {\n console.log('New message !!' + JSON.stringify(onDebugMessage));\n }, [onDebugMessage]);\n\n\n const findElementBlocks = useCallback(id => blocks.find(el => {\n const staticData = el.getStaticData();\n return staticData.id === id;\n }), [blocks]);\n\n const onChange = useCallback(settings => {\n let newUserRules = findElement(settings, userRules, blockValue);\n newUserRules && setUserRules(newUserRules);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [userRules]);\n\n const handlePopoverOpen = event =>\n event.currentTarget !== anchorEl && setAnchorEl(event.currentTarget);\n\n const handlePopoverClose = () =>\n setAnchorEl(null);\n\n const blockInput = useMemo(() => {\n const CustomBlock = findElementBlocks(id) || GenericBlock;\n return <CustomBlock\n isTourOpen={isTourOpen}\n setTourStep={setTourStep}\n tourStep={tourStep}\n notFound={!findElementBlocks(id)}\n {...props}\n onUpdate={onUpdate}\n setOnUpdate={setOnUpdate}\n enableSimulation={enableSimulation}\n onDebugMessage={onDebugMessage}\n onChange={onChange}\n className={null}\n socket={socket}\n />;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [userRules, onUpdate, onDebugMessage, enableSimulation]);\n\n const [isDelete, setIsDelete] = useState(false);\n\n return <div\n onMouseMove={handlePopoverOpen}\n onMouseEnter={handlePopoverOpen}\n onMouseLeave={handlePopoverClose}\n onMouseDown={el => {\n if (el.ctrlKey) {\n let newItem;\n let newUserRules = deepCopy(acceptedBy, userRules, blockValue);\n if (blockValue !== \"triggers\") {\n newItem = newUserRules[acceptedBy][blockValue].find(el => el._id === _id);\n } else {\n newItem = newUserRules[acceptedBy].find(el => el._id === _id);\n }\n if (blockValue !== \"triggers\") {\n newUserRules[acceptedBy][blockValue].splice(newUserRules[acceptedBy][blockValue].indexOf(newItem), 0, { ...newItem, _id: Date.now() });\n } else {\n newUserRules[acceptedBy].splice(newUserRules[acceptedBy].indexOf(newItem), 0, { ...newItem, _id: Date.now() });\n }\n setUserRules(newUserRules);\n }\n }}\n id=\"height\"\n style={active ? { width: document.getElementById('width').clientWidth - 70 } : null}\n className={`${cls.cardStyle} ${active ? cls.cardStyleActive : null} ${isDelete ? cls.isDelete : null}`}>\n <div className={cls.drag_mobile} />\n {blockInput}\n {setUserRules && <div className={cls.controlMenu} style={Boolean(anchorEl) ? { opacity: 1 } : { opacity: 0 }}>\n <div onClick={e => {\n let newItemsSwitches = deepCopy(acceptedBy, userRules, blockValue);\n newItemsSwitches = filterElement(acceptedBy, newItemsSwitches, blockValue, _id);\n setIsDelete(true);\n setTimeout(() => {\n if (acceptedBy === 'triggers') {\n setOnUpdate(true);\n }\n setUserRules(newItemsSwitches);\n }, 300);\n }} className={cls.closeBtn} />\n </div>}\n </div>;\n});\n\nCurrentItem.defaultProps = {\n active: false\n};\n\nCurrentItem.propTypes = {\n name: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n};\n\nexport default CurrentItem;","export function findElement(settings, userRules, additionalParameter) {\n const { _id, acceptedBy } = settings;\n let block;\n\n if (!acceptedBy || !userRules[acceptedBy]) {\n console.warn('Cannot find ' + acceptedBy);\n return userRules;\n }\n\n switch (acceptedBy) {\n case 'actions':\n block = userRules[acceptedBy][additionalParameter].find(el => el._id === _id);\n if (!block) {\n console.warn('Cannot find ' + _id);\n } else {\n userRules[acceptedBy][additionalParameter][userRules[acceptedBy][additionalParameter].indexOf(block)] = settings;\n }\n return userRules;\n case 'conditions':\n block = userRules[acceptedBy][additionalParameter].find(el => el._id === _id);\n if (!block) {\n console.warn('Cannot find ' + _id);\n } else {\n userRules[acceptedBy][additionalParameter][userRules[acceptedBy][additionalParameter].indexOf(block)] = settings;\n }\n return userRules;\n default:\n block = userRules[acceptedBy].find(el => el._id === _id);\n if (!block) {\n console.warn('Cannot find ' + _id);\n } else {\n userRules[acceptedBy][userRules[acceptedBy].indexOf(block)] = settings;\n }\n return userRules;\n }\n}","import React from 'react';\nimport { useDragLayer } from 'react-dnd';\nimport CardMenu from '../CardMenu';\nimport CurrentItem from '../CurrentItem';\n\nconst layerStyles = {\n position: 'fixed',\n pointerEvents: 'none',\n zIndex: 100,\n left: 0,\n top: 0,\n width: '100%',\n height: '100%'\n};\n\nconst snapToGrid = (x, y) => {\n const snappedX = Math.round(x / 32) * 32\n const snappedY = Math.round(y / 32) * 32\n return [snappedX, snappedY]\n}\n\nconst getItemStyles = (initialOffset, currentOffset, isSnapToGrid) => {\n if (!initialOffset || !currentOffset) {\n return {\n display: 'none'\n };\n }\n let { x, y } = currentOffset;\n if (isSnapToGrid) {\n x -= initialOffset.x;\n y -= initialOffset.y;\n [x, y] = snapToGrid(x, y);\n x += initialOffset.x;\n y += initialOffset.y;\n }\n const transform = `translate(${x}px, ${y}px)`;\n return {\n transform,\n WebkitTransform: transform\n };\n}\n\nexport const CustomDragLayer = props => {\n const {\n itemType,\n isDragging,\n item,\n initialOffset,\n currentOffset,\n targetIds\n } = useDragLayer(monitor => ({\n item: monitor.getItem(),\n itemType: monitor.getItemType(),\n initialOffset: monitor.getInitialSourceClientOffset(),\n currentOffset: monitor.getSourceClientOffset(),\n isDragging: monitor.isDragging(),\n targetIds: monitor.getTargetIds()\n }));\n\n const renderItem = () => {\n switch (itemType) {\n case 'box':\n return targetIds.length ? <CurrentItem active {...item} allBlocks={props.allBlocks}/> :\n <CardMenu active {...item} socket={props.socket}/>;\n default:\n return null;\n }\n }\n\n if (!isDragging) {\n return null;\n }\n\n return <div style={layerStyles}>\n <div style={getItemStyles(initialOffset, currentOffset)}>\n {renderItem()}\n </div>\n </div>;\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"border\":\"style_border__Zz9Km\",\"emptyBlockStyle\":\"style_emptyBlockStyle__sE5FO\",\"emptyBlock\":\"style_emptyBlock__dMBHS\",\"marginTop\":\"style_marginTop__uK9O+\",\"selectOnChange\":\"style_selectOnChange__6r-uo\",\"selectOnChangeHelp\":\"style_selectOnChangeHelp__nP0g8\",\"selectOnChangeHelpIcon\":\"style_selectOnChangeHelpIcon__r7G9x\",\"emptyBlockNone\":\"style_emptyBlockNone__DS6GG\",\"mainBlockItemRules\":\"style_mainBlockItemRules__JYCaQ\",\"nameBlockItems\":\"style_nameBlockItems__sNeEH\",\"contentBlockItem\":\"style_contentBlockItem__SQejW\",\"wrapperMargin\":\"style_wrapperMargin__v8PwE\",\"contentHeightOn\":\"style_contentHeightOn__T3ZZ-\",\"heightBlock\":\"style_heightBlock__B96p1\",\"contentHeightOff\":\"style_contentHeightOff__eaSlV\",\"cardAdd\":\"style_cardAdd__SNY3P\",\"blockCardAdd\":\"style_blockCardAdd__xHdXK\",\"addClassOverflow\":\"style_addClassOverflow__bcVva\",\"addClassHeight\":\"style_addClassHeight__GJALi\"};","import * as React from 'react';\n\nexport function useStateLocal(events, nameEvents) {\n const [state, setState] = React.useState(\n localStorage.getItem(nameEvents) ? JSON.parse(localStorage.getItem(nameEvents)) : events\n );\n\n const eventsToInstall = (newHeadCells) => {\n localStorage.setItem(nameEvents, JSON.stringify(newHeadCells));\n setState(newHeadCells);\n };\n return [state, eventsToInstall, localStorage.getItem(nameEvents) ? true : false];\n}\n","import _ from \"lodash\";\n\nconst funcSet = _.throttle(\n (setCards, userRules) => setCards(userRules)\n , 0);\n\nconst moveCard = (\n id,\n atIndex,\n cards,\n setCards,\n userRules,\n acceptedBy,\n additionally,\n hoverClientY,\n hoverMiddleY) => {\n\n const { card, index } = findCard(id, cards);\n if (index < atIndex && hoverClientY < hoverMiddleY) {\n return;\n }\n if (index > atIndex && hoverClientY > hoverMiddleY) {\n return;\n }\n if (card && index !== atIndex) {\n const copyCard = _.clone(cards);\n copyCard.splice(index, 1);\n copyCard.splice(atIndex, 0, card);\n const newTriggers = _.clone(userRules);\n switch (acceptedBy) {\n case 'actions':\n newTriggers[acceptedBy][additionally] = copyCard;\n funcSet(setCards, newTriggers);\n return;\n case 'conditions':\n newTriggers[acceptedBy][additionally] = copyCard;\n funcSet(setCards, newTriggers);\n return;\n default:\n newTriggers[acceptedBy] = copyCard;\n funcSet(setCards, newTriggers);\n return;\n }\n }\n};\nconst findCard = (id, cards) => {\n const card = cards.find((c) => c._id === id);\n return {\n card,\n index: cards.indexOf(card),\n };\n};\n\nexport { moveCard, findCard };","// extracted by mini-css-extract-plugin\nexport default {\"drag\":\"style_drag__Gq61w\",\"root\":\"style_root__nSnEB\"};","import React, { useContext, useEffect, useRef } from 'react';\n// import { I18n } from '@iobroker/adapter-react-v5';\nimport PropTypes from 'prop-types';\nimport { useDrag, useDrop } from 'react-dnd';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { deepCopy } from '../../helpers/deepCopy';\nimport { filterElement } from '../../helpers/filterElement';\nimport { findCard, moveCard } from '../../helpers/cardSort';\nimport { ContextWrapperCreate } from '../ContextWrapper';\nimport cls from './style.module.scss';\n\nconst DragWrapper = ({ typeBlocks, allProperties, id, isActive, setUserRules, userRules, children, _id, blockValue }) => {\n const { setOnUpdate } = useContext(ContextWrapperCreate);\n const [{ opacity }, drag, preview] = useDrag({\n type: 'box',\n item: () => ({ ...allProperties, id, isActive, _id }),\n end: (item, monitor) => {\n let { acceptedBy } = item;\n let dropResult = monitor.getDropResult();\n let newUserRules;\n if (!dropResult) {\n if (typeof _id === 'number' && !monitor.getTargetIds().length) {\n newUserRules = deepCopy(acceptedBy, userRules, blockValue);\n newUserRules = filterElement(acceptedBy, newUserRules, blockValue, _id);\n setUserRules(newUserRules);\n }\n return null;\n }\n if (dropResult.blockValue !== blockValue) {\n let idNumber = typeof _id === 'number' ? _id : Date.now();\n newUserRules = deepCopy(acceptedBy, userRules, dropResult.blockValue);\n const newItem = { id: item.id, acceptedBy: item.acceptedBy }\n switch (acceptedBy) {\n case 'actions':\n if (blockValue) {\n newUserRules = filterElement(acceptedBy, newUserRules, blockValue, _id);\n }\n newUserRules = filterElement(acceptedBy, newUserRules, dropResult.blockValue, _id);\n newUserRules[acceptedBy][dropResult.blockValue].push({ ...newItem, _id: idNumber });\n return setUserRules(newUserRules);\n\n case 'conditions':\n if (typeof blockValue === 'number') {\n newUserRules = filterElement(acceptedBy, newUserRules, blockValue, _id);\n }\n newUserRules = filterElement(acceptedBy, newUserRules, dropResult.blockValue, _id);\n newUserRules[acceptedBy][dropResult.blockValue].push({ ...newItem, _id: idNumber });\n return setUserRules(newUserRules);\n\n default:\n setOnUpdate(true);\n newUserRules = filterElement(acceptedBy, newUserRules, dropResult.blockValue, _id);\n newUserRules[acceptedBy].push({ ...newItem, _id: idNumber });\n return setUserRules(newUserRules);\n }\n }\n },\n collect: monitor => ({\n opacity: monitor.isDragging() ? 0.4 : 1,\n isDragging: monitor.isDragging(),\n }),\n });\n const ref = useRef(null)\n const [, drop] = useDrop({\n accept: 'box',\n canDrop: () => false,\n hover({ _id: draggedId, acceptedBy }, monitor) {\n if (!ref.current) {\n return;\n }\n if (typeBlocks !== acceptedBy) {\n return\n }\n const hoverBoundingRect = ref.current?.getBoundingClientRect();\n const hoverMiddleY = (hoverBoundingRect.bottom - hoverBoundingRect.top) / 2;\n const clientOffset = monitor.getClientOffset();\n const hoverClientY = clientOffset.y - hoverBoundingRect.top;\n\n if (!!_id && draggedId !== _id) {\n switch (acceptedBy) {\n case 'actions':\n if (blockValue === 'then' || blockValue === 'else') {\n const { index: overIndexActions } = findCard(_id, userRules[acceptedBy][blockValue]);\n if (overIndexActions !== draggedId) {\n moveCard(draggedId,\n overIndexActions,\n userRules[acceptedBy][blockValue],\n setUserRules,\n userRules,\n acceptedBy,\n blockValue,\n hoverClientY,\n hoverMiddleY\n );\n }\n }\n return;\n case 'conditions':\n if (typeof blockValue === 'number') {\n const { index: overIndexConditions } = findCard(_id, userRules[acceptedBy][blockValue]);\n if (overIndexConditions !== draggedId) {\n moveCard(draggedId,\n overIndexConditions,\n userRules[acceptedBy][blockValue],\n setUserRules,\n userRules,\n acceptedBy,\n blockValue,\n hoverClientY,\n hoverMiddleY\n );\n }\n }\n return;\n default:\n const { index: overIndex } = findCard(_id, userRules[acceptedBy]);\n if (overIndex !== draggedId) {\n moveCard(draggedId,\n overIndex,\n userRules[acceptedBy],\n setUserRules,\n userRules,\n acceptedBy,\n null,\n hoverClientY,\n hoverMiddleY\n );\n }\n return;\n }\n }\n }\n });\n useEffect(() => {\n preview(getEmptyImage(), { captureDraggingState: true });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n drag(drop(ref));\n const isMobile = window.innerWidth < 600;\n return <div ref={isMobile && _id ? null : ref} className={cls.root} style={{ opacity }}><div className={_id ? cls.drag : null} ref={_id && isMobile ? ref : null} />{children}</div>;\n}\n\nDragWrapper.defaultProps = {\n name: '',\n active: false,\n id: '',\n _id: null\n};\n\nDragWrapper.propTypes = {\n name: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n\nexport default DragWrapper;","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\n\nimport IconOk from '@mui/icons-material/Check';\n\nimport { I18n } from '@iobroker/adapter-react-v5';\n\nconst DialogHelp = ({ onClose, open }) => <Dialog\n open={open}\n onClose={onClose}\n aria-labelledby=\"alert-dialog-title\"\n aria-describedby=\"alert-dialog-description\"\n>\n <DialogContent>\n <div style={{\n fontSize: '1rem',\n fontFamily: '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif',\n fontWeight: 400,\n lineHeight: 1.5,\n letterSpacing: '0.00938em'\n }} >\n <h3>{I18n.t('On condition change')}</h3>\n <div>{I18n.t('help_on_change')}</div>\n <h3>{I18n.t('Just check')}</h3>\n <div>{I18n.t('help_just_check')}</div>\n </div>\n </DialogContent>\n <DialogActions>\n <Button onClick={onClose} color=\"primary\" autoFocus startIcon={<IconOk/>}>\n {I18n.t('OK')}\n </Button>\n </DialogActions>\n</Dialog >;\n\nDialogHelp.defaultProps = {\n open: false,\n onClose: () => { }\n};\n\nDialogHelp.propTypes = {\n open: PropTypes.bool,\n onClose: PropTypes.func\n};\n\nexport default DialogHelp;","import React from 'react';\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 DialogContentText from '@mui/material/DialogContentText';\nimport { I18n } from '@iobroker/adapter-react-v5';\nimport PropTypes from 'prop-types';\n\nconst DialogCondition = ({ onClose, open }) => <Dialog\n open={open}\n onClose={onClose}\n aria-labelledby=\"alert-dialog-title\"\n aria-describedby=\"alert-dialog-description\"\n>\n <DialogContent>\n <DialogContentText id=\"alert-dialog-description\">\n <h3>{I18n.t('On condition change')}</h3>\n <div>{I18n.t('help_on_change')}</div>\n <h3>{I18n.t('Just check')}</h3>\n <div>{I18n.t('help_just_check')}</div>\n </DialogContentText>\n </DialogContent>\n <DialogActions>\n <Button onClick={onClose} color=\"primary\" autoFocus>\n {I18n.t('OK')}\n </Button>\n </DialogActions>\n</Dialog>;\n\nDialogCondition.defaultProps = {\n open: false,\n onClose: () => { }\n};\n\nDialogCondition.propTypes = {\n open: PropTypes.bool,\n onClose: PropTypes.func\n};\n\nexport default DialogCondition;","import React, { Fragment, useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useDrop } from 'react-dnd';\n\nimport Select from '@mui/material/Select';\nimport MenuItem from '@mui/material/MenuItem';\nimport IconButton from '@mui/material/IconButton';\nimport IconHelp from '@mui/icons-material/HelpOutline';\n\nimport { I18n, Utils } from '@iobroker/adapter-react-v5';\n\nimport cls from './style.module.scss';\nimport { deepCopy } from '../../helpers/deepCopy';\nimport CurrentItem from '../CurrentItem';\nimport { useStateLocal } from '../../hooks/useStateLocal';\nimport DragWrapper from '../DragWrapper';\nimport MaterialDynamicIcon from '../../helpers/MaterialDynamicIcon';\nimport DialogHelp from './DialogHelp';\nimport DialogCondition from './DialogCondition';\n\nconst AdditionallyContentBlockItems = ({ size, itemsSwitchesRender, blockValue, boolean, typeBlock, userRules, setUserRules, animation, setTourStep, tourStep, isTourOpen }) => {\n const [checkItem, setCheckItem] = useState(false);\n const [canDropCheck, setCanDropCheck] = useState(false);\n const [checkId, setCheckId] = useState(false);\n const [hoverBlock, setHoverBlock] = useState('');\n\n const options = useDrop({\n accept: 'box',\n drop: () => ({ blockValue }),\n hover: ({ acceptedBy, _id }, monitor) => {\n setCheckItem(acceptedBy === typeBlock);\n setCheckId(!!_id);\n setHoverBlock(monitor.getHandlerId());\n },\n canDrop: ({ acceptedBy }, monitor) => {\n setCanDropCheck(acceptedBy === typeBlock);\n return acceptedBy === typeBlock;\n },\n collect: monitor => ({\n isOver: monitor.isOver(),\n canDrop: monitor.getItem()?.acceptedBy === typeBlock,\n offset: monitor.getClientOffset(),\n targetId: monitor.targetId\n }),\n });\n\n const [{ canDrop, isOver, offset, targetId }, drop] = options;\n\n useEffect(() => { setHoverBlock('') }, [offset]);\n\n const isActive = canDrop && isOver;\n let backgroundColor = '';\n if (isActive) {\n backgroundColor = checkItem ? '#00fb003d' : '#fb00002e';\n } else if (canDrop) {\n backgroundColor = canDropCheck ? '#00fb003d' : '#fb00002e';\n } else if (offset) {\n backgroundColor = targetId === hoverBlock ? '#fb00002e' : '';\n }\n\n return <div ref={drop} style={{ backgroundColor }} className={`${Utils.clsx(cls.contentBlockItem,size && cls.addClassHeight)} ${boolean ? animation ? cls.contentHeightOn : null : cls.contentHeightOff}`}>\n <div className={cls.wrapperMargin}>{itemsSwitchesRender[blockValue]?.map(el => (\n <DragWrapper\n typeBlocks={typeBlock}\n key={el._id}\n {...el}\n blockValue={blockValue}\n allProperties={el}\n userRules={userRules}\n setUserRules={setUserRules}\n >\n <CurrentItem\n {...el}\n isTourOpen={isTourOpen}\n setTourStep={setTourStep}\n tourStep={tourStep}\n settings={el}\n blockValue={blockValue}\n userRules={userRules}\n setUserRules={setUserRules}\n />\n </DragWrapper>))}\n <div\n style={isActive && checkItem && !checkId ? { height: document.getElementById('height') ? document.getElementById('height').clientHeight : 200 } : null}\n className={`${cls.emptyBlockStyle} ${isActive && checkItem && !checkId ? cls.emptyBlock : cls.emptyBlockNone}`}\n />\n </div>\n </div>;\n}\n\nAdditionallyContentBlockItems.defaultProps = {\n children: null,\n boolean: true,\n animation: false\n};\n\nconst ContentBlockItems = ({ size, typeBlock, name, nameAdditionally, additionally, border, userRules, setUserRules, iconName, adapter, socket, setTourStep, tourStep, isTourOpen }) => {\n const [additionallyClickItems, setAdditionallyClickItems, checkLocal] = useStateLocal(typeBlock === 'actions' ? false : [], `additionallyClickItems_${typeBlock}`);\n const [showHelp, setShowHelp] = useState(false);\n const [showConditionDialog, setShowConditionDialog] = useState(false);\n\n useEffect(() => {\n if (typeBlock === 'conditions' && additionallyClickItems.length !== userRules['conditions'].length - 1) {\n let newArray = [];\n userRules['conditions'].forEach((el, idx) => {\n if (idx > 0) {\n newArray.push({\n _id: Date.now(),\n open: true,\n });\n }\n });\n setAdditionallyClickItems([...additionallyClickItems, ...newArray]);\n }\n if (typeBlock === 'actions' && !checkLocal && userRules['actions']['else'].length) {\n setAdditionallyClickItems(true);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const [animation, setAnimation] = useState(false);\n\n return <div className={`${Utils.clsx(cls.mainBlockItemRules, size && cls.addClassOverflow)} ${border && !size ? cls.border : null}`}>\n <span id='width' className={cls.nameBlockItems}>\n <MaterialDynamicIcon iconName={iconName} className={cls.iconThemCard} adapter={adapter} socket={socket} />{name}\n </span>\n {typeBlock === 'conditions' ?\n <div style={{ width: '100%' }}>\n <Select\n variant=\"standard\"\n className={cls.selectOnChange}\n value={userRules.justCheck || false}\n onChange={e => {\n const _userRules = deepCopy('conditions', userRules);\n _userRules.justCheck = e.target.value;\n setUserRules(_userRules);\n }}\n >\n <MenuItem value={false}>{I18n.t('on condition change')}</MenuItem>\n <MenuItem value={true}>{I18n.t('just check')}</MenuItem>\n </Select>\n <IconButton size=\"small\" title={I18n.t('Explanation')} className={cls.selectOnChangeHelp} onClick={() => setShowHelp(true)}>\n <IconHelp className={cls.selectOnChangeHelpIcon} />\n </IconButton>\n </div>\n : null}\n <AdditionallyContentBlockItems\n setTourStep={setTourStep}\n tourStep={tourStep}\n isTourOpen={isTourOpen}\n blockValue={typeBlock === 'actions' ? 'then' : typeBlock === 'conditions' ? 0 : typeBlock}\n typeBlock={typeBlock}\n setUserRules={setUserRules}\n userRules={userRules}\n size={size}\n itemsSwitchesRender={typeBlock === 'actions' ? userRules['actions'] : typeBlock === 'conditions' ? userRules['conditions'] : userRules}\n />\n {additionally && [...Array(typeBlock === 'actions' ? 1 : userRules.conditions.length - 1)].map((e, index) => {\n const booleanAdditionally = (value = index) => Boolean(typeBlock === 'actions' ? additionallyClickItems : additionallyClickItems.find((el, idx) => idx === value && el.open));\n return <Fragment key={`${index}_block_${typeBlock}`}>\n <div\n onClick={() => {\n if (typeBlock === 'actions') {\n setAdditionallyClickItems(!additionallyClickItems);\n return null;\n }\n let newAdditionally = JSON.parse(JSON.stringify(additionallyClickItems));\n if (userRules['conditions'][index + 1].length) {\n newAdditionally[index].open = !newAdditionally[index].open\n setAdditionallyClickItems(newAdditionally);\n return null;\n }\n newAdditionally = newAdditionally.filter((el, idx) => idx !== index);\n setAdditionallyClickItems(newAdditionally);\n setAnimation(typeBlock === 'actions' ? true : index);\n setTimeout(() => {\n setAnimation(false);\n setUserRules({ ...userRules, conditions: [...userRules.conditions.filter((el, idx) => idx !== index + 1)] });\n }, 250);\n\n }}\n key={index} className={cls.blockCardAdd}>\n {booleanAdditionally() ? '-' : '+'}<div className={cls.cardAdd}>\n {nameAdditionally}\n </div>\n </div>\n <AdditionallyContentBlockItems\n blockValue={typeBlock === 'actions' ? 'else' : typeBlock === 'conditions' ? index + 1 : typeBlock}\n typeBlock={typeBlock}\n setUserRules={setUserRules}\n itemsSwitchesRender={typeBlock === 'actions' ? userRules['actions'] : typeBlock === 'conditions' ? userRules['conditions'] : userRules}\n userRules={userRules}\n boolean={booleanAdditionally()}\n animation={Boolean(animation === index)}\n size={size}\n />\n </Fragment>\n })}\n {additionally && typeBlock === 'conditions' && <div\n onClick={() => {\n setAdditionallyClickItems([...additionallyClickItems, {\n _id: Date.now(),\n open: true\n }]);\n setUserRules({ ...userRules, conditions: [...userRules.conditions, []] });\n setAnimation(typeBlock === 'actions' ? true : userRules.conditions.length - 1);\n setTimeout(() => setAnimation(false), 1000);\n }}\n className={cls.blockCardAdd}\n >\n {'+'}\n <div className={cls.cardAdd}>\n {nameAdditionally}\n </div>\n </div>}\n <DialogHelp open={showHelp} onClose={() => setShowHelp(false)} />\n <DialogCondition open={showConditionDialog} onClose={() => setShowConditionDialog(false)} />\n </div>;\n}\n\nContentBlockItems.defaultProps = {\n children: null,\n name: '',\n nameAdditionally: '',\n additionally: false,\n border: false,\n typeBlock: '',\n};\n\nContentBlockItems.propTypes = {\n name: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n nameAdditionally: PropTypes.string,\n border: PropTypes.bool,\n additionally: PropTypes.bool,\n children: PropTypes.object,\n typeBlock: PropTypes.string,\n blockValue: PropTypes.string,\n userRules: PropTypes.object,\n setUserRules: PropTypes.func,\n};\n\nexport default ContentBlockItems;","// extracted by mini-css-extract-plugin\nexport default {\"menuRules\":\"style_menuRules__NRFrw\",\"switchesRenderWrapper\":\"style_switchesRenderWrapper__MHBpo\",\"menuOff\":\"style_menuOff__GV8BN\",\"menuTitle\":\"style_menuTitle__bnI7K\",\"marginAuto\":\"style_marginAuto__h3I6J\",\"inputWidth\":\"style_inputWidth__Hkd3w\",\"menuWrapper\":\"style_menuWrapper__16zE-\",\"hamburgerWrapper\":\"style_hamburgerWrapper__+AsNg\",\"hamburgerOff\":\"style_hamburgerOff__Tmmok\",\"nothingFound\":\"style_nothingFound__hm0xN\",\"resetSearch\":\"style_resetSearch__oA8LS\",\"controlPanel\":\"style_controlPanel__ojI7Z\",\"controlPanelAppBar\":\"style_controlPanelAppBar__fjB3Y\",\"addClassMenu\":\"style_addClassMenu__3n58b\",\"addClassBackground\":\"style_addClassBackground__j1FHK\",\"addClassPosition\":\"style_addClassPosition__YL+W4\"};","import React from 'react';\nimport CardMenu from '.';\nimport { deepCopy } from '../../helpers/deepCopy';\nimport DragWrapper from '../DragWrapper';\nimport { STEPS } from '../../helpers/Tour';\n\nconst CustomDragItem = props => {\n const { allProperties, allProperties: { acceptedBy, id }, setUserRules, userRules, setTourStep, tourStep, isTourOpen, onTouchMove } = props;\n return <DragWrapper {...props} {...allProperties}>\n <CardMenu\n onTouchMove={onTouchMove}\n onDoubleClick={() => {\n (isTourOpen &&\n tourStep === STEPS.addScheduleByDoubleClick &&\n id === 'TriggerScheduleBlock' &&\n setTourStep(STEPS.openTagsMenu)\n );\n (isTourOpen &&\n tourStep === STEPS.addActionPrintText &&\n id === 'ActionPrintText' &&\n setTourStep(STEPS.showJavascript)\n );\n let _id = Date.now();\n let blockValue;\n switch (acceptedBy) {\n case 'actions':\n blockValue = 'then';\n break;\n\n case 'conditions':\n blockValue = userRules[acceptedBy].length - 1;\n break;\n\n default:\n break;\n }\n let newUserRules = deepCopy(acceptedBy, userRules, blockValue);\n const newItem = { id, _id, acceptedBy };\n if (blockValue !== undefined) {\n newUserRules[acceptedBy][blockValue].push({ ...newItem });\n } else {\n newUserRules[acceptedBy].push({ ...newItem });\n }\n setUserRules(newUserRules);\n }} onDoubl {...props} {...allProperties} />\n </DragWrapper>;\n}\n\nexport default CustomDragItem;","// extracted by mini-css-extract-plugin\nexport default {\"menu_wrapper\":\"hamburgerMenu_menu_wrapper__H+bSr\",\"hamburgerMenu\":\"hamburgerMenu_hamburgerMenu__zKaBW\",\"animate\":\"hamburgerMenu_animate__CjZxq\",\"menu_conatiner_wrapper\":\"hamburgerMenu_menu_conatiner_wrapper__9BkY3\"};","import React from 'react';\nimport cls from './hamburgerMenu.module.scss';\nimport PropTypes from 'prop-types';\n\nconst HamburgerMenu = ({boolean}) => {\n return <div className={`${cls.hamburgerMenu} ${boolean ? cls.animate : ''}`}/>\n}\n\nHamburgerMenu.defaultProps = {\n boolean: false\n};\n\nHamburgerMenu.propTypes = {\n boolean: PropTypes.bool\n};\n\nexport default HamburgerMenu;","import React, { Fragment, useContext, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { AppBar, ClickAwayListener, Tab, Tabs } from '@mui/material';\n\nimport { I18n, Utils } from '@iobroker/adapter-react-v5';\n\nimport cls from './style.module.scss';\n\nimport CustomInput from '../CustomInput';\nimport CustomDragItem from '../CardMenu/CustomDragItem';\nimport HamburgerMenu from '../HamburgerMenu';\nimport { useStateLocal } from '../../hooks/useStateLocal';\nimport { ContextWrapperCreate } from '../ContextWrapper';\nimport MaterialDynamicIcon from '../../helpers/MaterialDynamicIcon';\nimport { STEPS } from '../../helpers/Tour';\n\nconst Menu = ({ addClass, setAllBlocks, allBlocks, userRules, onChangeBlocks, setTourStep, tourStep, isTourOpen }) => {\n // eslint-disable-next-line no-unused-vars\n const { blocks, socket } = useContext(ContextWrapperCreate);\n const [hamburgerOnOff, setHamburgerOnOff] = useStateLocal(false, 'hamburgerOnOff');\n const [filter, setFilter] = useStateLocal({\n text: '',\n type: 'triggers',\n index: 0\n }, 'filterControlPanel');\n\n const handleChange = (event, newValue) => {\n isTourOpen && (newValue === 0 && tourStep === STEPS.selectTriggers) && setTourStep(STEPS.addScheduleByDoubleClick);\n isTourOpen && (newValue === 2 && tourStep === STEPS.selectActions) && setTourStep(STEPS.addActionPrintText);\n setFilter({\n ...filter,\n index: newValue,\n type: ['triggers', 'conditions', 'actions'][newValue]\n });\n setBlocksFunc(filter.text, ['triggers', 'conditions', 'actions'][newValue]);\n };\n\n const setBlocksFunc = (text = filter.text, typeFunc = filter.type) => {\n if (!blocks) {\n return;\n }\n let newAllBlocks = [...blocks];\n newAllBlocks = newAllBlocks.filter(el => {\n if (!text) {\n return true;\n }\n const { name } = el.getStaticData();\n return name && I18n.t(name).toLowerCase().includes(text.toLowerCase());\n });\n newAllBlocks = newAllBlocks.filter(el => typeFunc === el.getStaticData().acceptedBy);\n setAllBlocks(newAllBlocks);\n };\n\n const a11yProps = index => ({\n id: `scrollable-force-tab-${index}`,\n 'aria-controls': `scrollable-force-tabpanel-${index}`\n });\n\n useEffect(() => {\n setBlocksFunc();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [blocks]);\n return <ClickAwayListener\n mouseEvent={false}\n touchEvent=\"onTouchStart\"\n onClickAway={() => setHamburgerOnOff(true)}\n >\n <div className={Utils.clsx(cls.menuWrapper, addClass[1035] && cls.addClassMenu)}>\n <div className={`${cls.hamburgerWrapper} ${hamburgerOnOff ? cls.hamburgerOff : null}`}\n onClick={() => setHamburgerOnOff(!hamburgerOnOff)}><HamburgerMenu boolean={!hamburgerOnOff} />\n </div>\n <div className={`${Utils.clsx(cls.menuRules, addClass[1035] && cls.addClassBackground, addClass[835] && cls.addClassPosition)} ${hamburgerOnOff ? cls.menuOff : null}`}>\n <div className={cls.controlPanel}>\n <AppBar className={cls.controlPanelAppBar} position=\"static\">\n <Tabs\n value={filter.index}\n onChange={handleChange}\n >\n <Tab className=\"blocks-triggers\"\n title={I18n.t('Triggers')}\n icon={<MaterialDynamicIcon iconName='FlashOn' />}\n {...a11yProps(0)} />\n <Tab title={I18n.t('Conditions')} className=\"blocks-conditions\" icon={<MaterialDynamicIcon iconName='Help' />}\n {...a11yProps(1)} />\n <Tab title={I18n.t('Actions')} className=\"blocks-actions\" icon={<MaterialDynamicIcon iconName='PlayForWork' />}\n {...a11yProps(2)} />\n </Tabs>\n </AppBar>\n </div>\n <div className={cls.switchesRenderWrapper}>\n <span>\n {allBlocks.map(el => {\n const { name, id, icon, adapter } = el.getStaticData();\n return <Fragment key={id}>\n <CustomDragItem\n onTouchMove={() => setHamburgerOnOff(true)}\n setTourStep={setTourStep}\n tourStep={tourStep}\n isTourOpen={isTourOpen}\n allProperties={el.getStaticData()}\n name={name}\n icon={icon}\n adapter={adapter}\n socket={socket}\n userRules={userRules}\n setUserRules={onChangeBlocks}\n isActive={false}\n id={id}\n />\n </Fragment>;\n })}\n {allBlocks.length === 0 && <div className={cls.nothingFound}>\n {I18n.t('Nothing found')}...\n <div className={cls.resetSearch} onClick={() => {\n setFilter({\n ...filter,\n text: ''\n });\n setBlocksFunc('');\n }}>{I18n.t('reset search')}</div>\n </div>}\n </span>\n </div>\n <div className={Utils.clsx(cls.menuTitle, cls.marginAuto)} />\n <CustomInput\n className={cls.inputWidth}\n fullWidth\n customValue\n value={filter.text}\n size=\"small\"\n autoComplete=\"off\"\n label={I18n.t('search')}\n variant=\"outlined\"\n onChange={(value) => {\n setFilter({ ...filter, text: value });\n setBlocksFunc(value);\n }}\n />\n </div>\n </div>\n </ClickAwayListener>;\n}\n\nMenu.propTypes = {\n onChange: PropTypes.func,\n code: PropTypes.string\n};\n\nexport default Menu;\n","import React, { useCallback, useContext, useEffect, useRef, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { I18n, Utils } from '@iobroker/adapter-react-v5';\n\nimport cls from './style.module.scss';\n\nimport { CustomDragLayer } from './components/CustomDragLayer';\nimport ContentBlockItems from './components/ContentBlockItems';\nimport { ContextWrapperCreate } from './components/ContextWrapper';\nimport Compile from './helpers/Compile';\nimport Menu from './components/Menu';\nimport './helpers/stylesVariables.scss';\n\nimport DialogExport from '../../Dialogs/Export';\nimport DialogImport from '../../Dialogs/Import';\n\nconst RulesEditor = ({ code, onChange, themeName, setTourStep, tourStep, isTourOpen, command, scriptId, changed, running }) => {\n // eslint-disable-next-line no-unused-vars\n const { blocks, socket, setOnUpdate, setOnDebugMessage, setEnableSimulation } = useContext(ContextWrapperCreate);\n const [allBlocks, setAllBlocks] = useState([]);\n const [userRules, setUserRules] = useState(Compile.code2json(code));\n const [importExport, setImportExport] = useState('');\n const [modal, setModal] = useState(false);\n //const [jsAlive, setJsAlive] = useState(false);\n //const [jsInstance, setJsInstance] = useState(false);\n\n useEffect(() => {\n let _jsInstance;\n let _jsAlive;\n const handler = (id, obj) => {\n if (id === _jsInstance + '.alive') {\n if (_jsAlive !== obj?.val) {\n _jsAlive = obj?.val;\n //setJsAlive(_jsAlive);\n _jsAlive && socket.sendTo(_jsInstance.replace(/^system\\.adapter\\./, ''), 'rulesOn', scriptId);\n }\n } else {\n if (_jsInstance !== obj?.common?.engine) {\n _jsInstance && socket.unsubscribeState(`${_jsInstance}.alive`, handler);\n _jsAlive && socket.sendTo(_jsInstance.replace(/^system\\.adapter\\./, ''), 'rulesOn', scriptId);\n _jsInstance = obj?.common?.engine;\n //setJsInstance(_jsInstance);\n _jsInstance && socket.subscribeState(`${_jsInstance}.alive`, handler);\n }\n }\n };\n\n const handlerStatus = (id, state) => {\n if (state) {\n try {\n let msg = JSON.parse(state.val);\n // if not from previous session\n if (msg.ruleId === scriptId && Date.now() - msg.ts < 1000) {\n setOnDebugMessage({blockId: msg.blockId, data: msg.data, ts: msg.ts});\n }\n } catch (e) {\n console.error('Cannot parse: ' + state.val);\n }\n }\n };\n\n socket.getObject(scriptId)\n .then(obj => {\n _jsInstance = obj?.common?.engine;\n //setJsInstance(_jsInstance);\n socket.subscribeObject(scriptId, handler);\n _jsInstance && socket.subscribeState(`${_jsInstance}.alive`, handler);\n _jsInstance && socket.subscribeState(_jsInstance.replace(/^system\\.adapter\\./, '') + '.debug.rules', handlerStatus);\n });\n\n return function cleanup() {\n _jsInstance && socket.unsubscribeObject(`${_jsInstance}.alive`, handler);\n socket.unsubscribeState(scriptId, handler);\n _jsAlive && _jsInstance && socket.sendTo(_jsInstance.replace(/^system\\.adapter\\./, ''), 'rulesOff', scriptId);\n _jsInstance && socket.unsubscribeState(_jsInstance.replace(/^system\\.adapter\\./, '') + '.debug.rules', handlerStatus);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n setEnableSimulation(!changed && running);\n }, [changed, running, setEnableSimulation]);\n\n useEffect(() => {\n if (!!command) {\n setImportExport(command);\n if (!modal) {\n setModal(true);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [command]);\n\n useEffect(() => {\n const newUserRules = Compile.code2json(code);\n if (JSON.stringify(newUserRules) !== JSON.stringify(userRules)) {\n setUserRules(newUserRules);\n setOnUpdate(true);\n }\n // eslint-disable-next-line\n }, [code]);\n\n useEffect(() => {\n document.getElementsByTagName('HTML')[0].className = themeName || 'blue';\n }, [themeName]);\n\n const onChangeBlocks = useCallback(json => {\n setUserRules(json);\n onChange(Compile.json2code(json, blocks));\n }, [blocks, onChange]);\n\n const ref = useRef({ clientWidth: 0 });\n const [addClass, setAddClass] = useState({ 835: false, 1035: false });\n useEffect(() => {\n if (ref.current) {\n if (ref.current.clientWidth <= 1035) {\n setAddClass({ 835: false, 1035: true });\n }\n if (ref.current.clientWidth <= 835) {\n setAddClass({ 1035: true, 835: true });\n }\n if (ref.current.clientWidth > 1035) {\n setAddClass({ 835: false, 1035: false });\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [ref.current.clientWidth])\n\n if (!blocks) {\n return null;\n }\n\n return <div key=\"rulesEditor\" className={cls.wrapperRules} ref={ref}>\n {<CustomDragLayer allBlocks={allBlocks} socket={socket} />}\n {importExport === \"export\" ?\n <DialogExport\n key=\"dialogExport\"\n onClose={() => setModal(false)}\n open={modal}\n text={JSON.stringify(userRules, null, 2)} /> :\n <DialogImport\n open={modal}\n key=\"dialogImport\"\n onClose={text => {\n setModal(false);\n if (text) {\n onChangeBlocks(JSON.parse(text));\n }\n }} />}\n {<div className={Utils.clsx(cls.rootWrapper, addClass[835] && cls.addClass)}>\n <Menu\n setAllBlocks={setAllBlocks}\n allBlocks={allBlocks}\n userRules={userRules}\n onChangeBlocks={onChangeBlocks}\n setTourStep={setTourStep}\n tourStep={tourStep}\n addClass={addClass}\n isTourOpen={isTourOpen}\n />\n <ContentBlockItems\n setUserRules={onChangeBlocks}\n userRules={userRules}\n isTourOpen={isTourOpen}\n setTourStep={setTourStep}\n tourStep={tourStep}\n name={`${I18n.t('when')}...`}\n typeBlock=\"triggers\"\n iconName=\"FlashOn\"\n size={addClass[835]}\n />\n <ContentBlockItems\n setUserRules={onChangeBlocks}\n isTourOpen={isTourOpen}\n setTourStep={setTourStep}\n tourStep={tourStep}\n userRules={userRules}\n name={`...${I18n.t('and')}...`}\n typeBlock=\"conditions\"\n iconName=\"Help\"\n nameAdditionally={I18n.t('or')}\n additionally\n border\n size={addClass[835]}\n />\n <ContentBlockItems\n setUserRules={onChangeBlocks}\n isTourOpen={isTourOpen}\n setTourStep={setTourStep}\n tourStep={tourStep}\n userRules={userRules}\n name={`...${I18n.t('then')}`}\n typeBlock=\"actions\"\n iconName=\"PlayForWork\"\n nameAdditionally={I18n.t('else')}\n additionally\n size={addClass[835]}\n />\n </div>}\n </div>;\n}\n\nRulesEditor.propTypes = {\n onChange: PropTypes.func,\n code: PropTypes.string,\n scriptId: PropTypes.string,\n setTourStep: PropTypes.func,\n tourStep: PropTypes.number,\n command: PropTypes.string,\n themeType: PropTypes.string,\n themeName: PropTypes.string,\n searchText: PropTypes.string,\n resizing: PropTypes.bool,\n\n};\n\nexport default RulesEditor;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport withStyles from '@mui/styles/withStyles';\nimport ScriptEditorComponent from '../ScriptEditorVanilaMonaco';\n\nconst styles = theme => ({\n editorDiv: {\n height: '100%',\n width: '100%',\n overflow: 'hidden',\n position: 'relative'\n },\n editor: {\n width: '100%',\n height: '100%',\n overflow: 'auto',\n },\n line: {\n width: '100%',\n whiteSpace: 'nowrap',\n },\n lineNumber: {\n width: 40,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n display: 'inline-block',\n fontFamily: 'Lucida Console, Courier, monospace',\n textAlign: 'right',\n fontSize: 14,\n marginRight: 1,\n borderRight: '1px solid #555',\n cursor: 'pointer'\n },\n lineBreakpoint: {\n background: '#330000',\n color: 'white',\n },\n lineCode: {\n //whiteSpace: 'nowrap',\n display: 'inline-block',\n fontFamily: 'Lucida Console, Courier, monospace',\n fontSize: 14,\n margin: 0,\n whiteSpace: 'pre',\n },\n lineCurrentCode: {\n background: 'red',\n color: 'white',\n },\n lineCurrent: {\n background: '#880000',\n color: 'white',\n },\n});\n\nclass Editor extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n lines: (this.props.script || '').split(/\\r\\n|\\n/)\n };\n }\n\n editorDidMount(editor, monaco) {\n this.monaco = monaco;\n this.editor = editor;\n editor.focus();\n }\n\n render() {\n return <div className={this.props.classes.editorDiv} key=\"scriptEditorDiv2\">\n <ScriptEditorComponent\n key=\"scriptEditor2\"\n name={this.props.scriptName}\n adapterName={this.props.adapterName}\n readOnly\n code={this.props.script || ''}\n isDark={this.props.themeType === 'dark'}\n socket={this.props.socket}\n runningInstances={this.props.runningInstances}\n language={'javascript'}\n\n breakpoints={this.props.breakpoints}\n location={this.props.paused ? this.props.location : null}\n onToggleBreakpoint={i => this.props.onToggleBreakpoint(i)}\n />\n </div>;\n }\n}\n\nEditor.propTypes = {\n runningInstances: PropTypes.object,\n socket: PropTypes.object,\n sourceId: PropTypes.string,\n script: PropTypes.string,\n scriptName: PropTypes.string,\n adapterName: PropTypes.string,\n paused: PropTypes.bool,\n breakpoints: PropTypes.array,\n location: PropTypes.object,\n themeType: PropTypes.string,\n themeName: PropTypes.string,\n onToggleBreakpoint: PropTypes.func,\n};\n\nexport default withStyles(styles)(Editor);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport withStyles from '@mui/styles/withStyles';\n\nimport IconButton from '@mui/material/IconButton';\n\nimport {\n MdContentCopy as IconCopy,\n MdDeleteForever as IconDelete,\n MdVerticalAlignBottom as IconBottom,\n} from 'react-icons/md';\n\nimport { I18n, Utils } from '@iobroker/adapter-react-v5';\n\nconst TOOLBOX_WIDTH = 34;\n\nconst styles = theme => ({\n consoleLine: {\n fontSize: 14,\n color: theme.palette.mode === 'dark' ? '#EEE' : '#222',\n },\n console_log: {\n\n },\n console_warn: {\n backgroundColor: theme.palette.mode === 'dark' ? '#885900' : '#ffa500',\n },\n console_error: {\n backgroundColor: theme.palette.mode === 'dark' ? '#7a0000' : '#FF0000',\n },\n console_debug: {\n opacity: 0.6,\n },\n consoleSeverity: {\n verticalAlign: 'top',\n width: 50,\n textTransform: 'uppercase',\n },\n consoleTime: {\n whiteSpace: 'nowrap',\n verticalAlign: 'top',\n width: 170,\n },\n consoleText: {\n fontFamily: 'Lucida Console, Courier, monospace',\n paddingTop: 4,\n '&>pre': {\n margin: 0,\n },\n },\n logBox: {\n width: '100%',\n height: '100%',\n position: 'relative',\n overflow: 'hidden',\n },\n logBoxInner: {\n display: 'inline-block',\n color: theme.palette.mode === 'dark' ? 'white' : 'black',\n width: `calc(100% - ${TOOLBOX_WIDTH}px)`,\n height: '100%',\n //marginLeft: TOOLBOX_WIDTH,\n overflow: 'auto',\n position: 'relative',\n verticalAlign: 'top',\n },\n info: {\n background: theme.palette.mode === 'dark' ? 'darkgrey' : 'lightgrey',\n color: theme.palette.mode === 'dark' ? 'black' : 'black',\n },\n error: {\n background: '#FF0000',\n color: theme.palette.mode === 'dark' ? 'black' : 'white',\n },\n warn: {\n background: '#FF8000',\n color: theme.palette.mode === 'dark' ? 'black' : 'white',\n },\n debug: {\n background: 'gray',\n opacity: 0.8,\n color: theme.palette.mode === 'dark' ? 'black' : 'white',\n },\n silly: {\n background: 'gray',\n opacity: 0.6,\n color: theme.palette.mode === 'dark' ? 'black' : 'white',\n },\n table: {\n fontFamily: 'monospace',\n width: '100%',\n },\n toolbox: {\n //position: 'absolute',\n //top: 0,\n //left: 0,\n //marginLeft: 2,\n width: TOOLBOX_WIDTH,\n height: '100%',\n boxShadow: '2px 0px 4px -1px rgba(0, 0, 0, 0.2), 4px 0px 5px 0px rgba(0, 0, 0, 0.14), 1px 0px 10px 0px rgba(0, 0, 0, 0.12)',\n display: 'inline-block',\n verticalAlign: 'top',\n overflow: 'hidden',\n },\n trTime: {\n width: 90,\n },\n trSeverity: {\n width: 40,\n fontWeight: 'bold',\n },\n iconButtons: {\n width: 32,\n height: 32,\n padding: 4,\n },\n});\n\nfunction getTimeString(d) {\n let text;\n let i = d.getHours();\n if (i < 10) {\n i = '0' + i.toString();\n }\n text = i + ':';\n\n i = d.getMinutes();\n if (i < 10) {\n i = '0' + i.toString();\n }\n text += i + ':';\n i = d.getSeconds();\n if (i < 10) {\n i = '0' + i.toString();\n }\n text += i + '.';\n i = d.getMilliseconds();\n if (i < 10) {\n i = '00' + i.toString();\n } else if (i < 100) {\n i = '0' + i.toString();\n }\n text += i;\n return text;\n}\n\nclass Console extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n lines: {},\n goBottom: true,\n };\n this.messagesEnd = React.createRef();\n }\n generateLine(message) {\n return <tr key={`tr_${message.ts}_${message.text.substr(-10)}`} className={this.props.classes[message.severity]}>\n <td key=\"tdTime\" className={this.props.classes.trTime}>{getTimeString(new Date(message.ts))}</td>\n <td key=\"tdSeverity\" className={this.props.classes.trSeverity}>{message.severity}</td>\n <td key=\"tdMessage\">{message.text}</td>\n </tr>;\n }\n renderLogList(lines) {\n if (lines && lines.length) {\n return <div className={this.props.classes.logBoxInner} key=\"logList\">\n <table key=\"logTable\" className={this.props.classes.table}><tbody>\n {lines.map((line, i) => this.generateLine(line))}</tbody></table>\n <div key=\"logScrollPoint\" ref={this.messagesEnd} style={{float: 'left', clear: 'both'}}/>\n </div>;\n } else {\n return <div key=\"logList\" className={this.props.classes.logBoxInner} style={{paddingLeft: 10}}>{I18n.t('Log outputs')}</div>;\n }\n }\n\n onCopy() {\n Utils.copyToClipboard(this.props.console.join('\\n'));\n }\n\n scrollToBottom() {\n this.messagesEnd && this.messagesEnd.current && this.messagesEnd.current.scrollIntoView({behavior: 'smooth'});\n }\n\n componentDidUpdate() {\n this.state.goBottom && this.scrollToBottom();\n }\n\n render() {\n const lines = this.props.console;\n return (\n <div className={this.props.classes.logBox}>\n <div className={this.props.classes.toolbox} key=\"toolbox\">\n <IconButton\n className={this.props.classes.iconButtons}\n onClick={() => this.setState({goBottom: !this.state.goBottom})}\n color={this.state.goBottom ? 'secondary' : ''}\n size=\"medium\"><IconBottom/></IconButton>\n {lines && lines.length ? <IconButton\n className={this.props.classes.iconButtons}\n onClick={() => this.props.onClearAllLogs()}\n size=\"medium\"><IconDelete/></IconButton> : null}\n {lines && lines.length ? <IconButton\n className={this.props.classes.iconButtons}\n onClick={() => this.onCopy()}\n size=\"medium\"><IconCopy/></IconButton> : null}\n </div>\n {this.renderLogList(lines)}\n </div>\n );\n }\n}\n\nConsole.propTypes = {\n theme: PropTypes.object,\n onClearAllLogs: PropTypes.func,\n console: PropTypes.array,\n};\n\nexport default withStyles(styles)(Console);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport withStyles from '@mui/styles/withStyles';\nimport SplitterLayout from 'react-splitter-layout';\nimport ReactJson from 'react-json-view';\n\nimport ListItemButton from '@mui/material/ListItemButton';\nimport ListItemText from '@mui/material/ListItemText';\nimport Input from '@mui/material/Input';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport IconButton from '@mui/material/IconButton';\nimport List from '@mui/material/List';\n\nimport { MdCheck as CheckIcon } from 'react-icons/md';\nimport { MdAdd as IconAdd } from 'react-icons/md';\nimport { MdDelete as IconDelete } from 'react-icons/md';\n\nimport { I18n, Utils } from '@iobroker/adapter-react-v5';\n\nconst styles = theme => ({\n frameRoot: {\n paddingTop: 0,\n paddingBottom: 0,\n },\n frameTextRoot: {\n margin: 0,\n },\n frameTextPrimary: {\n color: theme.palette.mode === 'dark' ? '#CCC' : '#333',\n },\n frameTextSecondary: {\n fontStyle: 'italic',\n fontSize: 12,\n opacity: 0.6,\n paddingLeft: theme.spacing(1),\n },\n\n listRoot: {\n padding: 0,\n },\n\n scopeType: {\n verticalAlign: 'top',\n textTransform: 'uppercase',\n width: 50,\n },\n scopeType_local: {\n color: '#53a944'\n },\n scopeType_closure: {\n color: '#365b80'\n },\n scopeType_user: {\n color: '#a48a15'\n },\n scopeName: {\n color: '#bc5b5b',\n width: 'calc(100% - 82px)',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n },\n scopeButton: {\n width: 32\n },\n scopeValueEditable: {\n cursor: 'pointer'\n },\n selectedFrame: {\n backgroundColor: '#777',\n color: 'white'\n },\n splitter: {\n width: '100%',\n height: 'calc(100% - 36px)',\n overflow: 'hidden',\n fontSize: 12\n },\n\n toolbarScopes: {\n width: 24,\n display: 'inline-block',\n height: '100%',\n background: theme.palette.mode === 'dark' ? '#222' : '#EEE',\n verticalAlign: 'top',\n },\n scopesAfterToolbar: {\n width: 'calc(100% - 24px)',\n display: 'inline-block',\n height: '100%',\n verticalAlign: 'top',\n },\n\n scopeNameName: {\n fontWeight: 'bold',\n display: 'inline-block',\n verticalAlign: 'top',\n },\n scopeNameEqual: {\n display: 'inline-block',\n color: theme.palette.mode === 'dark' ? '#EEE' : '#222',\n verticalAlign: 'top',\n },\n scopeNameValue: {\n verticalAlign: 'top',\n display: 'inline-block',\n color: '#3b709f',\n whiteSpace: 'nowrap',\n },\n scopeButtonDel: {\n padding: 0,\n float: 'right',\n },\n\n valueNull: {\n color: '#a44a24'\n },\n valueUndefined: {\n color: '#a44a24'\n },\n valueString: {\n color: '#1e8816'\n },\n valueNumber: {\n color: '#163c88'\n },\n valueBoolean: {\n color: '#a44a24'\n },\n valueObject: {\n color: '#721b70'\n },\n valueNone: {\n color: '#8a8a8a'\n },\n valueFunc: {\n color: '#ac4343'\n }\n});\n\nclass Stack extends React.Component {\n constructor(props) {\n super(props);\n\n this.framesSize = parseFloat(window.localStorage.getItem('App.framesSize')) || 300;\n\n this.state = {\n editValue: null,\n callFrames: this.props.callFrames,\n };\n\n this.editRef = React.createRef();\n }\n\n onExpressionNameUpdate() {\n this.props.onExpressionNameUpdate(this.state.editValue.index, this.scopeValue, () => {\n this.setState({editValue: null});\n this.scopeValue = null;\n });\n }\n\n renderExpression(item, i) {\n const name = this.state.editValue && this.state.editValue.type === 'expression' && this.state.editValue.index === i ?\n <Input\n inputRef={this.editRef}\n fullWidth\n margin=\"dense\"\n onBlur={() => this.state.editValue && this.setState({editValue: null})}\n defaultValue={item.name}\n onKeyUp={e => {\n if (e.keyCode === 13) {\n this.onExpressionNameUpdate();\n } else if (e.keyCode === 27) {\n this.setState({editValue: null});\n }\n }}\n\n onChange={e =>\n this.scopeValue = e.target.value}\n\n endAdornment={\n <InputAdornment position=\"end\">\n <IconButton onClick={() => this.onExpressionNameUpdate()} size=\"medium\">\n <CheckIcon/>\n </IconButton>\n </InputAdornment>\n }\n />\n :\n [\n <div key=\"name\" className={this.props.classes.scopeNameName} title={I18n.t('Double click to edit expression')}>{item.name}</div>,\n <div key=\"=\" className={this.props.classes.scopeNameEqual}> = </div>,\n <div key=\"val\" className={this.props.classes.scopeNameValue}>{this.formatValue(item.value)}</div>\n ];\n\n return <tr key={`user_${i}${item.name}`}>\n <td className={Utils.clsx(this.props.classes.scopeType, this.props.classes['scopeType_user'])}>user</td>\n <td className={this.props.classes.scopeName}\n onDoubleClick={() => {\n this.scopeValue = item.name || '';\n this.setState({\n editValue: {\n type: 'expression',\n valueType: 'string',\n index: i,\n name: item.name,\n value: item.name || ''\n }\n });\n }}\n >{name}</td>\n <IconButton\n className={this.props.classes.scopeButtonDel}\n size=\"small\"\n disabled={!!this.state.editValue}\n onClick={() => this.props.onExpressionDelete(i)}\n >\n <IconDelete/>\n </IconButton>\n </tr>\n }\n\n renderExpressions() {\n return this.props.expressions.map((item, i) => this.renderExpression(item, i));\n }\n\n renderOneFrameTitle(frame, i) {\n if (this.props.mainScriptId === this.props.currentScriptId && frame.location.scriptId !== this.props.mainScriptId) {\n return null;\n }\n const fileName = frame.url.split('/').pop().replace(/^script\\.js\\./, '');\n return <ListItemButton\n key={frame.id}\n onClick={() => this.props.onChangeCurrentFrame(i)}\n dense\n selected={this.props.currentFrame === i}\n classes={{ root: this.props.classes.frameRoot }}\n >\n <ListItemText\n classes={{root: this.props.classes.frameTextRoot, primary: this.props.classes.frameTextPrimary, secondary: this.props.classes.frameTextSecondary}}\n title={frame.url}\n primary={frame.functionName || 'anonymous'}\n secondary={`${fileName} (${frame.location.lineNumber}:${frame.location.columnNumber})`}\n />\n </ListItemButton>;\n }\n\n formatValue(value, forEdit) {\n if (!value) {\n if (forEdit) {\n return 'none';\n } else {\n return <span className={this.props.classes.valueNone}>none</span>;\n }\n } else if (value.type === 'function') {\n const text = value.description ? (value.description.length > 100 ? value.description.substring(0, 100) + '...' : value.description) : 'function';\n if (forEdit) {\n return text;\n } else {\n return <span className={this.props.classes.valueFunc} title={value.description}>{text}</span>;\n }\n } else if (value.value === undefined) {\n if (forEdit) {\n return 'undefined';\n } else {\n return <span className={this.props.classes.valueUndefined}>undefined</span>;\n }\n } else if (value.value === null) {\n if (forEdit) {\n return 'null';\n } else {\n return <span className={this.props.classes.valueNull}>null</span>;\n }\n } else if (value.type === 'string') {\n if (forEdit) {\n return value.value;\n } else {\n const text = value.value ? (value.value.length > 100 ? value.value.substring(0, 100) + '...' : value.value) : '';\n return <span className={this.props.classes.valueString} title={text}>\"{text}\"</span>;\n }\n } else if (value.type === 'boolean') {\n if (forEdit) {\n return value.value.toString();\n } else {\n return <span className={this.props.classes.valueBoolean}>{value.value.toString()}</span>;\n }\n } else if (value.type === 'object') {\n if (forEdit) {\n return JSON.stringify(value.value);\n } else {\n return <ReactJson\n enableClipboard={false}\n style={{backgroundColor: 'inherit', marginTop: 3}}\n src={value.value}\n collapsed\n theme={this.props.themeType === 'dark' ? 'brewer' : 'rjv-default'}\n displayDataTypes={false}\n />;\n }\n } else {\n return value.value.toString();\n }\n }\n\n onWriteScopeValue() {\n if (this.scopeValue === 'true') {\n this.scopeValue = true;\n } else if (this.scopeValue === 'false') {\n this.scopeValue = false;\n } else if (this.scopeValue === 'null') {\n this.scopeValue = null;\n } else if (this.scopeValue === 'undefined') {\n this.scopeValue = undefined;\n } else\n if (parseFloat(this.scopeValue).toString() === this.scopeValue) {\n this.scopeValue = parseFloat(this.scopeValue);\n }\n\n this.props.onWriteScopeValue({\n variableName: this.state.editValue.name,\n scopeNumber: 0,\n newValue: {\n value: this.scopeValue,\n valueType: typeof this.scopeValue,\n },\n callFrameId: this.props.callFrames[this.props.currentFrame].callFrameId\n });\n\n this.setState({editValue: null});\n this.scopeValue = null;\n }\n\n componentDidUpdate() {\n //this.editRef.current?.select();\n this.editRef.current?.focus();\n }\n\n renderScope(scopeId, item, type) {\n const editable = !this.props.currentFrame && item.value && (item.value.type === 'undefined' || item.value.type === 'string' || item.value.type === 'number' || item.value.type === 'boolean' || item.value?.value === null || item.value?.value === undefined);\n\n const el = this.state.editValue && this.state.editValue.type === type && this.state.editValue.name === item.name ?\n [\n <div key=\"name\" className={this.props.classes.scopeNameName}>{item.name}</div>,\n <div key=\"=\" className={this.props.classes.scopeNameEqual}> = </div>,\n <Input\n inputRef={this.editRef}\n margin=\"dense\"\n onBlur={() => this.state.editValue && this.setState({editValue: null})}\n defaultValue={this.formatValue(item.value, true)}\n onKeyUp={e => {\n if (e.keyCode === 13) {\n this.onWriteScopeValue()\n } else if (e.keyCode === 27) {\n this.setState({editValue: null})\n }\n }}\n onChange={e =>\n this.scopeValue = e.target.value}\n endAdornment={\n <InputAdornment position=\"end\">\n <IconButton onClick={() => this.onWriteScopeValue()} size=\"medium\">\n <CheckIcon/>\n </IconButton>\n </InputAdornment>\n }\n />\n ]\n :\n [\n <div key=\"name\" className={this.props.classes.scopeNameName} title={I18n.t('Double click to write value')}>{item.name}</div>,\n <div key=\"=\" className={this.props.classes.scopeNameEqual}> = </div>,\n <div key=\"val\" className={this.props.classes.scopeNameValue}>{this.formatValue(item.value)} ({item.value.type})</div>\n ];\n\n\n return <tr key={`${type}_${scopeId}_${item.name}`}>\n <td className={Utils.clsx(this.props.classes.scopeType, this.props.classes['scopeType_' + type])}>{type}</td>\n <td\n className={Utils.clsx(this.props.classes.scopeName, !this.props.currentFrame && editable && this.props.classes.scopeValueEditable)}\n onDoubleClick={() => {\n if (editable) {\n this.scopeValue = item.value.value;\n this.setState({\n editValue: {\n scopeId,\n type,\n valueType: item.value.type,\n name: item.name,\n value: item.value.value\n }\n });\n }\n }}\n >{el}</td>\n </tr>;\n }\n\n renderScopes(frame) {\n if (!frame) {\n return null;\n } else {\n // first local\n let result = this.renderExpressions();\n\n let items = this.props.scopes?.local?.properties?.result.map(item => this.renderScope(this.props.scopes.id, item, 'local'));\n items && items.forEach(item => result.push(item));\n\n items = this.props.scopes?.closure?.properties?.result.map(item => this.renderScope(this.props.scopes.id, item, 'closure'));\n items && items.forEach(item => result.push(item));\n\n return <table style={{width: '100%'}}>\n <tbody>\n {result}\n </tbody>\n </table>;\n }\n }\n\n render() {\n return <SplitterLayout\n customClassName={this.props.classes.splitter}\n primaryIndex={1}\n secondaryMinSize={200}\n primaryMinSize={200}\n vertical={false}\n secondaryInitialSize={this.framesSize}\n onSecondaryPaneSizeChange={size => this.framesSize = parseFloat(size)}\n onDragEnd={() => window.localStorage.setItem('App.framesSize', this.framesSize.toString())}\n >\n <div style={{width: '100%', height: '100%', overflow: 'auto'}}>\n <List classes={{root: this.props.classes.listRoot}}>\n {this.props.callFrames ? this.props.callFrames.map((frame, i) =>\n this.renderOneFrameTitle(frame, i)) : null}\n </List>\n </div>\n <div style={{width: '100%', height: '100%', overflow: 'auto'}}>\n <div className={this.props.classes.toolbarScopes}>\n <IconButton size=\"small\" onClick={() => this.props.onExpressionAdd((i, item) => {\n this.scopeValue = item.name || '';\n this.setState({\n editValue: {\n type: 'expression',\n valueType: 'string',\n index: i,\n name: item.name,\n value: item.name || ''\n }\n });\n })}><IconAdd/></IconButton>\n </div>\n <div className={this.props.classes.scopesAfterToolbar}>\n {this.props.callFrames && this.props.callFrames.length && this.renderScopes(this.props.callFrames[this.props.currentFrame])}\n </div>\n </div>\n </SplitterLayout>;\n }\n}\n\nStack.propTypes = {\n currentScriptId: PropTypes.string,\n mainScriptId: PropTypes.string,\n scopes: PropTypes.object,\n expressions: PropTypes.array,\n callFrames: PropTypes.array,\n currentFrame: PropTypes.number,\n onChangeCurrentFrame: PropTypes.func,\n onWriteScopeValue: PropTypes.func,\n onExpressionDelete: PropTypes.func,\n onExpressionAdd: PropTypes.func,\n onExpressionNameUpdate: PropTypes.func,\n themeType: PropTypes.string,\n};\n\nexport default withStyles(styles)(Stack);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport withStyles from '@mui/styles/withStyles';\nimport SplitterLayout from 'react-splitter-layout';\n\nimport Tabs from '@mui/material/Tabs';\nimport Tab from '@mui/material/Tab';\nimport Toolbar from '@mui/material/Toolbar';\nimport LinearProgress from '@mui/material/LinearProgress';\nimport IconButton from '@mui/material/IconButton';\nimport List from '@mui/material/List';\nimport ListItemButton from '@mui/material/ListItemButton';\nimport ListItemText from '@mui/material/ListItemText';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport Dialog from '@mui/material/Dialog';\nimport Badge from '@mui/material/Badge';\n\nimport { MdClose as IconClose, MdPlayArrow as IconRun } from 'react-icons/md';\nimport { MdPause as IconPause } from 'react-icons/md';\nimport { MdArrowForward as IconNext } from 'react-icons/md';\nimport { MdArrowDownward as IconStep } from 'react-icons/md';\nimport { MdArrowUpward as IconOut } from 'react-icons/md';\nimport { MdRefresh as IconRestart } from 'react-icons/md';\nimport { MdWarning as IconException } from 'react-icons/md';\n\nimport { I18n, Utils } from '@iobroker/adapter-react-v5';\n\nimport DialogError from '../../Dialogs/Error';\nimport Editor from './Editor';\nimport Console from './Console';\nimport Stack from './Stack';\n\nconst styles = theme => ({\n root: {\n width: '100%',\n height: `calc(100% - ${theme.toolbar.height + 38/*Theme.toolbar.height */ + 5}px)`,\n overflow: 'hidden',\n position: 'relative'\n },\n toolbar: {\n minHeight: 38,//Theme.toolbar.height,\n boxShadow: '0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12)'\n },\n buttonRun: {\n color: 'green'\n },\n buttonPause: {\n color: 'orange'\n },\n buttonRestart: {\n color: 'darkgreen'\n },\n buttonStop: {\n color: 'red'\n },\n buttonNext: {\n color: 'blue'\n },\n buttonStep: {\n color: 'blue'\n },\n buttonOut: {\n color: 'blue'\n },\n buttonException: {\n\n },\n\n tabFile: {\n textTransform: 'inherit',\n color: theme.palette.mode === 'dark' ? '#DDD' : 'inherit'\n },\n tabText: {\n maxWidth: 130,\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n display: 'inline-block',\n verticalAlign: 'middle',\n },\n closeButton: {\n position: 'absolute',\n top: 8,\n right: 0,\n zIndex: 10,\n padding: 8,\n cursor: 'pointer'\n },\n\n tabsRoot: {\n minHeight: 24,\n background: theme.palette.mode === 'dark' ? '#333' : '#e6e6e6',\n color: theme.palette.mode === 'dark' ? 'white' : 'inherit'\n },\n tabRoot: {\n minHeight: 24,\n },\n\n bpListItem: {\n borderTop: '1px dashed #bfbfbf44',\n },\n monospace: {\n fontFamily: 'Courier New, monospace',\n whiteSpace: 'pre',\n fontSize: 12,\n },\n arrow: {\n color: '#fffa4f',\n },\n splitter: {\n height: 'calc(100% - 52px)',\n '& .layout-pane': {\n overflow: 'hidden',\n height: '100%'\n }\n }\n});\n\nclass Debugger extends React.Component {\n constructor(props) {\n super(props);\n let breakpoints = window.localStorage.getItem('javascript.tools.bp.' + this.props.src);\n try {\n breakpoints = breakpoints ? JSON.parse(breakpoints) : [];\n } catch (e) {\n breakpoints = [];\n }\n\n let expressions = window.localStorage.getItem('javascript.tools.exps.' + this.props.src);\n try {\n expressions = expressions ? JSON.parse(expressions) : [];\n expressions = expressions.map(name => ({name}));\n } catch (e) {\n expressions = [];\n }\n\n this.toolSize = window.localStorage ? parseFloat(window.localStorage.getItem('App.toolSize')) || 150 : 150;\n\n this.state = {\n starting: true,\n selected: null,\n tabs: {},\n script: '',\n breakpoints,\n expressions,\n running: false,\n error: '',\n started: false,\n paused: true,\n location: null,\n toolsTab: window.localStorage.getItem('javascript.tools.tab') || 'console',\n stopOnException: window.localStorage.getItem('javascript.tools.stopOnException') === 'true',\n console: [],\n finished: false,\n currentFrame: 0,\n scopes: {},\n queryBreakpoints: null,\n logErrors: 0,\n logWarnings: 0,\n logs: 0,\n };\n\n this.scripts = {};\n this.mainScriptId = null;\n }\n\n componentDidMount() {\n new Promise(resolve => {\n if (this.props.debugInstance) {\n resolve(this.props.debugInstance.instance);\n } else {\n this.props.socket.getObject(this.props.src)\n .then(obj => resolve(obj?.common?.engine?.replace('system.adapter.', '')));\n }\n })\n .then(instance =>\n this.setState({ instance }, () => {\n if (this.state.instance) {\n this.props.socket.setState(`${this.state.instance}.debug.from`, { val: '{\"cmd\": \"subscribed\"}', ack: true });\n //.then(() => );\n setTimeout(() =>\n this.props.socket.subscribeState(`${this.state.instance}.debug.from`, this.fromInstance), 200);\n } else {\n this.setState({ error: 'Unknown instance' });\n }\n }));\n }\n\n componentWillUnmount() {\n if (this.state.instance) {\n this.props.socket.unsubscribeState(`${this.state.instance}.debug.from`, this.fromInstance);\n this.props.socket.sendTo(this.state.instance, 'debugStop');\n }\n }\n\n sendToInstance(cmd) {\n this.props.socket.setState(`${this.state.instance}.debug.to`, { val: JSON.stringify(cmd), ack: false });\n }\n\n reinitBreakpoints(cb) {\n if (this.state.breakpoints.length) {\n let breakpoints = JSON.parse(JSON.stringify(this.state.breakpoints));\n breakpoints = breakpoints.map(item => item.location);\n this.setState({breakpoints: []}, () => {\n this.sendToInstance({breakpoints, cmd: 'sb'});\n if (this.state.stopOnException) {\n this.sendToInstance({cmd: 'stopOnException', state: true});\n }\n\n cb && cb();\n });\n } else if (this.state.stopOnException) {\n this.sendToInstance({cmd: 'stopOnException', state: true});\n cb && cb();\n } else {\n cb && cb();\n }\n }\n\n getLocation(context) {\n if (context.callFrames) {\n const frame = context.callFrames[0];\n return frame.location;\n }\n }\n\n readCurrentScope() {\n const frame = this.state.context?.callFrames && this.state.context.callFrames[this.state.currentFrame];\n if (frame) {\n const scopes = frame.scopeChain.filter(scope => scope.type !== 'global');\n if (scopes.length) {\n this.sendToInstance({cmd: 'scope', scopes});\n } else if (this.state.scopes.global || this.state.scopes.local || this.state.scopes.closure) {\n this.setState({scopes: {}});\n }\n }\n }\n\n readExpressions(i) {\n if (this.state.expressions.length && this.state.context?.callFrames && this.state.context.callFrames[this.state.currentFrame]) {\n if (i !== undefined) {\n this.sendToInstance({\n cmd: 'expressions',\n expressions: [this.state.expressions[i]],\n callFrameId: this.state.context.callFrames[this.state.currentFrame].callFrameId\n });\n } else {\n this.sendToInstance({\n cmd: 'expressions',\n expressions: this.state.expressions,\n callFrameId: this.state.context.callFrames[this.state.currentFrame].callFrameId\n });\n }\n }\n }\n\n fromInstance = (id, state) => {\n try {\n const data = JSON.parse(state.val);\n if (data.cmd === 'subscribed') {\n this.props.socket.sendTo(this.state.instance, 'debug', this.props.debugInstance || {scriptName: this.props.src});\n } else\n if (data.cmd === 'readyToDebug') {\n this.mainScriptId = data.scriptId;\n this.scripts[data.scriptId] = data.script;\n if (data.script.startsWith('(async () => {debugger;\\n')) {\n this.scripts[data.scriptId] = `(async () => {\\n${data.script.substring('(async () => {debugger;\\n'.length)}`;\n } else if (data.script.startsWith('debugger;')) {\n this.scripts[data.scriptId] = data.script.substring('debugger;'.length);\n }\n\n const tabs = JSON.parse(JSON.stringify(this.state.tabs));\n tabs[data.scriptId] = this.props.debugInstance ? data.url: this.props.src.replace('script.js.', '');\n\n const ts = `${Date.now()}.${Math.random() * 10000}`;\n data.context?.callFrames && data.context.callFrames.forEach((item, i) => item.id = ts + i);\n\n this.setState({\n starting: false,\n finished: false,\n selected: this.mainScriptId,\n script: this.scripts[data.scriptId],\n tabs,\n currentFrame: 0,\n started: true,\n paused: true,\n location: this.getLocation(data.context),\n context: data.context,\n }, () =>\n this.reinitBreakpoints(() => {\n this.readCurrentScope();\n this.readExpressions();\n }));\n } else if (data.cmd === 'paused') {\n const ts = `${Date.now()}.${Math.random() * 10000}`;\n data.context?.callFrames && data.context.callFrames.forEach((item, i) => item.id = ts + i);\n const location = this.getLocation(data.context);\n const tabs = JSON.parse(JSON.stringify(this.state.tabs));\n const parts = data.context.callFrames[0].url.split('iobroker.javascript');\n tabs[location.scriptId] = (parts[1] || parts[0]).replace('script.js.', '');\n\n const newState = {\n tabs,\n paused: true,\n location,\n currentFrame: 0,\n context: data.context,\n scope: {id: (data.context?.callFrames && data.context.callFrames[0] && data.context.callFrames[0].id) || 0}\n };\n\n newState.script = this.scripts[location.scriptId] === undefined ? I18n.t('loading...') : this.scripts[location.scriptId];\n newState.selected = location.scriptId;\n\n this.setState(newState, () => {\n this.readCurrentScope();\n this.readExpressions();\n if (!this.scripts[location.scriptId]) {\n this.sendToInstance({cmd: 'source', scriptId: location.scriptId});\n }\n });\n } else if (data.cmd === 'script') {\n this.scripts[data.scriptId] = data.text;\n if (this.state.selected === data.scriptId) {\n this.setState({script: this.scripts[data.scriptId]});\n }\n } else if (data.cmd === 'resumed') {\n this.setState({paused: false});\n } else if (data.cmd === 'log') {\n if (this.state.toolsTab === 'console') {\n this.console = null;\n const console = [...this.state.console];\n console.push({text: data.text, severity: data.severity, ts: data.ts});\n this.setState({console});\n } else {\n if (data.severity === 'error') {\n this.setState({logErrors: this.state.logErrors + 1});\n } else if (data.severity === 'warn') {\n this.setState({logWarnings: this.state.logWarnings + 1});\n } else {\n this.setState({logs: this.state.logs + 1});\n }\n this.console = this.console || [...this.state.console];\n this.console.push({text: data.text, severity: data.severity, ts: data.ts});\n }\n } else if (data.cmd === 'error') {\n this.setState({error: data.error});\n } else if (data.cmd === 'finished' || data.cmd === 'debugStopped') {\n this.setState({\n finished: true,\n starting: false,\n started: true,\n });\n } else if (data.cmd === 'sb') {\n const breakpoints = JSON.parse(JSON.stringify(this.state.breakpoints));\n let changed = false;\n data.breakpoints.filter(bp => bp).forEach(bp => {\n const found = breakpoints.find(item =>\n item.location.scriptId === bp.location.scriptId && item.location.lineNumber === bp.location.lineNumber);\n if (!found) {\n changed = true;\n breakpoints.push(bp);\n }\n });\n changed && window.localStorage.setItem('javascript.tools.bp.' + this.props.src, JSON.stringify(breakpoints));\n changed && this.setState({breakpoints});\n } else if (data.cmd === 'cb') {\n const breakpoints = JSON.parse(JSON.stringify(this.state.breakpoints));\n let changed = false;\n\n data.breakpoints.filter(id => id !== undefined && id !== null).forEach(id => {\n const found = breakpoints.find(item => item.id === id);\n if (found) {\n const pos = breakpoints.indexOf(found);\n breakpoints.splice(pos, 1);\n changed = true;\n }\n });\n changed && window.localStorage.setItem('javascript.tools.bp.' + this.props.src, JSON.stringify(breakpoints));\n changed && this.setState({breakpoints});\n } else if (data.cmd === 'scope') {\n //const global = data.scopes.find(scope => scope.type === 'global') || null;\n const local = data.scopes.find(scope => scope.type === 'local') || null;\n const closure = data.scopes.find(scope => scope.type === 'closure') || null;\n\n console.log(JSON.stringify(closure));\n\n this.setState({scopes: {local, closure, id: `${this.state.scope.id}_${this.state.currentFrame}`}});\n } else if (data.cmd === 'setValue') {\n const scopes = JSON.parse(JSON.stringify(this.state.scopes));\n let item;\n if (data.scopeNumber === 0) {\n item = scopes.local && scopes.local.properties && scopes.local.properties.result && scopes.local.properties.result.find(item => item.name === data.variableName);\n } else {\n item = scopes.closure && scopes.closure.properties && scopes.closure.properties.result && scopes.closure.properties.result && scopes.closure.properties.result.find(item => item.name === data.variableName);\n }\n if (item) {\n item.value.value = data.newValue.value;\n this.setState({scopes});\n }\n } else if (data.cmd === 'expressions') {\n // update values\n let expressions = JSON.parse(JSON.stringify(this.state.expressions));\n let changed = false;\n data.expressions.forEach(item => {\n const expression = expressions.find(it => it.name === item.name);\n if (expression) {\n changed = true;\n expression.value = item.result;\n }\n });\n changed && this.setState({expressions});\n\n console.log('expressions: ' + JSON.stringify(data));\n } else if (data.cmd === 'getPossibleBreakpoints') {\n if (data.breakpoints?.locations?.length === 1) {\n this.sendToInstance({breakpoints: data.breakpoints.locations, cmd: 'sb'});\n } else if (!data.breakpoints?.locations?.length) {\n window.alert('cannot set');\n } else {\n this.setState({queryBreakpoints: data.breakpoints.locations});\n }\n } else {\n console.error(`Unknown command: ${JSON.stringify(data)}`);\n }\n } catch (e) {\n\n }\n }\n\n getTextAtLocation(location) {\n let line = this.state.script.split(/\\r\\n|\\n/)[location.lineNumber];\n let arrow = '';\n if (location.columnNumber >= 10) {\n line = line.substring(location.columnNumber - 10, location.columnNumber + 20);\n arrow = ''.padStart(10, ' ') + '↑';\n } else {\n line = line.substring(0, 30 - location.columnNumber);\n arrow = ''.padStart(location.columnNumber, ' ') + '↑';\n }\n return [\n <div key=\"line\" className={this.props.classes.monospace}>{line}</div>,\n <div key=\"arrow\" className={Utils.clsx(this.props.classes.monospace, this.props.classes.arrow)}>{arrow}</div>\n ];\n }\n\n renderQueryBreakpoints() {\n if (this.state.queryBreakpoints) {\n return <Dialog onClose={() => this.setState({ queryBreakpoints: null })} aria-labelledby=\"bp-dialog-title\" open={!0}>\n <DialogTitle id=\"bp-dialog-title\">{I18n.t('Select breakpoint')}</DialogTitle>\n <List>\n {this.state.queryBreakpoints.map((bp, i) => (\n <ListItemButton\n classes={{root: this.props.classes.bpListItem}}\n dense\n onClick={() => {\n this.sendToInstance({breakpoints: [bp], cmd: 'sb'});\n this.setState({queryBreakpoints: null})\n }}\n key={i}>\n <ListItemText\n classes={{primary: this.props.classes.bpListPrimary, secondary: this.props.classes.bpListSecondary}}\n primary={this.getTextAtLocation(bp)}\n />\n </ListItemButton>\n ))}\n </List>\n </Dialog>;\n } else {\n return null;\n }\n }\n\n renderError() {\n if (this.state.error) {\n return <DialogError key=\"dialogError\" onClose={() => this.setState({ error: '' })} text={this.state.error} />;\n } else {\n return null;\n }\n }\n\n closeTab(id, e) {\n e && e.stopPropagation();\n const tabs = JSON.parse(JSON.stringify(this.state.tabs));\n delete tabs[id];\n const newState = {tabs, script: this.scripts[this.mainScriptId], selected: this.mainScriptId};\n if (this.state.location && this.state.location.scriptId !== this.mainScriptId) {\n newState.location = null;\n }\n this.setState(newState);\n }\n\n renderTabs() {\n const disabled = !this.state.tabs || !this.state.started;\n return <Tabs\n component={'div'}\n indicatorColor=\"primary\"\n style={{ position: 'relative', width: 'calc(100% - 300px)', display: 'inline-block' }}\n value={this.state.selected}\n onChange={(event, value) => {\n if (this.scripts[value]) {\n this.setState({selected: value, script: this.scripts[value]});\n } else {\n this.setState({selected: value, script: 'loading...'}, () =>\n this.sendToInstance({cmd: 'source', scriptId: value}));\n }\n }}\n scrollButtons=\"auto\"\n >\n {Object.keys(this.state.tabs || [])\n .map(id => {\n let label = id;\n let title = this.state.tabs[id] || '';\n if (this.state.tabs[id]) {\n label = this.state.tabs[id].split('/').pop();\n }\n label = [\n <div key=\"text\" className={Utils.clsx(this.props.classes.tabText)}>{label}</div>,\n id !== this.mainScriptId && <span key=\"icon\" className={this.props.classes.closeButton}>\n <IconClose key=\"close\" onClick={e => this.closeTab(id, e)} fontSize=\"small\" /></span>];\n\n return <Tab disabled={disabled} classes={{root: this.props.classes.tabFile}} label={label} title={title} key={id} value={id}/>;\n })}\n </Tabs>;\n }\n\n onResume() {\n this.sendToInstance({cmd: 'cont'});\n }\n\n onPause() {\n this.sendToInstance({cmd: 'pause'});\n }\n\n onNext() {\n this.sendToInstance({cmd: 'next'});\n }\n\n onStepIn() {\n this.sendToInstance({cmd: 'step'});\n }\n\n onStepOut() {\n this.sendToInstance({cmd: 'out'});\n }\n\n onRestart() {\n this.setState({started: false, starting: true}, () =>\n this.props.socket.sendTo(this.state.instance, 'debug', this.props.debugInstance || {scriptName: this.props.src}));\n }\n\n onToggleException() {\n const stopOnException = !this.state.stopOnException;\n window.localStorage.setItem('javascript.tools.stopOnException', stopOnException ? 'true' : 'false');\n this.setState({stopOnException}, () =>\n this.sendToInstance({cmd: 'stopOnException', state: stopOnException}));\n }\n\n renderToolbar() {\n const disabled = !this.state.started;\n return (\n <Toolbar variant=\"dense\" className={this.props.classes.toolbar} key=\"toolbar1\">\n <IconButton\n className={this.props.classes.buttonRestart}\n disabled={disabled}\n onClick={() => this.onRestart()}\n title={I18n.t('Restart')}\n size=\"medium\"><IconRestart/></IconButton>\n {\n !this.state.finished && this.state.paused ?\n <IconButton\n className={this.props.classes.buttonRun}\n disabled={disabled}\n onClick={() => this.onResume()}\n title={I18n.t('Resume execution')}\n size=\"medium\"><IconRun/></IconButton>\n :\n !this.state.finished && <IconButton\n disabled={disabled}\n className={this.props.classes.buttonPause}\n onClick={() => this.onPause()}\n title={I18n.t('Pause execution')}\n size=\"medium\"><IconPause/></IconButton>\n }\n {!this.state.finished && <IconButton\n className={this.props.classes.buttonNext}\n disabled={disabled || !this.state.paused}\n onClick={() => this.onNext()}\n title={I18n.t('Go to next line')}\n size=\"medium\"><IconNext/></IconButton>}\n {!this.state.finished && <IconButton\n className={this.props.classes.buttonStep}\n disabled={disabled || !this.state.paused}\n onClick={() => this.onStepIn()}\n title={I18n.t('Step into function')}\n size=\"medium\"><IconStep/></IconButton>}\n {!this.state.finished && <IconButton\n className={this.props.classes.buttonOut}\n disabled={disabled || !this.state.paused}\n onClick={() => this.onStepOut()}\n title={I18n.t('Step out from function')}\n size=\"medium\"><IconOut/></IconButton>}\n {!this.state.finished && <IconButton\n className={this.props.classes.buttonException}\n color={this.state.stopOnException ? 'primary' : 'default'}\n disabled={disabled || !this.state.paused}\n onClick={() => this.onToggleException()}\n title={I18n.t('Stop on exception')}\n size=\"medium\"><IconException/></IconButton>}\n {this.renderTabs()}\n </Toolbar>\n );\n }\n\n getPossibleBreakpoints(bp) {\n const end = {...bp, columnNumber: 1000};\n this.sendToInstance({cmd: 'getPossibleBreakpoints', start: bp, end});\n }\n\n toggleBreakpoint(lineNumber) {\n let bp = this.state.breakpoints.find(item => item.location.scriptId === this.state.selected && item.location.lineNumber === lineNumber);\n if (bp) {\n const breakpoints = JSON.parse(JSON.stringify(this.state.breakpoints));\n this.setState({breakpoints}, () =>\n this.sendToInstance({breakpoints: [bp.id], cmd: 'cb'}));\n } else {\n bp = {scriptId: this.state.selected, lineNumber, columnNumber: 0};\n this.getPossibleBreakpoints(bp);\n }\n }\n\n renderCode() {\n if (this.state.script && this.state.started) {\n const breakpoints = this.state.breakpoints.filter(bp => bp.location.scriptId === this.state.selected);\n\n return <Editor\n runningInstances={this.props.runningInstances}\n socket={this.props.socket}\n adapterName={this.props.adapterName}\n scriptName={this.state.tabs[this.state.selected]}\n sourceId={this.state.selected}\n script={this.state.script}\n paused={this.state.paused}\n breakpoints={breakpoints}\n location={this.state.location}\n themeType={this.props.themeType}\n themeName={this.props.themeName}\n onToggleBreakpoint={i => this.toggleBreakpoint(i)}\n />\n }\n }\n\n renderFrames() {\n if (!this.state.paused) {\n return null;\n }\n\n return <Stack\n currentScriptId={this.state.selected}\n scopes={this.state.scopes}\n expressions={this.state.expressions}\n themeType={this.props.themeType}\n callFrames={this.state.context?.callFrames}\n currentFrame={this.state.currentFrame}\n onChangeCurrentFrame={i => {\n this.setState({currentFrame: i, scopes: {}}, () => {\n this.readCurrentScope();\n this.readExpressions();\n })\n }}\n onWriteScopeValue={obj => {\n this.sendToInstance({\n cmd: 'setValue',\n variableName: obj.variableName,\n scopeNumber: obj.scopeNumber,\n newValue: obj.newValue,\n callFrameId: obj.callFrameId\n });\n }}\n onExpressionDelete={i => {\n const expressions = JSON.parse(JSON.stringify(this.state.expressions));\n expressions.splice(i, 1);\n this.setState({expressions});\n window.localStorage.setItem('javascript.tools.exps.' + this.props.src, JSON.stringify(expressions.map(item => item.name)));\n }}\n onExpressionAdd={cb => {\n const expressions = JSON.parse(JSON.stringify(this.state.expressions));\n expressions.push({name: '', value: {value: ''}});\n this.setState({expressions}, () => cb && cb(expressions.length - 1, this.state.expressions[expressions.length - 1]));\n }}\n onExpressionNameUpdate={(i, name, cb) => {\n const expressions = JSON.parse(JSON.stringify(this.state.expressions));\n if (!name) {\n expressions.splice(i, 1);\n } else if (expressions.find(item => item.name === name)) {\n return cb && cb(false);\n } else {\n expressions[i].name = name;\n }\n\n this.setState({expressions}, () => {\n name && this.readExpressions(i);\n cb && cb();\n });\n window.localStorage.setItem('javascript.tools.exps.' + this.props.src, JSON.stringify(expressions.map(item => item.name)));\n }}\n />;\n }\n\n renderConsole() {\n return <Console\n theme={this.props.theme}\n console={this.state.console}\n onClearAllLogs={() => this.setState({console: [], logErrors: 0, logWarning: 0, logs: 0})}\n />;\n }\n\n renderTools() {\n const disabled = !this.state.tabs || !this.state.started;\n\n let _console;\n if (this.state.logErrors) {\n _console = <Badge badgeContent={this.state.logErrors} color=\"error\">\n <span>{I18n.t('Console')}</span>\n </Badge>;\n } else if (this.state.logWarnings) {\n _console = <Badge badgeContent={this.state.logWarnings} color=\"secondary\">\n <span>{I18n.t('Console')}</span>\n </Badge>;\n } else if (this.state.logs) {\n _console = <Badge badgeContent={this.state.logs} color=\"default\">\n <span>{I18n.t('Console')}</span>\n </Badge>;\n } else {\n _console = I18n.t('Console');\n }\n\n return <div style={{width: '100%', height: '100%', overflow: 'hidden'}}>\n <Tabs\n classes={{root: this.props.classes.tabsRoot}}\n component={'div'}\n indicatorColor=\"primary\"\n style={{ position: 'relative', width: '100%' }}\n value={this.state.toolsTab}\n onChange={(event, value) => {\n const newState = {toolsTab: value};\n\n // load logs from buffer\n if (this.console && value === 'console') {\n newState.console = this.console;\n this.console = null;\n newState.logs = 0;\n newState.logWarnings = 0;\n newState.logErrors = 0;\n }\n\n window.localStorage.setItem('javascript.tools.tab', value);\n\n this.setState(newState);\n }}\n scrollButtons=\"auto\"\n >\n <Tab classes={{root: this.props.classes.tabRoot}} disabled={disabled} label={I18n.t('Stack')} value=\"stack\"/>\n <Tab\n classes={{root: this.props.classes.tabRoot}}\n disabled={disabled}\n label={_console}\n value=\"console\"\n />\n </Tabs>\n <div style={{width: '100%', height: 'calc(100% - 36px)', overflow: 'hidden'}}>\n {this.state.toolsTab === 'stack' && !disabled ? this.renderFrames() : null}\n {this.state.toolsTab === 'console' && !disabled ? this.renderConsole() : null}\n </div>\n </div>;\n }\n\n render() {\n return <div key=\"debugger\" style={this.props.style} className={Utils.clsx(this.props.classes.root, this.props.className)}>\n {this.state.starting ? <LinearProgress/> : null}\n {this.renderToolbar()}\n <SplitterLayout\n customClassName={this.props.classes.splitter}\n primaryMinSize={100}\n vertical\n secondaryInitialSize={this.toolSize}\n onSecondaryPaneSizeChange={size => this.toolSize = parseFloat(size)}\n onDragEnd={() => window.localStorage.setItem('App.toolSize', this.toolSize.toString())}\n //style={{width: '100%', height: 'calc(100% - 73px)', overflow: 'hidden'}}\n >\n <div style={{width: '100%', height: '100%', overflow: 'hidden'}}>\n {this.renderCode()}\n {this.renderQueryBreakpoints()}\n </div>\n <div style={{width: '100%', height: '100%', overflow: 'hidden'}}>\n {this.renderTools()}\n </div>\n </SplitterLayout>\n {this.renderError()}\n </div>;\n }\n}\n\nDebugger.propTypes = {\n runningInstances: PropTypes.object,\n adapterName: PropTypes.string,\n src: PropTypes.string,\n socket: PropTypes.object.isRequired,\n className: PropTypes.string,\n style: PropTypes.object,\n themeType: PropTypes.string,\n theme: PropTypes.object,\n themeName: PropTypes.string,\n debugInstance: PropTypes.object,\n};\n\nexport default withStyles(styles)(Debugger);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Tour from 'reactour';\n\nimport Toolbar from '@mui/material/Toolbar';\nimport withStyles from '@mui/styles/withStyles';\nimport Button from '@mui/material/Button';\nimport IconButton from '@mui/material/IconButton';\nimport Tabs from '@mui/material/Tabs';\nimport Tab from '@mui/material/Tab';\nimport Badge from '@mui/material/Badge';\nimport Snackbar from '@mui/material/Snackbar';\nimport Menu from '@mui/material/Menu';\nimport MenuItem from '@mui/material/MenuItem';\nimport Checkbox from '@mui/material/Checkbox';\nimport Dialog from '@mui/material/Dialog';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogActions from '@mui/material/DialogActions';\nimport LinearProgress from '@mui/material/LinearProgress';\nimport Table from '@mui/material/Table';\nimport TableBody from '@mui/material/TableBody';\nimport TableCell from '@mui/material/TableCell';\nimport TableContainer from '@mui/material/TableContainer';\nimport TableHead from '@mui/material/TableHead';\nimport TableRow from '@mui/material/TableRow';\nimport Paper from '@mui/material/Paper';\n\nimport { red, green } from '@mui/material/colors';\n\nimport { MdSave as IconSave } from 'react-icons/md';\nimport { MdCancel as IconCancel } from 'react-icons/md';\nimport { MdClose as IconClose } from 'react-icons/md';\nimport { MdRefresh as IconRestart } from 'react-icons/md';\nimport { MdInput as IconDoEdit } from 'react-icons/md';\nimport { FaClock as IconCron } from 'react-icons/fa';\nimport { FaClipboardList as IconSelectId } from 'react-icons/fa';\nimport { FaFileExport as IconExport } from 'react-icons/fa';\nimport { FaFileImport as IconImport } from 'react-icons/fa';\nimport { FaFlagCheckered as IconCheck } from 'react-icons/fa';\nimport { MdGpsFixed as IconLocate } from 'react-icons/md';\nimport { MdClearAll as IconCloseAll } from 'react-icons/md';\nimport { MdBuild as IconDebugMenu } from 'react-icons/md';\nimport { MdBugReport as IconDebug } from 'react-icons/md';\nimport { MdPlaylistAddCheck as IconVerbose } from 'react-icons/md';\nimport { MdBugReport as IconDebugMode } from 'react-icons/md';\nimport { MdPlayArrow as IconPlay } from 'react-icons/md';\nimport { MdPause as IconPause } from 'react-icons/md';\nimport { MdAutoAwesome as IconAstro } from 'react-icons/md';\nimport ImgJS from './assets/js.png';\nimport ImgBlockly from './assets/blockly.png';\nimport ImgTypeScript from './assets/typescript.png';\nimport ImgBlockly2Js from './assets/blockly2js.png';\nimport ImgRules2Js from './assets/rules2js.png';\nimport ImgRules from './assets/rules.png';\n\nimport {\n I18n, Utils, Cron as DialogCron, Confirm as DialogConfirm, SelectID as DialogSelectID,\n} from '@iobroker/adapter-react-v5';\n\nimport ScriptEditorComponent from './Components/ScriptEditorVanilaMonaco';\nimport BlocklyEditor from './Components/BlocklyEditor';\nimport DialogScriptEditor from './Dialogs/ScriptEditor';\nimport RulesEditor from './Components/RulesEditor';\nimport Debugger from './Components/Debugger';\nimport steps, { STEPS } from './Components/RulesEditor/helpers/Tour';\n\nconst images = {\n 'Blockly': ImgBlockly,\n 'Javascript/js': ImgJS,\n 'Rules': ImgRules,\n def: ImgJS,\n 'TypeScript/ts': ImgTypeScript,\n};\n\nconst MENU_ITEM_HEIGHT = 48;\nconst COLOR_DEBUG = '#02a102';\nconst COLOR_VERBOSE = '#70aae9';\nconst COLOR_RUN = green[400];\nconst COLOR_PAUSE = red[400];\n\nconst styles = theme => ({\n\n toolbar: {\n minHeight: 38, // Theme.toolbar.height,\n boxShadow: '0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12)',\n },\n toolbarButtons: {\n padding: 4,\n marginLeft: 4,\n },\n toolbarButtonsDisabled: {\n filter: 'grayscale(100%)',\n opacity: 0.5,\n },\n editorDiv: {\n height: `calc(100% - ${theme.toolbar.height + 38/*Theme.toolbar.height */ + 10}px)`,\n width: '100%',\n overflow: 'hidden',\n position: 'relative',\n },\n textButton: {\n marginRight: 10,\n minHeight: 24,\n padding: '6px 16px',\n },\n saveButton: {\n background: '#ff9900',\n },\n textIcon: {\n marginLeft: theme.spacing(1),\n },\n tabIcon: {\n width: 24,\n height: 24,\n verticalAlign: 'middle',\n marginBottom: 2,\n marginRight: 2,\n borderRadius: 3,\n },\n hintIcon: {\n // fontSize: 32,\n padding: '0 8px 0 8px',\n },\n hintText: {\n // fontSize: 18\n },\n hintButton: {\n marginTop: 8,\n marginLeft: 20,\n },\n tabMenuButton: {\n position: 'absolute',\n top: 0,\n right: 0,\n },\n tabChanged: {\n color: theme.palette.secondary.main,\n },\n tabText: {\n maxWidth: 130,\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n display: 'inline-block',\n verticalAlign: 'middle',\n },\n tabChangedIcon: {\n color: '#FF0000',\n fontSize: 16,\n },\n closeButton: {\n position: 'absolute',\n top: 0,\n right: -5,\n zIndex: 10,\n padding: 8,\n cursor: 'pointer',\n },\n closeButtonIcon: {\n background: theme.palette.mode === 'dark' ? '#000' : '#FFF',\n borderRadius: '50%',\n opacity: 0.7,\n },\n notRunning: {\n color: '#ffbc00',\n marginRight: theme.spacing(1),\n marginLeft: theme.spacing(1),\n },\n tabButton: {\n minHeight: 48,\n },\n tabButtonWrapper: {\n display: 'inline-block',\n },\n menuIcon: {\n width: 18,\n height: 18,\n borderRadius: 2,\n marginRight: 5,\n },\n});\n\nclass Editor extends React.Component {\n constructor(props) {\n super(props);\n\n const selected = window.localStorage.getItem('Editor.selected') || '';\n let editing = window.localStorage.getItem('Editor.editing') || '[]';\n try {\n editing = JSON.parse(editing);\n } catch (e) {\n editing = [];\n }\n if (selected && !editing.includes(selected)) {\n editing.push(selected);\n }\n\n this.tabsRef = React.createRef();\n\n this.state = {\n selected,\n editing, // array of opened scripts\n changed: {}, // for every script\n blockly: null,\n rules: null,\n debugEnabled: false,\n verboseEnabled: false,\n showCompiledCode: false,\n showSelectId: false,\n showCron: false,\n showScript: false,\n showAstro: false,\n astroEvents: null,\n insert: '',\n searchText: '',\n themeType: this.props.themeType,\n visible: props.visible,\n cmdToBlockly: '',\n cmdToRules: '',\n menuOpened: !!this.props.menuOpened,\n menuTabsOpened: false,\n menuTabsAnchorEl: null,\n runningInstances: this.props.runningInstances || {},\n showDebugMenu: false,\n toast: '',\n instancesLoaded: false,\n isTourOpen: window.localStorage.getItem('tour') !== 'true',\n tourStep: STEPS.selectTriggers,\n showAdapterDebug: false,\n };\n\n this.setChangedInAdmin();\n\n /* ----------------------- */\n // required by selectIdDialog in Blockly\n this.selectId = {\n initValue: null,\n callback: null,\n };\n this.cron = {\n initValue: null,\n callback: null,\n };\n this.scriptDialog = {\n initValue: null,\n callback: null,\n args: null,\n isReturn: false,\n };\n\n window.systemLang = I18n.getLanguage();\n window.main = {\n objects: {},\n getObject: (id, cb) => this.props.socket.getObject(id).then(obj => cb && cb(null, obj)).catch(err => cb && cb(err)),\n instances: [],\n selectIdDialog: (initValue, type, cb) => {\n if (typeof type === 'function') {\n cb = type;\n type = null;\n }\n this.selectId.callback = cb;\n this.selectId.initValue = initValue;\n this.selectId.type = type;\n this.setState({ showSelectId: true });\n },\n cronDialog: (initValue, cb) => {\n this.cron.callback = cb;\n this.cron.initValue = initValue;\n this.setState({ showCron: true });\n },\n showScriptDialog: (value, args, isReturn, cb) => {\n this.scriptDialog.callback = cb;\n this.scriptDialog.initValue = value;\n this.scriptDialog.args = args;\n this.scriptDialog.isReturn = isReturn || false;\n this.setState({ showScript: true });\n }\n };\n\n this.objects = props.objects;\n /* ----------------------- */\n\n this.scripts = {};\n\n if (!this.state.selected && this.state.editing.length) {\n this.state.selected = this.state.editing[0];\n }\n\n this.getAllAdapterInstances()\n .then(() => {\n // to enable logging\n if (this.props.onSelectedChange && this.state.selected) {\n setTimeout(() => this.props.onSelectedChange(this.state.selected, this.state.editing), 100);\n }\n });\n }\n\n getAllAdapterInstances() {\n return this.props.socket.getAdapterInstances(true)\n .then(instanceObjects => {\n const objects = {};\n const instances = instanceObjects.map(obj => {\n objects[obj._id] = obj;\n return obj._id;\n });\n window.main.objects = objects;\n window.main.instances = instances;\n this.setState({ instancesLoaded: true });\n });\n }\n\n onInstanceChanged = (id, obj) => {\n if (!id) {\n return;\n }\n\n if (!obj && window.main.instances.includes[id]) {\n delete window.main.objects[id];\n const pos = window.main.instances.indexOf(id);\n window.main.instances.splice(pos, 1);\n } else\n if (obj && obj.type === 'instance') {\n // update instances\n if (!window.main.instances.includes(id)) {\n window.main.instances.push(id);\n window.main.instances.sort();\n }\n window.main.objects[id] = obj;\n }\n };\n\n setChangedInAdmin() {\n const isChanged = Object.keys(this.state.changed).find(id => this.state.changed[id]);\n\n if (typeof window.parent !== 'undefined' && window.parent) {\n window.parent.configNotSaved = !!isChanged;\n }\n }\n\n componentDidMount() {\n window.addEventListener('beforeunload', this.onBrowserClose, false);\n this.props.socket.subscribeObject('system.adapter.*', this.onInstanceChanged);\n }\n\n componentWillUnmount() {\n window.removeEventListener('beforeunload', this.onBrowserClose);\n this.props.socket.unsubscribeObject('system.adapter.*', this.onInstanceChanged);\n }\n\n onBrowserClose = e => {\n const isChanged = Object.keys(this.scripts).find(id =>\n JSON.stringify(this.scripts[id]) !== JSON.stringify(this.props.objects[id].common));\n\n if (!!isChanged) {\n console.log('Script ' + JSON.stringify(this.scripts[isChanged]));\n const message = I18n.t('Configuration not saved.');\n e = e || window.event;\n // For IE and Firefox\n if (e) {\n e.returnValue = message;\n }\n\n // For Safari\n return message;\n }\n };\n\n removeNonExistingScripts(nextProps, newState) {\n nextProps = nextProps || this.props;\n newState = newState || {};\n\n let _changed = false;\n if (this.state.editing) {\n const isAnyNonExists = this.state.editing.find(id => !nextProps.objects[id]);\n\n if (isAnyNonExists) {\n // remove non-existing scripts\n const editing = JSON.parse(JSON.stringify(this.state.editing));\n for (let i = editing.length - 1; i >= 0; i--) {\n if (!this.objects[editing[i]]) {\n _changed = true;\n editing.splice(i, 1);\n }\n }\n if (_changed) {\n newState.editing = editing;\n }\n if (this.state.selected && !this.objects[this.state.selected]) {\n _changed = true;\n newState.selected = editing[0] || '';\n if (this.scripts[newState.selected]) {\n if (this.state.blockly !== (this.scripts[newState.selected].engineType === 'Blockly')) {\n newState.blockly = this.scripts[newState.selected].engineType === 'Blockly';\n _changed = true;\n }\n if (this.state.rules !== (this.scripts[newState.selected].engineType === 'Rules')) {\n newState.rules = this.scripts[newState.selected].engineType === 'Rules';\n _changed = true;\n }\n if (this.state.verboseEnabled !== this.scripts[newState.selected].verbose) {\n newState.verboseEnabled = this.scripts[newState.selected].verbose;\n _changed = true;\n }\n if (this.state.debugEnabled !== this.scripts[newState.selected].debug) {\n newState.debugEnabled = this.scripts[newState.selected].debug;\n _changed = true;\n }\n }\n }\n }\n }\n return _changed;\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const newState = {};\n let _changed = false;\n\n if (JSON.stringify(nextProps.runningInstances) !== JSON.stringify(this.state.runningInstances)) {\n _changed = true;\n newState.runningInstances = nextProps.runningInstances;\n }\n\n if (this.state.menuOpened !== nextProps.menuOpened) {\n newState.menuOpened = nextProps.menuOpened;\n _changed = true;\n }\n\n if (this.state.themeType !== nextProps.themeType) {\n newState.themeType = nextProps.themeType;\n _changed = true;\n }\n\n // check if all opened files still exists\n if (this.removeNonExistingScripts(nextProps, newState)) {\n _changed = true;\n }\n\n // update search text\n if (this.state.searchText !== nextProps.searchText) {\n newState.searchText = nextProps.searchText;\n _changed = true;\n }\n\n // if objects read\n if (this.objects !== nextProps.objects) {\n this.objects = nextProps.objects;\n window.main.objects = nextProps.objects;\n\n // update all scripts\n Object.keys(this.scripts).forEach(id => {\n const source = this.scripts[id].source;\n this.scripts[id] = JSON.parse(JSON.stringify(this.objects[id].common));\n this.scripts[id].source = source;\n });\n\n // if script is blockly\n if (this.state.selected && this.objects[this.state.selected]) {\n this.scripts[this.state.selected] = this.scripts[this.state.selected] || JSON.parse(JSON.stringify(this.objects[this.state.selected].common));\n if (this.state.blockly !== (this.scripts[this.state.selected].engineType === 'Blockly')) {\n newState.blockly = this.scripts[this.state.selected].engineType === 'Blockly';\n _changed = true;\n }\n if (this.state.rules !== (this.scripts[this.state.selected].engineType === 'Rules')) {\n newState.rules = this.scripts[this.state.selected].engineType === 'Rules';\n _changed = true;\n }\n if (this.state.verboseEnabled !== this.scripts[this.state.selected].verbose) {\n newState.verboseEnabled = this.scripts[this.state.selected].verbose;\n _changed = true;\n }\n if (this.state.debugEnabled !== this.scripts[this.state.selected].debug) {\n newState.debugEnabled = this.scripts[this.state.selected].debug;\n _changed = true;\n }\n }\n\n // remove non-existing scripts\n const editing = JSON.parse(JSON.stringify(this.state.editing));\n for (let i = editing.length - 1; i >= 0; i--) {\n if (!this.objects[editing[i]]) {\n _changed = true;\n editing.splice(i, 1);\n if (this.state.changed[editing[i]] !== undefined) {\n newState.changed = newState.changed || JSON.parse(JSON.stringify(this.state.changed));\n delete newState.changed[editing[i]];\n }\n }\n }\n if (this.state.selected && !this.objects[this.state.selected]) {\n newState.selected = editing[0] || '';\n }\n if (_changed) {\n newState.editing = editing;\n }\n } else {\n // update all scripts\n for (const id in this.scripts) {\n if (!this.scripts.hasOwnProperty(id)) continue;\n if (this.objects[id] && this.objects[id].common) {\n const oldSource = this.scripts[id].source;\n const commonLocal = JSON.parse(JSON.stringify(this.scripts[id]));\n commonLocal.source = this.objects[id].common.source;\n // if anything except source was changed\n if (JSON.stringify(commonLocal) !== JSON.stringify(this.objects[id].common)) {\n this.scripts[id] = JSON.parse(JSON.stringify(this.objects[id].common));\n this.scripts[id].source = oldSource;\n }\n\n if (oldSource !== this.objects[id].common.source) {\n // take new script if it not yet changed\n if (!this.state.changed[id]) {\n // just use new value\n this.scripts[id].source = this.objects[id].common.source;\n } else {\n if (this.objects[id].from && this.objects[id].from.startsWith('system.adapter.javascript.')) {\n this.objects[id].from = 'system.adapter.admin.0';\n // show that script was changed from outside\n this.setState({ toast: I18n.t('Script %s was modified on disk.', id.split('.').pop()) });\n }\n }\n } else {\n if (this.state.changed[id]) {\n newState.changed = newState.changed || JSON.parse(JSON.stringify(this.state.changed));\n newState.changed[id] = false;\n _changed = true;\n }\n }\n } else {\n delete this.scripts[id];\n if (this.state.selected === id) {\n if (this.state.editing.indexOf(id) !== -1) {\n const editing = JSON.parse(JSON.stringify(this.state.editing));\n const pos = editing.indexOf(id);\n if (pos !== -1) {\n editing.splice(pos, 1);\n newState.editing = editing;\n _changed = true;\n }\n }\n newState.selected = this.state.editing[0] || '';\n _changed = true;\n }\n }\n }\n }\n\n if (this.state.selected !== nextProps.selected && nextProps.selected) {\n if (nextProps.selected) {\n this.scripts[nextProps.selected] = this.scripts[nextProps.selected] || JSON.parse(JSON.stringify(this.props.objects[nextProps.selected].common));\n }\n\n const nextCommon = this.props.objects[nextProps.selected] && this.props.objects[nextProps.selected].common;\n\n const changed = nextCommon && JSON.stringify(this.scripts[nextProps.selected]) !== JSON.stringify(nextCommon);\n\n const editing = JSON.parse(JSON.stringify(this.state.editing));\n if (nextProps.selected && editing.indexOf(nextProps.selected) === -1) {\n editing.push(nextProps.selected);\n this.props.onSelectedChange(nextProps.selected, editing);\n window.localStorage && window.localStorage.setItem('Editor.editing', JSON.stringify(editing));\n }\n\n _changed = true;\n newState.changed = newState.changed || JSON.parse(JSON.stringify(this.state.changed));\n newState.changed[nextProps.selected] = changed;\n newState.editing = editing;\n newState.selected = nextProps.selected;\n newState.blockly = this.scripts[nextProps.selected].engineType === 'Blockly';\n newState.rules = this.scripts[nextProps.selected].engineType === 'Rules';\n newState.verboseEnabled = this.scripts[nextProps.selected].verbose;\n newState.debugEnabled = this.scripts[nextProps.selected].debug;\n newState.showCompiledCode = false;\n } else {\n\n }\n\n if (this.state.visible !== nextProps.visible) {\n _changed = true;\n newState.visible = nextProps.visible;\n }\n\n _changed && this.setState(newState, () => this.setChangedInAdmin());\n }\n\n onRestart() {\n this.props.onRestart && this.props.onRestart(this.state.selected);\n }\n\n onStartStop() {\n const common = JSON.parse(JSON.stringify(this.scripts[this.state.selected]));\n common.enabled = !common.enabled;\n this.props.onChange && this.props.onChange(this.state.selected, common);\n }\n\n onSave() {\n if (this.state.isTourOpen && this.state.tourStep === STEPS.saveTheScript) {\n this.setState({ isTourOpen: false });\n window.localStorage.setItem('tour', 'true');\n }\n\n if (this.state.changed[this.state.selected]) {\n const changed = JSON.parse(JSON.stringify(this.state.changed));\n changed[this.state.selected] = false;\n this.setState({ changed }, () => {\n this.setChangedInAdmin();\n this.props.onChange && this.props.onChange(this.state.selected, this.scripts[this.state.selected]);\n });\n }\n }\n\n onSaveAll() {\n const changed = JSON.parse(JSON.stringify(this.state.changed));\n Object.keys(changed)\n .forEach(id => {\n if (changed[id]) {\n changed[id] = false;\n this.props.onChange && this.props.onChange(id, this.scripts[id]);\n }\n });\n\n this.setState({ changed }, () =>\n this.setChangedInAdmin());\n }\n\n onCancel() {\n this.scripts[this.state.selected] = JSON.parse(JSON.stringify(this.props.objects[this.state.selected].common));\n\n const changed = JSON.parse(JSON.stringify(this.state.changed));\n changed[this.state.selected] = false;\n\n this.setState({ changed }, () => this.setChangedInAdmin());\n }\n\n onRegisterSelect(func) {\n this.getSelect = func;\n }\n\n onConvertBlockly2JS() {\n this.showConfirmDialog(I18n.t('It will not be possible to revert this operation.'), result => {\n if (result) {\n this.scripts[this.state.selected].engineType = 'Javascript/js';\n let source = this.scripts[this.state.selected].source;\n const lines = source.split('\\n');\n lines.pop();\n this.scripts[this.state.selected].source = lines.join('\\n');\n const nowSelected = this.state.selected;\n\n const changed = JSON.parse(JSON.stringify(this.state.changed));\n changed[this.state.selected] = true;\n\n this.setState({ changed, blockly: false, selected: '' }, () => {\n this.setChangedInAdmin();\n // force update of the editor\n setTimeout(() => this.setState({ selected: nowSelected }), 100);\n });\n }\n });\n }\n\n onChange(options) {\n options = options || {};\n if (options.script !== undefined) {\n this.scripts[this.state.selected].source = options.script;\n }\n if (options.debug !== undefined) {\n this.scripts[this.state.selected].debug = options.debug;\n }\n if (options.verbose !== undefined) {\n this.scripts[this.state.selected].verbose = options.verbose;\n }\n const _changed = JSON.stringify(this.scripts[this.state.selected]) !== JSON.stringify(this.props.objects[this.state.selected].common);\n if (_changed !== (this.state.changed[this.state.selected] || false)) {\n const changed = JSON.parse(JSON.stringify(this.state.changed));\n changed[this.state.selected] = _changed;\n this.objects[this.state.selected].from = 'system.adapter.admin.0';\n this.setState({ changed }, () => this.setChangedInAdmin());\n\n }\n }\n\n onTabChange(event, selected) {\n if (this.props.debugMode) {\n return;\n }\n window.localStorage && window.localStorage.setItem('Editor.selected', selected);\n const common = this.scripts[selected] || (this.props.objects[selected] && this.props.objects[selected].common);\n this.setState({\n selected,\n rules: common.engineType === 'Rules',\n blockly: common.engineType === 'Blockly',\n showCompiledCode: false,\n verboseEnabled: common.verbose,\n debugEnabled: common.debug\n });\n this.props.onSelectedChange && this.props.onSelectedChange(selected, this.state.editing);\n }\n\n isScriptChanged(id) {\n return this.scripts[id] && this.props.objects[id] && JSON.stringify(this.scripts[id]) !== JSON.stringify(this.props.objects[id].common);\n }\n\n onTabClose(id, e) {\n e && e.stopPropagation();\n\n const pos = this.state.editing.indexOf(id);\n if (this.state.editing.includes(id)) {\n if (this.isScriptChanged(id)) {\n this.showConfirmDialog(I18n.t('Discard changes for %s', this.props.objects[id].common.name), ok => {\n if (ok) {\n delete this.scripts[id];\n this.onTabClose(id);\n }\n });\n } else {\n const editing = JSON.parse(JSON.stringify(this.state.editing));\n editing.splice(pos, 1);\n const newState = { editing };\n if (id === this.state.selected) {\n if (editing.length) {\n if (pos === 0 || editing.length === 1) {\n newState.selected = editing[0];\n } else {\n newState.selected = editing[pos - 1];\n }\n } else {\n newState.selected = '';\n }\n } else if (this.state.selected && !editing.length) {\n newState.selected = '';\n }\n window.localStorage && window.localStorage.setItem('Editor.editing', JSON.stringify(editing));\n if (newState.selected !== undefined) {\n newState.changed = newState.changed || JSON.parse(JSON.stringify(this.state.changed));\n newState.changed[newState.selected] = this.isScriptChanged(newState.selected);\n const common = newState.selected && (this.scripts[newState.selected] || (this.props.objects[newState.selected] && this.props.objects[newState.selected].common));\n newState.blockly = common ? common.engineType === 'Blockly' : false;\n newState.rules = common ? common.engineType === 'Rules' : false;\n newState.verboseEnabled = common ? common.verbose : false;\n newState.debugEnabled = common ? common.debug : false;\n newState.showCompiledCode = false;\n }\n\n this.setState(newState, () => {\n this.setChangedInAdmin();\n\n if (newState.selected !== undefined) {\n this.props.onSelectedChange && this.props.onSelectedChange(newState.selected, this.state.editing);\n window.localStorage && window.localStorage.setItem('Editor.selected', newState.selected);\n } else {\n this.props.onSelectedChange && this.props.onSelectedChange(this.state.selected, this.state.editing);\n }\n });\n }\n }\n }\n\n showConfirmDialog(question, cb) {\n this.confirmCallback = cb;\n this.setState({ confirm: question });\n }\n\n sendCommandToBlockly(cmd) {\n this.setState({ cmdToBlockly: cmd }, () =>\n setTimeout(() =>\n this.setState({ cmdToBlockly: '' }), 200));\n }\n\n sendCommandToRules(cmd) {\n this.setState({ cmdToRules: cmd }, () =>\n setTimeout(() =>\n this.setState({ cmdToRules: '' }), 200));\n }\n\n static getText(text) {\n if (typeof text === 'object') {\n return text[I18n.getLanguage()] || text.en;\n }\n return text;\n }\n\n getScriptFullName(id) {\n const parts = id.split('.');\n parts.shift(); // remove \"script.\"\n parts.shift(); // remove \"js.\"\n const result = [];\n let _id = 'script.js';\n for (let i = 0; i < parts.length; i++) {\n _id += `.${parts[i]}`;\n if (this.props.objects[_id] && this.props.objects[_id].common) {\n result.push(Editor.getText(this.props.objects[_id].common.name));\n } else {\n result.push(parts[i]);\n }\n }\n return `/ ${result.join(' / ')}`;\n }\n\n getTabs() {\n if (this.state.editing.length) {\n return [<Tabs\n component={'div'}\n key=\"tabs1\"\n value={this.props.debugInstance ? this.props.debugInstance.adapter : this.state.selected}\n onChange={(event, value) => this.onTabChange(event, value)}\n indicatorColor=\"primary\"\n style={{ position: 'relative', marginLeft: 10, width: this.state.editing.length > 1 ? 'calc(100% - 50px)' : '100%', display: 'inline-block' }}\n textColor=\"primary\"\n variant=\"scrollable\"\n scrollButtons=\"auto\"\n >\n {this.state.editing.map(id => {\n if (!this.props.objects[id]) {\n const label = [\n <div key=\"text\" className={Utils.clsx(this.props.classes.tabText, this.isScriptChanged(id) && this.props.classes.tabChanged)}>{id.split('.').pop()}</div>,\n <span key=\"icon\" className={this.props.classes.closeButton}>\n <IconClose className={this.props.classes.closeButtonIcon} onClick={e => this.onTabClose(id, e)} fontSize=\"small\" />\n </span>];\n return <Tab\n wrapped\n component={'div'}\n href={'#' + id}\n key={id}\n label={label}\n value={id}\n classes={{ wrapper: this.props.classes.tabButtonWrapper }}\n />;\n } else {\n let text = Editor.getText(this.props.objects[id].common.name) || '';\n let title = this.getScriptFullName(id);\n if (text.length > 18) {\n text = `${text.substring(0, 15)}...`;\n }\n const changed = this.props.objects[id].common && this.scripts[id] && this.props.objects[id].common.source !== this.scripts[id].source;\n const label = [\n <div key=\"text\" className={Utils.clsx(this.props.classes.tabText, this.isScriptChanged(id) && this.props.classes.tabChanged)}>{text}</div>,\n changed ? <span key=\"changedSign\" className={this.props.classes.tabChangedIcon}>▣</span> : null,\n (!this.props.debugInstance && (!this.props.debugMode || this.state.selected !== id)) &&\n <span key=\"close\" className={this.props.classes.closeButton}>\n <IconClose className={this.props.classes.closeButtonIcon} onClick={e => this.onTabClose(id, e)} fontSize=\"small\" />\n </span>,\n ];\n\n return <Tab\n disabled={this.props.debugInstance || (this.state.selected !== id && this.props.debugMode)}\n wrapped\n component=\"div\"\n iconPosition=\"start\"\n icon={<img key=\"icon\" alt=\"\" src={images[this.props.objects[id].common.engineType] || images.def} className={this.props.classes.tabIcon} />}\n href={`#${id}`}\n key={id}\n label={label}\n className={this.props.classes.tabButton}\n value={id}\n title={title}\n classes={{ wrapper: this.props.classes.tabButtonWrapper }}\n />;\n }\n })}\n {this.props.debugInstance ? <Tab\n disabled={false}\n wrapped\n component=\"div\"\n href={`#${this.props.debugInstance.adapter}`}\n key={this.props.debugInstance.adapter}\n label={this.props.debugInstance.adapter}\n className={this.props.classes.tabButton}\n value={this.props.debugInstance.adapter}\n title={this.props.debugInstance.adapter}\n classes={{ wrapper: this.props.classes.tabButtonWrapper }}\n /> : ''}\n </Tabs>,\n this.state.editing.length > 1 ? <IconButton\n key=\"menuButton\"\n href=\"#\"\n aria-label=\"Close all but current\"\n className={this.props.classes.tabMenuButton}\n title={I18n.t('Close all but current')}\n aria-haspopup=\"false\"\n onClick={_event => {\n const editing = [this.state.selected];\n // Do not close not saved tabs\n Object.keys(this.scripts).forEach(id =>\n id !== this.state.selected &&\n JSON.stringify(this.scripts[id]) !== JSON.stringify(this.props.objects[id].common) &&\n editing.push(id)\n );\n\n window.localStorage && window.localStorage.setItem('Editor.editing', JSON.stringify(editing));\n this.setState({ menuTabsOpened: false, menuTabsAnchorEl: null, editing: editing });\n }}\n size=\"medium\">\n <IconCloseAll />\n </IconButton> : null\n ];\n } else {\n return <div key=\"tabs2\" className={this.props.classes.toolbar}>\n <Button color=\"grey\" key=\"select1\" disabled className={this.props.classes.hintButton} href=\"\">\n <span key=\"select2\">{I18n.t('Click on this icon')}</span>\n <IconDoEdit key=\"select3\" className={this.props.classes.hintIcon} />\n <span key=\"select4\">{I18n.t('for edit or create script')}</span>\n </Button>\n </div>;\n }\n }\n\n getDebugMenu() {\n if (!this.state.showDebugMenu) {\n return null;\n }\n\n return <Menu\n key=\"menuDebug\"\n id=\"menu-debug\"\n anchorEl={this.state.menuDebugAnchorEl}\n open={this.state.showDebugMenu}\n onClose={() => this.setState({ showDebugMenu: false, menuDebugAnchorEl: null })}\n PaperProps={{\n style: {\n maxHeight: MENU_ITEM_HEIGHT * 7.5,\n },\n }}\n >\n <MenuItem key=\"debugEnabled\"\n title={I18n.t('debug_help')}\n onClick={event => {\n event.stopPropagation();\n event.preventDefault();\n this.setState({ showDebugMenu: false, menuDebugAnchorEl: null, debugEnabled: !this.state.debugEnabled }, () => this.onChange({ debug: this.state.debugEnabled }));\n }}>\n <Checkbox checked={this.state.debugEnabled} />\n <IconDebug className={this.props.classes.menuIcon} style={{ color: COLOR_DEBUG }} />\n {I18n.t('debug_label')}\n </MenuItem>\n <MenuItem key=\"verboseEnabled\"\n title={I18n.t('verbose_help')}\n onClick={event => {\n event.stopPropagation();\n event.preventDefault();\n this.setState({ showDebugMenu: false, menuDebugAnchorEl: null, verboseEnabled: !this.state.verboseEnabled }, () => this.onChange({ verbose: this.state.verboseEnabled }));\n }}>\n <Checkbox checked={this.state.verboseEnabled} />\n <IconVerbose className={this.props.classes.menuIcon} style={{ color: COLOR_VERBOSE }} />\n {I18n.t('verbose_label')}\n </MenuItem>\n </Menu>;\n }\n\n getDebugBadge() {\n return [\n this.state.debugEnabled && this.state.verboseEnabled && <IconDebug key=\"DebugVerbose\" className={this.props.classes.menuIcon} style={{ color: COLOR_VERBOSE }} />,\n this.state.debugEnabled && !this.state.verboseEnabled && <IconDebug key=\"DebugNoVerbose\" className={this.props.classes.menuIcon} style={{ color: COLOR_DEBUG }} />,\n !this.state.debugEnabled && this.state.verboseEnabled && <IconVerbose key=\"noDebugVerbose\" className={this.props.classes.menuIcon} style={{ color: COLOR_VERBOSE }} />,\n ]\n }\n\n getAskAboutDebug() {\n if (this.state.askAboutDebug) {\n return <DialogConfirm\n onClose={() => {\n this.setState({ askAboutDebug: false }, () =>\n this.props.onDebugModeChange(true));\n }}\n ok={I18n.t('Yes')}\n cancel={I18n.t('Cancel')}\n text={I18n.t('The script will be stopped and must be activated manually after debugging. Continue?')}\n />;\n } else {\n return null;\n }\n }\n\n getToolbar() {\n const isInstanceRunning = this.state.selected && this.scripts[this.state.selected] && this.scripts[this.state.selected].engine && this.state.runningInstances[this.scripts[this.state.selected].engine];\n const isScriptRunning = this.state.selected && this.scripts[this.state.selected] && this.scripts[this.state.selected].enabled;\n\n if (this.state.selected) {\n const changedAll = Object.keys(this.state.changed).filter(id => this.state.changed[id]).length;\n const changed = this.state.changed[this.state.selected];\n return (\n <Toolbar variant=\"dense\" className={this.props.classes.toolbar} key=\"toolbar1\">\n {!this.props.debugInstance && this.state.menuOpened && this.props.onLocate && <IconButton\n className={this.props.classes.toolbarButtons}\n key=\"locate\"\n title={I18n.t('Locate file')}\n onClick={() => this.props.onLocate(this.state.selected)}\n size=\"medium\"\n >\n <IconLocate />\n </IconButton>}\n {!this.props.debugInstance && !changed && isInstanceRunning && <IconButton\n key=\"restart\"\n disabled={this.props.debugMode}\n variant=\"contained\"\n className={this.props.classes.toolbarButtons}\n onClick={() => this.onRestart()}\n title={I18n.t('Restart')}\n size=\"medium\"\n >\n <IconRestart />\n </IconButton>}\n {!this.props.debugInstance && !changed && <IconButton\n key=\"start-stop\"\n disabled={this.props.debugMode}\n variant=\"contained\"\n className={this.props.classes.toolbarButtons}\n onClick={() => this.onStartStop()}\n title={isScriptRunning ? I18n.t('Pause script') : I18n.t('Run script')}\n size=\"medium\"\n style={{ color: isScriptRunning ? COLOR_RUN : COLOR_PAUSE }}\n >\n {isScriptRunning ? <IconPause /> : <IconPlay />}\n </IconButton>}\n {!this.props.debugInstance && !changed && !isScriptRunning && <span className={this.props.classes.notRunning}>{I18n.t('Script is not running')}</span>}\n {!changed && isScriptRunning && !isInstanceRunning && <span className={this.props.classes.notRunning}>{I18n.t('Instance is disabled')}</span>}\n {changed && <Button color=\"grey\" key=\"save\" variant=\"contained\" className={Utils.clsx(this.props.classes.textButton, this.props.classes.saveButton, 'button-save')} onClick={() => this.onSave()}>{I18n.t('Save')}<IconSave className={this.props.classes.textIcon} /></Button>}\n {(changedAll > 1 || (changedAll === 1 && !changed)) && <Button color=\"grey\" key=\"saveall\" variant=\"contained\" className={this.props.classes.textButton} onClick={() => this.onSaveAll()}>{I18n.t('Save all')}<IconSave className={this.props.classes.textIcon} /></Button>}\n {changed && <Button color=\"grey\" key=\"cancel\" variant=\"contained\" className={this.props.classes.textButton} onClick={() => this.onCancel()}>{I18n.t('Cancel')}<IconCancel className={this.props.classes.textIcon} /></Button>}\n <div style={{ flex: 2 }} />\n\n {this.state.blockly && !this.state.showCompiledCode &&\n <IconButton\n key=\"export\"\n aria-label=\"Export Blocks\"\n title={I18n.t('Export blocks')}\n className={this.props.classes.toolbarButtons}\n onClick={() => this.sendCommandToBlockly('export')}\n size=\"medium\"\n >\n <IconExport />\n </IconButton>}\n\n {this.state.blockly && !this.state.showCompiledCode &&\n <IconButton\n key=\"import\"\n aria-label=\"Import Blocks\"\n title={I18n.t('Import blocks')}\n className={this.props.classes.toolbarButtons}\n onClick={() => this.sendCommandToBlockly('import')}\n size=\"medium\"\n >\n <IconImport />\n </IconButton>}\n\n {this.state.blockly && !this.state.showCompiledCode &&\n <IconButton\n key=\"check\"\n aria-label=\"Check code\"\n title={I18n.t('Check blocks')}\n className={this.props.classes.toolbarButtons}\n onClick={() => this.sendCommandToBlockly('check')}\n size=\"medium\"\n >\n <IconCheck />\n </IconButton>}\n\n {!this.props.debugMode && !this.state.blockly && !this.state.rules && !this.state.showCompiledCode && <IconButton\n key=\"select-cron\"\n aria-label=\"create CRON\"\n title={I18n.t('Create or edit CRON or time wizard')}\n className={this.props.classes.toolbarButtons}\n onClick={() => this.setState({ showCron: true })}\n size=\"medium\"\n >\n <IconCron />\n </IconButton>}\n\n <IconButton\n key=\"show-astro\"\n aria-label=\"Show astrological events\"\n title={I18n.t('Show astrological events')}\n className={this.props.classes.toolbarButtons}\n disabled={!isInstanceRunning}\n onClick={() => {\n this.setState({ showAstro: true, astroEvents: null });\n\n this.props.socket.sendTo(this.scripts[this.state.selected].engine.replace('system.adapter.', ''), 'calcAstroAll', {})\n .then(astroEvents => this.setState({ astroEvents }));\n }}\n size=\"medium\"\n >\n <IconAstro />\n </IconButton>\n\n {!this.props.debugMode && !this.state.blockly && !this.state.rules && !this.state.showCompiledCode && <IconButton\n key=\"select-id\"\n aria-label=\"select ID\"\n title={I18n.t('Insert object ID')}\n className={this.props.classes.toolbarButtons}\n onClick={() => this.setState({ showSelectId: true })}\n size=\"medium\"\n >\n <IconSelectId />\n </IconButton>}\n\n {this.state.blockly && !this.state.rules && this.state.showCompiledCode && <Button color=\"grey\" key=\"convert2js\" aria-label=\"convert to javascript\"\n title={I18n.t('Convert blockly to javascript for ever.')}\n onClick={() => this.onConvertBlockly2JS()}\n >Blockly=>JS</Button>}\n {this.state.rules && !this.state.showCompiledCode &&\n <IconButton\n key=\"export\"\n aria-label=\"Export Blocks\"\n title={I18n.t('Export blocks')}\n className={this.props.classes.toolbarButtons}\n onClick={() => this.sendCommandToRules('export')}\n size=\"medium\"\n >\n <IconExport />\n </IconButton>}\n {this.state.rules && !this.state.showCompiledCode &&\n <IconButton\n key=\"import\"\n aria-label=\"Import Blocks\"\n title={I18n.t('Import blocks')}\n className={this.props.classes.toolbarButtons}\n onClick={() => this.sendCommandToRules('import')}\n size=\"medium\"\n >\n <IconImport />\n </IconButton>}\n\n {this.props.expertMode && !changed && (this.props.debugMode || (!this.state.blockly && !this.state.rules) || ((this.state.blockly || this.state.rules) && this.state.showCompiledCode)) && <IconButton\n className={this.props.classes.toolbarButtons}\n color={this.props.debugMode ? 'primary' : 'default'}\n disabled={!this.props.debugMode && !isInstanceRunning}\n onClick={() => {\n if (!this.props.debugMode && isScriptRunning) {\n this.setState({ askAboutDebug: true })\n } else {\n this.props.onDebugModeChange(!this.props.debugMode);\n }\n }}\n size=\"medium\"\n >\n <IconDebugMode style={{ fontSize: 32 }} />\n </IconButton>}\n\n {(this.state.blockly || this.state.rules) && <Button\n key=\"blockly-code\"\n aria-label=\"blockly\"\n title={I18n.t('Show javascript code')}\n className={Utils.clsx(this.props.classes.toolbarButtons, 'button-js-code', this.props.debugMode && this.props.classes.toolbarButtonsDisabled)}\n color={this.state.showCompiledCode ? 'secondary' : 'inherit'}\n disabled={this.props.debugMode}\n style={{ padding: '0 5px' }}\n onClick={() => {\n if (this.props.debugMode) {\n return;\n }\n this.setState({ showCompiledCode: !this.state.showCompiledCode });\n this.state.isTourOpen && this.state.tourStep === STEPS.showJavascript && this.setState({ tourStep: STEPS.switchBackToRules });\n this.state.isTourOpen && this.state.tourStep === STEPS.switchBackToRules && this.setState({ tourStep: STEPS.saveTheScript });\n }}>\n <img alt={this.state.blockly ? \"blockly2js\" : \"rules2js\"} src={this.state.blockly ? ImgBlockly2Js : ImgRules2Js} /></Button>}\n <IconButton\n key=\"debug\"\n disabled={this.props.debugMode}\n aria-label=\"Debug menu\"\n title={I18n.t('Debug options')}\n className={this.props.classes.toolbarButtons}\n onClick={e => this.setState({ showDebugMenu: true, menuDebugAnchorEl: e.currentTarget })}\n size=\"medium\"\n >\n <Badge className={this.props.classes.badgeMargin} badgeContent={this.getDebugBadge()}>\n <IconDebugMenu />\n </Badge>\n </IconButton>\n </Toolbar>\n );\n } else {\n return null;\n }\n }\n\n getScriptEditor() {\n if (!this.props.debugMode &&\n this.state.selected &&\n this.props.objects[this.state.selected] &&\n this.state.blockly !== null &&\n (!this.state.blockly || this.state.showCompiledCode) &&\n (!this.state.rules || this.state.showCompiledCode)\n ) {\n this.scripts[this.state.selected] = this.scripts[this.state.selected] || JSON.parse(JSON.stringify(this.props.objects[this.state.selected].common));\n\n return <div className={this.props.classes.editorDiv} key=\"scriptEditorDiv\">\n <ScriptEditorComponent\n key=\"scriptEditor1\"\n name={this.state.selected}\n adapterName={this.props.adapterName}\n insert={this.state.insert}\n onInserted={() => this.setState({ insert: '' })}\n onForceSave={() => this.onSave()}\n searchText={this.state.searchText}\n onRegisterSelect={func => this.onRegisterSelect(func)}\n readOnly={this.state.showCompiledCode}\n changed={this.state.changed[this.state.selected]}\n code={this.scripts[this.state.selected].source || ''}\n isDark={this.state.themeType === 'dark'}\n socket={this.props.socket}\n runningInstances={this.state.runningInstances}\n onChange={newValue => this.onChange({ script: newValue })}\n language={this.scripts[this.state.selected].engineType === 'TypeScript/ts' ? 'typescript' : 'javascript'}\n />\n </div>;\n } else {\n return null;\n }\n }\n\n getBlocklyEditor() {\n if (!this.props.debugMode &&\n this.state.instancesLoaded &&\n this.state.selected &&\n this.props.objects[this.state.selected] &&\n this.state.blockly &&\n !this.state.showCompiledCode &&\n this.state.visible\n ) {\n this.scripts[this.state.selected] = this.scripts[this.state.selected] || JSON.parse(JSON.stringify(this.props.objects[this.state.selected].common));\n\n return <div className={this.props.classes.editorDiv} key=\"blocklyEditorDiv\">\n <BlocklyEditor\n command={this.state.cmdToBlockly}\n key=\"BlocklyEditor\"\n themeType={this.state.themeType}\n searchText={this.state.searchText}\n resizing={this.props.resizing}\n code={this.scripts[this.state.selected].source || ''}\n onChange={newValue => this.onChange({ script: newValue })}\n />\n </div>;\n } else {\n return null;\n }\n }\n\n getRulesEditor() {\n if (!this.props.debugMode &&\n this.state.instancesLoaded &&\n this.state.selected &&\n this.props.objects[this.state.selected] &&\n this.state.rules &&\n !this.state.showCompiledCode &&\n this.state.visible\n ) {\n this.scripts[this.state.selected] = this.scripts[this.state.selected] || JSON.parse(JSON.stringify(this.props.objects[this.state.selected].common));\n const isInstanceRunning = this.state.selected && this.scripts[this.state.selected] && this.scripts[this.state.selected].engine && this.state.runningInstances[this.scripts[this.state.selected].engine];\n const isScriptRunning = this.state.selected && this.scripts[this.state.selected] && this.scripts[this.state.selected].enabled;\n\n return <div className={Utils.clsx(this.props.classes.editorDiv)} key=\"flowEditorDiv\">\n <RulesEditor\n scriptId={this.state.selected}\n setTourStep={this.setTourStep}\n tourStep={this.state.tourStep}\n isTourOpen={this.state.isTourOpen}\n changed={this.state.changed[this.state.selected]}\n running={isInstanceRunning && isScriptRunning}\n command={this.state.cmdToRules}\n key=\"flowEditor\"\n themeType={this.state.themeType}\n themeName={this.props.themeName}\n searchText={this.state.searchText}\n resizing={this.props.resizing}\n code={this.scripts[this.state.selected].source || ''}\n onChange={newValue => this.onChange({ script: newValue })}\n />\n </div>;\n } else {\n return null;\n }\n }\n\n getConfirmDialog() {\n if (this.state.confirm) {\n return <DialogConfirm\n key=\"dialogConfirm1\"\n text={this.state.confirm}\n onClose={result => {\n if (this.confirmCallback) {\n const cb = this.confirmCallback;\n this.confirmCallback = null;\n cb(result);\n }\n this.setState({ confirm: '' });\n }}\n />;\n } else {\n return null;\n }\n }\n\n getSelectIdDialog() {\n if (this.state.showSelectId) {\n let selectedId = this.selectId.callback ? this.selectId.initValue || '' : this.getSelect ? this.getSelect() : '';\n // it could be:\n // - 'id.xx'/* aksjdhsdf*/\n // - \"id.xx\"/* aksjdhsdf*/\n // - \"id.xx\"//\n let pos = selectedId.indexOf('/*');\n if (pos !== -1) {\n selectedId = selectedId.substring(0, pos);\n }\n pos = selectedId.indexOf('//');\n if (pos !== -1) {\n selectedId = selectedId.substring(0, pos);\n }\n let m = selectedId.match(/\"([^\"]+)\"/);\n if (m) {\n selectedId = m[1];\n }\n m = selectedId.match(/'([^']+)'/);\n if (m) {\n selectedId = m[1];\n }\n\n return <DialogSelectID\n key=\"dialogSelectID1\"\n imagePrefix=\"../..\"\n themeName={this.props.themeName}\n themeType={this.state.themeType}\n socket={this.props.socket}\n selected={selectedId}\n expertMode={this.selectId.type === 'script' ? true : undefined}\n // statesOnly={!this.selectId.type || this.selectId.type === 'state'}\n types={[this.selectId.type || 'state']}\n onClose={() => {\n this.setState({ showSelectId: false });\n if (this.selectId.callback) {\n this.selectId.callback = null;\n }\n }}\n onOk={(selected, name) => {\n this.selectId.initValue = null;\n if (this.selectId.callback) {\n this.selectId.callback(selected);\n this.selectId.callback = null;\n } else {\n this.setState({ insert: `'${selected}'/*${name}*/` })\n }\n }}\n />;\n } else {\n return null;\n }\n }\n\n getCronDialog() {\n if (this.state.showCron) {\n return <DialogCron\n key=\"dialogCron1\"\n cron={this.cron.callback ? this.cron.initValue || '' : this.getSelect ? this.getSelect() : '* * * * *'}\n onClose={() => this.setState({ showCron: false })}\n onOk={cron => {\n this.cron.initValue = null;\n if (this.cron.callback) {\n this.cron.callback(cron);\n this.cron.callback = null;\n } else {\n this.setState({ insert: `'${cron}'` });\n }\n }}\n />;\n } else {\n return null;\n }\n }\n\n getAstroDialog() {\n if (this.state.showAstro) {\n return <Dialog\n open={!0}\n onClose={() => this.setState({ showAstro: false })}\n key=\"dialogAstro\"\n >\n <DialogTitle>{I18n.t('Astrological events today')}</DialogTitle>\n <DialogContent>\n {!this.state.astroEvents ? <LinearProgress /> : <TableContainer component={Paper}>\n <Table size=\"small\">\n <TableHead>\n <TableRow>\n <TableCell>{I18n.t('Name')}</TableCell>\n <TableCell>{I18n.t('Time')}</TableCell>\n <TableCell>{I18n.t('Description')}</TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {Object.keys(this.state.astroEvents).map(id =>\n <TableRow key={id}>\n <TableCell component=\"th\" scope=\"row\">{id.startsWith('next') ? '' : id}</TableCell>\n <TableCell align=\"right\">{new Date(this.state.astroEvents[id]).toLocaleTimeString()}</TableCell>\n <TableCell>{I18n.t(id)}</TableCell>\n </TableRow>)}\n </TableBody>\n </Table>\n </TableContainer>}\n </DialogContent>\n <DialogActions>\n <Button\n variant=\"contained\"\n onClick={() => this.setState({ showAstro: false })}\n color=\"primary\"\n startIcon={<IconClose />}\n >\n {I18n.t('Close')}\n </Button>\n </DialogActions>\n </Dialog>;\n } else {\n return null;\n }\n }\n\n getEditorDialog() {\n if (this.state.showScript) {\n return <DialogScriptEditor\n key=\"scriptEditorDialog\"\n adapterName={this.props.adapterName}\n source={this.scriptDialog.initValue}\n args={this.scriptDialog.args ? this.scriptDialog.args.join(', ') : ''}\n isReturn={this.scriptDialog.isReturn}\n socket={this.props.socket}\n runningInstances={this.state.runningInstances}\n themeType={this.state.themeType}\n onClose={result => {\n this.scriptDialog.initValue = null;\n if (this.scriptDialog.callback) {\n result !== false && this.scriptDialog.callback(result || '');\n this.scriptDialog.callback = null;\n }\n this.setState({ showScript: false });\n }}\n />;\n } else {\n return null;\n }\n }\n\n getToast() {\n return <Snackbar\n key=\"toast\"\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left',\n }}\n open={!!this.state.toast}\n autoHideDuration={6000}\n onClose={() => this.setState({ toast: '' })}\n ContentProps={{ 'aria-describedby': 'message-id' }}\n message={<span id=\"message-id\">{this.state.toast}</span>}\n action={[\n <IconButton\n key=\"close\"\n aria-label=\"close\"\n color=\"inherit\"\n className={this.props.classes.closeToast}\n onClick={() => this.setState({ toast: '' })}\n size=\"medium\"\n >\n <IconClose />\n </IconButton>,\n ]}\n />;\n }\n\n setTourStep = tourStep => this.setState({ tourStep });\n\n getTour() {\n if (this.state.instancesLoaded &&\n this.state.selected &&\n this.props.isAnyRulesExists === 1 &&\n this.props.objects[this.state.selected] &&\n this.state.rules &&\n this.state.visible) {\n return <Tour\n key=\"tour\"\n steps={steps}\n isOpen={this.state.isTourOpen}\n onRequestClose={() => {\n this.setState({ isTourOpen: false });\n window.localStorage.setItem('tour', 'true');\n this.props.socket.setState('javascript.0.variables.rulesTour', { val: true, ack: true });\n }}\n //getCurrentStep={tourStep => this.setTourStep(tourStep)}\n goToStep={this.state.tourStep}\n />;\n }\n }\n\n getDebug() {\n if (this.props.debugMode) {\n const isInstanceRunning = this.state.selected && this.scripts[this.state.selected] && this.scripts[this.state.selected].engine && this.state.runningInstances[this.scripts[this.state.selected].engine];\n if (isInstanceRunning) {\n return <Debugger\n key=\"debugger\"\n runningInstances={this.state.runningInstances}\n adapterName={this.props.adapterName}\n socket={this.props.socket}\n theme={this.props.theme}\n themeName={this.props.themeName}\n themeType={this.props.themeType}\n src={this.props.debugInstance ? this.props.debugInstance.adapter : this.state.selected}\n debugInstance={this.props.debugInstance}\n />;\n } else {\n setTimeout(() => this.props.onDebugModeChange(false));\n return null;\n }\n } else {\n return null;\n }\n }\n\n render() {\n if (this.state.selected && this.props.objects[this.state.selected] && this.state.blockly === null && this.state.rules === null) {\n this.scripts[this.state.selected] = this.scripts[this.state.selected] || JSON.parse(JSON.stringify(this.props.objects[this.state.selected].common));\n setTimeout(() => {\n const newState = {\n blockly: this.scripts[this.state.selected].engineType === 'Blockly',\n rules: this.scripts[this.state.selected].engineType === 'Rules',\n showCompiledCode: false,\n debugEnabled: this.scripts[this.state.selected].debug,\n verboseEnabled: this.scripts[this.state.selected].verbose,\n };\n\n // check if all opened files still exists\n this.removeNonExistingScripts(null, newState);\n this.setState(newState);\n }, 100);\n }\n\n return [\n this.getTabs(),\n this.getToolbar(),\n this.getScriptEditor(),\n this.getAskAboutDebug(),\n this.getBlocklyEditor(),\n this.getRulesEditor(),\n this.getDebug(),\n this.getConfirmDialog(),\n this.getSelectIdDialog(),\n this.getCronDialog(),\n this.getEditorDialog(),\n this.getAstroDialog(),\n this.getDebugMenu(),\n this.getToast(),\n this.getTour(),\n ];\n }\n}\n\nEditor.propTypes = {\n objects: PropTypes.object.isRequired,\n instances: PropTypes.array.isRequired,\n adapterName: PropTypes.string.isRequired,\n selected: PropTypes.string.isRequired,\n onSelectedChange: PropTypes.func.isRequired,\n onRestart: PropTypes.func,\n onChange: PropTypes.func.isRequired,\n visible: PropTypes.bool,\n menuOpened: PropTypes.bool,\n onLocate: PropTypes.func,\n runningInstances: PropTypes.object,\n socket: PropTypes.object,\n searchText: PropTypes.string,\n themeName: PropTypes.string,\n themeType: PropTypes.string,\n onDebugModeChange: PropTypes.func,\n debugMode: PropTypes.bool,\n debugInstance: PropTypes.object,\n expertMode: PropTypes.bool,\n};\n\nexport default withStyles(styles)(Editor);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport withStyles from '@mui/styles/withStyles';\nimport Button from '@mui/material/Button';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogActions from '@mui/material/DialogActions';\nimport Dialog from '@mui/material/Dialog';\nimport Dropzone from 'react-dropzone';\nimport DialogError from './Error';\nimport {MdFileUpload as IconUpload} from 'react-icons/md';\nimport {MdCancel as IconNo} from 'react-icons/md';\nimport {MdPlusOne as IconPlus} from 'react-icons/md';\n\nimport IconCancel from '@mui/icons-material/Cancel';\n\nimport { I18n } from '@iobroker/adapter-react-v5';\n\nconst styles = theme => ({\n dialog: {\n height: '95%'\n },\n fullHeight: {\n height: '100%',\n overflow: 'hidden'\n },\n dropzone: {\n marginTop: 20,\n width: '100%',\n borderWidth: 5,\n borderStyle: 'dashed',\n borderColor: '#d0cccc',\n textAlign: 'center',\n boxSizing: 'border-box',\n paddingTop: 45,\n borderRadius: 10,\n height: 'calc(100% - 10px)'\n },\n dropzoneDiv: {\n width: '100%',\n height: '100%'\n },\n dropzoneRejected: {\n borderColor: '#970000',\n },\n dropzoneAccepted: {\n borderColor: '#17cd02',\n },\n icon: {\n height: '30%',\n width: '30%',\n color: '#eeeeee',\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%,-50%)',\n zIndex: 0,\n },\n iconError: {\n color: '#ffc3c6',\n },\n iconOk: {\n color: '#aaeebc',\n },\n text: {\n top: '50%',\n left: '50%',\n transform: 'translate(-50%,-50%)',\n color: '#868686',\n position: 'absolute',\n zIndex: 1,\n }\n});\n\nclass DialogImportFile extends React.Component {\n\n constructor(props) {\n super(props);\n this.state = {\n error: '',\n imageStatus: ''\n };\n }\n\n componentDidMount() {\n setTimeout(() => {\n try {\n window.document.getElementById('import-text-area').focus();\n } catch (e) {\n\n }\n }, 100);\n }\n\n handleCancel () {\n this.props.onClose();\n }\n\n onChange(e) {\n this.setState({text: e.target.value});\n }\n\n static readFileDataUrl(file, cb) {\n const reader = new FileReader();\n reader.onload = () => {\n cb(null, {data: reader.result, name: file.name});\n };\n reader.onabort = () => {\n console.error('file reading was aborted');\n cb(I18n.t('file reading was aborted'));\n };\n reader.onerror = (e) => {\n console.error('file reading has failed');\n cb(I18n.t('file reading has failed: %s', e));\n };\n\n reader.readAsDataURL(file)\n }\n\n handleDropFile(files) {\n if (files && files.hasOwnProperty('target')) {\n files = files.target.files;\n }\n\n if (!files && !files.length) {\n return;\n }\n\n const file = files[files.length - 1];\n\n if (!file) {\n return;\n }\n DialogImportFile.readFileDataUrl(file, (err, result) => {\n if (err) {\n this.setState({error: err})\n } else {\n this.props.onClose(result && result.data);\n }\n });\n }\n\n render() {\n const classes = this.props.classes;\n const className = classes.dropzone + ' ' + (this.state.imageStatus === 'accepted' ? classes.dropzoneAccepted : (this.state.imageStatus === 'rejected' ? classes.dropzoneRejected : ''));\n\n return <Dialog\n onClose={(event, reason) => false}\n maxWidth=\"lg\"\n classes={{paper: classes.dialog}}\n fullWidth\n open={!0}\n aria-labelledby=\"import-dialog-title\"\n >\n <DialogTitle id=\"import-dialog-title\">{I18n.t('Import scripts')}</DialogTitle>\n <DialogContent className={classes.fullHeight}>\n <Dropzone key='image-drop'\n\n maxSize={50000000}\n acceptClassName={classes.dropzoneAccepted}\n rejectClassName={classes.dropzoneRejected}\n onDrop={files => this.handleDropFile(files)}\n multiple={false}\n accept='application/zip,application/x-zip-compressed'\n className={className}>\n {\n ({ getRootProps, getInputProps, isDragActive, isDragReject}) => {\n if (isDragReject) {\n if (this.state.imageStatus !== 'rejected') {\n this.setState({imageStatus: 'rejected'});\n }\n return (\n <div className={this.props.classes.dropzoneDiv} {...getRootProps()}>\n <input {...getInputProps()} />\n <span key=\"text\" className={this.props.classes.text}>{I18n.t('Some files will be rejected')}</span>\n <IconNo key=\"icon\" className={this.props.classes.icon + ' ' + this.props.classes.iconError}/>\n </div>);\n } else if (isDragActive) {\n if (this.state.imageStatus !== 'accepted') {\n this.setState({imageStatus: 'accepted'});\n }\n\n return (\n <div className={this.props.classes.dropzoneDiv} {...getRootProps()}>\n <input {...getInputProps()} />\n <span key=\"text\" className={this.props.classes.text}>{I18n.t('All files will be accepted')}</span>\n <IconPlus key=\"icon\" className={this.props.classes.icon + ' ' + this.props.classes.iconOk}/>\n </div>);\n } else {\n if (this.state.imageStatus !== 'wait') {\n this.setState({imageStatus: 'wait'});\n }\n return (\n <div className={this.props.classes.dropzoneDiv} {...getRootProps()}>\n <input {...getInputProps()} />\n <span key=\"text\" className={this.props.classes.text}>{I18n.t('Drop some files here or click...')}</span>\n <IconUpload key=\"icon\" className={this.props.classes.icon}/>\n </div>);\n }\n }\n }\n </Dropzone>\n {this.state.error ? (<DialogError text={this.state.error} onClose={() => this.setState({error: ''})}/>) : null}\n </DialogContent>\n <DialogActions>\n <Button color=\"grey\" variant=\"contained\" onClick={() => this.handleCancel()} startIcon={<IconCancel/>}>{I18n.t('Close')}</Button>\n </DialogActions>\n </Dialog>;\n }\n}\n\nDialogImportFile.propTypes = {\n classes: PropTypes.object.isRequired,\n onClose: PropTypes.func,\n};\n\nexport default withStyles(styles)(DialogImportFile);\n","import React from 'react';\n// import ReactDOM from 'react-dom';\nimport withStyles from '@mui/styles/withStyles';\nimport SplitterLayout from 'react-splitter-layout';\n\nimport 'react-splitter-layout/lib/index.css';\n\nimport GenericApp from '@iobroker/adapter-react-v5/GenericApp';\nimport DialogMessage from '@iobroker/adapter-react-v5/Dialogs/Message';\nimport DialogConfirm from '@iobroker/adapter-react-v5/Dialogs/Confirm';\nimport { I18n, Utils, AdminConnection, Loader } from '@iobroker/adapter-react-v5';\n\nimport { MdMenu as IconMenuClosed } from 'react-icons/md';\nimport { MdArrowBack as IconMenuOpened } from 'react-icons/md';\nimport { MdVisibility as IconShowLog } from 'react-icons/md';\n\nimport SideMenu from './SideMenu';\nimport Log from './Log';\nimport Editor from './Editor';\nimport DialogError from './Dialogs/Error';\nimport DialogImportFile from './Dialogs/ImportFile';\nimport BlocklyEditor from './Components/BlocklyEditor';\nimport { ContextWrapper } from './Components/RulesEditor/components/ContextWrapper';\n\nconst styles = theme => ({\n root: {\n flexGrow: 1,\n display: 'flex',\n width: '100%',\n height: '100%',\n },\n menuDiv: {\n overflow: 'hidden',\n },\n splitterDivs: {\n '&>div': {\n overflow: 'hidden',\n width: '100%',\n height: '100%',\n },\n '& .layout-splitter': {\n background: theme.palette.mode === 'dark' ? '#595858' : '#ccc;',\n },\n },\n mainDiv: {\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n },\n /*\n appBarWithMenu: {\n width: `calc(100% - ${Theme.menu.width}px)`,\n marginLeft: Theme.menu.width,\n },\n appBarWithoutMenu: {\n width: `100%`,\n marginLeft: 0,\n },\n */\n content: {\n width: '100%',\n height: '100%',\n backgroundColor: theme.palette.background && theme.palette.background.default,\n position: 'relative',\n },\n splitterDivWithMenu: {\n width: `calc(100% - 300px)`,\n height: '100%',\n },\n menuDivWithoutMenu: {\n '&>div:first-child': {\n display: 'none',\n },\n '&>.layout-splitter': {\n display: 'none',\n },\n },\n progress: {\n margin: 100,\n },\n menuOpenCloseButton: {\n position: 'absolute',\n left: 0,\n borderRadius: '0 5px 5px 0',\n top: 6,\n paddingTop: 8,\n cursor: 'pointer',\n zIndex: 1,\n height: 25,\n width: 20,\n background: theme.palette.secondary.main,\n color: theme.palette.primary.main,\n paddingLeft: 3,\n '&:hover': {\n color: 'white',\n },\n },\n showLogButton: {\n position: 'absolute',\n right: 3,\n borderRadius: '5px 5px 0 0',\n bottom: 0,\n paddingTop: 3,\n cursor: 'pointer',\n zIndex: 10,\n height: 20,\n width: 25,\n background: theme.palette.secondary.main,\n color: theme.palette.primary.main,\n paddingLeft: 8,\n '&:hover': {\n color: 'white',\n },\n },\n});\n\nclass App extends GenericApp {\n constructor(props) {\n super(props, {\n Connection: AdminConnection,\n translations: {\n en: require('./i18n/en'),\n de: require('./i18n/de'),\n es: require('./i18n/es'),\n fr: require('./i18n/fr'),\n it: require('./i18n/it'),\n nl: require('./i18n/nl'),\n pl: require('./i18n/pl'),\n pt: require('./i18n/pt'),\n ru: require('./i18n/ru'),\n uk: require('./i18n/uk'),\n 'zh-cn': require('./i18n/zh-cn'),\n },\n bottomButtons: false,\n socket: {\n autoSubscribeLog: true,\n },\n sentryDSN: window.sentryDSN,\n });\n\n // this.logIndex = 0;\n this.logSize = window.localStorage ? parseFloat(window.localStorage.getItem('App.logSize')) || 150 : 150;\n this.menuSize = window.localStorage ? parseFloat(window.localStorage.getItem('App.menuSize')) || 500 : 500;\n this.hosts = [];\n this.importFile = null;\n this.scripts = {};\n\n window.alert = message => {\n console.error(message);\n this.showError(message.toString());\n };\n }\n\n onScriptsChanged = (id, obj) => {\n if (!id) {\n return;\n }\n let changed = false;\n const newState = {};\n if (id.startsWith('script.js.')) {\n if (obj) {\n if (JSON.stringify(this.scripts[id]) !== JSON.stringify(obj)) {\n this.scripts[id] = obj;\n changed = true;\n newState.scriptsHash = this.state.scriptsHash + 1;\n }\n } else if (this.scripts[id]) {\n delete this.scripts[id];\n changed = true;\n newState.scriptsHash = this.state.scriptsHash + 1;\n }\n }\n\n changed && this.setState(newState);\n };\n\n onInstanceChanged = (id, obj) => {\n if (!id) {\n return;\n }\n let changed = false;\n const newState = {};\n\n if (id.match(/^system\\.adapter\\.[-_\\w\\d]+\\$/)) {\n // update instances\n if (id.startsWith(`system.adapter.${this.adapterName}.`)) {\n if (obj && obj.type === 'instance') {\n if (!this.state.instances.includes(id)) {\n newState.instances = [...this.state.instances];\n newState.instances.push(id);\n newState.instances.sort();\n changed = true;\n // request alive\n this.socket.subscribeState(`${obj._id}.alive`, this.onInstanceAliveChange);\n }\n } else if (!obj && this.state.instances.includes(id)) {\n this.socket.unsubscribeState(`${id}.alive`, this.onInstanceAliveChange);\n newState.instances = [...this.state.instances];\n const pos = newState.instances.indexOf(id);\n newState.instances.splice(pos, 1);\n changed = true;\n }\n }\n\n if (obj && obj[id].common && obj[id].common.blockly) {\n this.confirmCallback = result => result && window.location.reload();\n newState.confirm = I18n.t('Some blocks were updated. Reload admin?');\n changed = true;\n }\n }\n\n changed && this.setState(newState);\n };\n\n onHostChanged = (id, obj) => {\n if (!id) {\n return;\n }\n let changed = false;\n const newState = {};\n\n if (id.startsWith('system.host.')) {\n if (obj && obj.type === 'host') {\n if (!this.hosts.includes(id)) {\n this.hosts.push(id);\n this.hosts.sort();\n }\n } else if (!obj && this.hosts.includes(id)) {\n const pos = this.hosts.indexOf(id);\n this.hosts.splice(pos, 1);\n }\n }\n\n changed && this.setState(newState);\n };\n\n onConnectionReady() {\n window.systemLang = this.socket.systemLang;\n this.setState({\n ready: false,\n updateScripts: 0,\n scriptsHash: 0,\n instances: [],\n updating: false,\n resizing: false,\n selected: null,\n logMessage: {},\n editing: [],\n menuOpened: window.localStorage.getItem('App.menuOpened') !== 'false',\n menuSelectId: '',\n expertMode: window.localStorage.getItem('App.expertMode') === 'true',\n logHorzLayout: window.localStorage.getItem('App.logHorzLayout') === 'true',\n runningInstances: {},\n confirm: '',\n importFile: false,\n message: '',\n searchText: '',\n hideLog: window.localStorage.getItem('App.hideLog') === 'true',\n debugMode: false,\n debugInstance: null,\n });\n\n const newState = {};\n\n // load instances & scripts\n // Read all instances\n this.subscribeOnInstances()\n .then(result => {\n newState.instances = result.instances;\n newState.runningInstances = result.runningInstances;\n\n return this.readAdaptersWithBlockly();\n })\n .then(() => this.socket.getHosts())\n .then(hosts => {\n this.hosts = hosts.map(obj => obj._id);\n // load all scripts\n return this.readAllScripts();\n })\n .then(scripts => {\n if (window.localStorage && window.localStorage.getItem('App.expertMode') !== 'true' && window.localStorage.getItem('App.expertMode') !== 'false') {\n // detect if some global scripts exists\n if (Object.keys(scripts).find(id => id.startsWith('script.js.global.') && scripts.type === 'script')) {\n newState.expertMode = true;\n }\n }\n this.scripts = scripts;\n\n let scriptsHash = this.state.scriptsHash;\n if (this.compareScripts(scripts)) {\n scriptsHash++;\n }\n newState.scriptsHash = scriptsHash;\n newState.ready = true;\n this.socket.subscribeObject('script.*', this.onScriptsChanged);\n this.socket.subscribeObject('system.adapter.*', this.onInstanceChanged);\n this.socket.subscribeObject('system.host.*', this.onHostChanged);\n\n this.setState(newState);\n });\n }\n\n subscribeOnInstances() {\n return this.socket.getAdapterInstances(this.adapterName)\n .then(instancesArray => {\n const instances = instancesArray.map(obj => parseInt(obj._id.split('.').pop())).sort();\n const runningInstances = {};\n instances.forEach(id => runningInstances[`system.adapter.${this.adapterName}.${id}`] = false);\n\n const promises = [];\n\n // subscribe on instances\n instances.forEach(instance => {\n const instanceId = `system.adapter.${this.adapterName}.${instance}`;\n const id = `${instanceId}.alive`;\n promises.push(this.socket.getState(id)\n .then(state => {\n runningInstances[instanceId] = state ? state.val : false;\n this.socket.subscribeState(id, this.onInstanceAliveChange);\n }));\n });\n\n return Promise.all(promises)\n .then(() => ({ instances, runningInstances }));\n })\n }\n\n readAllScripts() {\n return this.socket.getObjectView('script.js.', 'script.js.\\u9999', 'channel')\n .then(folders =>\n this.socket.getObjectView('script.js.', 'script.js.\\u9999', 'script')\n .then(scripts => {\n Object.keys(scripts).forEach(id => folders[id] = scripts[id]);\n return folders;\n }));\n }\n\n readAdaptersWithBlockly() {\n return this.socket.getObjectView('system.adapter.', 'system.adapter.\\u9999', 'adapter')\n .then(adapters =>\n new Promise(resolve =>\n BlocklyEditor.loadCustomBlockly(adapters, () => resolve())));\n }\n\n onInstanceAliveChange = (id, state) => {\n if (id) {\n id = id && id.substring(0, id.length - 6); // - .alive\n\n if (this.state.runningInstances[id] !== (state ? state.val : false)) {\n const runningInstances = JSON.parse(JSON.stringify(this.state.runningInstances));\n runningInstances[id] = state ? state.val : false;\n this.setState({ runningInstances });\n }\n }\n };\n\n onToggleExpertMode(expertMode) {\n this.onExpertModeChange(expertMode);\n }\n\n compareScripts(newScripts) {\n const oldIds = Object.keys(this.scripts);\n const newIds = Object.keys(newScripts);\n if (oldIds.length !== newIds.length) {\n this.scripts = this.newScripts;\n return true;\n }\n if (JSON.stringify(oldIds) !== JSON.stringify(newIds)) {\n this.scripts = this.newScripts;\n return true;\n }\n for (let i = 0; i < oldIds.length; i++) {\n let oldScript = this.scripts[oldIds[i]].common;\n let newScript = newScripts[oldIds[i]].common;\n if (oldScript.name !== newScript.name) {\n this.scripts = this.newScripts;\n return true;\n }\n if (oldScript.engine !== newScript.engine) {\n this.scripts = this.newScripts;\n return true;\n }\n if (oldScript.engineType !== newScript.engineType) {\n this.scripts = this.newScripts;\n return true;\n }\n if (oldScript.enabled !== newScript.enabled) {\n this.scripts = this.newScripts;\n return true;\n }\n }\n }\n\n onRename(oldId, newId, newName, newInstance) {\n if (newId.trim().endsWith('.')) {\n newId = newId.replace(/\\.\\s*$/, '_');\n }\n console.log(`Rename ${oldId} => ${newId}`);\n let promise;\n this.setState({ updating: true });\n\n // Rename script.js.common.Skript_1 => script.js.common.New folder.Skript_1\n\n if (this.scripts[oldId] && this.scripts[oldId].type === 'script') {\n const common = JSON.parse(JSON.stringify(this.scripts[oldId].common));\n common.name = newName || common.name;\n if (newInstance !== undefined) {\n common.engine = `system.adapter.javascript.${newInstance}`;\n }\n // Check if the script is not a children of other script\n const parts = newId.split('.');\n parts.pop();\n const parentID = parts.join('.');\n\n if (this.scripts[parentID] && this.scripts[parentID].type === 'script') {\n parts.pop();\n newId = `${parts.join('.')}.${newId.split('.').pop()}`;\n }\n\n promise = this.updateScript(oldId, newId, common);\n } else {\n promise = this.renameGroup(oldId, newId, newName);\n }\n\n promise\n .then(() => this.setState({ updating: false }))\n .catch(err => err !== 'canceled' && this.showError(err));\n }\n\n renameGroup(id, newId, newName, _list) {\n if (!_list) {\n _list = [];\n\n // collect all elements to rename\n // find all elements\n _list = Object.keys(this.scripts).filter(_id => _id.startsWith(`${id}.`));\n\n return this.socket.getObject(id)\n .then(obj => {\n obj = obj || { common: {} };\n obj.common.name = newName || obj.common.name || id.split('.').pop();\n obj._id = newId;\n\n this.socket.delObject(id)\n .catch(() => { })\n .then(() => this.socket.setObject(newId, obj))\n .then(() => this.renameGroup(id, newId, newName, _list))\n .catch(e => console.log(e));\n })\n .catch(e => {\n console.log(e);\n const obj = {\n _id: newId,\n type: 'channel',\n common: {\n name: newName || id.split('.').pop(),\n expert: true,\n },\n native: {},\n };\n // may be it is virtual folder\n return this.socket.setObject(newId, obj)\n .then(() => this.renameGroup(id, newId, newName, _list));\n });\n } else if (_list.length) {\n let nId = _list.pop();\n\n return this.socket.getObject(nId)\n .then(obj =>\n this.socket.delObject(nId)\n .catch(() => { })\n .then(() => {\n nId = newId + nId.substring(id.length);\n obj._id = nId;\n obj.common = obj.common || {};\n obj.common.expert = true;\n return this.socket.setObject(nId, obj);\n })\n .then(() => this.renameGroup(id, newId, newName, _list))\n );\n } else {\n return Promise.resolve();\n }\n }\n\n onUpdateScript(id, common) {\n if (this.scripts[id] && this.scripts[id].type === 'script') {\n this.updateScript(id, id, common)\n .then(() => { })\n .catch(err => err !== 'canceled' && this.showError(err));\n }\n }\n\n onSelect(selected) {\n if (this.scripts[selected] && this.scripts[selected].common && this.scripts[selected].type === 'script') {\n this.setState({ selected, menuSelectId: selected }, () =>\n setTimeout(() => this.setState({ menuSelectId: '' })), 300);\n }\n }\n\n onExpertModeChange(expertMode) {\n if (this.state.expertMode !== expertMode) {\n window.localStorage && window.localStorage.setItem('App.expertMode', expertMode ? 'true' : 'false');\n this.setState({ expertMode });\n }\n }\n\n showError(err) {\n this.setState({ errorText: err ? err.toString() : '' });\n }\n\n showMessage(message) {\n this.setState({ message: message ? message.toString() : '' });\n }\n\n onDelete(id) {\n this.socket.delObject(id)\n .then(() => { })\n .catch(err =>\n this.showError(err));\n }\n\n onEdit(id) {\n if (this.state.selected !== id) {\n this.setState({ selected: id });\n }\n }\n\n onAddNew(id, name, isFolder, instance, type, source) {\n const reg = new RegExp(`^${id}\\\\.`);\n\n if (Object.keys(this.scripts).find(_id => id === _id || reg.test(id))) {\n return this.showError(I18n.t('Yet exists!'));\n }\n\n if (isFolder) {\n this.socket.setObject(id, {\n common: {\n name,\n expert: true,\n },\n type: 'channel',\n })\n .then(() =>\n setTimeout(() => this.setState({ menuSelectId: id }, () =>\n setTimeout(() => this.setState({ menuSelectId: '' })), 300), 1000))\n .catch(err => this.showError(err));\n } else {\n this.socket.setObject(id, {\n common: {\n name,\n expert: true,\n engineType: type,\n engine: `system.adapter.javascript.${instance || 0}`,\n source: source || '',\n debug: false,\n verbose: false,\n },\n type: 'script',\n })\n .then(() => setTimeout(() => this.onSelect(id), 1000))\n .catch(err => this.showError(err));\n }\n }\n\n updateScript(oldId, newId, newCommon) {\n return this.socket.getObject(oldId)\n .then(_obj => {\n const obj = { common: {} };\n\n if (newCommon.engine !== undefined) obj.common.engine = newCommon.engine;\n if (newCommon.enabled !== undefined) obj.common.enabled = newCommon.enabled;\n if (newCommon.source !== undefined) obj.common.source = newCommon.source;\n if (newCommon.debug !== undefined) obj.common.debug = newCommon.debug;\n if (newCommon.verbose !== undefined) obj.common.verbose = newCommon.verbose;\n\n obj.from = 'system.adapter.admin.0'; // we must distinguish between GUI(admin.0) and disk(javascript.0)\n\n if (oldId === newId && _obj && _obj.common && newCommon.name === _obj.common.name) {\n if (!newCommon.engineType || newCommon.engineType !== _obj.common.engineType) {\n if (newCommon.engineType !== undefined) {\n obj.common.engineType = newCommon.engineType || 'Javascript/js';\n }\n }\n obj.type = 'script';\n return this.socket.extendObject(oldId, obj);\n } else {\n // let prefix;\n\n // let parts = _obj.common.engineType.split('/');\n\n // prefix = 'script.' + (parts[1] || parts[0]) + '.';\n\n if (_obj && _obj.common) {\n _obj.common.engineType = newCommon.engineType || _obj.common.engineType || 'Javascript/js';\n return this.socket.delObject(oldId)\n .then(() => {\n if (obj.common.engine !== undefined) _obj.common.engine = obj.common.engine;\n if (obj.common.enabled !== undefined) _obj.common.enabled = obj.common.enabled;\n if (obj.common.source !== undefined) _obj.common.source = obj.common.source;\n if (obj.common.name !== undefined) _obj.common.name = obj.common.name;\n if (obj.common.debug !== undefined) _obj.common.debug = obj.common.debug;\n if (obj.common.verbose !== undefined) _obj.common.verbose = obj.common.verbose;\n\n delete _obj._rev;\n\n // Name must always exist\n _obj.common.name = newCommon.name;\n _obj.common.expert = true;\n _obj.type = 'script';\n\n _obj._id = newId; // prefix + newCommon.name.replace(/[\\s\"']/g, '_');\n\n this.socket.setObject(newId, _obj);\n });\n } else {\n _obj = obj;\n }\n\n // Name must always exist\n _obj.common.name = newCommon.name;\n _obj.common.expert = true;\n _obj.type = 'script';\n _obj._id = newId; // prefix + newCommon.name.replace(/[\\s\"']/g, '_');\n\n return this.socket.setObject(newId, _obj);\n }\n });\n }\n\n onEnableDisable(id, enabled) {\n if (this.scripts[id] && this.scripts[id].type === 'script') {\n const common = this.scripts[id].common;\n common.enabled = enabled;\n common.expert = true;\n this.updateScript(id, id, common)\n .catch(err => err !== 'canceled' && this.showError(err));\n }\n }\n\n getLiveHost(cb, _list) {\n if (!_list) {\n _list = this.hosts ? [...this.hosts] : [];\n }\n\n if (_list.length) {\n const id = _list.shift();\n this.socket.getState(`${id}.alive`)\n .then(state => {\n if (state && state.val) {\n cb(id);\n } else {\n setTimeout(() => this.getLiveHost(cb, _list));\n }\n });\n } else {\n cb();\n }\n }\n\n onExport() {\n this.getLiveHost(host => {\n if (!host) {\n return this.showError(I18n.t('No active host found'));\n }\n\n const d = new Date();\n let date = d.getFullYear();\n let m = d.getMonth() + 1;\n if (m < 10) {\n m = `0${m}`;\n }\n date += `-${m}`;\n m = d.getDate();\n if (m < 10) {\n m = `0${m}`;\n }\n date += `-${m}-`;\n\n this.socket.getRawSocket().emit('sendToHost', host, 'readObjectsAsZip', {\n adapter: 'javascript',\n id: 'script.js',\n link: `${date}scripts.zip`, // request link to file and not the data itself\n fileStorageNamespace: `admin.${this.instance}`, // new controller 5.x understands this and saves ZIP in the file store\n }, data => {\n if (typeof data === 'string') {\n // it is a link to the created file\n const a = document.createElement('a');\n if (data.startsWith('admin.')) {\n // new controller\n // actual position is http://IP:8081/adapter/javascript/index.html\n // we need http://IP:8081/files/admin.0/zip/2023-06-20-scripts.zip\n a.href = `../../files/${data}`;\n } else {\n // the data is \"system.host.HOST.zip.2020-01-26-scripts.zip\"\n const parts = data.split('.zip.');\n a.href = `./zip/${parts[0]}/${parts[1]}`;\n }\n document.body.appendChild(a);\n a.click();\n a.remove();\n } else {\n data.error && this.showError(data.error);\n if (data.data) {\n const a = document.createElement('a');\n a.href = `data: application/zip;base64,${data.data}`;\n a.download = `${date}scripts.zip`;\n document.body.appendChild(a);\n a.click();\n a.remove();\n }\n }\n });\n });\n }\n\n onImport(data) {\n this.importFile = data;\n if (data) {\n this.confirmCallback = this.onImportConfirmed.bind(this);\n this.setState({ importFile: false, confirm: I18n.t('Existing scripts will be overwritten.') });\n } else {\n this.setState({ importFile: false });\n }\n }\n\n onImportConfirmed(ok) {\n let data = this.importFile;\n this.importFile = null;\n if (ok && data) {\n data = data.split(',')[1];\n this.getLiveHost(host => {\n if (!host) {\n this.showError(I18n.t('No active host found'));\n return;\n }\n this.socket.getRawSocket().emit('sendToHost', host, 'writeObjectsAsZip', {\n data: data,\n adapter: 'javascript',\n id: 'script.js'\n }, data => {\n if (data === 'permissionError') {\n this.showError(I18n.t(data));\n } else if (!data || data.error) {\n this.showError(data ? I18n.t(data.error) : I18n.t('Unknown error'));\n } else {\n this.showMessage(I18n.t('Done'));\n }\n });\n });\n }\n }\n\n toggleLogLayout() {\n window.localStorage && window.localStorage.setItem('App.logHorzLayout', this.state.logHorzLayout ? 'false' : 'true');\n this.setState({ logHorzLayout: !this.state.logHorzLayout });\n }\n\n renderEditor() {\n const isAnyRulesExists = Object.keys(this.scripts).reduce((sum, id) =>\n sum + (this.scripts[id].common.engineType === 'Rules' ? 1 : 0), 0);\n\n return <Editor\n key=\"editor\"\n debugMode={this.state.debugMode}\n onDebugModeChange={value => {\n if (!value) {\n this.setState({debugMode: false, debugInstance: null});\n } else {\n this.setState({debugMode: true});\n }\n }}\n visible={!this.state.resizing}\n socket={this.socket}\n adapterName={this.adapterName}\n onLocate={menuSelectId => this.setState({ menuSelectId })}\n runningInstances={this.state.runningInstances}\n menuOpened={this.state.menuOpened}\n searchText={this.state.searchText}\n themeType={this.state.themeType}\n themeName={this.state.themeName}\n theme={this.state.theme}\n expertMode={this.state.expertMode}\n onChange={(id, common) => this.onUpdateScript(id, common)}\n isAnyRulesExists={isAnyRulesExists}\n debugInstance={this.state.debugInstance}\n onSelectedChange={(id, editing) => {\n const newState = {};\n let changed = false;\n if (id !== this.state.selected) {\n changed = true;\n newState.selected = id;\n }\n if (JSON.stringify(editing) !== JSON.stringify(this.state.editing)) {\n changed = true;\n newState.editing = JSON.parse(JSON.stringify(editing));\n }\n changed && this.setState(newState);\n }}\n onRestart={id => this.socket.extendObject(id, { common: { enabled: true } })}\n selected={this.state.selected && this.scripts[this.state.selected] && this.scripts[this.state.selected].type === 'script' ? this.state.selected : ''}\n objects={this.scripts}\n instances={this.state.instances}\n />;\n }\n\n showLogButton() {\n return <div\n key=\"showLog\"\n title={I18n.t('Show logs')}\n className={this.props.classes.showLogButton}\n onClick={() => {\n window.localStorage.setItem('App.hideLog', 'false');\n this.setState({ hideLog: false, resizing: true });\n setTimeout(() => this.setState({ resizing: false }), 300);\n }}\n >\n <IconShowLog />\n </div>;\n }\n\n renderErrorDialog() {\n return this.state.errorText ?\n <DialogError\n key=\"dialogError\"\n onClose={() => this.setState({ errorText: '' })}\n text={this.state.errorText}\n /> :\n null;\n }\n\n renderMain() {\n const { classes } = this.props;\n return [\n this.state.message ? <DialogMessage key=\"dialogMessage\" onClose={() => this.setState({ message: '' })} text={this.state.message} /> : null,\n this.renderErrorDialog(),\n this.state.importFile ? <DialogImportFile key=\"dialogImportFile\" onClose={data => this.onImport(data)} /> : null,\n this.state.confirm ? <DialogConfirm\n key=\"dialogConfirm\"\n onClose={result => {\n this.state.confirm && this.setState({ confirm: '' });\n this.confirmCallback && this.confirmCallback(result);\n this.confirmCallback = null;\n }}\n text={this.state.confirm} /> : null,\n <div className={classes.content + ' iobVerticalSplitter'} key=\"main\">\n <div key=\"closeMenu\" className={classes.menuOpenCloseButton} onClick={() => {\n window.localStorage.setItem('App.menuOpened', this.state.menuOpened ? 'false' : 'true');\n this.setState({ menuOpened: !this.state.menuOpened, resizing: true });\n setTimeout(() => this.setState({ resizing: false }), 300);\n }}>\n {this.state.menuOpened ? <IconMenuOpened /> : <IconMenuClosed />}\n </div>\n <SplitterLayout\n key=\"splitterLayout\"\n vertical={!this.state.logHorzLayout}\n primaryMinSize={100}\n secondaryInitialSize={this.state.hideLog ? 0 : this.logSize}\n // customClassName={classes.menuDiv + ' ' + classes.splitterDivWithoutMenu}\n onDragStart={() => this.setState({ resizing: true })}\n onSecondaryPaneSizeChange={size => this.state.hideLog ? 0 : this.logSize = parseFloat(size)}\n onDragEnd={() => {\n this.setState({ resizing: false });\n window.localStorage.setItem('App.logSize', this.logSize.toString());\n }}\n >\n <>\n {this.renderEditor()}\n {!this.state.debugMode && this.state.hideLog && this.showLogButton()}\n </>\n {!this.state.debugMode && !this.state.hideLog && <Log\n key=\"log\"\n verticalLayout={!this.state.logHorzLayout}\n onLayoutChange={() => this.toggleLogLayout()}\n editing={this.state.editing}\n socket={this.socket}\n selected={this.state.selected}\n onHideLog={() => {\n window.localStorage.setItem('App.hideLog', 'true');\n this.setState({ hideLog: true, resizing: true });\n setTimeout(() => this.setState({ resizing: false }), 300);\n }}\n />}\n </SplitterLayout>\n </div>,\n ];\n }\n\n render() {\n const { classes } = this.props;\n\n if (!this.state.ready) {\n // return (<CircularProgress className={classes.progress} size={50} />);\n return <Loader theme={this.state.themeType} />;\n }\n\n return <div className={classes.root}>\n <ContextWrapper socket={this.socket}>\n <SplitterLayout\n key=\"menuSplitter\"\n vertical={false}\n primaryMinSize={300}\n primaryIndex={1}\n secondaryMinSize={300}\n secondaryInitialSize={this.menuSize}\n customClassName={`${classes.splitterDivs} ${!this.state.menuOpened ? classes.menuDivWithoutMenu : ''}`}\n onDragStart={() => this.setState({ resizing: true })}\n onSecondaryPaneSizeChange={size => this.menuSize = parseFloat(size)}\n onDragEnd={() => {\n this.setState({ resizing: false });\n window.localStorage.setItem('App.menuSize', this.menuSize.toString());\n }}\n >\n <div className={classes.mainDiv} key=\"menu\">\n <SideMenu\n debugMode={this.state.debugMode}\n onDebugInstance={data => {\n this.setState({ debugInstance: data, debugMode: !!data });\n }}\n key=\"sidemenu\"\n scripts={this.scripts}\n scriptsHash={this.state.scriptsHash}\n instances={this.state.instances}\n update={this.state.updateScripts}\n onRename={this.onRename.bind(this)}\n onSelect={this.onSelect.bind(this)}\n socket={this.socket}\n selectId={this.state.menuSelectId}\n onEdit={this.onEdit.bind(this)}\n expertMode={this.state.expertMode}\n themeType={this.state.themeType}\n themeName={this.state.themeName}\n onThemeChange={themeName => {\n Utils.setThemeName(themeName);\n const themeType = Utils.getThemeType(themeName);\n this.setState({ themeName, themeType }, () => this.props.onThemeChange(themeName));\n }}\n runningInstances={this.state.runningInstances}\n onExpertModeChange={this.onExpertModeChange.bind(this)}\n onDelete={this.onDelete.bind(this)}\n onAddNew={this.onAddNew.bind(this)}\n onEnableDisable={this.onEnableDisable.bind(this)}\n onExport={this.onExport.bind(this)}\n width={this.menuSize}\n onImport={() => this.setState({ importFile: true })}\n onSearch={searchText => this.setState({ searchText })}\n />\n </div>\n {this.renderMain()}\n </SplitterLayout>\n </ContextWrapper>\n </div>;\n }\n}\n\nexport default withStyles(styles)(App);\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read http://bit.ly/CRA-PWA.\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit http://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See http://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n if (\n response.status === 404 ||\n response.headers.get('content-type').indexOf('javascript') === -1\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { ThemeProvider, StyledEngineProvider } from '@mui/material/styles';\nimport { StylesProvider, createGenerateClassName } from '@mui/styles';\n\nimport './index.css';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\nimport pgk from '../package.json';\nimport theme from '@iobroker/adapter-react-v5/Theme';\n// import Utils from '@iobroker/adapter-react-v5/Components/Utils';\nimport { Utils } from '@iobroker/adapter-react-v5';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { TouchBackend } from 'react-dnd-touch-backend';\n\nimport GenericBlock from './Components/RulesEditor/components/GenericBlock/index.jsx'\n\nwindow.GenericBlock = GenericBlock;\n\nwindow.adapterName = 'javascript';\nwindow.sentryDSN = 'https://504499a725eb4898930d3b9e9da95740@sentry.iobroker.net/56';\n\nlet themeName = Utils.getThemeName();\n\nconsole.log(`iobroker.${window.adapterName}@${pgk.version} using theme \"${themeName}\"`);\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'iob',\n});\n\nfunction build() {\n const isMobile = window.innerWidth < 600;\n const container = document.getElementById('root');\n const root = createRoot(container);\n return root.render(<StylesProvider generateClassName={generateClassName}>\n <StyledEngineProvider injectFirst>\n <ThemeProvider theme={theme(themeName)}>\n <DndProvider backend={isMobile ? TouchBackend : HTML5Backend}>\n <App onThemeChange={_theme => {\n themeName = _theme;\n build();\n }} />\n </DndProvider>\n </ThemeProvider>\n </StyledEngineProvider>\n </StylesProvider>);\n}\n\nbuild();\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: http://bit.ly/CRA-PWA\nserviceWorker.unregister();\n\n/*\n improved VSCode editor. This has to be down here, or we get conflicts\n between loader.js and require calls in jQuery and other loaded modules\n*/\n// loader must be after socket.io, elsewise there is no window.io\nconst loadDynamicScript = window.loadDynamicScript;\nloadDynamicScript && loadDynamicScript(window.location.port === '3000' ? window.location.protocol + '//' + window.location.hostname + ':8081/lib/js/socket.io.js' : './../../lib/js/socket.io.js', function () {\n loadDynamicScript('vs/loader.js', function () {\n loadDynamicScript('vs/configure.js', function () {\n typeof window.socketLoadedHandler === 'function' && window.socketLoadedHandler();\n });\n });\n});"],"names":["_React$Component","_inherits","DialogRename","_super","_createSuper","props","_this","_classCallCheck","call","handleCancel","onClose","handleOk","onRename","oldId","state","id","name","instance","handleChange","setState","getId","isShowInstance","folder","instances","length","prefix","getPrefix","_createClass","key","value","parts","split","pop","join","replace","this","nextProps","_this2","_jsxs","Dialog","event","reason","maxWidth","fullWidth","open","children","_jsx","DialogTitle","I18n","t","DialogContent","noValidate","autoComplete","TextField","variant","style","width","autoFocus","label","onKeyPress","ev","preventDefault","setTimeout","onChange","e","target","margin","disabled","FormControl","InputLabel","htmlFor","Select","parseInt","inputProps","map","MenuItem","DialogActions","Button","onClick","color","startIcon","IconOk","IconCancel","React","DialogDelete","onDelete","IconDelete","fontSize","fontWeight","withStyles","theme","DialogAddNew","_len","arguments","args","Array","_key","apply","concat","type","html","lang","getLanguage","includes","window","focus","Card","className","classes","card","CardActionArea","CardMedia","media","image","title","CardContent","complexity","text","CardActions","size","openHtml","_this3","_this4","_this5","textAlign","getRulesCard","getBlocklyCard","getJSCard","getTSCard","display","height","fontStyle","marginBottom","spacing","DialogNew","onAdd","existingItems","indexOf","error","parent","trim","helperText","minWidth","parents","splice","names","forEach","n","i","el","find","item","push","DialogError","console","log","titleBackground","root","titleColor","DialogContentText","background","palette","main","contrastText","DialogAdapterDebug","adapterToDebug","enabled","socket","getObject","then","obj","common","setObject","_id","onDebug","jsInstance","filter","localStorage","getItem","showAskForStop","jsInstanceHost","getAdapterInstances","_i$common","onlyWWW","_item$common","_item$common2","_item$common3","_name$split","adapter","_slicedToArray","host","icon","sort","a","b","jsInstanceObj","startsWith","js","Grid","List","component","ListItem","button","selected","ListItemIcon","src","alt","ListItemText","primary","toLowerCase","onDoubleClick","container","direction","Input","filterWithButton","placeholder","setItem","endAdornment","InputAdornment","position","IconButton","IconClose","renderJavascriptList","renderInstances","buttonIcon","marginRight","marginTop","COLOR_RUN","green","COLOR_PROBLEM","yellow","COLOR_PAUSE","red","ROOT_ID","COMMON_ID","GLOBAL_ID","NARROW_WIDTH","SELECTED_STYLE","images","ImgBlockly","ImgJS","def","ImgRules","ImgTypeScript","getObjectName","en","toString","prepareList","data","modified","result","depth","index","ids","Object","keys","engineType","engine","it","idA","idB","parentIndex","Droppable","onDrop","_useDrop","useDrop","accept","drop","isOver","undefined","collect","monitor","shallow","isOverAny","_useDrop2","_useDrop2$","ref","Utils","clsx","Draggable","_useDrag","useDrag","opacity","isDragging","_useDrag2","drag","transform","SideDrawer","expanded","JSON","parse","inputRef","listItems","scripts","problems","reorder","themeName","creatingScript","creatingFolder","copingScript","renaming","deleting","choosingType","errorText","menuOpened","menuAnchorEl","searchMode","expertMode","searchText","typeFilter","statusFilter","runningInstances","scriptsHash","showAdapterDebug","newExp","ensureSelectedIsVisible","filterTimer","isAllZeroInstances","getIsAllZeroInstances","problemsTimer","onProblemUpdatedBound","onProblemUpdated","bind","_assertThisInitialized","cb","tasks","shift","match","that","substring","getState","err","readProblems","subscribeState","unsubscribeState","stringify","changed","val","pos","isSearchEnabled","newState","filterListStatic","ensureSelectedIsVisibleStatic","getIsAllZeroInstancesStatic","stopPropagation","_toConsumableArray","saveExpanded","_this6","iconButtons","debugMode","iconButtonsDisabled","onEnableDisable","IconPause","IconPlay","onEdit","IconDoEdit","_this7","Promise","resolve","whiteSpace","padding","overflow","flex","onToggle","filtered","filteredPartly","childrenFiltered","_this8","depthPx","assign","marginLeft","cursor","isExpanded","iconClass","iconStyle","folderIcon","folderIconReorder","folderIconNoReorder","scriptIcon","scriptIconReorder","scriptIconNoReorder","childrenCount","script","scriptReorder","folderReorder","onDblClick","listItemIcon","IconFolderOpened","IconFolder","getTextStyle","ListItemSecondaryAction","renderItemButtonsOnEnd","source","newId","items","_this9","isFilteredOut","reactChildren","element","renderListItem","renderOneItem","onDragFinish","_this10","dense","disablePadding","mainList","_this11","_this12","copyId","_this13","word","m","_this14","menuAnchorFilterEl","filterIcon","selectedItem","_this15","Menu","anchorEl","PaperProps","maxHeight","MENU_ITEM_HEIGHT","showError","iconDropdownMenu","onCloseMenu","onExpertModeChange","IconExpert","onExport","IconExport","onImport","IconImport","onThemeChange","newThemeName","IconDark","onAddNew","onCopy","IconCopy","IconDebug","_this16","toolbarSearch","clearTimeout","filterList","onSearch","toolbarButtons","float","mini","IconClear","currentTarget","IconMore","getMainMenu","IconAdd","onAddNewFolder","IconAddFolder","IconFind","IconReorder","IconEdit","folders","_this17","_this18","footerButtons","Blockly","IconExpandAll","footerButtonsRight","onExpandAll","IconCollapseAll","onCollapseAll","_this19","onDebugInstance","_this20","renamingItem","copingItem","Drawer","menu","paper","drawerPaper","anchor","toolbar","getToolbarButtons","Divider","DragDropContext","backend","HTML5Backend","innerMenu","renderAllItems","footer","getBottomButtons","newName","newInstance","DialogAddNewScript","getUniqueName","getFolders","getUniqueFolderName","getAdapterDebugDialog","objects","found","lastIndexOf","nState","selectId","mode","lineHeight","paddingRight","iconOnTheRight","right","top","overflowX","overflowY","borderRadius","userSelect","transitionDuration","transitionProperty","paddingTop","paddingBottom","paddingLeft","expandButton","backgroundColor","getTimeString","d","getHours","getMinutes","getSeconds","getMilliseconds","gText","Log","logHandler","message","allLines","lines","editing","generateLine","severity","ms","date","Date","ts","toLocaleString","goBottom","lastIndex","messagesEnd","trTime","trSeverity","substr","current","scrollIntoView","behavior","registerLogHandler","unregisterLogHandler","scrollToBottom","copyToClipboard","logBoxInner","table","clear","logBox","toolbox","IconBottom","clearLog","onLayoutChange","layoutIcon","verticalLayout","onHideLog","IconHide","renderLogList","hasOwnProperty","verticalAlign","info","warn","debug","silly","fontFamily","boxShadow","ScriptEditor","isDark","language","readOnly","alive","check","typingsLoaded","runningInstancesStr","monacoDiv","editor","monaco","insert","originalCode","code","typings","lastSearch","monacoCounter","waitForMonaco","scriptAdapterInstance","sendTo","setTypeCheck","setEditorTypings","componentDidMount","onRegisterSelect","getModel","getValueInRange","getSelection","compilerOptions","languages","typescript","typescriptDefaults","ScriptTarget","ES2015","allowJs","checkJs","noLib","lib","useUnknownInCatchVariables","moduleResolution","ModuleResolutionKind","NodeJs","setCompilerOptions","create","lineNumbers","scrollBeyondLastLine","automaticLayout","glyphMargin","breakpoints","onDidChangeModelContent","getValue","loadTypings","addCommand","KeyMod","CtrlCmd","KeyCode","KEY_S","onForceSave","highlightText","location","showDecorators","options","selectOnLineNumbers","setEditorOptions","setValue","onToggleBreakpoint","onMouseDown","detail","glyphMarginLeft","lineNumber","setEditorLanguage","updateOptions","lineWrap","wordWrap","typeCheck","setTheme","dispose","model","uri","path","filenameWithoutExtension","extension","newLanguage","newModel","createModel","Uri","from","setModel","noSemanticValidation","noSyntaxValidation","setDiagnosticsOptions","currentScriptName","isGlobalScript","test","partialDeclarationsPath","wantedTypings","_i","_Object$keys","filePath","content","setExtraLibs","addExtraLib","existingLibs","getExtraLibs","selection","range","Range","startLineNumber","startColumn","endLineNumber","endColumn","executeEdits","forceMoveMarkers","findMatches","r","setSelection","revealLine","row","getPosition","col","column","decorations","columnNumber","isWholeLine","bp","glyphMarginClassName","deltaDecorations","ranges","getVisibleRanges","revealLineInCenter","initNewScript","scrollToLineIfNeeded","insertTextIntoEditor","onInserted","newValue","Fab","bottom","zIndex","IconNoCheck","forceUpdate","DialogExport","popper","dialog","textArea","themeType","textAreaLight","Popper","placement","transition","_ref","TransitionProps","Fade","_objectSpread","timeout","Paper","typography","left","tabIndex","defaultProps","DialogImport","document","getElementById","fullHeight","toolboxXml","resize","languageBlocklyLoaded","languageOwnLoaded","toolboxText","scriptsLoaded","searchXml","_result","tagName","attributes","nodeName","innerHTML","innerText","childNodes","node","BlocklyEditor","blockly","blocklyWorkspace","exportText","importText","someSelected","changeTimer","onResizeBind","onResize","lastCommand","blinkBlock","loadLanguages","Xml","workspaceToDom","allBlocks","getAllBlocks","blocks","searchBlocks","addSelect","someSelectedTime","now","removeSelect","command","blocklyCheckBlocks","badBlock","blocklyBlinkBlock","exportBlocks","importBlocks","searchId","updateBackground","loadCode","fileLang","createElement","setAttribute","onload","onreadystatechange","readyState","getElementsByTagName","appendChild","fileCustom","svgResize","xml","l","decodeURIComponent","atob","block","select","unselect","isShadow","connections","getConnections_","conn","j","targetConnection","warningText","blocklyGetUnconnectedBlock","blocklyGetBlockWithWarning","sourceBlock_","INPUT_VALUE","OUTPUT_VALUE","_optional","warning","oneWay","JavaScript","workspaceToCode","dom","domToText","btoa","encodeURIComponent","xmlBlock","blockToDom","dragMode_","DRAG_FREE","deleteNext","xy","getRelativeToSurfaceXY","RTL","x","y","domToPrettyText","variables","vars","utils","textToDomDocument","nodes","createVariable","loading","xmlBlocks","textToDom","paste","onBlocklyChanged","ignoreChanges","jsCode2Blockly","domToWorkspace","blocklyRemoveOrphanedShadows","_componentDidUpdate","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_context","prev","next","abrupt","didUpdate","addEventListener","t0","getToolbox","sent","inject","zoom","controls","wheel","startScale","maxScale","minScale","scaleSpeed","move","scrollbars","trashcan","grid","colour","snap","sounds","registerToolboxCategoryCallback","Procedures","flyoutCategoryNew","addChangeListener","masterEvent","Events","UI","CREATE","getElementsByClassName","stop","_originalStyle","stroke","fill","removeEventListener","blocklyCode2JSCode","_getToolbox","_callee2","retry","_b","_context2","outerHTML","p1","MSG","CustomBlocks","Words","HUE","_x","DialogMessage","onImportBlocks","componentDidUpdate","renderMessageDialog","renderErrorDialog","renderExportDialog","renderImportDialog","url","callback","scriptTag","onerror","body","loadJS","loadScripts","adapters","toLoad","DOMParser","xmlStr","parseFromString","ActiveXObject","xmlDoc","async","loadXML","DialogScriptEditor","isReturn","argsTitle","ScriptEditorComponent","adapterName","IconSave","ICON_CACHE","MaterialDynamicIcon","iconName","_useState","useState","_useState2","setUrl","useEffect","_obj$common","Element","Icons","CardMenu","active","onTouchMove","cls","deepCopy","userRules","additionalParameter","_defineProperty","filterElement","CustomButton","square","CustomIcon","CustomCheckbox","customValue","switchChecked","setSwitchChecked","_Fragment","Checkbox","checked","Boolean","native","styleComponentBlock","memo","CustomInput","multiline","rows","inputText","setInputText","InputProps","SelectMod","borderBottomColor","CustomInstance","multiple","attr","onInstanceHide","_useState3","_useState4","setOptions","_options","unshift","renderValue","input","placeContent","title2","FormHelperText","CustomModal","titleButtonApply","titleButtonClose","onApply","textInput","defaultValue","disableEscapeKeyDown","i18n","CustomSelect","doNotTranslate","doNotTranslate2","v","onlyItem","only","titleShort","titles","sel","valueOnly","CustomSlider","min","max","step","unit","marks","Slider","valueLabelDisplay","CustomSwitch","FormControlLabel","control","Switch","CustomTime","InputLabelProps","shrink","DAYS","CustomDate","_toString$split","_toString$split2","month","days","padStart","getName","STEPS","selector","_PureComponent","GenericBlock","renderText","frontText","backText","nameBlock","doNotTranslateBack","Fragment","displayFlex","blockMarginTop","renderSwitch","renderNameText","signature","displayItalic","renderNumber","settings","openCheckbox","visibility","noHelperText","renderColor","renderCheckbox","renderSlider","renderButton","buttonText","findIcon","getSelectIdIcon","catch","renderObjectID","checkReadOnly","showSelectId","_this$props","_obj$common2","_this$setState","lastObjectIdChange","write","getObjectNameFromObj","DialogSelectID","imagePrefix","dialogName","getThemeName","statesOnly","onOk","_onChange2","role","states","read","setOnUpdate","renderIconTag","iconTag","tagCard","tagCardArray","onChangeTag","openTagMenu","renderTime","renderSelect","renderInstance","_this$props2","hideAttributes","renderDialog","onShowDialog","iconDialog","renderModalInput","openModal","noTextEdit","renderDate","renderTags","_this$state","isTourOpen","tourStep","setTourStep","keepMounted","tag","onTagChange","search","_this$state2","newTagCardArray","newSettings","newTagCard","prevProps","acceptedBy","onUpdate","onChangeInput","attribute","_attr","getData","onValueChanged","render","_this$state3","inputs","helpDialog","_this$props3","notFound","iconThemCard","iconThemCardSelectable","blockName","nameCard","iconHelp","helpText","IconHelp","_ref2","nameRender","controlMenuTop","renderDebugInfo","renderSpecific","oid","instanceSelectionOptions","instanceSelectionDef","debugMessage","enableSimulation","debugHideTimeout","onDebugMessage","blockId","hideTimeout","debugInfo","renderDebug","context","_context$trigger","trigger","oidType","conditionsStates","PureComponent","sayitEngines","params","voice","emotion","gender","ename","ssml","ActionSayText","_GenericBlock","getStaticData","_get","_getPrototypeOf","prototype","config","volume","getReplacesInText","ActionSendEmail","recipients","subject","ActionTelegram","cachePromises","_setUsers","users","_users","user","userName","firstName","ActionPushover","sound","priority","ActionWhatsappcmb","phone","ActionPushsafer","device","vibration","DEFAULT_RULE","triggers","conditions","justCheck","actions","compileTriggers","json","jsonTriggers","prelines","hist","conds","cond","findBlock","condition","conditionsDebug","conditionsVars","compile","ors","_ors","compileConditions","compileActions","_else","else","line","action","code2json","json2code","STANDARD_FUNCTION","STANDARD_FUNCTION_ONCHANGE","STANDARD_FUNCTION_STATE","STANDARD_FUNCTION_STATE_ONCHANGE","NO_FUNCTION","TriggerScriptSave","Compile","TriggerScheduleBlock","coordinates","_setAstro2","astro","offset","offsetValue","sunValue","time","astroTime","_ref$native","latitude","longitude","SunCalc","_time2String","order","setMinutes","_x2","_x3","_setInterval2","interval","_x4","_setAstro","_setInterval","textCron","alignItems","openDialog","_callee3","_context3","convertCronToText","ComplexCron","cronExpression","wizardText","wizard","Schedule","valid","now2string","state2text","default","func","cron","_config$dow","_split","at","_split2","hours","minutes","dow","_dow","intervals","start","Transition","Slide","TriggerState","valOld","ackOld","valueAck","valueNotAck","ack","openSimulate","simulateValue","simulateAck","parseFloat","_this2$inputRef$curre","TransitionComponent","onKeyUp","keyCode","onWriteValue","IconCheck","isArray","HYSTERESIS","ConditionState","onShowHelp","showHysteresisHelp","_this$props$userRules","_this$props$userRules2","_this$props$userRules3","_this$props$userRules4","toUpperCase","compareWith","useTrigger","oidUnit","oidStates","_this$props$userRules5","_this$props$userRules6","isAllTriggersOnState","_setInputs","HysteresisImage","debugValue","histComp","compare","_context$trigger2","ConditionTime","withDate","ConditionAstrological","ActionSetState","toggle","_this$state$settings","oidMax","oidMin","oidRole","oidWrite","oidStep","isNaN","f","ignore","_this$_setInputs","TriggerSchedule","ActionExec","exec","ActionHTTPCall","ActionPrintText","ActionPause","paused","pause","_getOptions","ActionFunction","ActionSetStateDelayed","delay","clearRunning","ActionOperateStates","oid1","oid2","operation","oidResult","ADAPTERS","telegram","email","sayit","pushover","pushsafer","ContextWrapperCreate","createContext","getOrLoadRemote","remote","shareScope","remoteFallbackUrl","reject","existingRemote","querySelector","__initialized","init","__webpack_share_scopes__","loadComponent","sharedScope","module","factory","Module","get","ContextWrapper","_ref3","setBlocks","_useState5","_useState6","setOnDebugMessage","_useState7","_useState8","setEnableSimulation","adapterDynamicBlocksArray","dynamicRules","alreadyCreated","_loop","k","adapterBlocksArray","_context4","javascriptRules","i18nURL","file","Component","protocol","fetch","extendTranslations","t1","done","delegateYield","t2","StandardBlocks","Provider","CurrentItem","setUserRules","blockValue","setAnchorEl","_useContext","useContext","findElementBlocks","useCallback","newUserRules","findElement","handlePopoverOpen","blockInput","useMemo","CustomBlock","isDelete","setIsDelete","onMouseMove","onMouseEnter","onMouseLeave","ctrlKey","newItem","clientWidth","newItemsSwitches","layerStyles","pointerEvents","getItemStyles","initialOffset","currentOffset","isSnapToGrid","_snapToGrid","Math","round","snapToGrid","_snapToGrid2","WebkitTransform","CustomDragLayer","_useDragLayer","useDragLayer","itemType","getItemType","getInitialSourceClientOffset","getSourceClientOffset","targetIds","getTargetIds","useStateLocal","events","nameEvents","_React$useState","_React$useState2","newHeadCells","funcSet","_","setCards","moveCard","atIndex","cards","additionally","hoverClientY","hoverMiddleY","_findCard","findCard","copyCard","newTriggers","c","DragWrapper","typeBlocks","allProperties","isActive","end","dropResult","getDropResult","idNumber","preview","useRef","canDrop","hover","_ref$current","draggedId","hoverBoundingRect","getBoundingClientRect","getClientOffset","overIndexActions","overIndexConditions","overIndex","getEmptyImage","captureDraggingState","isMobile","innerWidth","DialogHelp","letterSpacing","DialogCondition","AdditionallyContentBlockItems","_itemsSwitchesRender$","itemsSwitchesRender","boolean","typeBlock","animation","checkItem","setCheckItem","canDropCheck","setCanDropCheck","checkId","setCheckId","hoverBlock","setHoverBlock","getHandlerId","_monitor$getItem","targetId","_options$","contentBlockItem","addClassHeight","contentHeightOn","contentHeightOff","wrapperMargin","clientHeight","emptyBlockStyle","emptyBlock","emptyBlockNone","ContentBlockItems","_ref4","nameAdditionally","border","_useStateLocal","_useStateLocal2","additionallyClickItems","setAdditionallyClickItems","checkLocal","_useState9","_useState10","showHelp","setShowHelp","_useState11","_useState12","showConditionDialog","setShowConditionDialog","newArray","idx","_useState13","_useState14","setAnimation","mainBlockItemRules","addClassOverflow","nameBlockItems","selectOnChange","_userRules","selectOnChangeHelp","selectOnChangeHelpIcon","booleanAdditionally","newAdditionally","blockCardAdd","cardAdd","_props$allProperties","onDoubl","HamburgerMenu","addClass","setAllBlocks","onChangeBlocks","hamburgerOnOff","setHamburgerOnOff","_useStateLocal3","_useStateLocal4","setFilter","setBlocksFunc","typeFunc","newAllBlocks","a11yProps","ClickAwayListener","mouseEvent","touchEvent","onClickAway","AppBar","Tabs","Tab","_el$getStaticData2","CustomDragItem","scriptId","running","importExport","setImportExport","modal","setModal","_jsInstance","_jsAlive","handler","handlerStatus","msg","ruleId","_obj$common3","subscribeObject","unsubscribeObject","setAddClass","Editor","editorDiv","scriptName","borderRight","lineBreakpoint","lineCode","lineCurrentCode","lineCurrent","Console","onClearAllLogs","consoleLine","console_log","console_warn","console_error","console_debug","consoleSeverity","textTransform","consoleTime","consoleText","Stack","framesSize","editValue","callFrames","editRef","onExpressionNameUpdate","scopeValue","onBlur","CheckIcon","scopeNameName","scopeNameEqual","scopeNameValue","formatValue","scopeType","scopeName","valueType","scopeButtonDel","onExpressionDelete","expressions","renderExpression","frame","mainScriptId","currentScriptId","fileName","ListItemButton","onChangeCurrentFrame","currentFrame","frameRoot","frameTextRoot","frameTextPrimary","secondary","frameTextSecondary","functionName","forEdit","description","valueFunc","valueUndefined","valueNull","valueString","valueBoolean","ReactJson","enableClipboard","collapsed","displayDataTypes","valueNone","onWriteScopeValue","variableName","scopeNumber","callFrameId","_this$editRef$current","scopeId","_item$value","_item$value2","editable","scopeValueEditable","_this$props$scopes","_this$props$scopes$lo","_this$props$scopes$lo2","_this$props$scopes2","_this$props$scopes2$c","_this$props$scopes2$c2","renderExpressions","scopes","local","properties","renderScope","closure","SplitterLayout","customClassName","splitter","primaryIndex","secondaryMinSize","primaryMinSize","vertical","secondaryInitialSize","onSecondaryPaneSizeChange","onDragEnd","listRoot","renderOneFrameTitle","toolbarScopes","onExpressionAdd","scopesAfterToolbar","renderScopes","scopeType_local","scopeType_closure","scopeType_user","textOverflow","scopeButton","selectedFrame","valueNumber","valueObject","Debugger","fromInstance","cmd","debugInstance","_data$context","tabs","random","starting","finished","started","getLocation","reinitBreakpoints","readCurrentScope","readExpressions","_data$context2","_data$context3","scope","sendToInstance","toolsTab","logErrors","logWarnings","logs","expression","_data$breakpoints","_data$breakpoints$loc","_data$breakpoints2","_data$breakpoints2$lo","locations","queryBreakpoints","alert","toolSize","stopOnException","_obj$common$engine","_this$state$context","scopeChain","global","_this$state$context2","arrow","monospace","bpListItem","bpListPrimary","bpListSecondary","getTextAtLocation","indicatorColor","scrollButtons","tabText","closeButton","closeTab","tabFile","Toolbar","buttonRestart","onRestart","IconRestart","buttonRun","onResume","IconRun","buttonPause","onPause","buttonNext","onNext","IconNext","buttonStep","onStepIn","IconStep","buttonOut","onStepOut","IconOut","buttonException","onToggleException","IconException","renderTabs","getPossibleBreakpoints","sourceId","toggleBreakpoint","_this$state$context3","logWarning","_console","Badge","badgeContent","tabsRoot","tabRoot","renderFrames","renderConsole","LinearProgress","renderToolbar","renderCode","renderQueryBreakpoints","renderTools","renderError","minHeight","buttonStop","borderTop","COLOR_DEBUG","COLOR_VERBOSE","onInstanceChanged","onBrowserClose","isChanged","returnValue","tabsRef","rules","debugEnabled","verboseEnabled","showCompiledCode","showCron","showScript","showAstro","astroEvents","visible","cmdToBlockly","cmdToRules","menuTabsOpened","menuTabsAnchorEl","showDebugMenu","toast","instancesLoaded","setChangedInAdmin","initValue","scriptDialog","systemLang","selectIdDialog","cronDialog","showScriptDialog","getAllAdapterInstances","onSelectedChange","instanceObjects","configNotSaved","_changed","verbose","removeNonExistingScripts","oldSource","commonLocal","nextCommon","getSelect","showConfirmDialog","nowSelected","isScriptChanged","ok","onTabClose","question","confirmCallback","confirm","getText","onTabChange","textColor","getScriptFullName","tabChanged","tabChangedIcon","closeButtonIcon","wrapped","iconPosition","tabIcon","href","tabButton","wrapper","tabButtonWrapper","tabMenuButton","_event","IconCloseAll","hintButton","hintIcon","menuDebugAnchorEl","menuIcon","IconVerbose","askAboutDebug","DialogConfirm","onDebugModeChange","cancel","isInstanceRunning","isScriptRunning","changedAll","onLocate","IconLocate","onStartStop","notRunning","textButton","saveButton","onSave","textIcon","onSaveAll","onCancel","sendCommandToBlockly","IconCron","IconAstro","IconSelectId","onConvertBlockly2JS","sendCommandToRules","IconDebugMode","toolbarButtonsDisabled","badgeMargin","getDebugBadge","IconDebugMenu","resizing","RulesEditor","_this21","selectedId","types","_this22","DialogCron","_this23","TableContainer","Table","TableHead","TableRow","TableCell","TableBody","align","toLocaleTimeString","_this24","_this25","Snackbar","anchorOrigin","horizontal","autoHideDuration","ContentProps","closeToast","_this26","isAnyRulesExists","Tour","steps","isOpen","onRequestClose","goToStep","_this27","_this28","getTabs","getToolbar","getScriptEditor","getAskAboutDebug","getBlocklyEditor","getRulesEditor","getDebug","getConfirmDialog","getSelectIdDialog","getCronDialog","getEditorDialog","getAstroDialog","getDebugMenu","getToast","getTour","hintText","DialogImportFile","imageStatus","files","readFileDataUrl","dropzone","dropzoneAccepted","dropzoneRejected","Dropzone","maxSize","acceptClassName","rejectClassName","handleDropFile","getRootProps","getInputProps","isDragActive","isDragReject","dropzoneDiv","IconNo","iconError","IconPlus","iconOk","IconUpload","reader","FileReader","onabort","readAsDataURL","borderWidth","borderStyle","borderColor","boxSizing","App","_GenericApp","Connection","AdminConnection","translations","require","de","es","fr","nl","pl","pt","ru","uk","bottomButtons","autoSubscribeLog","sentryDSN","onScriptsChanged","onInstanceAliveChange","reload","onHostChanged","hosts","logSize","menuSize","importFile","ready","updateScripts","updating","logMessage","menuSelectId","logHorzLayout","hideLog","subscribeOnInstances","readAdaptersWithBlockly","getHosts","readAllScripts","compareScripts","instancesArray","promises","instanceId","all","getObjectView","loadCustomBlockly","newScripts","oldIds","newIds","oldScript","newScript","promise","endsWith","parentID","updateScript","renameGroup","_list","nId","delObject","expert","isFolder","reg","RegExp","onSelect","newCommon","_obj","extendObject","_rev","getLiveHost","getFullYear","getMonth","getDate","getRawSocket","emit","link","fileStorageNamespace","click","remove","download","onImportConfirmed","showMessage","reduce","sum","onUpdateScript","showLogButton","IconShowLog","menuOpenCloseButton","IconMenuOpened","IconMenuClosed","onDragStart","renderEditor","toggleLogLayout","splitterDivs","menuDivWithoutMenu","mainDiv","SideMenu","update","setThemeName","getThemeType","renderMain","Loader","GenericApp","flexGrow","menuDiv","splitterDivWithMenu","progress","hostname","generateClassName","createGenerateClassName","productionPrefix","build","createRoot","StylesProvider","StyledEngineProvider","injectFirst","ThemeProvider","DndProvider","TouchBackend","_theme","navigator","serviceWorker","registration","unregister","loadDynamicScript","port","socketLoadedHandler"],"sourceRoot":""}
|