@iobroker/adapter-react-v5 3.4.3 → 3.4.4
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/Utils.d.ts +0 -32
- package/Components/Utils.js +2 -123
- package/Components/Utils.js.map +1 -1
- package/Components/copy-to-clipboard.js +36 -35
- package/Components/copy-to-clipboard.js.map +1 -1
- package/README.md +2 -2
- package/package.json +1 -1
package/Components/Utils.d.ts
CHANGED
|
@@ -200,40 +200,8 @@ declare class Utils {
|
|
|
200
200
|
* @param {boolean} [noCommon]
|
|
201
201
|
*/
|
|
202
202
|
static disableSmartName(obj: ioBroker.StateObject, instanceId: string, noCommon?: boolean): void;
|
|
203
|
-
/**
|
|
204
|
-
* MIT License
|
|
205
|
-
*
|
|
206
|
-
* Copyright (c) 2017 sudodoki <smd.deluzion@gmail.com>
|
|
207
|
-
*
|
|
208
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
209
|
-
* of this software and associated documentation files (the "Software"), to deal
|
|
210
|
-
* in the Software without restriction, including without limitation the rights
|
|
211
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
212
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
213
|
-
* furnished to do so, subject to the following conditions:
|
|
214
|
-
*
|
|
215
|
-
* The above copyright notice and this permission notice shall be included in all
|
|
216
|
-
* copies or substantial portions of the Software.
|
|
217
|
-
*
|
|
218
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
219
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
220
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
221
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
222
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
223
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
224
|
-
* SOFTWARE.
|
|
225
|
-
*/
|
|
226
|
-
static _toggleSelection(): () => void;
|
|
227
|
-
/**
|
|
228
|
-
* MIT License
|
|
229
|
-
*
|
|
230
|
-
* Copyright (c) 2017 sudodoki <smd.deluzion@gmail.com>
|
|
231
|
-
*
|
|
232
|
-
* Text see above
|
|
233
|
-
*/
|
|
234
203
|
/**
|
|
235
204
|
* Copy text to the clipboard.
|
|
236
|
-
* Coped from copy-to-clipboard module:
|
|
237
205
|
* @param {string} text
|
|
238
206
|
* @param {Event} [e]
|
|
239
207
|
*/
|
package/Components/Utils.js
CHANGED
|
@@ -5,13 +5,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports["default"] = void 0;
|
|
8
|
-
var _readOnlyError2 = _interopRequireDefault(require("@babel/runtime/helpers/readOnlyError"));
|
|
9
8
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
9
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
11
10
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
12
11
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
12
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
14
13
|
var _react = _interopRequireDefault(require("react"));
|
|
14
|
+
var _copyToClipboard = _interopRequireDefault(require("./copy-to-clipboard"));
|
|
15
15
|
var _i18n = _interopRequireDefault(require("../i18n"));
|
|
16
16
|
/**
|
|
17
17
|
* Copyright 2018-2022 bluefox <dogafox@gmail.com>
|
|
@@ -980,74 +980,8 @@ var Utils = /*#__PURE__*/function () {
|
|
|
980
980
|
}
|
|
981
981
|
}
|
|
982
982
|
|
|
983
|
-
// copied from https://github.com/sudodoki/toggle-selection
|
|
984
|
-
/**
|
|
985
|
-
* MIT License
|
|
986
|
-
*
|
|
987
|
-
* Copyright (c) 2017 sudodoki <smd.deluzion@gmail.com>
|
|
988
|
-
*
|
|
989
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
990
|
-
* of this software and associated documentation files (the "Software"), to deal
|
|
991
|
-
* in the Software without restriction, including without limitation the rights
|
|
992
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
993
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
994
|
-
* furnished to do so, subject to the following conditions:
|
|
995
|
-
*
|
|
996
|
-
* The above copyright notice and this permission notice shall be included in all
|
|
997
|
-
* copies or substantial portions of the Software.
|
|
998
|
-
*
|
|
999
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
1000
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
1001
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
1002
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
1003
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
1004
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
1005
|
-
* SOFTWARE.
|
|
1006
|
-
*/
|
|
1007
|
-
}, {
|
|
1008
|
-
key: "_toggleSelection",
|
|
1009
|
-
value: function _toggleSelection() {
|
|
1010
|
-
var selection = document.getSelection();
|
|
1011
|
-
if (!selection.rangeCount) {
|
|
1012
|
-
return function () {};
|
|
1013
|
-
}
|
|
1014
|
-
var active = document.activeElement;
|
|
1015
|
-
var ranges = [];
|
|
1016
|
-
for (var i = 0; i < selection.rangeCount; i++) {
|
|
1017
|
-
ranges.push(selection.getRangeAt(i));
|
|
1018
|
-
}
|
|
1019
|
-
switch (active.tagName.toUpperCase()) {
|
|
1020
|
-
// .toUpperCase handles XHTML
|
|
1021
|
-
case 'INPUT':
|
|
1022
|
-
case 'TEXTAREA':
|
|
1023
|
-
active.blur();
|
|
1024
|
-
break;
|
|
1025
|
-
default:
|
|
1026
|
-
null, (0, _readOnlyError2["default"])("active");
|
|
1027
|
-
break;
|
|
1028
|
-
}
|
|
1029
|
-
selection.removeAllRanges();
|
|
1030
|
-
return function () {
|
|
1031
|
-
selection.type === 'Caret' && selection.removeAllRanges();
|
|
1032
|
-
if (!selection.rangeCount) {
|
|
1033
|
-
ranges.forEach(function (range) {
|
|
1034
|
-
return selection.addRange(range);
|
|
1035
|
-
});
|
|
1036
|
-
}
|
|
1037
|
-
active && active.focus();
|
|
1038
|
-
};
|
|
1039
|
-
}
|
|
1040
|
-
|
|
1041
|
-
/**
|
|
1042
|
-
* MIT License
|
|
1043
|
-
*
|
|
1044
|
-
* Copyright (c) 2017 sudodoki <smd.deluzion@gmail.com>
|
|
1045
|
-
*
|
|
1046
|
-
* Text see above
|
|
1047
|
-
*/
|
|
1048
983
|
/**
|
|
1049
984
|
* Copy text to the clipboard.
|
|
1050
|
-
* Coped from copy-to-clipboard module:
|
|
1051
985
|
* @param {string} text
|
|
1052
986
|
* @param {Event} [e]
|
|
1053
987
|
*/
|
|
@@ -1056,62 +990,7 @@ var Utils = /*#__PURE__*/function () {
|
|
|
1056
990
|
value: function copyToClipboard(text, e) {
|
|
1057
991
|
e && e.stopPropagation();
|
|
1058
992
|
e && e.preventDefault();
|
|
1059
|
-
|
|
1060
|
-
var range;
|
|
1061
|
-
var selection;
|
|
1062
|
-
var mark;
|
|
1063
|
-
var success = false;
|
|
1064
|
-
try {
|
|
1065
|
-
reselectPrevious = Utils._toggleSelection();
|
|
1066
|
-
range = document.createRange();
|
|
1067
|
-
selection = document.getSelection();
|
|
1068
|
-
mark = document.createElement('span');
|
|
1069
|
-
mark.textContent = text;
|
|
1070
|
-
// avoid screen readers from reading out loud the text
|
|
1071
|
-
mark.ariaHidden = 'true';
|
|
1072
|
-
// reset user styles for span element
|
|
1073
|
-
mark.style.all = 'unset';
|
|
1074
|
-
// prevents scrolling to the end of the page
|
|
1075
|
-
mark.style.position = 'fixed';
|
|
1076
|
-
mark.style.top = 0;
|
|
1077
|
-
mark.style.clip = 'rect(0, 0, 0, 0)';
|
|
1078
|
-
// used to preserve spaces and line breaks
|
|
1079
|
-
mark.style.whiteSpace = 'pre';
|
|
1080
|
-
// do not inherit user-select (it may be `none`)
|
|
1081
|
-
mark.style.webkitUserSelect = 'text';
|
|
1082
|
-
mark.style.MozUserSelect = 'text';
|
|
1083
|
-
mark.style.msUserSelect = 'text';
|
|
1084
|
-
mark.style.userSelect = 'text';
|
|
1085
|
-
mark.addEventListener('copy', function (e) {
|
|
1086
|
-
return e.stopPropagation();
|
|
1087
|
-
});
|
|
1088
|
-
document.body.appendChild(mark);
|
|
1089
|
-
range.selectNodeContents(mark);
|
|
1090
|
-
selection.addRange(range);
|
|
1091
|
-
var successful = document.execCommand('copy');
|
|
1092
|
-
if (!successful) {
|
|
1093
|
-
throw new Error('copy command was unsuccessful');
|
|
1094
|
-
}
|
|
1095
|
-
success = true;
|
|
1096
|
-
} catch (err) {
|
|
1097
|
-
try {
|
|
1098
|
-
window.clipboardData.setData('text', text);
|
|
1099
|
-
success = true;
|
|
1100
|
-
} catch (err) {}
|
|
1101
|
-
} finally {
|
|
1102
|
-
if (selection) {
|
|
1103
|
-
if (typeof selection.removeRange === 'function') {
|
|
1104
|
-
selection.removeRange(range);
|
|
1105
|
-
} else {
|
|
1106
|
-
selection.removeAllRanges();
|
|
1107
|
-
}
|
|
1108
|
-
}
|
|
1109
|
-
if (mark) {
|
|
1110
|
-
document.body.removeChild(mark);
|
|
1111
|
-
}
|
|
1112
|
-
reselectPrevious();
|
|
1113
|
-
}
|
|
1114
|
-
return success;
|
|
993
|
+
return (0, _copyToClipboard["default"])(text);
|
|
1115
994
|
}
|
|
1116
995
|
|
|
1117
996
|
/**
|
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","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","selection","document","getSelection","rangeCount","active","activeElement","ranges","getRangeAt","tagName","blur","removeAllRanges","type","forEach","range","addRange","focus","e","stopPropagation","preventDefault","reselectPrevious","mark","success","_toggleSelection","createRange","createElement","textContent","ariaHidden","all","position","top","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","body","appendChild","selectNodeContents","successful","execCommand","Error","err","clipboardData","setData","removeRange","removeChild","fileName","bytes","units","u","toFixed","themeType","invert","invertedColor","invertColor","hex","bw","padStart","alfa","console","warn","pow","x","color1","color2","lab1","rgb2lab","color2rgb","lab2","dltL","dltA","dltB","c1","sqrt","c2","dltC","dltH","sc","sh","dltLKlsl","dltCkcsc","dltHkhsh","mix","str","isArray","_toVal","tmp","arguments","themeName","vendorPrefix","_localStorage","localStorage","getItem","matchMedia","matches","setItem","themes","getThemeNames","newTheme","setThemeName","query","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","el","setAttribute","encodeURIComponent","display","click","quality","object","ex","error","value","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 // remove alfa channel\n if (color.length === 8) {\n color = color.substring(0, 6);\n } else\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 // copied from https://github.com/sudodoki/toggle-selection\n /**\n * MIT License\n *\n * Copyright (c) 2017 sudodoki <smd.deluzion@gmail.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n static _toggleSelection() {\n const selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n const active = document.activeElement;\n\n const ranges = [];\n for (let i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(range => selection.addRange(range));\n }\n\n active &&\n active.focus();\n };\n }\n\n /**\n * MIT License\n *\n * Copyright (c) 2017 sudodoki <smd.deluzion@gmail.com>\n *\n * Text see above\n */\n /**\n * Copy text to the clipboard.\n * Coped from copy-to-clipboard module:\n * @param {string} text\n * @param {Event} [e]\n */\n static copyToClipboard(text, e) {\n e && e.stopPropagation();\n e && e.preventDefault();\n let reselectPrevious;\n let range;\n let selection;\n let mark;\n let success = false;\n\n try {\n reselectPrevious = Utils._toggleSelection();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement('span');\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = 'true'\n // reset user styles for span element\n mark.style.all = 'unset';\n // prevents scrolling to the end of the page\n mark.style.position = 'fixed';\n mark.style.top = 0;\n mark.style.clip = 'rect(0, 0, 0, 0)';\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = 'pre';\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = 'text';\n mark.style.MozUserSelect = 'text';\n mark.style.msUserSelect = 'text';\n mark.style.userSelect = 'text';\n mark.addEventListener('copy', e => e.stopPropagation());\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n const successful = document.execCommand('copy');\n if (!successful) {\n throw new Error('copy command was unsuccessful');\n }\n success = true;\n } catch (err) {\n try {\n window.clipboardData.setData('text', text);\n success = true;\n } catch (err) {\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange === 'function') {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\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('rgb')) {\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 let alfa = null;\n if (hex.length === 8) {\n alfa = hex.substring(6, 8);\n hex = hex.substring(0, 6);\n } else\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${alfa ? alfa : ''}`\n : `#FFFFFF${alfa ? alfa : ''}`;\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')}${alfa ? alfa : ''}`;\n }\n\n /**\n * Convert RGB to array [r, g, b]\n * @param {string} hex Color in the format '#rrggbb' or '#rgb' (or without hash) or rgb(r,g,b) or rgba(r,g,b,a)\n * @returns {Array<number>} Array with 3 elements [r, g, b]\n */\n static color2rgb(hex) {\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 && hex.length !== 8) {\n console.warn(`Cannot invert color: ${hex}`);\n return false;\n }\n\n return [\n parseInt(hex.slice(0, 2), 16),\n parseInt(hex.slice(2, 4), 16),\n parseInt(hex.slice(4, 6), 16),\n ];\n }\n\n // Big thanks to: https://github.com/antimatter15/rgb-lab\n /**\n * Convert RGB to LAB\n * @param {Array<number>} rgb color in format [r,g,b]\n * @returns {Array<number>} lab color in format [l,a,b]\n */\n static rgb2lab(rgb){\n let r = rgb[0] / 255;\n let g = rgb[1] / 255;\n let b = rgb[2] / 255;\n\n r = (r > 0.04045) ? Math.pow((r + 0.055) / 1.055, 2.4) : r / 12.92;\n g = (g > 0.04045) ? Math.pow((g + 0.055) / 1.055, 2.4) : g / 12.92;\n b = (b > 0.04045) ? Math.pow((b + 0.055) / 1.055, 2.4) : b / 12.92;\n\n let x = (r * 0.4124 + g * 0.3576 + b * 0.1805) / 0.95047;\n let y = (r * 0.2126 + g * 0.7152 + b * 0.0722); /* / 1.00000; */\n let z = (r * 0.0193 + g * 0.1192 + b * 0.9505) / 1.08883;\n\n x = (x > 0.008856) ? Math.pow(x, 0.33333333) : (7.787 * x) + 0.137931; // 16 / 116;\n y = (y > 0.008856) ? Math.pow(y, 0.33333333) : (7.787 * y) + 0.137931; // 16 / 116;\n z = (z > 0.008856) ? Math.pow(z, 0.33333333) : (7.787 * z) + 0.137931; // 16 / 116;\n\n return [(116 * y) - 16, 500 * (x - y), 200 * (y - z)];\n }\n\n /**\n * Calculate the distance between two colors in LAB color space in the range 0-100^2\n * If distance is less than 1000, the colors are similar\n * @param {string} color1 Color in the format '#rrggbb' or '#rgb' (or without hash) or rgb(r,g,b) or rgba(r,g,b,a)\n * @param {string} color2 Color in the format '#rrggbb' or '#rgb' (or without hash) or rgb(r,g,b) or rgba(r,g,b,a)\n * @returns {number} distance in the range 0-100^2\n */\n static colorDistance(color1, color2) {\n const lab1 = Utils.rgb2lab(Utils.color2rgb(color1));\n const lab2 = Utils.rgb2lab(Utils.color2rgb(color2));\n const dltL = lab1[0] - lab2[0];\n const dltA = lab1[1] - lab2[1];\n const dltB = lab1[2] - lab2[2];\n const c1 = Math.sqrt(lab1[1] * lab1[1] + lab1[2] * lab1[2]);\n const c2 = Math.sqrt(lab2[1] * lab2[1] + lab2[2] * lab2[2]);\n const dltC = c1 - c2;\n let dltH = dltA * dltA + dltB * dltB - dltC * dltC;\n dltH = dltH < 0 ? 0 : Math.sqrt(dltH);\n const sc = 1.0 + 0.045 * c1;\n const sh = 1.0 + 0.015 * c1;\n const dltLKlsl = dltL;\n const dltCkcsc = dltC / sc;\n const dltHkhsh = dltH / sh;\n const i = dltLKlsl * dltLKlsl + dltCkcsc * dltCkcsc + dltHkhsh * dltHkhsh;\n return i < 0 ? 0 : i;\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 y;\n let 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 (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n y = Utils._toVal(mix[k]);\n if (y) {\n str && (str += ' ');\n str += y;\n }\n }\n }\n } else {\n for (const 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).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).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).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","stopPropagation","preventDefault","copy","fileName","bytes","units","u","toFixed","themeType","invert","invertedColor","invertColor","hex","bw","padStart","alfa","console","warn","pow","x","color1","color2","lab1","rgb2lab","color2rgb","lab2","dltL","dltA","dltB","c1","sqrt","c2","dltC","dltH","sc","sh","dltLKlsl","dltCkcsc","dltHkhsh","mix","str","isArray","_toVal","tmp","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","body","header","lines","attrs","_header","line","doc","filename","json","el","document","createElement","setAttribute","encodeURIComponent","display","appendChild","click","removeChild","quality","object","ex","error","type","value","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 copy from './copy-to-clipboard';\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 // remove alfa channel\n if (color.length === 8) {\n color = color.substring(0, 6);\n } else\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 e && e.stopPropagation();\n e && e.preventDefault()\n return copy(text);\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('rgb')) {\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 let alfa = null;\n if (hex.length === 8) {\n alfa = hex.substring(6, 8);\n hex = hex.substring(0, 6);\n } else\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${alfa ? alfa : ''}`\n : `#FFFFFF${alfa ? alfa : ''}`;\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')}${alfa ? alfa : ''}`;\n }\n\n /**\n * Convert RGB to array [r, g, b]\n * @param {string} hex Color in the format '#rrggbb' or '#rgb' (or without hash) or rgb(r,g,b) or rgba(r,g,b,a)\n * @returns {Array<number>} Array with 3 elements [r, g, b]\n */\n static color2rgb(hex) {\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 && hex.length !== 8) {\n console.warn(`Cannot invert color: ${hex}`);\n return false;\n }\n\n return [\n parseInt(hex.slice(0, 2), 16),\n parseInt(hex.slice(2, 4), 16),\n parseInt(hex.slice(4, 6), 16),\n ];\n }\n\n // Big thanks to: https://github.com/antimatter15/rgb-lab\n /**\n * Convert RGB to LAB\n * @param {Array<number>} rgb color in format [r,g,b]\n * @returns {Array<number>} lab color in format [l,a,b]\n */\n static rgb2lab(rgb){\n let r = rgb[0] / 255;\n let g = rgb[1] / 255;\n let b = rgb[2] / 255;\n\n r = (r > 0.04045) ? Math.pow((r + 0.055) / 1.055, 2.4) : r / 12.92;\n g = (g > 0.04045) ? Math.pow((g + 0.055) / 1.055, 2.4) : g / 12.92;\n b = (b > 0.04045) ? Math.pow((b + 0.055) / 1.055, 2.4) : b / 12.92;\n\n let x = (r * 0.4124 + g * 0.3576 + b * 0.1805) / 0.95047;\n let y = (r * 0.2126 + g * 0.7152 + b * 0.0722); /* / 1.00000; */\n let z = (r * 0.0193 + g * 0.1192 + b * 0.9505) / 1.08883;\n\n x = (x > 0.008856) ? Math.pow(x, 0.33333333) : (7.787 * x) + 0.137931; // 16 / 116;\n y = (y > 0.008856) ? Math.pow(y, 0.33333333) : (7.787 * y) + 0.137931; // 16 / 116;\n z = (z > 0.008856) ? Math.pow(z, 0.33333333) : (7.787 * z) + 0.137931; // 16 / 116;\n\n return [(116 * y) - 16, 500 * (x - y), 200 * (y - z)];\n }\n\n /**\n * Calculate the distance between two colors in LAB color space in the range 0-100^2\n * If distance is less than 1000, the colors are similar\n * @param {string} color1 Color in the format '#rrggbb' or '#rgb' (or without hash) or rgb(r,g,b) or rgba(r,g,b,a)\n * @param {string} color2 Color in the format '#rrggbb' or '#rgb' (or without hash) or rgb(r,g,b) or rgba(r,g,b,a)\n * @returns {number} distance in the range 0-100^2\n */\n static colorDistance(color1, color2) {\n const lab1 = Utils.rgb2lab(Utils.color2rgb(color1));\n const lab2 = Utils.rgb2lab(Utils.color2rgb(color2));\n const dltL = lab1[0] - lab2[0];\n const dltA = lab1[1] - lab2[1];\n const dltB = lab1[2] - lab2[2];\n const c1 = Math.sqrt(lab1[1] * lab1[1] + lab1[2] * lab1[2]);\n const c2 = Math.sqrt(lab2[1] * lab2[1] + lab2[2] * lab2[2]);\n const dltC = c1 - c2;\n let dltH = dltA * dltA + dltB * dltB - dltC * dltC;\n dltH = dltH < 0 ? 0 : Math.sqrt(dltH);\n const sc = 1.0 + 0.045 * c1;\n const sh = 1.0 + 0.015 * c1;\n const dltLKlsl = dltL;\n const dltCkcsc = dltC / sc;\n const dltHkhsh = dltH / sh;\n const i = dltLKlsl * dltLKlsl + dltCkcsc * dltCkcsc + dltHkhsh * dltHkhsh;\n return i < 0 ? 0 : i;\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 y;\n let 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 (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n y = Utils._toVal(mix[k]);\n if (y) {\n str && (str += ' ');\n str += y;\n }\n }\n }\n } else {\n for (const 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).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).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).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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"}
|
|
@@ -59,23 +59,22 @@ function deselectCurrent() {
|
|
|
59
59
|
// https://github.com/sudodoki/copy-to-clipboard/blob/master/index.js
|
|
60
60
|
|
|
61
61
|
var clipboardToIE11Formatting = {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
62
|
+
'text/plain': 'Text',
|
|
63
|
+
'text/html': 'Url',
|
|
64
|
+
'default': 'Text'
|
|
65
65
|
};
|
|
66
|
-
var defaultMessage =
|
|
66
|
+
var defaultMessage = 'Copy to clipboard: #{key}, Enter';
|
|
67
67
|
function format(message) {
|
|
68
|
-
var copyKey = (/mac os x/i.test(navigator.userAgent) ?
|
|
68
|
+
var copyKey = (/mac os x/i.test(navigator.userAgent) ? '⌘' : 'Ctrl') + '+C';
|
|
69
69
|
return message.replace(/#{\s*key\s*}/g, copyKey);
|
|
70
70
|
}
|
|
71
71
|
function copy(text, options) {
|
|
72
|
-
var debug
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
success = false;
|
|
72
|
+
var debug;
|
|
73
|
+
var reselectPrevious;
|
|
74
|
+
var range;
|
|
75
|
+
var selection;
|
|
76
|
+
var mark;
|
|
77
|
+
var success = false;
|
|
79
78
|
if (!options) {
|
|
80
79
|
options = {};
|
|
81
80
|
}
|
|
@@ -84,31 +83,33 @@ function copy(text, options) {
|
|
|
84
83
|
reselectPrevious = deselectCurrent();
|
|
85
84
|
range = document.createRange();
|
|
86
85
|
selection = document.getSelection();
|
|
87
|
-
mark = document.createElement(
|
|
86
|
+
mark = document.createElement('span');
|
|
88
87
|
mark.textContent = text;
|
|
88
|
+
// avoid screen readers from reading out loud the text
|
|
89
|
+
mark.ariaHidden = 'true';
|
|
89
90
|
// reset user styles for span element
|
|
90
|
-
mark.style.all =
|
|
91
|
+
mark.style.all = 'unset';
|
|
91
92
|
// prevents scrolling to the end of the page
|
|
92
|
-
mark.style.position =
|
|
93
|
+
mark.style.position = 'fixed';
|
|
93
94
|
mark.style.top = 0;
|
|
94
|
-
mark.style.clip =
|
|
95
|
+
mark.style.clip = 'rect(0, 0, 0, 0)';
|
|
95
96
|
// used to preserve spaces and line breaks
|
|
96
|
-
mark.style.whiteSpace =
|
|
97
|
+
mark.style.whiteSpace = 'pre';
|
|
97
98
|
// do not inherit user-select (it may be `none`)
|
|
98
|
-
mark.style.webkitUserSelect =
|
|
99
|
-
mark.style.MozUserSelect =
|
|
100
|
-
mark.style.msUserSelect =
|
|
101
|
-
mark.style.userSelect =
|
|
102
|
-
mark.addEventListener(
|
|
99
|
+
mark.style.webkitUserSelect = 'text';
|
|
100
|
+
mark.style.MozUserSelect = 'text';
|
|
101
|
+
mark.style.msUserSelect = 'text';
|
|
102
|
+
mark.style.userSelect = 'text';
|
|
103
|
+
mark.addEventListener('copy', function (e) {
|
|
103
104
|
e.stopPropagation();
|
|
104
105
|
if (options.format) {
|
|
105
106
|
e.preventDefault();
|
|
106
|
-
if (typeof e.clipboardData ===
|
|
107
|
+
if (typeof e.clipboardData === 'undefined') {
|
|
107
108
|
// IE 11
|
|
108
|
-
debug && console.warn(
|
|
109
|
-
debug && console.warn(
|
|
109
|
+
debug && console.warn('unable to use e.clipboardData');
|
|
110
|
+
debug && console.warn('trying IE specific stuff');
|
|
110
111
|
window.clipboardData.clearData();
|
|
111
|
-
var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[
|
|
112
|
+
var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting['default'];
|
|
112
113
|
window.clipboardData.setData(format, text);
|
|
113
114
|
} else {
|
|
114
115
|
// all other browsers
|
|
@@ -124,27 +125,27 @@ function copy(text, options) {
|
|
|
124
125
|
document.body.appendChild(mark);
|
|
125
126
|
range.selectNodeContents(mark);
|
|
126
127
|
selection.addRange(range);
|
|
127
|
-
var successful = document.execCommand(
|
|
128
|
+
var successful = document.execCommand('copy');
|
|
128
129
|
if (!successful) {
|
|
129
|
-
throw new Error(
|
|
130
|
+
throw new Error('copy command was unsuccessful');
|
|
130
131
|
}
|
|
131
132
|
success = true;
|
|
132
133
|
} catch (err) {
|
|
133
|
-
debug && console.error(
|
|
134
|
-
debug && console.warn(
|
|
134
|
+
debug && console.error('unable to copy using execCommand: ', err);
|
|
135
|
+
debug && console.warn('trying IE specific stuff');
|
|
135
136
|
try {
|
|
136
|
-
window.clipboardData.setData(options.format ||
|
|
137
|
+
window.clipboardData.setData(options.format || 'text', text);
|
|
137
138
|
options.onCopy && options.onCopy(window.clipboardData);
|
|
138
139
|
success = true;
|
|
139
140
|
} catch (err) {
|
|
140
|
-
debug && console.error(
|
|
141
|
-
debug && console.error(
|
|
142
|
-
message = format(
|
|
141
|
+
debug && console.error('unable to copy using clipboardData: ', err);
|
|
142
|
+
debug && console.error('falling back to prompt');
|
|
143
|
+
var message = format('message' in options ? options.message : defaultMessage);
|
|
143
144
|
window.prompt(message, text);
|
|
144
145
|
}
|
|
145
146
|
} finally {
|
|
146
147
|
if (selection) {
|
|
147
|
-
if (typeof selection.removeRange
|
|
148
|
+
if (typeof selection.removeRange === 'function') {
|
|
148
149
|
selection.removeRange(range);
|
|
149
150
|
} else {
|
|
150
151
|
selection.removeAllRanges();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copy-to-clipboard.js","names":["deselectCurrent","selection","document","getSelection","rangeCount","active","activeElement","ranges","i","push","getRangeAt","tagName","toUpperCase","blur","removeAllRanges","type","forEach","range","addRange","focus","clipboardToIE11Formatting","defaultMessage","format","message","copyKey","test","navigator","userAgent","replace","copy","text","options","debug","reselectPrevious","mark","success","createRange","createElement","textContent","style","all","position","top","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","e","stopPropagation","preventDefault","clipboardData","console","warn","window","clearData","setData","onCopy","body","appendChild","selectNodeContents","successful","execCommand","Error","err","error","prompt","removeRange","removeChild","module","exports"],"sources":["copy-to-clipboard.js"],"sourcesContent":["/*\nMIT License\n\nCopyright (c) 2017 sudodoki <smd.deluzion@gmail.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n */\n// https://github.com/sudodoki/toggle-selection/blob/gh-pages/index.js\nfunction deselectCurrent () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n}\n\n// https://github.com/sudodoki/copy-to-clipboard/blob/master/index.js\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n};\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"copy-to-clipboard.js","names":["deselectCurrent","selection","document","getSelection","rangeCount","active","activeElement","ranges","i","push","getRangeAt","tagName","toUpperCase","blur","removeAllRanges","type","forEach","range","addRange","focus","clipboardToIE11Formatting","defaultMessage","format","message","copyKey","test","navigator","userAgent","replace","copy","text","options","debug","reselectPrevious","mark","success","createRange","createElement","textContent","ariaHidden","style","all","position","top","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","e","stopPropagation","preventDefault","clipboardData","console","warn","window","clearData","setData","onCopy","body","appendChild","selectNodeContents","successful","execCommand","Error","err","error","prompt","removeRange","removeChild","module","exports"],"sources":["copy-to-clipboard.js"],"sourcesContent":["/*\nMIT License\n\nCopyright (c) 2017 sudodoki <smd.deluzion@gmail.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n */\n// https://github.com/sudodoki/toggle-selection/blob/gh-pages/index.js\nfunction deselectCurrent () {\n const selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n let active = document.activeElement;\n\n const ranges = [];\n for (let i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active && active.focus();\n };\n}\n\n// https://github.com/sudodoki/copy-to-clipboard/blob/master/index.js\n\nconst clipboardToIE11Formatting = {\n 'text/plain': 'Text',\n 'text/html': 'Url',\n 'default': 'Text',\n};\n\nconst defaultMessage = 'Copy to clipboard: #{key}, Enter';\n\nfunction format(message) {\n const copyKey = (/mac os x/i.test(navigator.userAgent) ? '⌘' : 'Ctrl') + '+C';\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n let debug;\n let reselectPrevious;\n let range;\n let selection;\n let mark;\n let success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement('span');\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = 'true';\n // reset user styles for span element\n mark.style.all = 'unset';\n // prevents scrolling to the end of the page\n mark.style.position = 'fixed';\n mark.style.top = 0;\n mark.style.clip = 'rect(0, 0, 0, 0)';\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = 'pre';\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = 'text';\n mark.style.MozUserSelect = 'text';\n mark.style.msUserSelect = 'text';\n mark.style.userSelect = 'text';\n mark.addEventListener('copy', function (e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === 'undefined') { // IE 11\n debug && console.warn('unable to use e.clipboardData');\n debug && console.warn('trying IE specific stuff');\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting['default']\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n const successful = document.execCommand('copy');\n if (!successful) {\n throw new Error('copy command was unsuccessful');\n }\n success = true;\n } catch (err) {\n debug && console.error('unable to copy using execCommand: ', err);\n debug && console.warn('trying IE specific stuff');\n try {\n window.clipboardData.setData(options.format || 'text', text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error('unable to copy using clipboardData: ', err);\n debug && console.error('falling back to prompt');\n let message = format('message' in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange === 'function') {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;"],"mappings":"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"}
|
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@ If you want to create the configuration page with react:
|
|
|
10
10
|
- Change `name` from `src` to `ADAPTERNAME-admin` (Of course replace `ADAPTERNAME` with yours)
|
|
11
11
|
- Add to devDependencies:
|
|
12
12
|
```
|
|
13
|
-
"@iobroker/adapter-react": "^3.4.
|
|
13
|
+
"@iobroker/adapter-react": "^3.4.4",
|
|
14
14
|
```
|
|
15
15
|
Versions can be higher.
|
|
16
16
|
So your src/package.json should look like:
|
|
@@ -643,7 +643,7 @@ If you still have questions, try to find an answer [here](https://mui.com/guides
|
|
|
643
643
|
-->
|
|
644
644
|
|
|
645
645
|
## Changelog
|
|
646
|
-
### 3.4.
|
|
646
|
+
### 3.4.4 (2022-11-30)
|
|
647
647
|
* (bluefox) updated json config component
|
|
648
648
|
|
|
649
649
|
### 3.4.1 (2022-11-29)
|