@iobroker/adapter-react-v5 3.1.12 → 3.1.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Components/JsonConfigComponent/ConfigImageUpload.js +13 -11
- package/Components/JsonConfigComponent/ConfigImageUpload.js.map +1 -1
- package/Components/Loader.js +2 -2
- package/Components/Loader.js.map +1 -1
- package/Components/Utils.js +3 -2
- package/Components/Utils.js.map +1 -1
- package/README.md +4 -1
- package/i18n/de.json +1 -1
- package/package.json +1 -1
|
@@ -37,6 +37,8 @@ var _FormControl = _interopRequireDefault(require("@mui/material/FormControl"));
|
|
|
37
37
|
|
|
38
38
|
var _UploadImage = _interopRequireDefault(require("../UploadImage"));
|
|
39
39
|
|
|
40
|
+
var _i18n = _interopRequireDefault(require("../../i18n"));
|
|
41
|
+
|
|
40
42
|
var _ConfigGeneric2 = _interopRequireDefault(require("./ConfigGeneric"));
|
|
41
43
|
|
|
42
44
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
@@ -54,22 +56,22 @@ var styles = function styles(theme) {
|
|
|
54
56
|
};
|
|
55
57
|
};
|
|
56
58
|
|
|
57
|
-
var
|
|
58
|
-
(0, _inherits2["default"])(
|
|
59
|
+
var ConfigImageUpload = /*#__PURE__*/function (_ConfigGeneric) {
|
|
60
|
+
(0, _inherits2["default"])(ConfigImageUpload, _ConfigGeneric);
|
|
59
61
|
|
|
60
|
-
var _super = _createSuper(
|
|
62
|
+
var _super = _createSuper(ConfigImageUpload);
|
|
61
63
|
|
|
62
|
-
function
|
|
64
|
+
function ConfigImageUpload(props) {
|
|
63
65
|
var _this;
|
|
64
66
|
|
|
65
|
-
(0, _classCallCheck2["default"])(this,
|
|
67
|
+
(0, _classCallCheck2["default"])(this, ConfigImageUpload);
|
|
66
68
|
_this = _super.call(this, props);
|
|
67
69
|
_this.imageRef = /*#__PURE__*/_react["default"].createRef();
|
|
68
70
|
_this.index = Date.now();
|
|
69
71
|
return _this;
|
|
70
72
|
}
|
|
71
73
|
|
|
72
|
-
(0, _createClass2["default"])(
|
|
74
|
+
(0, _createClass2["default"])(ConfigImageUpload, [{
|
|
73
75
|
key: "componentDidMount",
|
|
74
76
|
value: function () {
|
|
75
77
|
var _componentDidMount = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
@@ -80,7 +82,7 @@ var ConfigCertificateSelect = /*#__PURE__*/function (_ConfigGeneric) {
|
|
|
80
82
|
while (1) {
|
|
81
83
|
switch (_context.prev = _context.next) {
|
|
82
84
|
case 0:
|
|
83
|
-
(0, _get2["default"])((0, _getPrototypeOf2["default"])(
|
|
85
|
+
(0, _get2["default"])((0, _getPrototypeOf2["default"])(ConfigImageUpload.prototype), "componentDidMount", this).call(this);
|
|
84
86
|
|
|
85
87
|
if (this.props.schema.base64) {
|
|
86
88
|
value = _ConfigGeneric2["default"].getValue(this.props.data, this.props.attr);
|
|
@@ -182,7 +184,7 @@ var ConfigCertificateSelect = /*#__PURE__*/function (_ConfigGeneric) {
|
|
|
182
184
|
});
|
|
183
185
|
}
|
|
184
186
|
},
|
|
185
|
-
t:
|
|
187
|
+
t: _i18n["default"].t
|
|
186
188
|
}), this.props.schema.help ? /*#__PURE__*/_react["default"].createElement(_FormHelperText["default"], null, this.renderHelp(this.props.schema.help, this.props.schema.helpLink, this.props.schema.noTranslation)) : null, this.props.schema.base64 ? null : /*#__PURE__*/_react["default"].createElement("img", {
|
|
187
189
|
src: this._getUrl(),
|
|
188
190
|
ref: this.imageRef,
|
|
@@ -194,10 +196,10 @@ var ConfigCertificateSelect = /*#__PURE__*/function (_ConfigGeneric) {
|
|
|
194
196
|
}));
|
|
195
197
|
}
|
|
196
198
|
}]);
|
|
197
|
-
return
|
|
199
|
+
return ConfigImageUpload;
|
|
198
200
|
}(_ConfigGeneric2["default"]);
|
|
199
201
|
|
|
200
|
-
|
|
202
|
+
ConfigImageUpload.propTypes = {
|
|
201
203
|
socket: _propTypes["default"].object.isRequired,
|
|
202
204
|
themeType: _propTypes["default"].string,
|
|
203
205
|
themeName: _propTypes["default"].string,
|
|
@@ -209,7 +211,7 @@ ConfigCertificateSelect.propTypes = {
|
|
|
209
211
|
onChange: _propTypes["default"].func
|
|
210
212
|
};
|
|
211
213
|
|
|
212
|
-
var _default = (0, _styles.withStyles)(styles)(
|
|
214
|
+
var _default = (0, _styles.withStyles)(styles)(ConfigImageUpload);
|
|
213
215
|
|
|
214
216
|
exports["default"] = _default;
|
|
215
217
|
//# sourceMappingURL=ConfigImageUpload.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigImageUpload.js","names":["styles","theme","fullWidth","width","image","ConfigCertificateSelect","props","imageRef","React","createRef","index","Date","now","schema","base64","value","ConfigGeneric","getValue","data","attr","setState","socket","fileExists","adapterName","instance","then","exist","current","src","_getUrl","style","display","update","url","window","location","port","protocol","hostname","error","disabled","defaultValue","classes","getText","label","accept","crop","maxSize","state","undefined","onChange","deleteFile","startsWith","split","writeFile64","t","help","renderHelp","helpLink","noTranslation","propTypes","PropTypes","object","isRequired","themeType","string","themeName","className","onError","func","withStyles"],"sources":["JsonConfigComponent/ConfigImageUpload.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@mui/styles';\n\nimport InputLabel from '@mui/material/InputLabel';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport FormControl from '@mui/material/FormControl';\n\nimport UploadImage from '../UploadImage';\n\nimport ConfigGeneric from './ConfigGeneric';\n\nconst styles = theme => ({\n fullWidth: {\n width: '100%'\n },\n image: {\n width: 100\n }\n});\n\nclass ConfigCertificateSelect extends ConfigGeneric {\n constructor(props) {\n super(props);\n this.imageRef = React.createRef();\n this.index = Date.now();\n }\n async componentDidMount() {\n super.componentDidMount();\n\n if (this.props.schema.base64) {\n const value = ConfigGeneric.getValue(this.props.data, this.props.attr);\n this.setState({ value });\n } else {\n this.props.socket.fileExists(this.props.adapterName + '.' + this.props.instance, this.props.attr)\n .then(exist => {\n if (exist && this.imageRef.current) {\n this.imageRef.current.src = this._getUrl();\n this.imageRef.current.style.display = 'block';\n }\n });\n }\n }\n\n _getUrl(update) {\n if (update) {\n this.index = Date.now();\n }\n let url = `files/${this.props.adapterName}.${this.props.instance}/${this.props.attr}?t=${this.index}`;\n if (window.location.port === '3000') {\n url = `${window.location.protocol}//${window.location.hostname}:8081/${url}`;\n }\n\n return url;\n }\n\n renderItem(error, disabled, defaultValue) {\n // eslint-disable-next-line\n return <FormControl className={this.props.classes.fullWidth} variant=\"standard\">\n <InputLabel shrink>{this.getText(this.props.schema.label)}</InputLabel>\n <UploadImage\n error={!!error}\n disabled={disabled}\n accept={this.props.schema.accept}\n crop={this.props.schema.crop}\n maxSize={this.props.schema.maxSize || 256 * 1024}\n icon={this.state.value || undefined}\n removeIconFunc={() => {\n if (this.props.schema.base64) {\n this.setState({ value: null }, () =>\n this.onChange(this.props.attr, this.state.value));\n } else {\n // delete file to /instance/attr\n this.props.socket.deleteFile(this.props.adapterName + '.' + this.props.instance, this.props.attr);\n // update image\n if (this.imageRef.current) {\n this.imageRef.current.style.display = 'none';\n this.imageRef.current.src = '';\n }\n }\n }}\n onChange={base64 => {\n if (this.props.schema.base64) {\n this.setState({ value: base64 }, () =>\n this.onChange(this.props.attr, this.state.value));\n } else {\n if (base64.startsWith('data')) {\n base64 = base64.split(',')[1];\n }\n // upload file to /instance/attr\n this.props.socket.writeFile64(this.props.adapterName + '.' + this.props.instance, this.props.attr, base64)\n .then(() => {\n if (this.imageRef.current) {\n this.imageRef.current.style.display = 'block';\n this.imageRef.current.src = this._getUrl(true);\n }\n });\n }\n }}\n t={this.props.t}\n />\n {this.props.schema.help ? <FormHelperText>{this.renderHelp(this.props.schema.help, this.props.schema.helpLink, this.props.schema.noTranslation)}</FormHelperText> : null}\n {this.props.schema.base64 ? null : <img\n src={this._getUrl()}\n ref={this.imageRef}\n className={this.props.classes.image}\n style={{display: 'none'}}\n alt=\"Background\"\n />}\n </FormControl>;\n }\n}\n\nConfigCertificateSelect.propTypes = {\n socket: PropTypes.object.isRequired,\n themeType: PropTypes.string,\n themeName: PropTypes.string,\n style: PropTypes.object,\n className: PropTypes.string,\n data: PropTypes.object.isRequired,\n schema: PropTypes.object,\n onError: PropTypes.func,\n onChange: PropTypes.func,\n};\n\nexport default withStyles(styles)(ConfigCertificateSelect);"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ConfigImageUpload.js","names":["styles","theme","fullWidth","width","image","ConfigImageUpload","props","imageRef","React","createRef","index","Date","now","schema","base64","value","ConfigGeneric","getValue","data","attr","setState","socket","fileExists","adapterName","instance","then","exist","current","src","_getUrl","style","display","update","url","window","location","port","protocol","hostname","error","disabled","defaultValue","classes","getText","label","accept","crop","maxSize","state","undefined","onChange","deleteFile","startsWith","split","writeFile64","I18n","t","help","renderHelp","helpLink","noTranslation","propTypes","PropTypes","object","isRequired","themeType","string","themeName","className","onError","func","withStyles"],"sources":["JsonConfigComponent/ConfigImageUpload.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@mui/styles';\n\nimport InputLabel from '@mui/material/InputLabel';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport FormControl from '@mui/material/FormControl';\n\nimport UploadImage from '../UploadImage';\nimport I18n from '../../i18n';\n\nimport ConfigGeneric from './ConfigGeneric';\n\nconst styles = theme => ({\n fullWidth: {\n width: '100%'\n },\n image: {\n width: 100\n }\n});\n\nclass ConfigImageUpload extends ConfigGeneric {\n constructor(props) {\n super(props);\n this.imageRef = React.createRef();\n this.index = Date.now();\n }\n async componentDidMount() {\n super.componentDidMount();\n\n if (this.props.schema.base64) {\n const value = ConfigGeneric.getValue(this.props.data, this.props.attr);\n this.setState({ value });\n } else {\n this.props.socket.fileExists(this.props.adapterName + '.' + this.props.instance, this.props.attr)\n .then(exist => {\n if (exist && this.imageRef.current) {\n this.imageRef.current.src = this._getUrl();\n this.imageRef.current.style.display = 'block';\n }\n });\n }\n }\n\n _getUrl(update) {\n if (update) {\n this.index = Date.now();\n }\n let url = `files/${this.props.adapterName}.${this.props.instance}/${this.props.attr}?t=${this.index}`;\n if (window.location.port === '3000') {\n url = `${window.location.protocol}//${window.location.hostname}:8081/${url}`;\n }\n\n return url;\n }\n\n renderItem(error, disabled, defaultValue) {\n // eslint-disable-next-line\n return <FormControl className={this.props.classes.fullWidth} variant=\"standard\">\n <InputLabel shrink>{this.getText(this.props.schema.label)}</InputLabel>\n <UploadImage\n error={!!error}\n disabled={disabled}\n accept={this.props.schema.accept}\n crop={this.props.schema.crop}\n maxSize={this.props.schema.maxSize || 256 * 1024}\n icon={this.state.value || undefined}\n removeIconFunc={() => {\n if (this.props.schema.base64) {\n this.setState({ value: null }, () =>\n this.onChange(this.props.attr, this.state.value));\n } else {\n // delete file to /instance/attr\n this.props.socket.deleteFile(this.props.adapterName + '.' + this.props.instance, this.props.attr);\n // update image\n if (this.imageRef.current) {\n this.imageRef.current.style.display = 'none';\n this.imageRef.current.src = '';\n }\n }\n }}\n onChange={base64 => {\n if (this.props.schema.base64) {\n this.setState({ value: base64 }, () =>\n this.onChange(this.props.attr, this.state.value));\n } else {\n if (base64.startsWith('data')) {\n base64 = base64.split(',')[1];\n }\n // upload file to /instance/attr\n this.props.socket.writeFile64(this.props.adapterName + '.' + this.props.instance, this.props.attr, base64)\n .then(() => {\n if (this.imageRef.current) {\n this.imageRef.current.style.display = 'block';\n this.imageRef.current.src = this._getUrl(true);\n }\n });\n }\n }}\n t={I18n.t}\n />\n {this.props.schema.help ? <FormHelperText>{this.renderHelp(this.props.schema.help, this.props.schema.helpLink, this.props.schema.noTranslation)}</FormHelperText> : null}\n {this.props.schema.base64 ? null : <img\n src={this._getUrl()}\n ref={this.imageRef}\n className={this.props.classes.image}\n style={{display: 'none'}}\n alt=\"Background\"\n />}\n </FormControl>;\n }\n}\n\nConfigImageUpload.propTypes = {\n socket: PropTypes.object.isRequired,\n themeType: PropTypes.string,\n themeName: PropTypes.string,\n style: PropTypes.object,\n className: PropTypes.string,\n data: PropTypes.object.isRequired,\n schema: PropTypes.object,\n onError: PropTypes.func,\n onChange: PropTypes.func,\n};\n\nexport default withStyles(styles)(ConfigImageUpload);"],"mappings":"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"}
|
package/Components/Loader.js
CHANGED
|
@@ -66,11 +66,11 @@ var Loader = /*#__PURE__*/function (_React$Component) {
|
|
|
66
66
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
67
67
|
className: 'logo-back logo-background-' + theme,
|
|
68
68
|
style: {
|
|
69
|
-
backgroundImage: window.loadingBackgroundImage && window.loadingBackgroundImage !== '@@loginBackgroundImage@@' ? window.loadingBackgroundImage : undefined,
|
|
69
|
+
backgroundImage: window.loadingBackgroundImage && window.loadingBackgroundImage !== '@@loginBackgroundImage@@' ? 'url(' + window.loadingBackgroundImage + ')' : undefined,
|
|
70
70
|
backgroundColor: window.loadingBackgroundColor && window.loadingBackgroundColor !== '@@loginBackgroundColor@@' ? window.loadingBackgroundColor : undefined,
|
|
71
71
|
backgroundSize: 'cover'
|
|
72
72
|
}
|
|
73
|
-
}, window.loadingHideLogo === '
|
|
73
|
+
}, window.loadingHideLogo === 'true' ? null : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
74
74
|
className: "logo-div",
|
|
75
75
|
style: {
|
|
76
76
|
width: size,
|
package/Components/Loader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Loader.js","names":["loaderStyles","Loader","props","window","document","getElementById","style","createElement","setAttribute","innerHTML","head","appendChild","size","theme","themeType","backgroundImage","loadingBackgroundImage","undefined","backgroundColor","loadingBackgroundColor","backgroundSize","loadingHideLogo","width","height","left","borderWidth","top","bottom","React","Component","propTypes","PropTypes","number","string","_export"],"sources":["Loader.js"],"sourcesContent":["/**\n * Copyright 2018-2022 bluefox <dogafox@gmail.com>\n *\n * MIT License\n *\n **/\nimport React from 'react';\nimport PropTypes from 'prop-types';\n// import './loader.css'\nconst loaderStyles = `\n/**\n * Copyright 2018-2022 bluefox <dogafox@gmail.com>\n *\n * MIT License\n *\n **/\n\n.logo-background-light, .logo-background-colored {\n background: white;\n}\n.logo-background-dark, .logo-background-blue {\n background: black;\n}\n.logo-div {\n position: absolute;\n top: 50%;\n left: 50%;\n -ms-transform: translateX(-50%) translateY(-50%);\n -webkit-transform: translate(-50%,-50%);\n transform: translate(-50%,-50%);\n overflow: hidden;\n border-radius: 50%;\n z-index: 2;\n}\n.logo-border {\n /*border-color: #164477;*/\n border-top-color: #3399CC;\n border-left-color: #164477;\n border-bottom-color: #164477;\n border-right-color: #164477;\n border-radius: 50%;\n border-style: solid;\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n position: absolute;\n}\n.logo-top {\n position: absolute;\n width: 4.5%;\n height: 16%;\n top: 0;\n z-index: 2;\n}\n.logo-i {\n position: absolute;\n width: 14.5%;\n height: 60%;\n top: 20%;\n left: 42%;\n background: #3399CC;\n}\n.logo-i-top {\n position: absolute;\n width: 14.5%;\n height: 4%;\n left: 42%;\n background: #3399CC;\n border-radius: 100%;\n}\n.logo-back {\n width: 100%;\n height: 100%;\n z-index: 0;\n overflow: hidden;\n}\n@keyframes logo-grow {\n 0% {\n width: 230px;\n height: 230px;\n transform: translate(-50%,-50%) scale(1);\n opacity: 1\n }\n 99% {\n width: 230px;\n height: 230px;\n transform: translate(-50%,-50%) scale(10);\n opacity: 0;\n }\n 100% {\n width: 0;\n height: 0;\n opacity: 0;\n }\n}\n@keyframes logo-spin { 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } }\n@keyframes logo-color-inside-light {\n 0% {\n background: #FEFEFE;\n }\n 100% {\n background: #3399CC;\n }\n}\n@keyframes logo-color-inside-dark {\n 0% {\n background: #030303;\n }\n 100% {\n background: #3399CC;\n }\n}\n@keyframes logo-color-inside-colored {\n 0% {\n background: #FEFEFE;\n }\n 100% {\n background: #3399CC;\n }\n}\n@keyframes logo-color-inside-blue {\n 0% {\n background: #030303;\n }\n 100% {\n background: #3399CC;\n }\n}\n\n@keyframes logo-color-outside-light {\n 0% {\n border-color: #FEFEFE;\n }\n 100% {\n border-top-color: #3399CC;\n border-left-color: #164477;\n border-bottom-color: #164477;\n border-right-color: #164477;\n }\n}\n@keyframes logo-color-outside-dark {\n 0% {\n border-color: #040404;\n }\n 100% {\n border-top-color: #3399CC;\n border-left-color: #164477;\n border-bottom-color: #164477;\n border-right-color: #164477;\n }\n}\n@keyframes logo-color-outside-colored {\n 0% {\n border-color: #FEFEFE;\n }\n 100% {\n border-top-color: #3399CC;\n border-left-color: #164477;\n border-bottom-color: #164477;\n border-right-color: #164477;\n }\n}\n@keyframes logo-color-outside-blue {\n 0% {\n border-color: #040404;\n }\n 100% {\n border-top-color: #3399CC;\n border-left-color: #164477;\n border-bottom-color: #164477;\n border-right-color: #164477;\n }\n}\n\n.logo-animate-wait {\n animation: logo-color-outside 1.5s, logo-spin 1.5s linear infinite;\n}\n\n.logo-animate-grow-light {\n background: #DDD;\n}\n.logo-animate-grow-dark {\n background: #1d1d1d;\n}\n.logo-animate-grow-colored {\n background: #DDD;\n}\n.logo-animate-grow-blue {\n background: #1d1d1d;\n}\n\n.logo-animate-grow {\n display: inline-block;\n text-align: center;\n z-index: 1;\n top: 50%;\n left: 50%;\n -ms-transform: translateX(-50%) translateY(-50%);\n -webkit-transform: translate(-50%,-50%);\n transform: translate(-50%,-50%);\n width: 245px;\n height: 245px;\n border-radius: 50%;\n position: absolute;\n animation: logo-grow 1s 1 ease forwards;\n}\n\n.logo-animate-color-inside-light {\n animation: logo-color-inside-light 2.5s;\n}\n.logo-animate-color-inside-dark {\n animation: logo-color-inside-dark 2.5s;\n}\n.logo-animate-color-inside-colored {\n animation: logo-color-inside-colored 2.5s;\n}\n.logo-animate-color-inside-blue {\n animation: logo-color-inside-blue 2.5s;\n}\n\n.logo-animate-color-outside-light {\n animation: logo-color-outside-light 1.5s;\n}\n.logo-animate-color-outside-dark {\n animation: logo-color-outside-dark 1.5s;\n}\n.logo-animate-color-outside-colored {\n animation: logo-color-outside-colored 1.5s;\n}\n.logo-animate-color-outside-blue {\n animation: logo-color-outside-blue 1.5s;\n}\n`;\n\n/**\n * @typedef {object} LoaderProps\n * @property {string} [key] The key to identify this component.\n * @property {number} [size] The size in pixels of this loader.\n * @property {string} [themeType] The chosen theme type.\n * @property {string} [theme] The chosen theme.\n *\n * @extends {React.Component<LoaderProps>}\n */\nclass Loader extends React.Component {\n constructor(props) {\n super(props);\n\n if (!window.document.getElementById('loader-iobroker-component')) {\n const style = window.document.createElement('style');\n style.setAttribute('id', 'loader-iobroker-component');\n style.innerHTML = loaderStyles;\n window.document.head.appendChild(style);\n }\n }\n\n render() {\n const size = this.props.size || 234;\n const theme = this.props.themeType || this.props.theme || 'light';\n return <div className={'logo-back logo-background-' + theme}\n style={{\n backgroundImage: window.loadingBackgroundImage && window.loadingBackgroundImage !== '@@loginBackgroundImage@@' ? window.loadingBackgroundImage : undefined,\n backgroundColor: window.loadingBackgroundColor && window.loadingBackgroundColor !== '@@loginBackgroundColor@@' ? window.loadingBackgroundColor : undefined,\n backgroundSize: 'cover',\n }}\n >\n {window.loadingHideLogo === '@@loadingHideLogo@@' || window.loadingHideLogo === 'false' ?\n null\n :\n <>\n <div className=\"logo-div\" style={{ width: size, height: size }}>\n <div className={'logo-top logo-background-' + theme} style={{ left: '37%' }}/>\n <div className={'logo-top logo-background-' + theme} style={{ left: '57%' }}/>\n <div\n className={`logo-border logo-background-${theme} logo-animate-wait`}\n style={{ borderWidth: size * 0.132 }}\n />\n <div className={'logo-i logo-animate-color-inside-' + theme}/>\n <div className={'logo-i-top logo-animate-color-inside-' + theme} style={{ top: '18%' }}/>\n <div className={'logo-i-top logo-animate-color-inside-' + theme} style={{ bottom: '18%' }}/>\n </div>\n <div className={'logo-animate-grow logo-animate-grow-' + theme}\n style={{ width: size + 11, height: size + 11 }}\n />\n </>\n }\n </div>;\n }\n}\n\nLoader.propTypes = {\n size: PropTypes.number,\n themeType: PropTypes.string\n};\n\n/** @type {typeof Loader} */\nconst _export = Loader;\nexport default _export;"],"mappings":";;;;;;;;;;;;;;;;;;;AAMA;;AACA;;;;;;AACA;AACA,IAAMA,YAAY,otJAAlB;AAiOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACMC,M;;;;;EACF,gBAAYC,KAAZ,EAAmB;IAAA;;IAAA;IACf,0BAAMA,KAAN;;IAEA,IAAI,CAACC,MAAM,CAACC,QAAP,CAAgBC,cAAhB,CAA+B,2BAA/B,CAAL,EAAkE;MAC9D,IAAMC,KAAK,GAAGH,MAAM,CAACC,QAAP,CAAgBG,aAAhB,CAA8B,OAA9B,CAAd;MACAD,KAAK,CAACE,YAAN,CAAmB,IAAnB,EAAyB,2BAAzB;MACAF,KAAK,CAACG,SAAN,GAAkBT,YAAlB;MACAG,MAAM,CAACC,QAAP,CAAgBM,IAAhB,CAAqBC,WAArB,CAAiCL,KAAjC;IACH;;IARc;EASlB;;;;WAED,kBAAS;MACL,IAAMM,IAAI,GAAG,KAAKV,KAAL,CAAWU,IAAX,IAAmB,GAAhC;MACA,IAAMC,KAAK,GAAG,KAAKX,KAAL,CAAWY,SAAX,IAAwB,KAAKZ,KAAL,CAAWW,KAAnC,IAA4C,OAA1D;MACA,oBAAO;QAAK,SAAS,EAAE,+BAA+BA,KAA/C;QACH,KAAK,EAAE;UACHE,eAAe,EAAEZ,MAAM,CAACa,sBAAP,IAAiCb,MAAM,CAACa,sBAAP,KAAkC,0BAAnE,GAAgGb,MAAM,CAACa,sBAAvG,GAAgIC,SAD9I;UAEHC,eAAe,EAAEf,MAAM,CAACgB,sBAAP,IAAiChB,MAAM,CAACgB,sBAAP,KAAkC,0BAAnE,GAAgGhB,MAAM,CAACgB,sBAAvG,GAAgIF,SAF9I;UAGHG,cAAc,EAAE;QAHb;MADJ,GAOFjB,MAAM,CAACkB,eAAP,KAA2B,qBAA3B,IAAoDlB,MAAM,CAACkB,eAAP,KAA2B,OAA/E,GACG,IADH,gBAGG,+EACI;QAAK,SAAS,EAAC,UAAf;QAA0B,KAAK,EAAE;UAAEC,KAAK,EAAEV,IAAT;UAAeW,MAAM,EAAEX;QAAvB;MAAjC,gBACI;QAAK,SAAS,EAAE,8BAA8BC,KAA9C;QAAqD,KAAK,EAAE;UAAEW,IAAI,EAAE;QAAR;MAA5D,EADJ,eAEI;QAAK,SAAS,EAAE,8BAA8BX,KAA9C;QAAqD,KAAK,EAAE;UAAEW,IAAI,EAAE;QAAR;MAA5D,EAFJ,eAGI;QACI,SAAS,wCAAiCX,KAAjC,uBADb;QAEI,KAAK,EAAE;UAAEY,WAAW,EAAEb,IAAI,GAAG;QAAtB;MAFX,EAHJ,eAOI;QAAK,SAAS,EAAE,sCAAsCC;MAAtD,EAPJ,eAQI;QAAK,SAAS,EAAE,0CAA0CA,KAA1D;QAAiE,KAAK,EAAE;UAAEa,GAAG,EAAE;QAAP;MAAxE,EARJ,eASI;QAAK,SAAS,EAAE,0CAA0Cb,KAA1D;QAAiE,KAAK,EAAE;UAAEc,MAAM,EAAE;QAAV;MAAxE,EATJ,CADJ,eAYI;QAAK,SAAS,EAAE,yCAAyCd,KAAzD;QACA,KAAK,EAAE;UAAES,KAAK,EAAEV,IAAI,GAAG,EAAhB;UAAoBW,MAAM,EAAEX,IAAI,GAAG;QAAnC;MADP,EAZJ,CAVD,CAAP;IA4BH;;;EA3CgBgB,iBAAA,CAAMC,S;;AA8C3B5B,MAAM,CAAC6B,SAAP,GAAmB;EACflB,IAAI,EAAEmB,qBAAA,CAAUC,MADD;EAEflB,SAAS,EAAEiB,qBAAA,CAAUE;AAFN,CAAnB;AAKA;;AACA,IAAMC,OAAO,GAAGjC,MAAhB;eACeiC,O"}
|
|
1
|
+
{"version":3,"file":"Loader.js","names":["loaderStyles","Loader","props","window","document","getElementById","style","createElement","setAttribute","innerHTML","head","appendChild","size","theme","themeType","backgroundImage","loadingBackgroundImage","undefined","backgroundColor","loadingBackgroundColor","backgroundSize","loadingHideLogo","width","height","left","borderWidth","top","bottom","React","Component","propTypes","PropTypes","number","string","_export"],"sources":["Loader.js"],"sourcesContent":["/**\n * Copyright 2018-2022 bluefox <dogafox@gmail.com>\n *\n * MIT License\n *\n **/\nimport React from 'react';\nimport PropTypes from 'prop-types';\n// import './loader.css'\nconst loaderStyles = `\n/**\n * Copyright 2018-2022 bluefox <dogafox@gmail.com>\n *\n * MIT License\n *\n **/\n\n.logo-background-light, .logo-background-colored {\n background: white;\n}\n.logo-background-dark, .logo-background-blue {\n background: black;\n}\n.logo-div {\n position: absolute;\n top: 50%;\n left: 50%;\n -ms-transform: translateX(-50%) translateY(-50%);\n -webkit-transform: translate(-50%,-50%);\n transform: translate(-50%,-50%);\n overflow: hidden;\n border-radius: 50%;\n z-index: 2;\n}\n.logo-border {\n /*border-color: #164477;*/\n border-top-color: #3399CC;\n border-left-color: #164477;\n border-bottom-color: #164477;\n border-right-color: #164477;\n border-radius: 50%;\n border-style: solid;\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n position: absolute;\n}\n.logo-top {\n position: absolute;\n width: 4.5%;\n height: 16%;\n top: 0;\n z-index: 2;\n}\n.logo-i {\n position: absolute;\n width: 14.5%;\n height: 60%;\n top: 20%;\n left: 42%;\n background: #3399CC;\n}\n.logo-i-top {\n position: absolute;\n width: 14.5%;\n height: 4%;\n left: 42%;\n background: #3399CC;\n border-radius: 100%;\n}\n.logo-back {\n width: 100%;\n height: 100%;\n z-index: 0;\n overflow: hidden;\n}\n@keyframes logo-grow {\n 0% {\n width: 230px;\n height: 230px;\n transform: translate(-50%,-50%) scale(1);\n opacity: 1\n }\n 99% {\n width: 230px;\n height: 230px;\n transform: translate(-50%,-50%) scale(10);\n opacity: 0;\n }\n 100% {\n width: 0;\n height: 0;\n opacity: 0;\n }\n}\n@keyframes logo-spin { 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } }\n@keyframes logo-color-inside-light {\n 0% {\n background: #FEFEFE;\n }\n 100% {\n background: #3399CC;\n }\n}\n@keyframes logo-color-inside-dark {\n 0% {\n background: #030303;\n }\n 100% {\n background: #3399CC;\n }\n}\n@keyframes logo-color-inside-colored {\n 0% {\n background: #FEFEFE;\n }\n 100% {\n background: #3399CC;\n }\n}\n@keyframes logo-color-inside-blue {\n 0% {\n background: #030303;\n }\n 100% {\n background: #3399CC;\n }\n}\n\n@keyframes logo-color-outside-light {\n 0% {\n border-color: #FEFEFE;\n }\n 100% {\n border-top-color: #3399CC;\n border-left-color: #164477;\n border-bottom-color: #164477;\n border-right-color: #164477;\n }\n}\n@keyframes logo-color-outside-dark {\n 0% {\n border-color: #040404;\n }\n 100% {\n border-top-color: #3399CC;\n border-left-color: #164477;\n border-bottom-color: #164477;\n border-right-color: #164477;\n }\n}\n@keyframes logo-color-outside-colored {\n 0% {\n border-color: #FEFEFE;\n }\n 100% {\n border-top-color: #3399CC;\n border-left-color: #164477;\n border-bottom-color: #164477;\n border-right-color: #164477;\n }\n}\n@keyframes logo-color-outside-blue {\n 0% {\n border-color: #040404;\n }\n 100% {\n border-top-color: #3399CC;\n border-left-color: #164477;\n border-bottom-color: #164477;\n border-right-color: #164477;\n }\n}\n\n.logo-animate-wait {\n animation: logo-color-outside 1.5s, logo-spin 1.5s linear infinite;\n}\n\n.logo-animate-grow-light {\n background: #DDD;\n}\n.logo-animate-grow-dark {\n background: #1d1d1d;\n}\n.logo-animate-grow-colored {\n background: #DDD;\n}\n.logo-animate-grow-blue {\n background: #1d1d1d;\n}\n\n.logo-animate-grow {\n display: inline-block;\n text-align: center;\n z-index: 1;\n top: 50%;\n left: 50%;\n -ms-transform: translateX(-50%) translateY(-50%);\n -webkit-transform: translate(-50%,-50%);\n transform: translate(-50%,-50%);\n width: 245px;\n height: 245px;\n border-radius: 50%;\n position: absolute;\n animation: logo-grow 1s 1 ease forwards;\n}\n\n.logo-animate-color-inside-light {\n animation: logo-color-inside-light 2.5s;\n}\n.logo-animate-color-inside-dark {\n animation: logo-color-inside-dark 2.5s;\n}\n.logo-animate-color-inside-colored {\n animation: logo-color-inside-colored 2.5s;\n}\n.logo-animate-color-inside-blue {\n animation: logo-color-inside-blue 2.5s;\n}\n\n.logo-animate-color-outside-light {\n animation: logo-color-outside-light 1.5s;\n}\n.logo-animate-color-outside-dark {\n animation: logo-color-outside-dark 1.5s;\n}\n.logo-animate-color-outside-colored {\n animation: logo-color-outside-colored 1.5s;\n}\n.logo-animate-color-outside-blue {\n animation: logo-color-outside-blue 1.5s;\n}\n`;\n\n/**\n * @typedef {object} LoaderProps\n * @property {string} [key] The key to identify this component.\n * @property {number} [size] The size in pixels of this loader.\n * @property {string} [themeType] The chosen theme type.\n * @property {string} [theme] The chosen theme.\n *\n * @extends {React.Component<LoaderProps>}\n */\nclass Loader extends React.Component {\n constructor(props) {\n super(props);\n\n if (!window.document.getElementById('loader-iobroker-component')) {\n const style = window.document.createElement('style');\n style.setAttribute('id', 'loader-iobroker-component');\n style.innerHTML = loaderStyles;\n window.document.head.appendChild(style);\n }\n }\n\n render() {\n const size = this.props.size || 234;\n const theme = this.props.themeType || this.props.theme || 'light';\n return <div className={'logo-back logo-background-' + theme}\n style={{\n backgroundImage: window.loadingBackgroundImage && window.loadingBackgroundImage !== '@@loginBackgroundImage@@' ? 'url(' + window.loadingBackgroundImage + ')' : undefined,\n backgroundColor: window.loadingBackgroundColor && window.loadingBackgroundColor !== '@@loginBackgroundColor@@' ? window.loadingBackgroundColor : undefined,\n backgroundSize: 'cover',\n }}\n >\n {window.loadingHideLogo === 'true' ?\n null\n :\n <>\n <div className=\"logo-div\" style={{ width: size, height: size }}>\n <div className={'logo-top logo-background-' + theme} style={{ left: '37%' }}/>\n <div className={'logo-top logo-background-' + theme} style={{ left: '57%' }}/>\n <div\n className={`logo-border logo-background-${theme} logo-animate-wait`}\n style={{ borderWidth: size * 0.132 }}\n />\n <div className={'logo-i logo-animate-color-inside-' + theme}/>\n <div className={'logo-i-top logo-animate-color-inside-' + theme} style={{ top: '18%' }}/>\n <div className={'logo-i-top logo-animate-color-inside-' + theme} style={{ bottom: '18%' }}/>\n </div>\n <div className={'logo-animate-grow logo-animate-grow-' + theme}\n style={{ width: size + 11, height: size + 11 }}\n />\n </>\n }\n </div>;\n }\n}\n\nLoader.propTypes = {\n size: PropTypes.number,\n themeType: PropTypes.string\n};\n\n/** @type {typeof Loader} */\nconst _export = Loader;\nexport default _export;"],"mappings":";;;;;;;;;;;;;;;;;;;AAMA;;AACA;;;;;;AACA;AACA,IAAMA,YAAY,otJAAlB;AAiOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACMC,M;;;;;EACF,gBAAYC,KAAZ,EAAmB;IAAA;;IAAA;IACf,0BAAMA,KAAN;;IAEA,IAAI,CAACC,MAAM,CAACC,QAAP,CAAgBC,cAAhB,CAA+B,2BAA/B,CAAL,EAAkE;MAC9D,IAAMC,KAAK,GAAGH,MAAM,CAACC,QAAP,CAAgBG,aAAhB,CAA8B,OAA9B,CAAd;MACAD,KAAK,CAACE,YAAN,CAAmB,IAAnB,EAAyB,2BAAzB;MACAF,KAAK,CAACG,SAAN,GAAkBT,YAAlB;MACAG,MAAM,CAACC,QAAP,CAAgBM,IAAhB,CAAqBC,WAArB,CAAiCL,KAAjC;IACH;;IARc;EASlB;;;;WAED,kBAAS;MACL,IAAMM,IAAI,GAAG,KAAKV,KAAL,CAAWU,IAAX,IAAmB,GAAhC;MACA,IAAMC,KAAK,GAAG,KAAKX,KAAL,CAAWY,SAAX,IAAwB,KAAKZ,KAAL,CAAWW,KAAnC,IAA4C,OAA1D;MACA,oBAAO;QAAK,SAAS,EAAE,+BAA+BA,KAA/C;QACH,KAAK,EAAE;UACHE,eAAe,EAAEZ,MAAM,CAACa,sBAAP,IAAiCb,MAAM,CAACa,sBAAP,KAAkC,0BAAnE,GAAgG,SAASb,MAAM,CAACa,sBAAhB,GAAyC,GAAzI,GAA+IC,SAD7J;UAEHC,eAAe,EAAEf,MAAM,CAACgB,sBAAP,IAAiChB,MAAM,CAACgB,sBAAP,KAAkC,0BAAnE,GAAgGhB,MAAM,CAACgB,sBAAvG,GAAgIF,SAF9I;UAGHG,cAAc,EAAE;QAHb;MADJ,GAOFjB,MAAM,CAACkB,eAAP,KAA2B,MAA3B,GACG,IADH,gBAGG,+EACI;QAAK,SAAS,EAAC,UAAf;QAA0B,KAAK,EAAE;UAAEC,KAAK,EAAEV,IAAT;UAAeW,MAAM,EAAEX;QAAvB;MAAjC,gBACI;QAAK,SAAS,EAAE,8BAA8BC,KAA9C;QAAqD,KAAK,EAAE;UAAEW,IAAI,EAAE;QAAR;MAA5D,EADJ,eAEI;QAAK,SAAS,EAAE,8BAA8BX,KAA9C;QAAqD,KAAK,EAAE;UAAEW,IAAI,EAAE;QAAR;MAA5D,EAFJ,eAGI;QACI,SAAS,wCAAiCX,KAAjC,uBADb;QAEI,KAAK,EAAE;UAAEY,WAAW,EAAEb,IAAI,GAAG;QAAtB;MAFX,EAHJ,eAOI;QAAK,SAAS,EAAE,sCAAsCC;MAAtD,EAPJ,eAQI;QAAK,SAAS,EAAE,0CAA0CA,KAA1D;QAAiE,KAAK,EAAE;UAAEa,GAAG,EAAE;QAAP;MAAxE,EARJ,eASI;QAAK,SAAS,EAAE,0CAA0Cb,KAA1D;QAAiE,KAAK,EAAE;UAAEc,MAAM,EAAE;QAAV;MAAxE,EATJ,CADJ,eAYI;QAAK,SAAS,EAAE,yCAAyCd,KAAzD;QACA,KAAK,EAAE;UAAES,KAAK,EAAEV,IAAI,GAAG,EAAhB;UAAoBW,MAAM,EAAEX,IAAI,GAAG;QAAnC;MADP,EAZJ,CAVD,CAAP;IA4BH;;;EA3CgBgB,iBAAA,CAAMC,S;;AA8C3B5B,MAAM,CAAC6B,SAAP,GAAmB;EACflB,IAAI,EAAEmB,qBAAA,CAAUC,MADD;EAEflB,SAAS,EAAEiB,qBAAA,CAAUE;AAFN,CAAnB;AAKA;;AACA,IAAMC,OAAO,GAAGjC,MAAhB;eACeiC,O"}
|
package/Components/Utils.js
CHANGED
|
@@ -179,12 +179,13 @@ var Utils = /*#__PURE__*/function () {
|
|
|
179
179
|
* @param {{ name: any; } | ioBroker.Languages | null } settings or language
|
|
180
180
|
* @param {{ language?: ioBroker.Languages; } } options
|
|
181
181
|
* @param {boolean} [isDesc] Set to true to get the description.
|
|
182
|
+
* @param {boolean} [noTrim] Allow to use spaces in name (by edit)
|
|
182
183
|
* @returns {string}
|
|
183
184
|
*/
|
|
184
185
|
|
|
185
186
|
}, {
|
|
186
187
|
key: "getObjectNameFromObj",
|
|
187
|
-
value: function getObjectNameFromObj(obj, settings, options, isDesc) {
|
|
188
|
+
value: function getObjectNameFromObj(obj, settings, options, isDesc, noTrim) {
|
|
188
189
|
var item = obj;
|
|
189
190
|
var text = obj && obj._id || '';
|
|
190
191
|
var attr = isDesc ? 'desc' : 'name';
|
|
@@ -222,7 +223,7 @@ var Utils = /*#__PURE__*/function () {
|
|
|
222
223
|
}
|
|
223
224
|
}
|
|
224
225
|
|
|
225
|
-
return text.trim();
|
|
226
|
+
return noTrim ? text : text.trim();
|
|
226
227
|
}
|
|
227
228
|
/**
|
|
228
229
|
* @param {ioBroker.PartialObject | ioBroker.ObjectCommon} obj
|
package/Components/Utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Utils.js","names":["NAMESPACE","days","months","QUALITY_BITS","SIGNATURES","JVBERi0","R0lGODdh","R0lGODlh","iVBORw0KGgo","PHN2Zw","Qk1","AAABAA","Utils","name","split","filter","item","map","word","toUpperCase","substring","toLowerCase","join","seconds","Math","floor","hours","minutes","text","I18n","t","objects","id","settings","options","isDesc","attr","language","common","window","sysLang","en","desc","de","ru","toString","replace","pos","lastIndexOf","CapitalWords","trim","obj","_id","forEnumId","hasOwnProperty","custom","user","subOrder","JSON","parse","stringify","order","subURLs","URLs","list","source","dest","result","Array","from","splice","removed","defaultEnabling","enabled","undefined","useCustom","useCommon","color","icon","s","style","length","startsWith","prefix","parts","location","pathname","match","words","i","z","ww","start","push","k","w","defaultValue","indexOf","slice","r","g","b","rgb","parseInt","parseFloat","isNaN","secs","angle","num","format","dateFormat","now","m","a","year","find","y","day","Date","abs","getTime","date","getDay","getDate","getMonth","key","p","href","target","rel","title","states","instanceId","noCommon","smartName","newSmartName","byON","smartType","getLanguage","nnn","_smartName","role","empty","nl","pl","it","fr","pt","es","e","el","document","createElement","value","body","appendChild","select","execCommand","removeChild","console","log","stopPropagation","preventDefault","fileName","bytes","units","u","toFixed","themeType","invert","invertedColor","invertColor","hex","bw","padStart","warn","mix","str","isArray","_toVal","tmp","x","arguments","themeName","vendorPrefix","_localStorage","localStorage","getItem","matchMedia","matches","setItem","themes","getThemeNames","newTheme","setThemeName","query","forEach","part","decodeURIComponent","f","pop","dateObj","mm","dd","getFullYear","v","getHours","getMinutes","getSeconds","getMilliseconds","round","d","h","url","open","extractHeader","header","lines","attrs","_header","line","doc","filename","json","setAttribute","encodeURIComponent","display","click","quality","object","ex","error","type","fetch","then","response","blob","Promise","resolve","reader","FileReader","onload","readAsDataURL","base64","signature","Object","keys"],"sources":["Utils.js"],"sourcesContent":["/**\n * Copyright 2018-2022 bluefox <dogafox@gmail.com>\n *\n * MIT License\n *\n **/\nimport React from 'react';\nimport I18n from '../i18n';\n\nconst NAMESPACE = 'material';\nconst days = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\nconst months = ['Jan', 'Feb', 'Mar', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\nconst QUALITY_BITS = {\n 0x00: '0x00 - good',\n\n 0x01: '0x01 - general problem',\n 0x02: '0x02 - no connection problem',\n\n 0x10: '0x10 - substitute value from controller',\n 0x20: '0x20 - substitute initial value',\n 0x40: '0x40 - substitute value from device or instance',\n 0x80: '0x80 - substitute value from sensor',\n\n 0x11: '0x11 - general problem by instance',\n 0x41: '0x41 - general problem by device',\n 0x81: '0x81 - general problem by sensor',\n\n 0x12: '0x12 - instance not connected',\n 0x42: '0x42 - device not connected',\n 0x82: '0x82 - sensor not connected',\n\n 0x44: '0x44 - device reports error',\n 0x84: '0x84 - sensor reports error',\n};\nconst SIGNATURES = {\n JVBERi0: 'pdf',\n R0lGODdh: 'gif',\n R0lGODlh: 'gif',\n iVBORw0KGgo: 'png',\n '/9j/': 'jpg',\n PHN2Zw: 'svg',\n Qk1: 'bmp',\n AAABAA: 'ico' // 00 00 01 00 according to https://en.wikipedia.org/wiki/List_of_file_signatures\n};\n\nclass Utils {\n static namespace = NAMESPACE;\n static INSTANCES = 'instances';\n static dateFormat = ['DD', 'MM'];\n static FORBIDDEN_CHARS = /[^._\\-/ :!#$%&()+=@^{}|~\\p{Ll}\\p{Lu}\\p{Nd}]+/gu;\n\n /**\n * Capitalize words.\n * @param {string | undefined} name\n * @returns {string}\n */\n static CapitalWords(name) {\n return (name || '').split(/[\\s_]/)\n .filter(item => item)\n .map(word => word ? word[0].toUpperCase() + word.substring(1).toLowerCase() : '')\n .join(' ');\n }\n\n static formatSeconds(seconds) {\n const days = Math.floor(seconds / (3600 * 24));\n seconds %= 3600 * 24;\n let hours = Math.floor(seconds / 3600);\n if (hours < 10) {\n hours = '0' + hours;\n }\n seconds %= 3600;\n let minutes = Math.floor(seconds / 60);\n if (minutes < 10) {\n minutes = '0' + minutes;\n }\n seconds %= 60;\n seconds = Math.floor(seconds);\n if (seconds < 10) {\n seconds = '0' + seconds;\n }\n let text = '';\n if (days) {\n text += `${days} ${I18n.t('ra_daysShortText')} `;\n }\n text += `${hours}:${minutes}:${seconds}`;\n\n return text;\n }\n\n /**\n * Get the name of the object by id from the name or description.\n * @param {Record<string, ioBroker.Object>} objects\n * @param {string} id\n * @param {{ name: any; } | ioBroker.Languages | null} settings\n * @param {{ language?: ioBroker.Languages; }} options\n * @param {boolean} [isDesc] Set to true to get the description.\n * @returns {string}\n */\n static getObjectName(objects, id, settings, options, isDesc) {\n let item = objects[id];\n let text = id;\n const attr = isDesc ? 'desc' : 'name';\n\n if (typeof settings === 'string' && !options) {\n options = {language: settings};\n settings = null;\n }\n\n options = options || {};\n if (!options.language) {\n options.language = (objects['system.config'] && objects['system.config'].common && objects['system.config'].common.language) || window.sysLang || 'en';\n }\n if (settings && settings.name) {\n text = settings.name;\n if (typeof text === 'object') {\n text = text[options.language] || text.en;\n }\n } else\n if (item && item.common && item.common[attr]) {\n text = item.common[attr];\n if (attr !== 'desc' && !text && item.common.desc) {\n text = item.common.desc;\n }\n if (typeof text === 'object') {\n text = text[options.language] || text.en || text.de || text.ru || '';\n }\n text = (text || '').toString().replace(/[_.]/g, ' ');\n\n if (text === text.toUpperCase()) {\n text = text[0] + text.substring(1).toLowerCase();\n }\n } else {\n let pos = id.lastIndexOf('.');\n text = id.substring(pos + 1).replace(/[_.]/g, ' ');\n text = Utils.CapitalWords(text);\n }\n\n return text.trim();\n }\n\n /**\n * Get the name of the object from the name or description.\n * @param {ioBroker.PartialObject} obj\n * @param {{ name: any; } | ioBroker.Languages | null } settings or language\n * @param {{ language?: ioBroker.Languages; } } options\n * @param {boolean} [isDesc] Set to true to get the description.\n * @returns {string}\n */\n static getObjectNameFromObj(obj, settings, options, isDesc) {\n let item = obj;\n let text = (obj && obj._id) || '';\n const attr = isDesc ? 'desc' : 'name';\n\n if (typeof settings === 'string' && !options) {\n options = {language: settings};\n settings = null;\n }\n\n options = options || {};\n\n if (settings && settings.name) {\n text = settings.name;\n if (typeof text === 'object') {\n text = text[options.language] || text.en;\n }\n } else\n if (item && item.common && item.common[attr]) {\n text = item.common[attr];\n if (attr !== 'desc' && !text && item.common.desc) {\n text = item.common.desc;\n }\n if (typeof text === 'object') {\n text = text[options.language] || text.en;\n }\n text = (text || '').toString().replace(/[_.]/g, ' ');\n\n if (text === text.toUpperCase()) {\n text = text[0] + text.substring(1).toLowerCase();\n }\n }\n return text.trim();\n }\n\n /**\n * @param {ioBroker.PartialObject | ioBroker.ObjectCommon} obj\n * @param {string} forEnumId\n * @param {{ user: string; }} options\n * @returns {string | null}\n */\n static getSettingsOrder(obj, forEnumId, options) {\n if (obj && obj.hasOwnProperty('common')) {\n obj = obj.common;\n }\n let settings;\n if (obj && obj.custom) {\n settings = (obj.custom || {})[NAMESPACE];\n const user = options.user || 'admin';\n if (settings && settings[user]) {\n if (forEnumId) {\n if (settings[user].subOrder && settings[user].subOrder[forEnumId]) {\n return JSON.parse(JSON.stringify(settings[user].subOrder[forEnumId]));\n }\n } else {\n if (settings[user].order) {\n return JSON.parse(JSON.stringify(settings[user].order));\n }\n }\n }\n }\n return null;\n }\n\n /**\n * @param {ioBroker.PartialObject | ioBroker.ObjectCommon} obj\n * @param {string} forEnumId\n * @param {{ user: string; }} options\n */\n static getSettingsCustomURLs(obj, forEnumId, options) {\n if (obj && obj.hasOwnProperty('common')) {\n obj = obj.common;\n }\n let settings;\n if (obj && obj.custom) {\n settings = (obj.custom || {})[NAMESPACE];\n const user = options.user || 'admin';\n if (settings && settings[user]) {\n if (forEnumId) {\n if (settings[user].subURLs && settings[user].subURLs[forEnumId]) {\n return JSON.parse(JSON.stringify(settings[user].subURLs[forEnumId]));\n }\n } else {\n if (settings[user].URLs) {\n return JSON.parse(JSON.stringify(settings[user].URLs));\n }\n }\n }\n }\n return null;\n }\n\n /**\n * Reorder the array items in list between source and dest.\n * @param {Iterable<any> | ArrayLike<any>} list\n * @param {number} source\n * @param {number} dest\n */\n static reorder(list, source, dest) {\n const result = Array.from(list);\n const [removed] = result.splice(source, 1);\n result.splice(dest, 0, removed);\n return result;\n };\n\n /**\n * @param {any} obj\n * @param {{ id: any; user: any; name: any; icon: any; color: any; language: ioBroker.Languages; }} options\n * @param {boolean} [defaultEnabling]\n */\n static getSettings(obj, options, defaultEnabling) {\n let settings;\n const id = (obj && obj._id) || (options && options.id);\n if (obj && obj.hasOwnProperty('common')) {\n obj = obj.common;\n }\n if (obj && obj.custom) {\n settings = obj.custom || {};\n settings = settings[NAMESPACE] && settings[NAMESPACE][options.user || 'admin'] ? JSON.parse(JSON.stringify(settings[NAMESPACE][options.user || 'admin'])) : {enabled: true};\n } else {\n settings = {enabled: defaultEnabling === undefined ? true : defaultEnabling, useCustom: false};\n }\n\n if (!settings.hasOwnProperty('enabled')) {\n settings.enabled = defaultEnabling === undefined ? true : defaultEnabling;\n }\n\n if (false && settings.useCommon) {\n if (obj.color) settings.color = obj.color;\n if (obj.icon) settings.icon = obj.icon;\n if (obj.name) settings.name = obj.name;\n } else {\n if (options) {\n if (!settings.name && options.name) settings.name = options.name;\n if (!settings.icon && options.icon) settings.icon = options.icon;\n if (!settings.color && options.color) settings.color = options.color;\n }\n\n if (obj) {\n if (!settings.color && obj.color) settings.color = obj.color;\n if (!settings.icon && obj.icon) settings.icon = obj.icon;\n if (!settings.name && obj.name) settings.name = obj.name;\n }\n }\n\n if (typeof settings.name === 'object') {\n settings.name = settings.name[options.language] || settings.name.en;\n\n settings.name = (settings.name || '').toString().replace(/_/g, ' ');\n\n if (settings.name === settings.name.toUpperCase()) {\n settings.name = settings.name[0] + settings.name.substring(1).toLowerCase();\n }\n }\n if (!settings.name && id) {\n let pos = id.lastIndexOf('.');\n settings.name = id.substring(pos + 1).replace(/[_.]/g, ' ');\n settings.name = (settings.name || '').toString().replace(/_/g, ' ');\n settings.name = Utils.CapitalWords(settings.name);\n }\n\n return settings;\n }\n\n /**\n * @param {any} obj\n * @param {any} settings\n * @param {{ user: any; language: ioBroker.Languages; }} options\n */\n static setSettings(obj, settings, options) {\n if (obj) {\n obj.common = obj.common || {};\n obj.common.custom = obj.common.custom || {};\n obj.common.custom[NAMESPACE] = obj.common.custom[NAMESPACE] || {};\n obj.common.custom[NAMESPACE][options.user || 'admin'] = settings;\n const s = obj.common.custom[NAMESPACE][options.user || 'admin'];\n if (s.useCommon) {\n if (s.color !== undefined) {\n obj.common.color = s.color;\n delete s.color;\n }\n if (s.icon !== undefined) {\n obj.common.icon = s.icon;\n delete s.icon;\n }\n if (s.name !== undefined) {\n if (typeof obj.common.name !== 'object') {\n obj.common.name = {};\n obj.common.name[options.language] = s.name;\n } else{\n obj.common.name[options.language] = s.name;\n }\n delete s.name;\n }\n }\n\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * Get the icon for the given settings.\n * @param {{ icon: string | undefined; name: string | undefined; prefix: string | undefined}} settings\n * @param {any} style\n * @returns {JSX.Element | null}\n */\n static getIcon(settings, style) {\n if (settings && settings.icon) {\n // If UTF-8 icon\n if (settings.icon.length <= 2) {\n return <span style={style || {}}>{settings.icon}</span>;\n } else\n if (settings.icon.startsWith('data:image')) {\n return <img alt={settings.name} src={settings.icon} style={style || {}}/>;\n } else { // may be later some changes for second type\n return <img alt={settings.name} src={(settings.prefix || '') + settings.icon} style={style || {}}/>;\n }\n }\n return null;\n }\n\n /**\n * Get the icon for the given object.\n * @param {string} id\n * @param {{ common: { icon: any; }; }} obj\n * @returns {string | null}\n */\n static getObjectIcon(id, obj) {\n // If id is Object\n if (typeof id === 'object') {\n obj = id;\n id = obj._id;\n }\n\n if (obj && obj.common && obj.common.icon) {\n let icon = obj.common.icon;\n // If UTF-8 icon\n if (typeof icon === 'string' && icon.length <= 2) {\n return icon;\n } else\n if (icon.startsWith('data:image')) {\n return icon;\n } else {\n const parts = id.split('.');\n if (parts[0] === 'system') {\n icon = 'adapter/' + parts[2] + (icon.startsWith('/') ? '' : '/') + icon;\n } else {\n icon = 'adapter/' + parts[0] + (icon.startsWith('/') ? '' : '/') + icon;\n }\n\n if (window.location.pathname.match(/adapter\\/[^/]+\\/[^/]+\\.html/)) {\n icon = '../../' + icon;\n } else if (window.location.pathname.match(/material\\/[.\\d]+/)) {\n icon = '../../' + icon;\n } else\n if (window.location.pathname.match(/material\\//)) {\n icon = '../' + icon;\n }\n return icon;\n }\n } else {\n return null;\n }\n }\n\n /**\n * Splits CamelCase into words.\n * @param {string | undefined} text\n * @returns {string}\n */\n static splitCamelCase(text) {\n if (false && text !== text.toUpperCase()) {\n const words = text.split(/\\s+/);\n for (let i = 0; i < words.length; i++) {\n let word = words[i];\n if (word.toLowerCase() !== word && word.toUpperCase() !== word) {\n let z = 0;\n const ww = [];\n let start = 0;\n while (z < word.length) {\n if (word[z].match(/[A-ZÜÄÖА-Я]/)) {\n ww.push(word.substring(start, z));\n start = z;\n }\n z++;\n }\n if (start !== z) {\n ww.push(word.substring(start, z));\n }\n for (let k = 0; k < ww.length; k++) {\n words.splice(i + k, 0, ww[k]);\n }\n i += ww.length;\n }\n }\n\n return words.map(w => {\n w = w.trim();\n if (w) {\n return w[0].toUpperCase() + w.substring(1).toLowerCase();\n }\n return '';\n }).join(' ');\n } else {\n return Utils.CapitalWords(text);\n }\n }\n\n /**\n * Check if the given color is bright.\n * https://stackoverflow.com/questions/35969656/how-can-i-generate-the-opposite-color-according-to-current-color\n * @param {string | null | undefined} color\n * @param {boolean} [defaultValue]\n * @returns {boolean}\n */\n static isUseBright(color, defaultValue) {\n if (color === null || color === undefined || color === '') {\n return defaultValue === undefined ? true : defaultValue;\n }\n color = color.toString();\n if (color.indexOf('#') === 0) {\n color = color.slice(1);\n }\n let r;\n let g;\n let b;\n\n const rgb = color.match(/^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?/i);\n if (rgb && rgb.length === 4) {\n r = parseInt(rgb[1], 10);\n g = parseInt(rgb[2], 10);\n b = parseInt(rgb[3], 10);\n } else {\n // convert 3-digit hex to 6-digits.\n if (color.length === 3) {\n color = color[0] + color[0] + color[1] + color[1] + color[2] + color[2];\n }\n if (color.length !== 6) {\n return false;\n }\n\n r = parseInt(color.slice(0, 2), 16);\n g = parseInt(color.slice(2, 4), 16);\n b = parseInt(color.slice(4, 6), 16);\n }\n\n // http://stackoverflow.com/a/3943023/112731\n return (r * 0.299 + g * 0.587 + b * 0.114) <= 186;\n };\n\n /**\n * Get the time string in the format 00:00.\n * @param {string | number} seconds\n */\n static getTimeString(seconds) {\n seconds = parseFloat(seconds);\n if (isNaN(seconds)) {\n return '--:--';\n }\n const hours = Math.floor(seconds / 3600);\n let minutes = Math.floor((seconds % 3600) / 60);\n let secs = seconds % 60;\n if (hours) {\n if (minutes < 10) minutes = '0' + minutes;\n if (secs < 10) secs = '0' + secs;\n return hours + ':' + minutes + ':' + secs;\n } else {\n if (secs < 10) secs = '0' + secs;\n return minutes + ':' + secs;\n }\n }\n\n /**\n * Gets the wind direction with the given angle (degrees).\n * @param {number} angle in degrees.\n * @returns {string | undefined}\n */\n static getWindDirection(angle) {\n if (angle >= 0 && angle < 11.25) {\n return 'N'\n } else if (angle >= 11.25 && angle < 33.75) {\n return 'NNE'\n } else if (angle >= 33.75 && angle < 56.25) {\n return 'NE'\n } else if (angle >= 56.25 && angle < 78.75) {\n return 'ENE'\n } else if (angle >= 78.75 && angle < 101.25) {\n return 'E'\n } else if (angle >= 101.25 && angle < 123.75) {\n return 'ESE'\n } else if (angle >= 123.75 && angle < 146.25) {\n return 'SE'\n } else if (angle >= 146.25 && angle < 168.75) {\n return 'SSE'\n } else if (angle >= 168.75 && angle < 191.25) {\n return 'S'\n } else if (angle >= 191.25 && angle < 213.75) {\n return 'SSW'\n } else if (angle >= 213.75 && angle < 236.25) {\n return 'SW'\n } else if (angle >= 236.25 && angle < 258.75) {\n return 'WSW'\n } else if (angle >= 258.75 && angle < 281.25) {\n return 'W'\n } else if (angle >= 281.25 && angle < 303.75) {\n return 'WNW'\n } else if (angle >= 303.75 && angle < 326.25) {\n return 'NW'\n } else if (angle >= 326.25 && angle < 348.75) {\n return 'NNW'\n } else if (angle >= 348.75) {\n return 'N'\n }\n }\n\n /**\n * Pad the given number with a zero if its not 2 digits long.\n * @param {string | number} num\n */\n static padding(num) {\n if (typeof num === 'string') {\n if (num.length < 2) {\n return '0' + num;\n } else {\n return num;\n }\n } else if (num < 10) {\n return '0' + num;\n } else {\n return num;\n }\n }\n\n /**\n * Sets the date format.\n * @param {string} format\n */\n static setDataFormat(format) {\n if (format) {\n Utils.dateFormat = format.toUpperCase().split(/[.-/]/);\n Utils.dateFormat.splice(Utils.dateFormat.indexOf('YYYY'), 1);\n }\n }\n\n /**\n * Converts the date to a string.\n * @param {string | number | Date} now\n * @returns {string}\n */\n static date2string(now) {\n if (typeof now === 'string') {\n now = now.trim();\n if (!now) return '';\n // only letters\n if (now.match(/^[\\w\\s]+$/)) {\n // Day of week\n return now;\n }\n let m = now.match(/(\\d{1,4})[-./](\\d{1,2})[-./](\\d{1,4})/);\n if (m) {\n let a = [parseInt(m[1], 10), parseInt(m[2], 10), parseInt(m[3], 10)];\n let year = a.find(y => y > 31);\n a.splice(a.indexOf(year), 1);\n let day = a.find(m => m > 12);\n if (day) {\n a.splice(a.indexOf(day), 1);\n now = new Date(year, a[0] - 1, day);\n } else {\n // MM DD\n if (Utils.dateFormat[0][0] === 'M' && Utils.dateFormat[1][0] === 'D') {\n now = new Date(year, a[0] - 1, a[1]);\n if (Math.abs(now.getTime - Date.now()) > 3600000 * 24 * 10) {\n now = new Date(year, a[1] - 1, a[0]);\n }\n } else\n // DD MM\n if (Utils.dateFormat[0][0] === 'D' && Utils.dateFormat[1][0] === 'M') {\n now = new Date(year, a[1] - 1, a[0]);\n if (Math.abs(now.getTime - Date.now()) > 3600000 * 24 * 10) {\n now = new Date(year, a[0] - 1, a[1]);\n }\n } else {\n now = new Date(now);\n }\n }\n } else {\n now = new Date(now);\n }\n } else {\n now = new Date(now);\n }\n\n let date = I18n.t('ra_dow_' + days[now.getDay()]).replace('ra_dow_', '');\n date += '. ' + now.getDate() + ' ' + I18n.t('ra_month_' + months[now.getMonth()]).replace('ra_month_', '');\n return date;\n }\n\n /**\n * Render a text as a link.\n * @param {string} text\n * @returns {string | JSX.Element[]}\n */\n static renderTextWithA(text) {\n let m = text.match(/<a [^<]+<\\/a>|<br\\/?>/);\n if (m) {\n const result = [];\n let key = 1;\n do {\n const p = text.split(m[0]);\n p[0] && result.push(<span key={'a' + (key++)}>{p[0]}</span>);\n\n if (m[0].startsWith('<br')) {\n result.push(<br key={'a' + (key++)} />);\n } else {\n let href = m[0].match(/href=\"([^\"]+)\"/) || m[0].match(/href='([^']+)'/);\n let target = m[0].match(/target=\"([^\"]+)\"/) || m[0].match(/target='([^']+)'/);\n let rel = m[0].match(/rel=\"([^\"]+)\"/) || m[0].match(/rel='([^']+)'/);\n const title = m[0].match(/>([^<]*)</);\n\n // eslint-disable-next-line\n result.push(<a key={'a' + (key++)} href={href ? href[1] : ''} target={target ? target[1] : '_blank'} rel={rel ? rel[1] : ''}>{title ? title[1] : ''}</a>);\n }\n\n text = p[1];\n\n m = text && text.match(/<a [^<]+<\\/a>|<br\\/?>/);\n if (!m) {\n p[1] && result.push(<span key={'a' + (key++)}>{p[1]}</span>);\n }\n } while (m);\n\n return result;\n } else {\n return text;\n }\n }\n\n /**\n * Get the smart name of the given state.\n * @param {Record<string, ioBroker.StateObject> | ioBroker.StateObject} states\n * @param {string} id\n * @param {string} instanceId\n * @param {boolean} [noCommon]\n */\n static getSmartName(states, id, instanceId, noCommon) {\n if (!id) {\n if (!noCommon) {\n if (!states.common) {\n return states.smartName;\n } else {\n if (states && !states.common) {\n return states.smartName;\n } else {\n return states.common.smartName;\n }\n }\n } else {\n if (states && !states.common) {\n return states.smartName;\n } else {\n return (states &&\n states.common &&\n states.common.custom &&\n states.common.custom[instanceId]) ?\n states.common.custom[instanceId].smartName : undefined;\n }\n }\n } else\n if (!noCommon) {\n return states[id].common.smartName;\n } else {\n return (states[id] &&\n states[id].common &&\n states[id].common.custom &&\n states[id].common.custom[instanceId]) ?\n states[id].common.custom[instanceId].smartName || null : null;\n }\n }\n\n /**\n * Get the smart name from a state.\n * @param {ioBroker.StateObject} obj\n * @param {string} instanceId\n * @param {boolean} [noCommon]\n */\n static getSmartNameFromObj(obj, instanceId, noCommon) {\n if (!noCommon) {\n if (!obj.common) {\n return obj.smartName;\n } else {\n if (obj && !obj.common) {\n return obj.smartName;\n } else {\n return obj.common.smartName;\n }\n }\n } else {\n if (obj && !obj.common) {\n return obj.smartName;\n } else {\n return (obj &&\n obj.common &&\n obj.common.custom &&\n obj.common.custom[instanceId]) ?\n obj.common.custom[instanceId].smartName : undefined;\n }\n }\n }\n\n /**\n * Enable smart name for a state.\n * @param {ioBroker.StateObject} obj\n * @param {string} instanceId\n * @param {boolean} [noCommon]\n */\n static enableSmartName(obj, instanceId, noCommon) {\n if (noCommon) {\n obj.common.custom = obj.common.custom || {};\n obj.common.custom[instanceId] = obj.common.custom[instanceId] || {};\n obj.common.custom[instanceId].smartName = {};\n } else {\n obj.common.smartName = {};\n }\n }\n\n /**\n * Completely remove smart name from a state.\n * @param {ioBroker.StateObject} obj\n * @param {string | number} instanceId\n * @param {boolean} [noCommon]\n */\n static removeSmartName(obj, instanceId, noCommon) {\n if (noCommon) {\n if (obj.common && obj.common.custom && obj.common.custom[instanceId]) {\n obj.common.custom[instanceId] = null;\n }\n } else {\n obj.common.smartName = null;\n }\n }\n\n /**\n * Update the smartname of a state.\n * @param {ioBroker.StateObject} obj\n * @param {string} newSmartName\n * @param {string | undefined} byON\n * @param {string | undefined} smartType\n * @param {string} instanceId\n * @param {boolean} [noCommon]\n */\n static updateSmartName(obj, newSmartName, byON, smartType, instanceId, noCommon) {\n const language = I18n.getLanguage();\n\n // convert Old format\n if (typeof obj.common.smartName === 'string') {\n const nnn = obj.common.smartName;\n obj.common.smartName = {};\n obj.common.smartName[language] = nnn;\n }\n\n // convert old settings\n if (obj.native && obj.native.byON) {\n delete obj.native.byON;\n let _smartName = obj.common.smartName;\n\n if (!_smartName || typeof _smartName !== 'object') {\n _smartName = {en: _smartName};\n _smartName[language] = _smartName.en;\n }\n obj.common.smartName = _smartName;\n }\n if (smartType !== undefined) {\n if (noCommon) {\n obj.common.custom = obj.common.custom || {};\n obj.common.custom[instanceId] = obj.common.custom[instanceId] || {};\n obj.common.custom[instanceId].smartName = obj.common.custom[instanceId].smartName || {};\n if (!smartType) {\n delete obj.common.custom[instanceId].smartName.smartType;\n } else {\n obj.common.custom[instanceId].smartName.smartType = smartType;\n }\n } else {\n obj.common.smartName = obj.common.smartName || {};\n if (!smartType) {\n delete obj.common.smartName.smartType;\n } else {\n obj.common.smartName.smartType = smartType;\n }\n\n }\n }\n if (byON !== undefined) {\n if (noCommon) {\n obj.common.custom = obj.common.custom || {};\n obj.common.custom[instanceId] = obj.common.custom[instanceId] || {};\n obj.common.custom[instanceId].smartName = obj.common.custom[instanceId].smartName || {};\n obj.common.custom[instanceId].smartName.byON = byON;\n } else {\n obj.common.smartName = obj.common.smartName || {};\n obj.common.smartName.byON = byON;\n }\n }\n if (newSmartName !== undefined) {\n let smartName;\n if (noCommon) {\n obj.common.custom = obj.common.custom || {};\n obj.common.custom[instanceId] = obj.common.custom[instanceId] || {};\n obj.common.custom[instanceId].smartName = obj.common.custom[instanceId].smartName || {};\n smartName = obj.common.custom[instanceId].smartName;\n } else {\n obj.common.smartName = obj.common.smartName || {};\n smartName = obj.common.smartName;\n }\n smartName[language] = newSmartName;\n\n // If smart name deleted\n if (smartName && (!smartName[language] ||\n (smartName[language] === obj.common.name &&\n (!obj.common.role || obj.common.role.indexOf('button') >= 0)))) {\n delete smartName[language];\n let empty = true;\n // Check if structure has any definitions\n for (const key in smartName) {\n if (smartName.hasOwnProperty(key)) {\n empty = false;\n break;\n }\n }\n // If empty => delete smartName completely\n if (empty) {\n if (noCommon) {\n if (obj.common.custom[instanceId].smartName.byON === undefined) {\n delete obj.common.custom[instanceId];\n } else {\n delete obj.common.custom[instanceId].en;\n delete obj.common.custom[instanceId].de;\n delete obj.common.custom[instanceId].ru;\n delete obj.common.custom[instanceId].nl;\n delete obj.common.custom[instanceId].pl;\n delete obj.common.custom[instanceId].it;\n delete obj.common.custom[instanceId].fr;\n delete obj.common.custom[instanceId].pt;\n delete obj.common.custom[instanceId].es;\n delete obj.common.custom[instanceId]['zh-cn'];\n }\n } else {\n if (obj.common.smartName.byON !== undefined) {\n delete obj.common.smartName.en;\n delete obj.common.smartName.de;\n delete obj.common.smartName.ru;\n delete obj.common.smartName.nl;\n delete obj.common.smartName.pl;\n delete obj.common.smartName.it;\n delete obj.common.smartName.fr;\n delete obj.common.smartName.pt;\n delete obj.common.smartName.es;\n delete obj.common.smartName['zh-cn'];\n } else {\n obj.common.smartName = null;\n }\n }\n }\n }\n }\n }\n\n /**\n * Disable the smart name of a state.\n * @param {ioBroker.StateObject} obj\n * @param {string} instanceId\n * @param {boolean} [noCommon]\n */\n static disableSmartName(obj, instanceId, noCommon) {\n if (noCommon) {\n obj.common.custom = obj.common.custom || {};\n obj.common.custom[instanceId] = obj.common.custom[instanceId] || {};\n obj.common.custom[instanceId].smartName = false;\n } else {\n obj.common.smartName = false;\n }\n }\n\n /**\n * Copy text to the clipboard.\n * @param {string} text\n * @param {Event} [e]\n */\n static copyToClipboard(text, e) {\n const el = window.document.createElement('textarea');\n el.value = text;\n window.document.body.appendChild(el);\n el.select();\n window.document.execCommand('copy');\n window.document.body.removeChild(el);\n console.log(text);\n e && e.stopPropagation();\n e && e.preventDefault();\n }\n\n /**\n * Gets the extension of a file name.\n * @param {string | null} [fileName] the file name.\n * @returns {string | null} The extension in lower case.\n */\n static getFileExtension(fileName) {\n const pos = (fileName || '').lastIndexOf('.');\n if (pos !== -1) {\n return fileName.substring(pos + 1).toLowerCase();\n } else {\n return null;\n }\n }\n\n /**\n * Format number of bytes as a string with B, KB, MB or GB.\n * The base for all calculations is 1024.\n * @param {number} bytes The number of bytes.\n * @returns {string} The formatted string (e.g. '723.5 KB')\n */\n static formatBytes(bytes) {\n if (Math.abs(bytes) < 1024) {\n return bytes + ' B';\n }\n\n const units = ['KB','MB','GB'];\n //const units = ['KiB','MiB','GiB','TiB','PiB','EiB','ZiB','YiB'];\n let u = -1;\n\n do {\n bytes /= 1024;\n ++u;\n } while (Math.abs(bytes) >= 1024 && u < units.length - 1);\n\n return bytes.toFixed(1) + ' ' + units[u];\n }\n\n /**\n * Invert the given color according to theme type to get the inverted text color for background\n * @param {string} color Color in the format '#rrggbb' or '#rgb' (or without hash)\n * @param {string} themeType theme type\n * @param {string} invert dark theme has light color in control or light theme has light color in control\n * @returns {string}\n */\n static getInvertedColor(color, themeType, invert) {\n if (!color) {\n return undefined;\n } else {\n const invertedColor = Utils.invertColor(color, true);\n if (invertedColor === '#FFFFFF' && (themeType === 'dark' || (invert && themeType === 'light'))) {\n return '#DDD';\n } else\n if (invertedColor === '#000000' && (themeType === 'light' || (invert && themeType === 'dark'))) {\n return '#222';\n } else {\n return undefined;\n }\n }\n }\n\n // Big thanks to: https://stackoverflow.com/questions/35969656/how-can-i-generate-the-opposite-color-according-to-current-color\n /**\n * Invert the given color\n * @param {string} hex Color in the format '#rrggbb' or '#rgb' (or without hash)\n * @param {boolean} bw Set to black or white.\n * @returns {string}\n */\n static invertColor(hex, bw) {\n if (hex === undefined || hex === null || hex === '' || typeof hex !== 'string') {\n return '';\n }\n if (hex.startsWith('rgba')) {\n const m = hex.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+),\\s*([.\\d]+)\\)/);\n if (m) {\n hex = parseInt(m[1], 10).toString(16).padStart(2, '0') +\n parseInt(m[2], 10).toString(16).padStart(2, '0') +\n parseInt(m[2], 10).toString(16).padStart(2, '0');\n }\n } else if (hex.startsWith('rgba')) {\n const m = hex.match(/rgb?\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)/);\n if (m) {\n hex = parseInt(m[1], 10).toString(16).padStart(2, '0') +\n parseInt(m[2], 10).toString(16).padStart(2, '0') +\n parseInt(m[2], 10).toString(16).padStart(2, '0');\n }\n } else\n if (hex.startsWith('#')) {\n hex = hex.slice(1);\n }\n // convert 3-digit hex to 6-digits.\n if (hex.length === 3) {\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\n }\n if (hex.length !== 6) {\n console.warn('Cannot invert color: ' + hex);\n return hex;\n }\n let r = parseInt(hex.slice(0, 2), 16);\n let g = parseInt(hex.slice(2, 4), 16);\n let b = parseInt(hex.slice(4, 6), 16);\n\n if (bw) {\n // http://stackoverflow.com/a/3943023/112731\n return (r * 0.299 + g * 0.587 + b * 0.114) > 186\n ? '#000000'\n : '#FFFFFF';\n }\n // invert color components\n r = (255 - r).toString(16);\n g = (255 - g).toString(16);\n b = (255 - b).toString(16);\n // pad each with zeros and return\n return '#' + r.padStart(2, '0') + g.padStart(2, '0') + b.padStart(2, '0');\n }\n\n // https://github.com/lukeed/clsx/blob/master/src/index.js\n // License\n // MIT © Luke Edwards\n /**\n * @private\n * @param {any} mix\n * @returns {string}\n */\n static _toVal(mix) {\n let k, y, str='';\n\n if (typeof mix === 'string' || typeof mix === 'number') {\n str += mix;\n } else if (typeof mix === 'object') {\n if (Array.isArray(mix)) {\n for (k=0; k < mix.length; k++) {\n if (mix[k]) {\n if ((y = Utils._toVal(mix[k]))) {\n str && (str += ' ');\n str += y;\n }\n }\n }\n } else {\n for (k in mix) {\n if (mix[k]) {\n str && (str += ' ');\n str += k;\n }\n }\n }\n }\n\n return str;\n }\n\n // https://github.com/lukeed/clsx/blob/master/src/index.js\n // License\n // MIT © Luke Edwards\n /**\n * Convert any object to a string with its values.\n * @returns {string}\n */\n static clsx () {\n let i = 0;\n let tmp;\n let x;\n let str = '';\n while (i < arguments.length) {\n if ((tmp = arguments[i++])) {\n if ((x = Utils._toVal(tmp))) {\n str && (str += ' ');\n str += x\n }\n }\n }\n return str;\n }\n\n /**\n * Get the current theme name (either from local storage or the browser settings).\n * @param {string} [themeName]\n * @returns {string}\n */\n static getThemeName(themeName = '') {\n if (window.vendorPrefix && window.vendorPrefix !== '@@vendorPrefix@@') {\n return window.vendorPrefix;\n }\n\n return themeName ? themeName : (window._localStorage || window.localStorage) && (window._localStorage || window.localStorage).getItem('App.themeName') ?\n (window._localStorage || window.localStorage).getItem('App.themeName') : window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'colored';\n }\n\n /**\n * Get the type of theme.\n * @param {string} [themeName]\n * @returns {'dark' | 'light'}\n */\n static getThemeType(themeName = '') {\n if (window.vendorPrefix && window.vendorPrefix !== '@@vendorPrefix@@') {\n return 'light';\n }\n\n themeName = themeName || ((window._localStorage || window.localStorage) && (window._localStorage || window.localStorage).getItem('App.themeName'));\n return themeName === 'dark' || themeName === 'blue' ? 'dark' : 'light';\n }\n\n /**\n * Set the theme name and theme type.\n * @param {string} themeName\n */\n static setThemeName(themeName) {\n if (window.vendorPrefix && window.vendorPrefix !== '@@vendorPrefix@@') {\n return; // ignore\n }\n (window._localStorage || window.localStorage).setItem('App.themeName', themeName);\n (window._localStorage || window.localStorage).setItem('App.theme', themeName === 'dark' || themeName === 'blue' ? 'dark' : 'light');\n }\n\n /**\n * Toggle the theme name between 'dark' and 'colored'.\n * @param {string | null} themeName\n * @returns {string} the new theme name.\n */\n static toggleTheme(themeName) {\n if (window.vendorPrefix && window.vendorPrefix !== '@@vendorPrefix@@') {\n return window.vendorPrefix;\n }\n themeName = themeName || ((window._localStorage || window.localStorage) && (window._localStorage || window.localStorage).getItem('App.themeName'));\n\n // dark => blue => colored => light => dark\n const themes = Utils.getThemeNames();\n const pos = themes.indexOf(themeName);\n let newTheme;\n if (pos !== -1) {\n newTheme = themes[(pos + 1) % themes.length];\n } else {\n newTheme = themes[0];\n }\n Utils.setThemeName(newTheme);\n\n return newTheme;\n }\n\n /**\n * Get the list of themes\n * @returns {array<string>} list of possible themes\n */\n static getThemeNames() {\n if (window.vendorPrefix && window.vendorPrefix !== '@@vendorPrefix@@') {\n return [window.vendorPrefix];\n }\n\n return ['light', 'dark', 'blue', 'colored'];\n }\n\n /**\n * Parse a query string into its parts.\n * @param {string} query\n * @returns {Record<string, string | boolean | number>}\n */\n static parseQuery(query) {\n query = (query || '').toString().replace(/^\\?/, '');\n /** @type {Record<string, string | boolean | number>} */\n const result = {};\n query.split('&').forEach(part => {\n part = part.trim();\n if (part) {\n const parts = part.split('=');\n const attr = decodeURIComponent(parts[0]).trim();\n if (parts.length > 1) {\n result[attr] = decodeURIComponent(parts[1]);\n if (result[attr] === 'true') {\n result[attr] = true;\n } else if (result[attr] === 'false') {\n result[attr] = false;\n } else {\n const f = parseFloat(result[attr]);\n if (f.toString() === result[attr]) {\n result[attr] = f;\n }\n }\n } else {\n result[attr] = true;\n }\n }\n });\n return result;\n }\n\n /**\n * Returns parent ID.\n * @param {string} id\n * @returns {string | null} parent ID or null if no parent\n */\n static getParentId(id) {\n const p = (id || '').toString().split('.');\n if (p.length > 1) {\n p.pop();\n return p.join('.');\n } else {\n return null;\n }\n }\n\n static formatDate(dateObj, dateFormat) {\n // format could be DD.MM.YYYY, YYYY.MM.DD or MM/DD/YYYY\n\n if (!dateObj) {\n return '';\n }\n\n let text;\n let mm = dateObj.getMonth() + 1;\n if (mm < 10) {\n mm = '0' + mm;\n }\n\n let dd = dateObj.getDate();\n if (dd < 10) {\n dd = '0' + dd;\n }\n\n if (dateFormat === 'MM/DD/YYYY') {\n text = mm + '/' + dd + '/' + dateObj.getFullYear();\n } else {\n text = dateObj.getFullYear() + '-' + mm + '-' + dd;\n }\n\n // time\n let v = dateObj.getHours();\n if (v < 10) {\n text += ' 0' + v;\n } else {\n text += ' ' + v;\n }\n v = dateObj.getMinutes();\n if (v < 10) {\n text += ':0' + v;\n } else {\n text += ':' + v;\n }\n\n v = dateObj.getSeconds();\n if (v < 10) {\n text += ':0' + v;\n } else {\n text += ':' + v;\n }\n\n v = dateObj.getMilliseconds();\n if (v < 10) {\n text += '.00' + v;\n } else if (v < 100) {\n text += '.0' + v;\n } else {\n text += '.' + v;\n }\n\n return text;\n }\n\n static formatTime(seconds) {\n if (seconds) {\n seconds = Math.round(seconds);\n const d = Math.floor(seconds / (3600 * 24));\n const h = Math.floor((seconds % (3600 * 24)) / 3600);\n const m = Math.floor((seconds % 3600) / 60);\n const s = seconds % 60;\n if (d) {\n return `${d}.${h.toString().padStart(2, '0')}:${m.toString().padStart(2, '0')}:${s.toString().padStart(2, '0')}`;\n } else if (h) {\n return `${h}:${m.toString().padStart(2, '0')}:${s.toString().padStart(2, '0')}`;\n } else {\n return `0:${m.toString().padStart(2, '0')}:${s.toString().padStart(2, '0')}`;\n }\n } else {\n return '0:00:00';\n }\n }\n\n static MDtext2link(text) {\n const m = text.match(/\\d+\\.\\)\\s/);\n if (m) {\n text = text.replace(m[0], m[0].replace(/\\s/, ' '));\n }\n\n return text.replace(/[^a-zA-Zа-яА-Я0-9]/g, '').trim().replace(/\\s/g, '').toLowerCase();\n }\n\n static openLink(url, target) {\n // replace IPv6 Address with [ipv6]:port\n url = url.replace(/\\/\\/([0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*)(:\\d+)?\\//i, '//[$1]$2/');\n\n if (target === 'this') {\n window.location = url;\n } else {\n window.open(url, target || '_blank');\n }\n }\n\n static MDgetTitle(text) {\n let {body, header} = Utils.extractHeader(text);\n if (!header.title) {\n // remove {docsify-bla}\n body = body.replace(/{[^}]*}/g, '');\n body = body.trim();\n const lines = body.replace(/\\r/g, '').split('\\n');\n for (let i = 0; i < lines.length; i++) {\n if (lines[i].startsWith('# ')) {\n return lines[i].substring(2).trim();\n }\n }\n return '';\n } else {\n return header.title;\n }\n }\n\n static MDextractHeader(text) {\n const attrs = {};\n if (text.substring(0, 3) === '---') {\n const pos = text.substring(3).indexOf('\\n---');\n if (pos !== -1) {\n const _header = text.substring(3, pos + 3);\n const lines = _header.replace(/\\r/g, '').split('\\n');\n lines.forEach(line => {\n if (!line.trim()) {\n return;\n }\n const pos = line.indexOf(':');\n if (pos !== -1) {\n const attr = line.substring(0, pos).trim();\n attrs[attr] = line.substring(pos + 1).trim();\n attrs[attr] = attrs[attr].replace(/^['\"]|['\"]$/g, '');\n if (attrs[attr] === 'true') {\n attrs[attr] = true;\n } else if (attrs[attr] === 'false') {\n attrs[attr] = false;\n } else if (parseFloat(attrs[attr]).toString() === attrs[attr]) {\n attrs[attr] = parseFloat(attrs[attr]);\n }\n } else {\n attrs[line.trim()] = true;\n }\n });\n text = text.substring(pos + 7);\n }\n }\n return {header: attrs, body: text};\n }\n\n static MDremoveDocsify(text) {\n const m = text.match(/{docsify-[^}]*}/g);\n if (m) {\n m.forEach(doc => text = text.replace(doc, ''));\n }\n return text;\n }\n\n /**\n * Generate the json file on the file for download.\n * @param {string} filename file name\n * @returns {object} json structure (not stringified)\n */\n static generateFile(filename, json) {\n let el = document.createElement('a');\n el.setAttribute('href', 'data:application/json;charset=utf-8,' + encodeURIComponent(JSON.stringify(json, null, 2)));\n el.setAttribute('download', filename);\n\n el.style.display = 'none';\n document.body.appendChild(el);\n\n el.click();\n\n document.body.removeChild(el);\n }\n\n /**\n * Convert quality code into text\n * @param {number} quality code\n * @returns {array<string>} lines that decode qulity\n */\n static quality2text(quality) {\n const custom = quality & 0xFFFF0000;\n const text = QUALITY_BITS[quality];\n let result;\n if (text) {\n result = [text];\n } else if (quality & 0x01) {\n result = [QUALITY_BITS[0x01], '0x' + (quality & (0xFFFF & ~1)).toString(16)];\n } else if (quality & 0x02) {\n result = [QUALITY_BITS[0x02], '0x' + (quality & (0xFFFF & ~2)).toString(16)];\n } else {\n result = ['0x' + quality.toString(16)];\n }\n if (custom) {\n result.push('0x' + (custom >> 16).toString(16).toUpperCase());\n }\n return result;\n }\n\n /**\n * Deep copy object\n * @param {object} object\n * @returns {object}\n */\n static clone(object) {\n return JSON.parse(JSON.stringify(object));\n }\n\n /**\n * Get states of object\n * @param {object} obj\n * @returns {object} states as an object in form {\"value1\": \"label1\", \"value2\": \"label2\"} or null\n */\n static getStates(obj) {\n let states = obj?.common?.states;\n if (states) {\n if (typeof states === 'string' && states[0] === '{') {\n try {\n states = JSON.parse(states);\n } catch (ex) {\n console.error(`Cannot parse states: ${states}`);\n states = null;\n }\n } else\n // if old format val1:text1;val2:text2\n if (typeof states === 'string') {\n const parts = states.split(';');\n states = {};\n for (let p = 0; p < parts.length; p++) {\n const s = parts[p].split(':');\n states[s[0]] = s[1];\n }\n } else if (Array.isArray(states)) {\n const result = {};\n if (obj.common.type === 'number') {\n states.forEach((value, key) => result[key] = value);\n } else\n if (obj.common.type === 'string') {\n states.forEach(value => result[value] = value);\n } else if (obj.common.type === 'boolean') {\n result['false'] = states[0];\n result['true'] = states[1];\n }\n\n return result;\n }\n }\n\n return states;\n }\n\n /**\n * Get svg file as text\n * @param {string} url URL of SVG file\n * @returns {object} Promise with \"data:image...\"\n */\n static getSvg(url) {\n return fetch(url)\n .then(response => response.blob())\n .then(blob => {\n return new Promise(resolve => {\n const reader = new FileReader();\n reader.onload = function() { // do not optimize this function. \"this\" is important.\n resolve(this.result);\n };\n reader.readAsDataURL(blob);\n });\n });\n }\n\n /**\n * Detect file xtension by its content\n * @param {string} base64 Base64 encoded binary file\n * @returns {string} Detected extension, like 'jpg'\n */\n static detectMimeType(base64) {\n const signature = Object.keys(SIGNATURES).find(s => base64.startsWith(s));\n return signature ? SIGNATURES[signature] : null;\n }\n}\n\nexport default Utils;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Utils.js","names":["NAMESPACE","days","months","QUALITY_BITS","SIGNATURES","JVBERi0","R0lGODdh","R0lGODlh","iVBORw0KGgo","PHN2Zw","Qk1","AAABAA","Utils","name","split","filter","item","map","word","toUpperCase","substring","toLowerCase","join","seconds","Math","floor","hours","minutes","text","I18n","t","objects","id","settings","options","isDesc","attr","language","common","window","sysLang","en","desc","de","ru","toString","replace","pos","lastIndexOf","CapitalWords","trim","obj","noTrim","_id","forEnumId","hasOwnProperty","custom","user","subOrder","JSON","parse","stringify","order","subURLs","URLs","list","source","dest","result","Array","from","splice","removed","defaultEnabling","enabled","undefined","useCustom","useCommon","color","icon","s","style","length","startsWith","prefix","parts","location","pathname","match","words","i","z","ww","start","push","k","w","defaultValue","indexOf","slice","r","g","b","rgb","parseInt","parseFloat","isNaN","secs","angle","num","format","dateFormat","now","m","a","year","find","y","day","Date","abs","getTime","date","getDay","getDate","getMonth","key","p","href","target","rel","title","states","instanceId","noCommon","smartName","newSmartName","byON","smartType","getLanguage","nnn","_smartName","role","empty","nl","pl","it","fr","pt","es","e","el","document","createElement","value","body","appendChild","select","execCommand","removeChild","console","log","stopPropagation","preventDefault","fileName","bytes","units","u","toFixed","themeType","invert","invertedColor","invertColor","hex","bw","padStart","warn","mix","str","isArray","_toVal","tmp","x","arguments","themeName","vendorPrefix","_localStorage","localStorage","getItem","matchMedia","matches","setItem","themes","getThemeNames","newTheme","setThemeName","query","forEach","part","decodeURIComponent","f","pop","dateObj","mm","dd","getFullYear","v","getHours","getMinutes","getSeconds","getMilliseconds","round","d","h","url","open","extractHeader","header","lines","attrs","_header","line","doc","filename","json","setAttribute","encodeURIComponent","display","click","quality","object","ex","error","type","fetch","then","response","blob","Promise","resolve","reader","FileReader","onload","readAsDataURL","base64","signature","Object","keys"],"sources":["Utils.js"],"sourcesContent":["/**\n * Copyright 2018-2022 bluefox <dogafox@gmail.com>\n *\n * MIT License\n *\n **/\nimport React from 'react';\nimport I18n from '../i18n';\n\nconst NAMESPACE = 'material';\nconst days = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\nconst months = ['Jan', 'Feb', 'Mar', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\nconst QUALITY_BITS = {\n 0x00: '0x00 - good',\n\n 0x01: '0x01 - general problem',\n 0x02: '0x02 - no connection problem',\n\n 0x10: '0x10 - substitute value from controller',\n 0x20: '0x20 - substitute initial value',\n 0x40: '0x40 - substitute value from device or instance',\n 0x80: '0x80 - substitute value from sensor',\n\n 0x11: '0x11 - general problem by instance',\n 0x41: '0x41 - general problem by device',\n 0x81: '0x81 - general problem by sensor',\n\n 0x12: '0x12 - instance not connected',\n 0x42: '0x42 - device not connected',\n 0x82: '0x82 - sensor not connected',\n\n 0x44: '0x44 - device reports error',\n 0x84: '0x84 - sensor reports error',\n};\nconst SIGNATURES = {\n JVBERi0: 'pdf',\n R0lGODdh: 'gif',\n R0lGODlh: 'gif',\n iVBORw0KGgo: 'png',\n '/9j/': 'jpg',\n PHN2Zw: 'svg',\n Qk1: 'bmp',\n AAABAA: 'ico' // 00 00 01 00 according to https://en.wikipedia.org/wiki/List_of_file_signatures\n};\n\nclass Utils {\n static namespace = NAMESPACE;\n static INSTANCES = 'instances';\n static dateFormat = ['DD', 'MM'];\n static FORBIDDEN_CHARS = /[^._\\-/ :!#$%&()+=@^{}|~\\p{Ll}\\p{Lu}\\p{Nd}]+/gu;\n\n /**\n * Capitalize words.\n * @param {string | undefined} name\n * @returns {string}\n */\n static CapitalWords(name) {\n return (name || '').split(/[\\s_]/)\n .filter(item => item)\n .map(word => word ? word[0].toUpperCase() + word.substring(1).toLowerCase() : '')\n .join(' ');\n }\n\n static formatSeconds(seconds) {\n const days = Math.floor(seconds / (3600 * 24));\n seconds %= 3600 * 24;\n let hours = Math.floor(seconds / 3600);\n if (hours < 10) {\n hours = '0' + hours;\n }\n seconds %= 3600;\n let minutes = Math.floor(seconds / 60);\n if (minutes < 10) {\n minutes = '0' + minutes;\n }\n seconds %= 60;\n seconds = Math.floor(seconds);\n if (seconds < 10) {\n seconds = '0' + seconds;\n }\n let text = '';\n if (days) {\n text += `${days} ${I18n.t('ra_daysShortText')} `;\n }\n text += `${hours}:${minutes}:${seconds}`;\n\n return text;\n }\n\n /**\n * Get the name of the object by id from the name or description.\n * @param {Record<string, ioBroker.Object>} objects\n * @param {string} id\n * @param {{ name: any; } | ioBroker.Languages | null} settings\n * @param {{ language?: ioBroker.Languages; }} options\n * @param {boolean} [isDesc] Set to true to get the description.\n * @returns {string}\n */\n static getObjectName(objects, id, settings, options, isDesc) {\n let item = objects[id];\n let text = id;\n const attr = isDesc ? 'desc' : 'name';\n\n if (typeof settings === 'string' && !options) {\n options = {language: settings};\n settings = null;\n }\n\n options = options || {};\n if (!options.language) {\n options.language = (objects['system.config'] && objects['system.config'].common && objects['system.config'].common.language) || window.sysLang || 'en';\n }\n if (settings && settings.name) {\n text = settings.name;\n if (typeof text === 'object') {\n text = text[options.language] || text.en;\n }\n } else\n if (item && item.common && item.common[attr]) {\n text = item.common[attr];\n if (attr !== 'desc' && !text && item.common.desc) {\n text = item.common.desc;\n }\n if (typeof text === 'object') {\n text = text[options.language] || text.en || text.de || text.ru || '';\n }\n text = (text || '').toString().replace(/[_.]/g, ' ');\n\n if (text === text.toUpperCase()) {\n text = text[0] + text.substring(1).toLowerCase();\n }\n } else {\n let pos = id.lastIndexOf('.');\n text = id.substring(pos + 1).replace(/[_.]/g, ' ');\n text = Utils.CapitalWords(text);\n }\n\n return text.trim();\n }\n\n /**\n * Get the name of the object from the name or description.\n * @param {ioBroker.PartialObject} obj\n * @param {{ name: any; } | ioBroker.Languages | null } settings or language\n * @param {{ language?: ioBroker.Languages; } } options\n * @param {boolean} [isDesc] Set to true to get the description.\n * @param {boolean} [noTrim] Allow to use spaces in name (by edit)\n * @returns {string}\n */\n static getObjectNameFromObj(obj, settings, options, isDesc, noTrim) {\n let item = obj;\n let text = (obj && obj._id) || '';\n const attr = isDesc ? 'desc' : 'name';\n\n if (typeof settings === 'string' && !options) {\n options = {language: settings};\n settings = null;\n }\n\n options = options || {};\n\n if (settings && settings.name) {\n text = settings.name;\n if (typeof text === 'object') {\n text = text[options.language] || text.en;\n }\n } else\n if (item && item.common && item.common[attr]) {\n text = item.common[attr];\n if (attr !== 'desc' && !text && item.common.desc) {\n text = item.common.desc;\n }\n if (typeof text === 'object') {\n text = text[options.language] || text.en;\n }\n text = (text || '').toString().replace(/[_.]/g, ' ');\n\n if (text === text.toUpperCase()) {\n text = text[0] + text.substring(1).toLowerCase();\n }\n }\n return noTrim ? text : text.trim();\n }\n\n /**\n * @param {ioBroker.PartialObject | ioBroker.ObjectCommon} obj\n * @param {string} forEnumId\n * @param {{ user: string; }} options\n * @returns {string | null}\n */\n static getSettingsOrder(obj, forEnumId, options) {\n if (obj && obj.hasOwnProperty('common')) {\n obj = obj.common;\n }\n let settings;\n if (obj && obj.custom) {\n settings = (obj.custom || {})[NAMESPACE];\n const user = options.user || 'admin';\n if (settings && settings[user]) {\n if (forEnumId) {\n if (settings[user].subOrder && settings[user].subOrder[forEnumId]) {\n return JSON.parse(JSON.stringify(settings[user].subOrder[forEnumId]));\n }\n } else {\n if (settings[user].order) {\n return JSON.parse(JSON.stringify(settings[user].order));\n }\n }\n }\n }\n return null;\n }\n\n /**\n * @param {ioBroker.PartialObject | ioBroker.ObjectCommon} obj\n * @param {string} forEnumId\n * @param {{ user: string; }} options\n */\n static getSettingsCustomURLs(obj, forEnumId, options) {\n if (obj && obj.hasOwnProperty('common')) {\n obj = obj.common;\n }\n let settings;\n if (obj && obj.custom) {\n settings = (obj.custom || {})[NAMESPACE];\n const user = options.user || 'admin';\n if (settings && settings[user]) {\n if (forEnumId) {\n if (settings[user].subURLs && settings[user].subURLs[forEnumId]) {\n return JSON.parse(JSON.stringify(settings[user].subURLs[forEnumId]));\n }\n } else {\n if (settings[user].URLs) {\n return JSON.parse(JSON.stringify(settings[user].URLs));\n }\n }\n }\n }\n return null;\n }\n\n /**\n * Reorder the array items in list between source and dest.\n * @param {Iterable<any> | ArrayLike<any>} list\n * @param {number} source\n * @param {number} dest\n */\n static reorder(list, source, dest) {\n const result = Array.from(list);\n const [removed] = result.splice(source, 1);\n result.splice(dest, 0, removed);\n return result;\n };\n\n /**\n * @param {any} obj\n * @param {{ id: any; user: any; name: any; icon: any; color: any; language: ioBroker.Languages; }} options\n * @param {boolean} [defaultEnabling]\n */\n static getSettings(obj, options, defaultEnabling) {\n let settings;\n const id = (obj && obj._id) || (options && options.id);\n if (obj && obj.hasOwnProperty('common')) {\n obj = obj.common;\n }\n if (obj && obj.custom) {\n settings = obj.custom || {};\n settings = settings[NAMESPACE] && settings[NAMESPACE][options.user || 'admin'] ? JSON.parse(JSON.stringify(settings[NAMESPACE][options.user || 'admin'])) : {enabled: true};\n } else {\n settings = {enabled: defaultEnabling === undefined ? true : defaultEnabling, useCustom: false};\n }\n\n if (!settings.hasOwnProperty('enabled')) {\n settings.enabled = defaultEnabling === undefined ? true : defaultEnabling;\n }\n\n if (false && settings.useCommon) {\n if (obj.color) settings.color = obj.color;\n if (obj.icon) settings.icon = obj.icon;\n if (obj.name) settings.name = obj.name;\n } else {\n if (options) {\n if (!settings.name && options.name) settings.name = options.name;\n if (!settings.icon && options.icon) settings.icon = options.icon;\n if (!settings.color && options.color) settings.color = options.color;\n }\n\n if (obj) {\n if (!settings.color && obj.color) settings.color = obj.color;\n if (!settings.icon && obj.icon) settings.icon = obj.icon;\n if (!settings.name && obj.name) settings.name = obj.name;\n }\n }\n\n if (typeof settings.name === 'object') {\n settings.name = settings.name[options.language] || settings.name.en;\n\n settings.name = (settings.name || '').toString().replace(/_/g, ' ');\n\n if (settings.name === settings.name.toUpperCase()) {\n settings.name = settings.name[0] + settings.name.substring(1).toLowerCase();\n }\n }\n if (!settings.name && id) {\n let pos = id.lastIndexOf('.');\n settings.name = id.substring(pos + 1).replace(/[_.]/g, ' ');\n settings.name = (settings.name || '').toString().replace(/_/g, ' ');\n settings.name = Utils.CapitalWords(settings.name);\n }\n\n return settings;\n }\n\n /**\n * @param {any} obj\n * @param {any} settings\n * @param {{ user: any; language: ioBroker.Languages; }} options\n */\n static setSettings(obj, settings, options) {\n if (obj) {\n obj.common = obj.common || {};\n obj.common.custom = obj.common.custom || {};\n obj.common.custom[NAMESPACE] = obj.common.custom[NAMESPACE] || {};\n obj.common.custom[NAMESPACE][options.user || 'admin'] = settings;\n const s = obj.common.custom[NAMESPACE][options.user || 'admin'];\n if (s.useCommon) {\n if (s.color !== undefined) {\n obj.common.color = s.color;\n delete s.color;\n }\n if (s.icon !== undefined) {\n obj.common.icon = s.icon;\n delete s.icon;\n }\n if (s.name !== undefined) {\n if (typeof obj.common.name !== 'object') {\n obj.common.name = {};\n obj.common.name[options.language] = s.name;\n } else{\n obj.common.name[options.language] = s.name;\n }\n delete s.name;\n }\n }\n\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * Get the icon for the given settings.\n * @param {{ icon: string | undefined; name: string | undefined; prefix: string | undefined}} settings\n * @param {any} style\n * @returns {JSX.Element | null}\n */\n static getIcon(settings, style) {\n if (settings && settings.icon) {\n // If UTF-8 icon\n if (settings.icon.length <= 2) {\n return <span style={style || {}}>{settings.icon}</span>;\n } else\n if (settings.icon.startsWith('data:image')) {\n return <img alt={settings.name} src={settings.icon} style={style || {}}/>;\n } else { // may be later some changes for second type\n return <img alt={settings.name} src={(settings.prefix || '') + settings.icon} style={style || {}}/>;\n }\n }\n return null;\n }\n\n /**\n * Get the icon for the given object.\n * @param {string} id\n * @param {{ common: { icon: any; }; }} obj\n * @returns {string | null}\n */\n static getObjectIcon(id, obj) {\n // If id is Object\n if (typeof id === 'object') {\n obj = id;\n id = obj._id;\n }\n\n if (obj && obj.common && obj.common.icon) {\n let icon = obj.common.icon;\n // If UTF-8 icon\n if (typeof icon === 'string' && icon.length <= 2) {\n return icon;\n } else\n if (icon.startsWith('data:image')) {\n return icon;\n } else {\n const parts = id.split('.');\n if (parts[0] === 'system') {\n icon = 'adapter/' + parts[2] + (icon.startsWith('/') ? '' : '/') + icon;\n } else {\n icon = 'adapter/' + parts[0] + (icon.startsWith('/') ? '' : '/') + icon;\n }\n\n if (window.location.pathname.match(/adapter\\/[^/]+\\/[^/]+\\.html/)) {\n icon = '../../' + icon;\n } else if (window.location.pathname.match(/material\\/[.\\d]+/)) {\n icon = '../../' + icon;\n } else\n if (window.location.pathname.match(/material\\//)) {\n icon = '../' + icon;\n }\n return icon;\n }\n } else {\n return null;\n }\n }\n\n /**\n * Splits CamelCase into words.\n * @param {string | undefined} text\n * @returns {string}\n */\n static splitCamelCase(text) {\n if (false && text !== text.toUpperCase()) {\n const words = text.split(/\\s+/);\n for (let i = 0; i < words.length; i++) {\n let word = words[i];\n if (word.toLowerCase() !== word && word.toUpperCase() !== word) {\n let z = 0;\n const ww = [];\n let start = 0;\n while (z < word.length) {\n if (word[z].match(/[A-ZÜÄÖА-Я]/)) {\n ww.push(word.substring(start, z));\n start = z;\n }\n z++;\n }\n if (start !== z) {\n ww.push(word.substring(start, z));\n }\n for (let k = 0; k < ww.length; k++) {\n words.splice(i + k, 0, ww[k]);\n }\n i += ww.length;\n }\n }\n\n return words.map(w => {\n w = w.trim();\n if (w) {\n return w[0].toUpperCase() + w.substring(1).toLowerCase();\n }\n return '';\n }).join(' ');\n } else {\n return Utils.CapitalWords(text);\n }\n }\n\n /**\n * Check if the given color is bright.\n * https://stackoverflow.com/questions/35969656/how-can-i-generate-the-opposite-color-according-to-current-color\n * @param {string | null | undefined} color\n * @param {boolean} [defaultValue]\n * @returns {boolean}\n */\n static isUseBright(color, defaultValue) {\n if (color === null || color === undefined || color === '') {\n return defaultValue === undefined ? true : defaultValue;\n }\n color = color.toString();\n if (color.indexOf('#') === 0) {\n color = color.slice(1);\n }\n let r;\n let g;\n let b;\n\n const rgb = color.match(/^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?/i);\n if (rgb && rgb.length === 4) {\n r = parseInt(rgb[1], 10);\n g = parseInt(rgb[2], 10);\n b = parseInt(rgb[3], 10);\n } else {\n // convert 3-digit hex to 6-digits.\n if (color.length === 3) {\n color = color[0] + color[0] + color[1] + color[1] + color[2] + color[2];\n }\n if (color.length !== 6) {\n return false;\n }\n\n r = parseInt(color.slice(0, 2), 16);\n g = parseInt(color.slice(2, 4), 16);\n b = parseInt(color.slice(4, 6), 16);\n }\n\n // http://stackoverflow.com/a/3943023/112731\n return (r * 0.299 + g * 0.587 + b * 0.114) <= 186;\n };\n\n /**\n * Get the time string in the format 00:00.\n * @param {string | number} seconds\n */\n static getTimeString(seconds) {\n seconds = parseFloat(seconds);\n if (isNaN(seconds)) {\n return '--:--';\n }\n const hours = Math.floor(seconds / 3600);\n let minutes = Math.floor((seconds % 3600) / 60);\n let secs = seconds % 60;\n if (hours) {\n if (minutes < 10) minutes = '0' + minutes;\n if (secs < 10) secs = '0' + secs;\n return hours + ':' + minutes + ':' + secs;\n } else {\n if (secs < 10) secs = '0' + secs;\n return minutes + ':' + secs;\n }\n }\n\n /**\n * Gets the wind direction with the given angle (degrees).\n * @param {number} angle in degrees.\n * @returns {string | undefined}\n */\n static getWindDirection(angle) {\n if (angle >= 0 && angle < 11.25) {\n return 'N'\n } else if (angle >= 11.25 && angle < 33.75) {\n return 'NNE'\n } else if (angle >= 33.75 && angle < 56.25) {\n return 'NE'\n } else if (angle >= 56.25 && angle < 78.75) {\n return 'ENE'\n } else if (angle >= 78.75 && angle < 101.25) {\n return 'E'\n } else if (angle >= 101.25 && angle < 123.75) {\n return 'ESE'\n } else if (angle >= 123.75 && angle < 146.25) {\n return 'SE'\n } else if (angle >= 146.25 && angle < 168.75) {\n return 'SSE'\n } else if (angle >= 168.75 && angle < 191.25) {\n return 'S'\n } else if (angle >= 191.25 && angle < 213.75) {\n return 'SSW'\n } else if (angle >= 213.75 && angle < 236.25) {\n return 'SW'\n } else if (angle >= 236.25 && angle < 258.75) {\n return 'WSW'\n } else if (angle >= 258.75 && angle < 281.25) {\n return 'W'\n } else if (angle >= 281.25 && angle < 303.75) {\n return 'WNW'\n } else if (angle >= 303.75 && angle < 326.25) {\n return 'NW'\n } else if (angle >= 326.25 && angle < 348.75) {\n return 'NNW'\n } else if (angle >= 348.75) {\n return 'N'\n }\n }\n\n /**\n * Pad the given number with a zero if its not 2 digits long.\n * @param {string | number} num\n */\n static padding(num) {\n if (typeof num === 'string') {\n if (num.length < 2) {\n return '0' + num;\n } else {\n return num;\n }\n } else if (num < 10) {\n return '0' + num;\n } else {\n return num;\n }\n }\n\n /**\n * Sets the date format.\n * @param {string} format\n */\n static setDataFormat(format) {\n if (format) {\n Utils.dateFormat = format.toUpperCase().split(/[.-/]/);\n Utils.dateFormat.splice(Utils.dateFormat.indexOf('YYYY'), 1);\n }\n }\n\n /**\n * Converts the date to a string.\n * @param {string | number | Date} now\n * @returns {string}\n */\n static date2string(now) {\n if (typeof now === 'string') {\n now = now.trim();\n if (!now) return '';\n // only letters\n if (now.match(/^[\\w\\s]+$/)) {\n // Day of week\n return now;\n }\n let m = now.match(/(\\d{1,4})[-./](\\d{1,2})[-./](\\d{1,4})/);\n if (m) {\n let a = [parseInt(m[1], 10), parseInt(m[2], 10), parseInt(m[3], 10)];\n let year = a.find(y => y > 31);\n a.splice(a.indexOf(year), 1);\n let day = a.find(m => m > 12);\n if (day) {\n a.splice(a.indexOf(day), 1);\n now = new Date(year, a[0] - 1, day);\n } else {\n // MM DD\n if (Utils.dateFormat[0][0] === 'M' && Utils.dateFormat[1][0] === 'D') {\n now = new Date(year, a[0] - 1, a[1]);\n if (Math.abs(now.getTime - Date.now()) > 3600000 * 24 * 10) {\n now = new Date(year, a[1] - 1, a[0]);\n }\n } else\n // DD MM\n if (Utils.dateFormat[0][0] === 'D' && Utils.dateFormat[1][0] === 'M') {\n now = new Date(year, a[1] - 1, a[0]);\n if (Math.abs(now.getTime - Date.now()) > 3600000 * 24 * 10) {\n now = new Date(year, a[0] - 1, a[1]);\n }\n } else {\n now = new Date(now);\n }\n }\n } else {\n now = new Date(now);\n }\n } else {\n now = new Date(now);\n }\n\n let date = I18n.t('ra_dow_' + days[now.getDay()]).replace('ra_dow_', '');\n date += '. ' + now.getDate() + ' ' + I18n.t('ra_month_' + months[now.getMonth()]).replace('ra_month_', '');\n return date;\n }\n\n /**\n * Render a text as a link.\n * @param {string} text\n * @returns {string | JSX.Element[]}\n */\n static renderTextWithA(text) {\n let m = text.match(/<a [^<]+<\\/a>|<br\\/?>/);\n if (m) {\n const result = [];\n let key = 1;\n do {\n const p = text.split(m[0]);\n p[0] && result.push(<span key={'a' + (key++)}>{p[0]}</span>);\n\n if (m[0].startsWith('<br')) {\n result.push(<br key={'a' + (key++)} />);\n } else {\n let href = m[0].match(/href=\"([^\"]+)\"/) || m[0].match(/href='([^']+)'/);\n let target = m[0].match(/target=\"([^\"]+)\"/) || m[0].match(/target='([^']+)'/);\n let rel = m[0].match(/rel=\"([^\"]+)\"/) || m[0].match(/rel='([^']+)'/);\n const title = m[0].match(/>([^<]*)</);\n\n // eslint-disable-next-line\n result.push(<a key={'a' + (key++)} href={href ? href[1] : ''} target={target ? target[1] : '_blank'} rel={rel ? rel[1] : ''}>{title ? title[1] : ''}</a>);\n }\n\n text = p[1];\n\n m = text && text.match(/<a [^<]+<\\/a>|<br\\/?>/);\n if (!m) {\n p[1] && result.push(<span key={'a' + (key++)}>{p[1]}</span>);\n }\n } while (m);\n\n return result;\n } else {\n return text;\n }\n }\n\n /**\n * Get the smart name of the given state.\n * @param {Record<string, ioBroker.StateObject> | ioBroker.StateObject} states\n * @param {string} id\n * @param {string} instanceId\n * @param {boolean} [noCommon]\n */\n static getSmartName(states, id, instanceId, noCommon) {\n if (!id) {\n if (!noCommon) {\n if (!states.common) {\n return states.smartName;\n } else {\n if (states && !states.common) {\n return states.smartName;\n } else {\n return states.common.smartName;\n }\n }\n } else {\n if (states && !states.common) {\n return states.smartName;\n } else {\n return (states &&\n states.common &&\n states.common.custom &&\n states.common.custom[instanceId]) ?\n states.common.custom[instanceId].smartName : undefined;\n }\n }\n } else\n if (!noCommon) {\n return states[id].common.smartName;\n } else {\n return (states[id] &&\n states[id].common &&\n states[id].common.custom &&\n states[id].common.custom[instanceId]) ?\n states[id].common.custom[instanceId].smartName || null : null;\n }\n }\n\n /**\n * Get the smart name from a state.\n * @param {ioBroker.StateObject} obj\n * @param {string} instanceId\n * @param {boolean} [noCommon]\n */\n static getSmartNameFromObj(obj, instanceId, noCommon) {\n if (!noCommon) {\n if (!obj.common) {\n return obj.smartName;\n } else {\n if (obj && !obj.common) {\n return obj.smartName;\n } else {\n return obj.common.smartName;\n }\n }\n } else {\n if (obj && !obj.common) {\n return obj.smartName;\n } else {\n return (obj &&\n obj.common &&\n obj.common.custom &&\n obj.common.custom[instanceId]) ?\n obj.common.custom[instanceId].smartName : undefined;\n }\n }\n }\n\n /**\n * Enable smart name for a state.\n * @param {ioBroker.StateObject} obj\n * @param {string} instanceId\n * @param {boolean} [noCommon]\n */\n static enableSmartName(obj, instanceId, noCommon) {\n if (noCommon) {\n obj.common.custom = obj.common.custom || {};\n obj.common.custom[instanceId] = obj.common.custom[instanceId] || {};\n obj.common.custom[instanceId].smartName = {};\n } else {\n obj.common.smartName = {};\n }\n }\n\n /**\n * Completely remove smart name from a state.\n * @param {ioBroker.StateObject} obj\n * @param {string | number} instanceId\n * @param {boolean} [noCommon]\n */\n static removeSmartName(obj, instanceId, noCommon) {\n if (noCommon) {\n if (obj.common && obj.common.custom && obj.common.custom[instanceId]) {\n obj.common.custom[instanceId] = null;\n }\n } else {\n obj.common.smartName = null;\n }\n }\n\n /**\n * Update the smartname of a state.\n * @param {ioBroker.StateObject} obj\n * @param {string} newSmartName\n * @param {string | undefined} byON\n * @param {string | undefined} smartType\n * @param {string} instanceId\n * @param {boolean} [noCommon]\n */\n static updateSmartName(obj, newSmartName, byON, smartType, instanceId, noCommon) {\n const language = I18n.getLanguage();\n\n // convert Old format\n if (typeof obj.common.smartName === 'string') {\n const nnn = obj.common.smartName;\n obj.common.smartName = {};\n obj.common.smartName[language] = nnn;\n }\n\n // convert old settings\n if (obj.native && obj.native.byON) {\n delete obj.native.byON;\n let _smartName = obj.common.smartName;\n\n if (!_smartName || typeof _smartName !== 'object') {\n _smartName = {en: _smartName};\n _smartName[language] = _smartName.en;\n }\n obj.common.smartName = _smartName;\n }\n if (smartType !== undefined) {\n if (noCommon) {\n obj.common.custom = obj.common.custom || {};\n obj.common.custom[instanceId] = obj.common.custom[instanceId] || {};\n obj.common.custom[instanceId].smartName = obj.common.custom[instanceId].smartName || {};\n if (!smartType) {\n delete obj.common.custom[instanceId].smartName.smartType;\n } else {\n obj.common.custom[instanceId].smartName.smartType = smartType;\n }\n } else {\n obj.common.smartName = obj.common.smartName || {};\n if (!smartType) {\n delete obj.common.smartName.smartType;\n } else {\n obj.common.smartName.smartType = smartType;\n }\n\n }\n }\n if (byON !== undefined) {\n if (noCommon) {\n obj.common.custom = obj.common.custom || {};\n obj.common.custom[instanceId] = obj.common.custom[instanceId] || {};\n obj.common.custom[instanceId].smartName = obj.common.custom[instanceId].smartName || {};\n obj.common.custom[instanceId].smartName.byON = byON;\n } else {\n obj.common.smartName = obj.common.smartName || {};\n obj.common.smartName.byON = byON;\n }\n }\n if (newSmartName !== undefined) {\n let smartName;\n if (noCommon) {\n obj.common.custom = obj.common.custom || {};\n obj.common.custom[instanceId] = obj.common.custom[instanceId] || {};\n obj.common.custom[instanceId].smartName = obj.common.custom[instanceId].smartName || {};\n smartName = obj.common.custom[instanceId].smartName;\n } else {\n obj.common.smartName = obj.common.smartName || {};\n smartName = obj.common.smartName;\n }\n smartName[language] = newSmartName;\n\n // If smart name deleted\n if (smartName && (!smartName[language] ||\n (smartName[language] === obj.common.name &&\n (!obj.common.role || obj.common.role.indexOf('button') >= 0)))) {\n delete smartName[language];\n let empty = true;\n // Check if structure has any definitions\n for (const key in smartName) {\n if (smartName.hasOwnProperty(key)) {\n empty = false;\n break;\n }\n }\n // If empty => delete smartName completely\n if (empty) {\n if (noCommon) {\n if (obj.common.custom[instanceId].smartName.byON === undefined) {\n delete obj.common.custom[instanceId];\n } else {\n delete obj.common.custom[instanceId].en;\n delete obj.common.custom[instanceId].de;\n delete obj.common.custom[instanceId].ru;\n delete obj.common.custom[instanceId].nl;\n delete obj.common.custom[instanceId].pl;\n delete obj.common.custom[instanceId].it;\n delete obj.common.custom[instanceId].fr;\n delete obj.common.custom[instanceId].pt;\n delete obj.common.custom[instanceId].es;\n delete obj.common.custom[instanceId]['zh-cn'];\n }\n } else {\n if (obj.common.smartName.byON !== undefined) {\n delete obj.common.smartName.en;\n delete obj.common.smartName.de;\n delete obj.common.smartName.ru;\n delete obj.common.smartName.nl;\n delete obj.common.smartName.pl;\n delete obj.common.smartName.it;\n delete obj.common.smartName.fr;\n delete obj.common.smartName.pt;\n delete obj.common.smartName.es;\n delete obj.common.smartName['zh-cn'];\n } else {\n obj.common.smartName = null;\n }\n }\n }\n }\n }\n }\n\n /**\n * Disable the smart name of a state.\n * @param {ioBroker.StateObject} obj\n * @param {string} instanceId\n * @param {boolean} [noCommon]\n */\n static disableSmartName(obj, instanceId, noCommon) {\n if (noCommon) {\n obj.common.custom = obj.common.custom || {};\n obj.common.custom[instanceId] = obj.common.custom[instanceId] || {};\n obj.common.custom[instanceId].smartName = false;\n } else {\n obj.common.smartName = false;\n }\n }\n\n /**\n * Copy text to the clipboard.\n * @param {string} text\n * @param {Event} [e]\n */\n static copyToClipboard(text, e) {\n const el = window.document.createElement('textarea');\n el.value = text;\n window.document.body.appendChild(el);\n el.select();\n window.document.execCommand('copy');\n window.document.body.removeChild(el);\n console.log(text);\n e && e.stopPropagation();\n e && e.preventDefault();\n }\n\n /**\n * Gets the extension of a file name.\n * @param {string | null} [fileName] the file name.\n * @returns {string | null} The extension in lower case.\n */\n static getFileExtension(fileName) {\n const pos = (fileName || '').lastIndexOf('.');\n if (pos !== -1) {\n return fileName.substring(pos + 1).toLowerCase();\n } else {\n return null;\n }\n }\n\n /**\n * Format number of bytes as a string with B, KB, MB or GB.\n * The base for all calculations is 1024.\n * @param {number} bytes The number of bytes.\n * @returns {string} The formatted string (e.g. '723.5 KB')\n */\n static formatBytes(bytes) {\n if (Math.abs(bytes) < 1024) {\n return bytes + ' B';\n }\n\n const units = ['KB','MB','GB'];\n //const units = ['KiB','MiB','GiB','TiB','PiB','EiB','ZiB','YiB'];\n let u = -1;\n\n do {\n bytes /= 1024;\n ++u;\n } while (Math.abs(bytes) >= 1024 && u < units.length - 1);\n\n return bytes.toFixed(1) + ' ' + units[u];\n }\n\n /**\n * Invert the given color according to theme type to get the inverted text color for background\n * @param {string} color Color in the format '#rrggbb' or '#rgb' (or without hash)\n * @param {string} themeType theme type\n * @param {string} invert dark theme has light color in control or light theme has light color in control\n * @returns {string}\n */\n static getInvertedColor(color, themeType, invert) {\n if (!color) {\n return undefined;\n } else {\n const invertedColor = Utils.invertColor(color, true);\n if (invertedColor === '#FFFFFF' && (themeType === 'dark' || (invert && themeType === 'light'))) {\n return '#DDD';\n } else\n if (invertedColor === '#000000' && (themeType === 'light' || (invert && themeType === 'dark'))) {\n return '#222';\n } else {\n return undefined;\n }\n }\n }\n\n // Big thanks to: https://stackoverflow.com/questions/35969656/how-can-i-generate-the-opposite-color-according-to-current-color\n /**\n * Invert the given color\n * @param {string} hex Color in the format '#rrggbb' or '#rgb' (or without hash)\n * @param {boolean} bw Set to black or white.\n * @returns {string}\n */\n static invertColor(hex, bw) {\n if (hex === undefined || hex === null || hex === '' || typeof hex !== 'string') {\n return '';\n }\n if (hex.startsWith('rgba')) {\n const m = hex.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+),\\s*([.\\d]+)\\)/);\n if (m) {\n hex = parseInt(m[1], 10).toString(16).padStart(2, '0') +\n parseInt(m[2], 10).toString(16).padStart(2, '0') +\n parseInt(m[2], 10).toString(16).padStart(2, '0');\n }\n } else if (hex.startsWith('rgba')) {\n const m = hex.match(/rgb?\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)/);\n if (m) {\n hex = parseInt(m[1], 10).toString(16).padStart(2, '0') +\n parseInt(m[2], 10).toString(16).padStart(2, '0') +\n parseInt(m[2], 10).toString(16).padStart(2, '0');\n }\n } else\n if (hex.startsWith('#')) {\n hex = hex.slice(1);\n }\n // convert 3-digit hex to 6-digits.\n if (hex.length === 3) {\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\n }\n if (hex.length !== 6) {\n console.warn('Cannot invert color: ' + hex);\n return hex;\n }\n let r = parseInt(hex.slice(0, 2), 16);\n let g = parseInt(hex.slice(2, 4), 16);\n let b = parseInt(hex.slice(4, 6), 16);\n\n if (bw) {\n // http://stackoverflow.com/a/3943023/112731\n return (r * 0.299 + g * 0.587 + b * 0.114) > 186\n ? '#000000'\n : '#FFFFFF';\n }\n // invert color components\n r = (255 - r).toString(16);\n g = (255 - g).toString(16);\n b = (255 - b).toString(16);\n // pad each with zeros and return\n return '#' + r.padStart(2, '0') + g.padStart(2, '0') + b.padStart(2, '0');\n }\n\n // https://github.com/lukeed/clsx/blob/master/src/index.js\n // License\n // MIT © Luke Edwards\n /**\n * @private\n * @param {any} mix\n * @returns {string}\n */\n static _toVal(mix) {\n let k, y, str='';\n\n if (typeof mix === 'string' || typeof mix === 'number') {\n str += mix;\n } else if (typeof mix === 'object') {\n if (Array.isArray(mix)) {\n for (k=0; k < mix.length; k++) {\n if (mix[k]) {\n if ((y = Utils._toVal(mix[k]))) {\n str && (str += ' ');\n str += y;\n }\n }\n }\n } else {\n for (k in mix) {\n if (mix[k]) {\n str && (str += ' ');\n str += k;\n }\n }\n }\n }\n\n return str;\n }\n\n // https://github.com/lukeed/clsx/blob/master/src/index.js\n // License\n // MIT © Luke Edwards\n /**\n * Convert any object to a string with its values.\n * @returns {string}\n */\n static clsx () {\n let i = 0;\n let tmp;\n let x;\n let str = '';\n while (i < arguments.length) {\n if ((tmp = arguments[i++])) {\n if ((x = Utils._toVal(tmp))) {\n str && (str += ' ');\n str += x\n }\n }\n }\n return str;\n }\n\n /**\n * Get the current theme name (either from local storage or the browser settings).\n * @param {string} [themeName]\n * @returns {string}\n */\n static getThemeName(themeName = '') {\n if (window.vendorPrefix && window.vendorPrefix !== '@@vendorPrefix@@') {\n return window.vendorPrefix;\n }\n\n return themeName ? themeName : (window._localStorage || window.localStorage) && (window._localStorage || window.localStorage).getItem('App.themeName') ?\n (window._localStorage || window.localStorage).getItem('App.themeName') : window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'colored';\n }\n\n /**\n * Get the type of theme.\n * @param {string} [themeName]\n * @returns {'dark' | 'light'}\n */\n static getThemeType(themeName = '') {\n if (window.vendorPrefix && window.vendorPrefix !== '@@vendorPrefix@@') {\n return 'light';\n }\n\n themeName = themeName || ((window._localStorage || window.localStorage) && (window._localStorage || window.localStorage).getItem('App.themeName'));\n return themeName === 'dark' || themeName === 'blue' ? 'dark' : 'light';\n }\n\n /**\n * Set the theme name and theme type.\n * @param {string} themeName\n */\n static setThemeName(themeName) {\n if (window.vendorPrefix && window.vendorPrefix !== '@@vendorPrefix@@') {\n return; // ignore\n }\n (window._localStorage || window.localStorage).setItem('App.themeName', themeName);\n (window._localStorage || window.localStorage).setItem('App.theme', themeName === 'dark' || themeName === 'blue' ? 'dark' : 'light');\n }\n\n /**\n * Toggle the theme name between 'dark' and 'colored'.\n * @param {string | null} themeName\n * @returns {string} the new theme name.\n */\n static toggleTheme(themeName) {\n if (window.vendorPrefix && window.vendorPrefix !== '@@vendorPrefix@@') {\n return window.vendorPrefix;\n }\n themeName = themeName || ((window._localStorage || window.localStorage) && (window._localStorage || window.localStorage).getItem('App.themeName'));\n\n // dark => blue => colored => light => dark\n const themes = Utils.getThemeNames();\n const pos = themes.indexOf(themeName);\n let newTheme;\n if (pos !== -1) {\n newTheme = themes[(pos + 1) % themes.length];\n } else {\n newTheme = themes[0];\n }\n Utils.setThemeName(newTheme);\n\n return newTheme;\n }\n\n /**\n * Get the list of themes\n * @returns {array<string>} list of possible themes\n */\n static getThemeNames() {\n if (window.vendorPrefix && window.vendorPrefix !== '@@vendorPrefix@@') {\n return [window.vendorPrefix];\n }\n\n return ['light', 'dark', 'blue', 'colored'];\n }\n\n /**\n * Parse a query string into its parts.\n * @param {string} query\n * @returns {Record<string, string | boolean | number>}\n */\n static parseQuery(query) {\n query = (query || '').toString().replace(/^\\?/, '');\n /** @type {Record<string, string | boolean | number>} */\n const result = {};\n query.split('&').forEach(part => {\n part = part.trim();\n if (part) {\n const parts = part.split('=');\n const attr = decodeURIComponent(parts[0]).trim();\n if (parts.length > 1) {\n result[attr] = decodeURIComponent(parts[1]);\n if (result[attr] === 'true') {\n result[attr] = true;\n } else if (result[attr] === 'false') {\n result[attr] = false;\n } else {\n const f = parseFloat(result[attr]);\n if (f.toString() === result[attr]) {\n result[attr] = f;\n }\n }\n } else {\n result[attr] = true;\n }\n }\n });\n return result;\n }\n\n /**\n * Returns parent ID.\n * @param {string} id\n * @returns {string | null} parent ID or null if no parent\n */\n static getParentId(id) {\n const p = (id || '').toString().split('.');\n if (p.length > 1) {\n p.pop();\n return p.join('.');\n } else {\n return null;\n }\n }\n\n static formatDate(dateObj, dateFormat) {\n // format could be DD.MM.YYYY, YYYY.MM.DD or MM/DD/YYYY\n\n if (!dateObj) {\n return '';\n }\n\n let text;\n let mm = dateObj.getMonth() + 1;\n if (mm < 10) {\n mm = '0' + mm;\n }\n\n let dd = dateObj.getDate();\n if (dd < 10) {\n dd = '0' + dd;\n }\n\n if (dateFormat === 'MM/DD/YYYY') {\n text = mm + '/' + dd + '/' + dateObj.getFullYear();\n } else {\n text = dateObj.getFullYear() + '-' + mm + '-' + dd;\n }\n\n // time\n let v = dateObj.getHours();\n if (v < 10) {\n text += ' 0' + v;\n } else {\n text += ' ' + v;\n }\n v = dateObj.getMinutes();\n if (v < 10) {\n text += ':0' + v;\n } else {\n text += ':' + v;\n }\n\n v = dateObj.getSeconds();\n if (v < 10) {\n text += ':0' + v;\n } else {\n text += ':' + v;\n }\n\n v = dateObj.getMilliseconds();\n if (v < 10) {\n text += '.00' + v;\n } else if (v < 100) {\n text += '.0' + v;\n } else {\n text += '.' + v;\n }\n\n return text;\n }\n\n static formatTime(seconds) {\n if (seconds) {\n seconds = Math.round(seconds);\n const d = Math.floor(seconds / (3600 * 24));\n const h = Math.floor((seconds % (3600 * 24)) / 3600);\n const m = Math.floor((seconds % 3600) / 60);\n const s = seconds % 60;\n if (d) {\n return `${d}.${h.toString().padStart(2, '0')}:${m.toString().padStart(2, '0')}:${s.toString().padStart(2, '0')}`;\n } else if (h) {\n return `${h}:${m.toString().padStart(2, '0')}:${s.toString().padStart(2, '0')}`;\n } else {\n return `0:${m.toString().padStart(2, '0')}:${s.toString().padStart(2, '0')}`;\n }\n } else {\n return '0:00:00';\n }\n }\n\n static MDtext2link(text) {\n const m = text.match(/\\d+\\.\\)\\s/);\n if (m) {\n text = text.replace(m[0], m[0].replace(/\\s/, ' '));\n }\n\n return text.replace(/[^a-zA-Zа-яА-Я0-9]/g, '').trim().replace(/\\s/g, '').toLowerCase();\n }\n\n static openLink(url, target) {\n // replace IPv6 Address with [ipv6]:port\n url = url.replace(/\\/\\/([0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*)(:\\d+)?\\//i, '//[$1]$2/');\n\n if (target === 'this') {\n window.location = url;\n } else {\n window.open(url, target || '_blank');\n }\n }\n\n static MDgetTitle(text) {\n let {body, header} = Utils.extractHeader(text);\n if (!header.title) {\n // remove {docsify-bla}\n body = body.replace(/{[^}]*}/g, '');\n body = body.trim();\n const lines = body.replace(/\\r/g, '').split('\\n');\n for (let i = 0; i < lines.length; i++) {\n if (lines[i].startsWith('# ')) {\n return lines[i].substring(2).trim();\n }\n }\n return '';\n } else {\n return header.title;\n }\n }\n\n static MDextractHeader(text) {\n const attrs = {};\n if (text.substring(0, 3) === '---') {\n const pos = text.substring(3).indexOf('\\n---');\n if (pos !== -1) {\n const _header = text.substring(3, pos + 3);\n const lines = _header.replace(/\\r/g, '').split('\\n');\n lines.forEach(line => {\n if (!line.trim()) {\n return;\n }\n const pos = line.indexOf(':');\n if (pos !== -1) {\n const attr = line.substring(0, pos).trim();\n attrs[attr] = line.substring(pos + 1).trim();\n attrs[attr] = attrs[attr].replace(/^['\"]|['\"]$/g, '');\n if (attrs[attr] === 'true') {\n attrs[attr] = true;\n } else if (attrs[attr] === 'false') {\n attrs[attr] = false;\n } else if (parseFloat(attrs[attr]).toString() === attrs[attr]) {\n attrs[attr] = parseFloat(attrs[attr]);\n }\n } else {\n attrs[line.trim()] = true;\n }\n });\n text = text.substring(pos + 7);\n }\n }\n return {header: attrs, body: text};\n }\n\n static MDremoveDocsify(text) {\n const m = text.match(/{docsify-[^}]*}/g);\n if (m) {\n m.forEach(doc => text = text.replace(doc, ''));\n }\n return text;\n }\n\n /**\n * Generate the json file on the file for download.\n * @param {string} filename file name\n * @returns {object} json structure (not stringified)\n */\n static generateFile(filename, json) {\n let el = document.createElement('a');\n el.setAttribute('href', 'data:application/json;charset=utf-8,' + encodeURIComponent(JSON.stringify(json, null, 2)));\n el.setAttribute('download', filename);\n\n el.style.display = 'none';\n document.body.appendChild(el);\n\n el.click();\n\n document.body.removeChild(el);\n }\n\n /**\n * Convert quality code into text\n * @param {number} quality code\n * @returns {array<string>} lines that decode qulity\n */\n static quality2text(quality) {\n const custom = quality & 0xFFFF0000;\n const text = QUALITY_BITS[quality];\n let result;\n if (text) {\n result = [text];\n } else if (quality & 0x01) {\n result = [QUALITY_BITS[0x01], '0x' + (quality & (0xFFFF & ~1)).toString(16)];\n } else if (quality & 0x02) {\n result = [QUALITY_BITS[0x02], '0x' + (quality & (0xFFFF & ~2)).toString(16)];\n } else {\n result = ['0x' + quality.toString(16)];\n }\n if (custom) {\n result.push('0x' + (custom >> 16).toString(16).toUpperCase());\n }\n return result;\n }\n\n /**\n * Deep copy object\n * @param {object} object\n * @returns {object}\n */\n static clone(object) {\n return JSON.parse(JSON.stringify(object));\n }\n\n /**\n * Get states of object\n * @param {object} obj\n * @returns {object} states as an object in form {\"value1\": \"label1\", \"value2\": \"label2\"} or null\n */\n static getStates(obj) {\n let states = obj?.common?.states;\n if (states) {\n if (typeof states === 'string' && states[0] === '{') {\n try {\n states = JSON.parse(states);\n } catch (ex) {\n console.error(`Cannot parse states: ${states}`);\n states = null;\n }\n } else\n // if old format val1:text1;val2:text2\n if (typeof states === 'string') {\n const parts = states.split(';');\n states = {};\n for (let p = 0; p < parts.length; p++) {\n const s = parts[p].split(':');\n states[s[0]] = s[1];\n }\n } else if (Array.isArray(states)) {\n const result = {};\n if (obj.common.type === 'number') {\n states.forEach((value, key) => result[key] = value);\n } else\n if (obj.common.type === 'string') {\n states.forEach(value => result[value] = value);\n } else if (obj.common.type === 'boolean') {\n result['false'] = states[0];\n result['true'] = states[1];\n }\n\n return result;\n }\n }\n\n return states;\n }\n\n /**\n * Get svg file as text\n * @param {string} url URL of SVG file\n * @returns {object} Promise with \"data:image...\"\n */\n static getSvg(url) {\n return fetch(url)\n .then(response => response.blob())\n .then(blob => {\n return new Promise(resolve => {\n const reader = new FileReader();\n reader.onload = function() { // do not optimize this function. \"this\" is important.\n resolve(this.result);\n };\n reader.readAsDataURL(blob);\n });\n });\n }\n\n /**\n * Detect file xtension by its content\n * @param {string} base64 Base64 encoded binary file\n * @returns {string} Detected extension, like 'jpg'\n */\n static detectMimeType(base64) {\n const signature = Object.keys(SIGNATURES).find(s => base64.startsWith(s));\n return signature ? SIGNATURES[signature] : null;\n }\n}\n\nexport default Utils;\n"],"mappings":"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"}
|
package/README.md
CHANGED
|
@@ -641,7 +641,10 @@ If you still have questions, try to find an answer [here](https://mui.com/guides
|
|
|
641
641
|
-->
|
|
642
642
|
|
|
643
643
|
## Changelog
|
|
644
|
-
### 3.1.
|
|
644
|
+
### 3.1.15 (2022-06-27)
|
|
645
|
+
* (bluefox) Allow to use spaces in name
|
|
646
|
+
|
|
647
|
+
### 3.1.14 (2022-06-23)
|
|
645
648
|
* (bluefox) Added translations
|
|
646
649
|
|
|
647
650
|
### 3.1.11 (2022-06-22)
|
package/i18n/de.json
CHANGED
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"ra_Toggle view mode": "Ansichtsmodus umschalten",
|
|
66
66
|
"ra_Root": "Anfang",
|
|
67
67
|
"ra_Back to %s": "Zurück zu %s",
|
|
68
|
-
"ra_Place your files here or click here to open the browse dialog": "
|
|
68
|
+
"ra_Place your files here or click here to open the browse dialog": "Die Dateien hier platzieren oder hier klicken, um den Suchdialog zu öffnen",
|
|
69
69
|
"ra_If no file will be created in the folder, it will disappear after the browser closed": "Wenn im Ordner keine Datei erstellt wird, verschwindet dieser nach dem Schließen des Browsers",
|
|
70
70
|
"ra_Folder name": "Ordnernamen",
|
|
71
71
|
"ra_Create new folder in %s": "Neuen Ordner in \"%s\" erstellen",
|