@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.
@@ -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
  */
@@ -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
- var reselectPrevious;
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
  /**
@@ -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/, '&nbsp;'));\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/, '&nbsp;'));\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
- "text/plain": "Text",
63
- "text/html": "Url",
64
- "default": "Text"
62
+ 'text/plain': 'Text',
63
+ 'text/html': 'Url',
64
+ 'default': 'Text'
65
65
  };
66
- var defaultMessage = "Copy to clipboard: #{key}, Enter";
66
+ var defaultMessage = 'Copy to clipboard: #{key}, Enter';
67
67
  function format(message) {
68
- var copyKey = (/mac os x/i.test(navigator.userAgent) ? "" : "Ctrl") + "+C";
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
- message,
74
- reselectPrevious,
75
- range,
76
- selection,
77
- mark,
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("span");
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 = "unset";
91
+ mark.style.all = 'unset';
91
92
  // prevents scrolling to the end of the page
92
- mark.style.position = "fixed";
93
+ mark.style.position = 'fixed';
93
94
  mark.style.top = 0;
94
- mark.style.clip = "rect(0, 0, 0, 0)";
95
+ mark.style.clip = 'rect(0, 0, 0, 0)';
95
96
  // used to preserve spaces and line breaks
96
- mark.style.whiteSpace = "pre";
97
+ mark.style.whiteSpace = 'pre';
97
98
  // do not inherit user-select (it may be `none`)
98
- mark.style.webkitUserSelect = "text";
99
- mark.style.MozUserSelect = "text";
100
- mark.style.msUserSelect = "text";
101
- mark.style.userSelect = "text";
102
- mark.addEventListener("copy", function (e) {
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 === "undefined") {
107
+ if (typeof e.clipboardData === 'undefined') {
107
108
  // IE 11
108
- debug && console.warn("unable to use e.clipboardData");
109
- debug && console.warn("trying IE specific stuff");
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["default"];
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("copy");
128
+ var successful = document.execCommand('copy');
128
129
  if (!successful) {
129
- throw new Error("copy command was unsuccessful");
130
+ throw new Error('copy command was unsuccessful');
130
131
  }
131
132
  success = true;
132
133
  } catch (err) {
133
- debug && console.error("unable to copy using execCommand: ", err);
134
- debug && console.warn("trying IE specific stuff");
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 || "text", text);
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("unable to copy using clipboardData: ", err);
141
- debug && console.error("falling back to prompt");
142
- message = format("message" in options ? options.message : defaultMessage);
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 == "function") {
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.3",
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.3 (2022-11-30)
646
+ ### 3.4.4 (2022-11-30)
647
647
  * (bluefox) updated json config component
648
648
 
649
649
  ### 3.4.1 (2022-11-29)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iobroker/adapter-react-v5",
3
- "version": "3.4.3",
3
+ "version": "3.4.4",
4
4
  "description": "React classes to develop admin interfaces for ioBroker with react.",
5
5
  "author": {
6
6
  "name": "bluefox",