@iobroker/adapter-react-v5 3.0.17 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/Components/FileBrowser.js +76 -57
  2. package/Components/FileBrowser.js.map +1 -1
  3. package/Components/JsonConfigComponent/ConfigAlive.js +1 -1
  4. package/Components/JsonConfigComponent/ConfigAlive.js.map +1 -1
  5. package/Components/JsonConfigComponent/ConfigAutocomplete.js +0 -1
  6. package/Components/JsonConfigComponent/ConfigAutocomplete.js.map +1 -1
  7. package/Components/JsonConfigComponent/ConfigCRON.js +3 -3
  8. package/Components/JsonConfigComponent/ConfigCRON.js.map +1 -1
  9. package/Components/JsonConfigComponent/ConfigCheckbox.js +1 -1
  10. package/Components/JsonConfigComponent/ConfigCheckbox.js.map +1 -1
  11. package/Components/JsonConfigComponent/ConfigCoordinates.js +2 -2
  12. package/Components/JsonConfigComponent/ConfigCoordinates.js.map +1 -1
  13. package/Components/JsonConfigComponent/ConfigCustom.js.map +1 -1
  14. package/Components/JsonConfigComponent/ConfigGeneric.js +25 -25
  15. package/Components/JsonConfigComponent/ConfigGeneric.js.map +1 -1
  16. package/Components/JsonConfigComponent/ConfigIP.js +2 -2
  17. package/Components/JsonConfigComponent/ConfigIP.js.map +1 -1
  18. package/Components/JsonConfigComponent/ConfigInstanceSelect.js +1 -1
  19. package/Components/JsonConfigComponent/ConfigInstanceSelect.js.map +1 -1
  20. package/Components/JsonConfigComponent/ConfigJsonEditor.js +1 -1
  21. package/Components/JsonConfigComponent/ConfigJsonEditor.js.map +1 -1
  22. package/Components/JsonConfigComponent/ConfigLanguage.js +1 -1
  23. package/Components/JsonConfigComponent/ConfigLanguage.js.map +1 -1
  24. package/Components/JsonConfigComponent/ConfigNumber.js +94 -22
  25. package/Components/JsonConfigComponent/ConfigNumber.js.map +1 -1
  26. package/Components/JsonConfigComponent/ConfigPanel.js +4 -0
  27. package/Components/JsonConfigComponent/ConfigPanel.js.map +1 -1
  28. package/Components/JsonConfigComponent/ConfigPassword.js +4 -4
  29. package/Components/JsonConfigComponent/ConfigPassword.js.map +1 -1
  30. package/Components/JsonConfigComponent/ConfigSelect.js +2 -2
  31. package/Components/JsonConfigComponent/ConfigSelect.js.map +1 -1
  32. package/Components/JsonConfigComponent/ConfigSelectSendTo.js +7 -7
  33. package/Components/JsonConfigComponent/ConfigSelectSendTo.js.map +1 -1
  34. package/Components/JsonConfigComponent/ConfigSendto.js +6 -6
  35. package/Components/JsonConfigComponent/ConfigSendto.js.map +1 -1
  36. package/Components/JsonConfigComponent/ConfigSetState.js +4 -4
  37. package/Components/JsonConfigComponent/ConfigSetState.js.map +1 -1
  38. package/Components/JsonConfigComponent/ConfigTable.js +26 -13
  39. package/Components/JsonConfigComponent/ConfigTable.js.map +1 -1
  40. package/Components/JsonConfigComponent/ConfigText.js.map +1 -1
  41. package/Components/ObjectBrowser.js +39 -16
  42. package/Components/ObjectBrowser.js.map +1 -1
  43. package/Components/ToggleThemeMenu.js.map +1 -1
  44. package/Components/Utils.js +14 -3
  45. package/Components/Utils.js.map +1 -1
  46. package/README.md +3 -0
  47. package/i18n/de.json +24 -3
  48. package/i18n/en.json +23 -2
  49. package/i18n/es.json +23 -2
  50. package/i18n/fr.json +23 -2
  51. package/i18n/it.json +23 -2
  52. package/i18n/nl.json +23 -2
  53. package/i18n/pl.json +23 -2
  54. package/i18n/pt.json +23 -2
  55. package/i18n/ru.json +23 -2
  56. package/i18n/zh-cn.json +24 -3
  57. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ToggleThemeMenu.js","names":["ToggleThemeMenu","themeName","toggleTheme","t","className","style","size","undefined"],"sources":["ToggleThemeMenu.js"],"sourcesContent":["import React from 'react';\nimport { IconButton, Tooltip } from '@mui/material';\nimport Brightness4Icon from '@mui/icons-material/Brightness4';\nimport Brightness5Icon from '@mui/icons-material/Brightness5';\nimport Brightness6Icon from '@mui/icons-material/Brightness6';\nimport Brightness7Icon from '@mui/icons-material/Brightness7';\n\nexport default function ToggleThemeMenu({ themeName, toggleTheme, t, className, style, size }) {\n return <div className={className || undefined} style={style || undefined}>\n <Tooltip title={t('ra_Change color theme')}>\n <IconButton onClick={() => toggleTheme()} size={size || 'medium'}>\n {themeName === 'dark' && <Brightness4Icon className={className} />}\n {themeName === 'blue' && <Brightness5Icon className={className} />}\n {themeName === 'colored' && <Brightness6Icon className={className} />}\n {themeName === 'light' && <Brightness7Icon className={className} />}\n </IconButton>\n </Tooltip>\n </div>;\n}"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEe,SAASA,eAAT,OAAgF;EAAA,IAArDC,SAAqD,QAArDA,SAAqD;EAAA,IAA1CC,WAA0C,QAA1CA,WAA0C;EAAA,IAA7BC,CAA6B,QAA7BA,CAA6B;EAAA,IAA1BC,SAA0B,QAA1BA,SAA0B;EAAA,IAAfC,KAAe,QAAfA,KAAe;EAAA,IAARC,IAAQ,QAARA,IAAQ;EAC3F,oBAAO;IAAK,SAAS,EAAEF,SAAS,IAAIG,SAA7B;IAAwC,KAAK,EAAEF,KAAK,IAAIE;EAAxD,gBACH,gCAAC,iBAAD;IAAS,KAAK,EAAEJ,CAAC,CAAC,uBAAD;EAAjB,gBACI,gCAAC,oBAAD;IAAY,OAAO,EAAE;MAAA,OAAMD,WAAW,EAAjB;IAAA,CAArB;IAA0C,IAAI,EAAEI,IAAI,IAAI;EAAxD,GACKL,SAAS,KAAK,MAAd,iBAAwB,gCAAC,sBAAD;IAAiB,SAAS,EAAEG;EAA5B,EAD7B,EAEKH,SAAS,KAAK,MAAd,iBAAwB,gCAAC,uBAAD;IAAiB,SAAS,EAAEG;EAA5B,EAF7B,EAGKH,SAAS,KAAK,SAAd,iBAA2B,gCAAC,uBAAD;IAAiB,SAAS,EAAEG;EAA5B,EAHhC,EAIKH,SAAS,KAAK,OAAd,iBAAyB,gCAAC,uBAAD;IAAiB,SAAS,EAAEG;EAA5B,EAJ9B,CADJ,CADG,CAAP;AAUH"}
1
+ {"version":3,"file":"ToggleThemeMenu.js","names":["ToggleThemeMenu","themeName","toggleTheme","t","className","style","size","undefined"],"sources":["ToggleThemeMenu.js"],"sourcesContent":["import React from 'react';\n\nimport { IconButton, Tooltip } from '@mui/material';\n\nimport Brightness4Icon from '@mui/icons-material/Brightness4';\nimport Brightness5Icon from '@mui/icons-material/Brightness5';\nimport Brightness6Icon from '@mui/icons-material/Brightness6';\nimport Brightness7Icon from '@mui/icons-material/Brightness7';\n\nexport default function ToggleThemeMenu({ themeName, toggleTheme, t, className, style, size }) {\n return <div className={className || undefined} style={style || undefined}>\n <Tooltip title={t('ra_Change color theme')}>\n <IconButton onClick={() => toggleTheme()} size={size || 'medium'}>\n {themeName === 'dark' && <Brightness4Icon className={className} />}\n {themeName === 'blue' && <Brightness5Icon className={className} />}\n {themeName === 'colored' && <Brightness6Icon className={className} />}\n {themeName === 'light' && <Brightness7Icon className={className} />}\n </IconButton>\n </Tooltip>\n </div>;\n}"],"mappings":";;;;;;;;;AAAA;;AAEA;;AAEA;;AACA;;AACA;;AACA;;AAEe,SAASA,eAAT,OAAgF;EAAA,IAArDC,SAAqD,QAArDA,SAAqD;EAAA,IAA1CC,WAA0C,QAA1CA,WAA0C;EAAA,IAA7BC,CAA6B,QAA7BA,CAA6B;EAAA,IAA1BC,SAA0B,QAA1BA,SAA0B;EAAA,IAAfC,KAAe,QAAfA,KAAe;EAAA,IAARC,IAAQ,QAARA,IAAQ;EAC3F,oBAAO;IAAK,SAAS,EAAEF,SAAS,IAAIG,SAA7B;IAAwC,KAAK,EAAEF,KAAK,IAAIE;EAAxD,gBACH,gCAAC,iBAAD;IAAS,KAAK,EAAEJ,CAAC,CAAC,uBAAD;EAAjB,gBACI,gCAAC,oBAAD;IAAY,OAAO,EAAE;MAAA,OAAMD,WAAW,EAAjB;IAAA,CAArB;IAA0C,IAAI,EAAEI,IAAI,IAAI;EAAxD,GACKL,SAAS,KAAK,MAAd,iBAAwB,gCAAC,sBAAD;IAAiB,SAAS,EAAEG;EAA5B,EAD7B,EAEKH,SAAS,KAAK,MAAd,iBAAwB,gCAAC,uBAAD;IAAiB,SAAS,EAAEG;EAA5B,EAF7B,EAGKH,SAAS,KAAK,SAAd,iBAA2B,gCAAC,uBAAD;IAAiB,SAAS,EAAEG;EAA5B,EAHhC,EAIKH,SAAS,KAAK,OAAd,iBAAyB,gCAAC,uBAAD;IAAiB,SAAS,EAAEG;EAA5B,EAJ9B,CADJ,CADG,CAAP;AAUH"}
@@ -1720,9 +1720,20 @@ var Utils = /*#__PURE__*/function () {
1720
1720
  }
1721
1721
  } else if (Array.isArray(states)) {
1722
1722
  var result = {};
1723
- states.forEach(function (value, key) {
1724
- return result[key] = value;
1725
- });
1723
+
1724
+ if (obj.common.type === 'number') {
1725
+ states.forEach(function (value, key) {
1726
+ return result[key] = value;
1727
+ });
1728
+ } else if (obj.common.type === 'string') {
1729
+ states.forEach(function (value) {
1730
+ return result[value] = value;
1731
+ });
1732
+ } else if (obj.common.type === 'boolean') {
1733
+ result['false'] = states[0];
1734
+ result['true'] = states[1];
1735
+ }
1736
+
1726
1737
  return result;
1727
1738
  }
1728
1739
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Utils.js","names":["NAMESPACE","days","months","QUALITY_BITS","SIGNATURES","JVBERi0","R0lGODdh","R0lGODlh","iVBORw0KGgo","PHN2Zw","Qk1","AAABAA","Utils","name","split","filter","item","map","word","toUpperCase","substring","toLowerCase","join","seconds","Math","floor","hours","minutes","text","I18n","t","objects","id","settings","options","isDesc","attr","language","common","window","sysLang","en","desc","de","ru","toString","replace","pos","lastIndexOf","CapitalWords","trim","obj","_id","forEnumId","hasOwnProperty","custom","user","subOrder","JSON","parse","stringify","order","subURLs","URLs","list","source","dest","result","Array","from","splice","removed","defaultEnabling","enabled","undefined","useCustom","useCommon","color","icon","s","style","length","startsWith","prefix","parts","location","pathname","match","words","i","z","ww","start","push","k","w","defaultValue","indexOf","slice","r","g","b","rgb","parseInt","parseFloat","isNaN","secs","angle","num","format","dateFormat","now","m","a","year","find","y","day","Date","abs","getTime","date","getDay","getDate","getMonth","key","p","href","target","rel","title","states","instanceId","noCommon","smartName","newSmartName","byON","smartType","getLanguage","nnn","_smartName","role","empty","nl","pl","it","fr","pt","es","e","el","document","createElement","value","body","appendChild","select","execCommand","removeChild","console","log","stopPropagation","preventDefault","fileName","bytes","units","u","toFixed","themeType","invert","invertedColor","invertColor","hex","bw","padStart","warn","mix","str","isArray","_toVal","tmp","x","arguments","themeName","vendorPrefix","localStorage","getItem","matchMedia","matches","setItem","themes","getThemeNames","newTheme","setThemeName","query","forEach","part","decodeURIComponent","f","pop","dateObj","mm","dd","getFullYear","v","getHours","getMinutes","getSeconds","getMilliseconds","round","d","h","url","open","extractHeader","header","lines","attrs","_header","line","doc","filename","json","setAttribute","encodeURIComponent","display","click","quality","object","ex","error","fetch","then","response","blob","Promise","resolve","reader","FileReader","onload","readAsDataURL","base64","signature","Object","keys"],"sources":["Utils.js"],"sourcesContent":["/**\n * Copyright 2018-2022 bluefox <dogafox@gmail.com>\n *\n * MIT License\n *\n **/\nimport React from 'react';\nimport I18n from '../i18n';\n\nconst NAMESPACE = 'material';\nconst days = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\nconst months = ['Jan', 'Feb', 'Mar', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\nconst QUALITY_BITS = {\n 0x00: '0x00 - good',\n\n 0x01: '0x01 - general problem',\n 0x02: '0x02 - no connection problem',\n\n 0x10: '0x10 - substitute value from controller',\n 0x20: '0x20 - substitute initial value',\n 0x40: '0x40 - substitute value from device or instance',\n 0x80: '0x80 - substitute value from sensor',\n\n 0x11: '0x11 - general problem by instance',\n 0x41: '0x41 - general problem by device',\n 0x81: '0x81 - general problem by sensor',\n\n 0x12: '0x12 - instance not connected',\n 0x42: '0x42 - device not connected',\n 0x82: '0x82 - sensor not connected',\n\n 0x44: '0x44 - device reports error',\n 0x84: '0x84 - sensor reports error',\n};\nconst SIGNATURES = {\n JVBERi0: 'pdf',\n R0lGODdh: 'gif',\n R0lGODlh: 'gif',\n iVBORw0KGgo: 'png',\n '/9j/': 'jpg',\n PHN2Zw: 'svg',\n Qk1: 'bmp',\n AAABAA: 'ico' // 00 00 01 00 according to https://en.wikipedia.org/wiki/List_of_file_signatures\n};\n\nclass Utils {\n static namespace = NAMESPACE;\n static INSTANCES = 'instances';\n static dateFormat = ['DD', 'MM'];\n static FORBIDDEN_CHARS = /[^._\\-/ :!#$%&()+=@^{}|~\\p{Ll}\\p{Lu}\\p{Nd}]+/gu;\n\n /**\n * Capitalize words.\n * @param {string | undefined} name\n * @returns {string}\n */\n static CapitalWords(name) {\n return (name || '').split(/[\\s_]/)\n .filter(item => item)\n .map(word => word ? word[0].toUpperCase() + word.substring(1).toLowerCase() : '')\n .join(' ');\n }\n\n static formatSeconds(seconds) {\n const days = Math.floor(seconds / (3600 * 24));\n seconds %= 3600 * 24;\n let hours = Math.floor(seconds / 3600);\n if (hours < 10) {\n hours = '0' + hours;\n }\n seconds %= 3600;\n let minutes = Math.floor(seconds / 60);\n if (minutes < 10) {\n minutes = '0' + minutes;\n }\n seconds %= 60;\n seconds = Math.floor(seconds);\n if (seconds < 10) {\n seconds = '0' + seconds;\n }\n let text = '';\n if (days) {\n text += `${days} ${I18n.t('ra_daysShortText')} `;\n }\n text += `${hours}:${minutes}:${seconds}`;\n\n return text;\n }\n\n /**\n * Get the name of the object by id from the name or description.\n * @param {Record<string, ioBroker.Object>} objects\n * @param {string} id\n * @param {{ name: any; } | ioBroker.Languages | null} settings\n * @param {{ language?: ioBroker.Languages; }} options\n * @param {boolean} [isDesc] Set to true to get the description.\n * @returns {string}\n */\n static getObjectName(objects, id, settings, options, isDesc) {\n let item = objects[id];\n let text = id;\n const attr = isDesc ? 'desc' : 'name';\n\n if (typeof settings === 'string' && !options) {\n options = {language: settings};\n settings = null;\n }\n\n options = options || {};\n if (!options.language) {\n options.language = (objects['system.config'] && objects['system.config'].common && objects['system.config'].common.language) || window.sysLang || 'en';\n }\n if (settings && settings.name) {\n text = settings.name;\n if (typeof text === 'object') {\n text = text[options.language] || text.en;\n }\n } else\n if (item && item.common && item.common[attr]) {\n text = item.common[attr];\n if (attr !== 'desc' && !text && item.common.desc) {\n text = item.common.desc;\n }\n if (typeof text === 'object') {\n text = text[options.language] || text.en || text.de || text.ru || '';\n }\n text = (text || '').toString().replace(/[_.]/g, ' ');\n\n if (text === text.toUpperCase()) {\n text = text[0] + text.substring(1).toLowerCase();\n }\n } else {\n let pos = id.lastIndexOf('.');\n text = id.substring(pos + 1).replace(/[_.]/g, ' ');\n text = Utils.CapitalWords(text);\n }\n\n return text.trim();\n }\n\n /**\n * Get the name of the object from the name or description.\n * @param {ioBroker.PartialObject} obj\n * @param {{ name: any; } | ioBroker.Languages | null } settings or language\n * @param {{ language?: ioBroker.Languages; } } options\n * @param {boolean} [isDesc] Set to true to get the description.\n * @returns {string}\n */\n static getObjectNameFromObj(obj, settings, options, isDesc) {\n let item = obj;\n let text = (obj && obj._id) || '';\n const attr = isDesc ? 'desc' : 'name';\n\n if (typeof settings === 'string' && !options) {\n options = {language: settings};\n settings = null;\n }\n\n options = options || {};\n\n if (settings && settings.name) {\n text = settings.name;\n if (typeof text === 'object') {\n text = text[options.language] || text.en;\n }\n } else\n if (item && item.common && item.common[attr]) {\n text = item.common[attr];\n if (attr !== 'desc' && !text && item.common.desc) {\n text = item.common.desc;\n }\n if (typeof text === 'object') {\n text = text[options.language] || text.en;\n }\n text = (text || '').toString().replace(/[_.]/g, ' ');\n\n if (text === text.toUpperCase()) {\n text = text[0] + text.substring(1).toLowerCase();\n }\n }\n return text.trim();\n }\n\n /**\n * @param {ioBroker.PartialObject | ioBroker.ObjectCommon} obj\n * @param {string} forEnumId\n * @param {{ user: string; }} options\n * @returns {string | null}\n */\n static getSettingsOrder(obj, forEnumId, options) {\n if (obj && obj.hasOwnProperty('common')) {\n obj = obj.common;\n }\n let settings;\n if (obj && obj.custom) {\n settings = (obj.custom || {})[NAMESPACE];\n const user = options.user || 'admin';\n if (settings && settings[user]) {\n if (forEnumId) {\n if (settings[user].subOrder && settings[user].subOrder[forEnumId]) {\n return JSON.parse(JSON.stringify(settings[user].subOrder[forEnumId]));\n }\n } else {\n if (settings[user].order) {\n return JSON.parse(JSON.stringify(settings[user].order));\n }\n }\n }\n }\n return null;\n }\n\n /**\n * @param {ioBroker.PartialObject | ioBroker.ObjectCommon} obj\n * @param {string} forEnumId\n * @param {{ user: string; }} options\n */\n static getSettingsCustomURLs(obj, forEnumId, options) {\n if (obj && obj.hasOwnProperty('common')) {\n obj = obj.common;\n }\n let settings;\n if (obj && obj.custom) {\n settings = (obj.custom || {})[NAMESPACE];\n const user = options.user || 'admin';\n if (settings && settings[user]) {\n if (forEnumId) {\n if (settings[user].subURLs && settings[user].subURLs[forEnumId]) {\n return JSON.parse(JSON.stringify(settings[user].subURLs[forEnumId]));\n }\n } else {\n if (settings[user].URLs) {\n return JSON.parse(JSON.stringify(settings[user].URLs));\n }\n }\n }\n }\n return null;\n }\n\n /**\n * Reorder the array items in list between source and dest.\n * @param {Iterable<any> | ArrayLike<any>} list\n * @param {number} source\n * @param {number} dest\n */\n static reorder(list, source, dest) {\n const result = Array.from(list);\n const [removed] = result.splice(source, 1);\n result.splice(dest, 0, removed);\n return result;\n };\n\n /**\n * @param {any} obj\n * @param {{ id: any; user: any; name: any; icon: any; color: any; language: ioBroker.Languages; }} options\n * @param {boolean} [defaultEnabling]\n */\n static getSettings(obj, options, defaultEnabling) {\n let settings;\n const id = (obj && obj._id) || (options && options.id);\n if (obj && obj.hasOwnProperty('common')) {\n obj = obj.common;\n }\n if (obj && obj.custom) {\n settings = obj.custom || {};\n settings = settings[NAMESPACE] && settings[NAMESPACE][options.user || 'admin'] ? JSON.parse(JSON.stringify(settings[NAMESPACE][options.user || 'admin'])) : {enabled: true};\n } else {\n settings = {enabled: defaultEnabling === undefined ? true : defaultEnabling, useCustom: false};\n }\n\n if (!settings.hasOwnProperty('enabled')) {\n settings.enabled = defaultEnabling === undefined ? true : defaultEnabling;\n }\n\n if (false && settings.useCommon) {\n if (obj.color) settings.color = obj.color;\n if (obj.icon) settings.icon = obj.icon;\n if (obj.name) settings.name = obj.name;\n } else {\n if (options) {\n if (!settings.name && options.name) settings.name = options.name;\n if (!settings.icon && options.icon) settings.icon = options.icon;\n if (!settings.color && options.color) settings.color = options.color;\n }\n\n if (obj) {\n if (!settings.color && obj.color) settings.color = obj.color;\n if (!settings.icon && obj.icon) settings.icon = obj.icon;\n if (!settings.name && obj.name) settings.name = obj.name;\n }\n }\n\n if (typeof settings.name === 'object') {\n settings.name = settings.name[options.language] || settings.name.en;\n\n settings.name = (settings.name || '').toString().replace(/_/g, ' ');\n\n if (settings.name === settings.name.toUpperCase()) {\n settings.name = settings.name[0] + settings.name.substring(1).toLowerCase();\n }\n }\n if (!settings.name && id) {\n let pos = id.lastIndexOf('.');\n settings.name = id.substring(pos + 1).replace(/[_.]/g, ' ');\n settings.name = (settings.name || '').toString().replace(/_/g, ' ');\n settings.name = Utils.CapitalWords(settings.name);\n }\n\n return settings;\n }\n\n /**\n * @param {any} obj\n * @param {any} settings\n * @param {{ user: any; language: ioBroker.Languages; }} options\n */\n static setSettings(obj, settings, options) {\n if (obj) {\n obj.common = obj.common || {};\n obj.common.custom = obj.common.custom || {};\n obj.common.custom[NAMESPACE] = obj.common.custom[NAMESPACE] || {};\n obj.common.custom[NAMESPACE][options.user || 'admin'] = settings;\n const s = obj.common.custom[NAMESPACE][options.user || 'admin'];\n if (s.useCommon) {\n if (s.color !== undefined) {\n obj.common.color = s.color;\n delete s.color;\n }\n if (s.icon !== undefined) {\n obj.common.icon = s.icon;\n delete s.icon;\n }\n if (s.name !== undefined) {\n if (typeof obj.common.name !== 'object') {\n obj.common.name = {};\n obj.common.name[options.language] = s.name;\n } else{\n obj.common.name[options.language] = s.name;\n }\n delete s.name;\n }\n }\n\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * Get the icon for the given settings.\n * @param {{ icon: string | undefined; name: string | undefined; prefix: string | undefined}} settings\n * @param {any} style\n * @returns {JSX.Element | null}\n */\n static getIcon(settings, style) {\n if (settings && settings.icon) {\n // If UTF-8 icon\n if (settings.icon.length <= 2) {\n return <span style={style || {}}>{settings.icon}</span>;\n } else\n if (settings.icon.startsWith('data:image')) {\n return <img alt={settings.name} src={settings.icon} style={style || {}}/>;\n } else { // may be later some changes for second type\n return <img alt={settings.name} src={(settings.prefix || '') + settings.icon} style={style || {}}/>;\n }\n }\n return null;\n }\n\n /**\n * Get the icon for the given object.\n * @param {string} id\n * @param {{ common: { icon: any; }; }} obj\n * @returns {string | null}\n */\n static getObjectIcon(id, obj) {\n // If id is Object\n if (typeof id === 'object') {\n obj = id;\n id = obj._id;\n }\n\n if (obj && obj.common && obj.common.icon) {\n let icon = obj.common.icon;\n // If UTF-8 icon\n if (typeof icon === 'string' && icon.length <= 2) {\n return icon;\n } else\n if (icon.startsWith('data:image')) {\n return icon;\n } else {\n const parts = id.split('.');\n if (parts[0] === 'system') {\n icon = 'adapter/' + parts[2] + (icon.startsWith('/') ? '' : '/') + icon;\n } else {\n icon = 'adapter/' + parts[0] + (icon.startsWith('/') ? '' : '/') + icon;\n }\n\n if (window.location.pathname.match(/adapter\\/[^/]+\\/[^/]+\\.html/)) {\n icon = '../../' + icon;\n } else if (window.location.pathname.match(/material\\/[.\\d]+/)) {\n icon = '../../' + icon;\n } else\n if (window.location.pathname.match(/material\\//)) {\n icon = '../' + icon;\n }\n return icon;\n }\n } else {\n return null;\n }\n }\n\n /**\n * Splits CamelCase into words.\n * @param {string | undefined} text\n * @returns {string}\n */\n static splitCamelCase(text) {\n if (false && text !== text.toUpperCase()) {\n const words = text.split(/\\s+/);\n for (let i = 0; i < words.length; i++) {\n let word = words[i];\n if (word.toLowerCase() !== word && word.toUpperCase() !== word) {\n let z = 0;\n const ww = [];\n let start = 0;\n while (z < word.length) {\n if (word[z].match(/[A-ZÜÄÖА-Я]/)) {\n ww.push(word.substring(start, z));\n start = z;\n }\n z++;\n }\n if (start !== z) {\n ww.push(word.substring(start, z));\n }\n for (let k = 0; k < ww.length; k++) {\n words.splice(i + k, 0, ww[k]);\n }\n i += ww.length;\n }\n }\n\n return words.map(w => {\n w = w.trim();\n if (w) {\n return w[0].toUpperCase() + w.substring(1).toLowerCase();\n }\n return '';\n }).join(' ');\n } else {\n return Utils.CapitalWords(text);\n }\n }\n\n /**\n * Check if the given color is bright.\n * https://stackoverflow.com/questions/35969656/how-can-i-generate-the-opposite-color-according-to-current-color\n * @param {string | null | undefined} color\n * @param {boolean} [defaultValue]\n * @returns {boolean}\n */\n static isUseBright(color, defaultValue) {\n if (color === null || color === undefined || color === '') {\n return defaultValue === undefined ? true : defaultValue;\n }\n color = color.toString();\n if (color.indexOf('#') === 0) {\n color = color.slice(1);\n }\n let r;\n let g;\n let b;\n\n const rgb = color.match(/^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?/i);\n if (rgb && rgb.length === 4) {\n r = parseInt(rgb[1], 10);\n g = parseInt(rgb[2], 10);\n b = parseInt(rgb[3], 10);\n } else {\n // convert 3-digit hex to 6-digits.\n if (color.length === 3) {\n color = color[0] + color[0] + color[1] + color[1] + color[2] + color[2];\n }\n if (color.length !== 6) {\n return false;\n }\n\n r = parseInt(color.slice(0, 2), 16);\n g = parseInt(color.slice(2, 4), 16);\n b = parseInt(color.slice(4, 6), 16);\n }\n\n // http://stackoverflow.com/a/3943023/112731\n return (r * 0.299 + g * 0.587 + b * 0.114) <= 186;\n };\n\n /**\n * Get the time string in the format 00:00.\n * @param {string | number} seconds\n */\n static getTimeString(seconds) {\n seconds = parseFloat(seconds);\n if (isNaN(seconds)) {\n return '--:--';\n }\n const hours = Math.floor(seconds / 3600);\n let minutes = Math.floor((seconds % 3600) / 60);\n let secs = seconds % 60;\n if (hours) {\n if (minutes < 10) minutes = '0' + minutes;\n if (secs < 10) secs = '0' + secs;\n return hours + ':' + minutes + ':' + secs;\n } else {\n if (secs < 10) secs = '0' + secs;\n return minutes + ':' + secs;\n }\n }\n\n /**\n * Gets the wind direction with the given angle (degrees).\n * @param {number} angle in degrees.\n * @returns {string | undefined}\n */\n static getWindDirection(angle) {\n if (angle >= 0 && angle < 11.25) {\n return 'N'\n } else if (angle >= 11.25 && angle < 33.75) {\n return 'NNE'\n } else if (angle >= 33.75 && angle < 56.25) {\n return 'NE'\n } else if (angle >= 56.25 && angle < 78.75) {\n return 'ENE'\n } else if (angle >= 78.75 && angle < 101.25) {\n return 'E'\n } else if (angle >= 101.25 && angle < 123.75) {\n return 'ESE'\n } else if (angle >= 123.75 && angle < 146.25) {\n return 'SE'\n } else if (angle >= 146.25 && angle < 168.75) {\n return 'SSE'\n } else if (angle >= 168.75 && angle < 191.25) {\n return 'S'\n } else if (angle >= 191.25 && angle < 213.75) {\n return 'SSW'\n } else if (angle >= 213.75 && angle < 236.25) {\n return 'SW'\n } else if (angle >= 236.25 && angle < 258.75) {\n return 'WSW'\n } else if (angle >= 258.75 && angle < 281.25) {\n return 'W'\n } else if (angle >= 281.25 && angle < 303.75) {\n return 'WNW'\n } else if (angle >= 303.75 && angle < 326.25) {\n return 'NW'\n } else if (angle >= 326.25 && angle < 348.75) {\n return 'NNW'\n } else if (angle >= 348.75) {\n return 'N'\n }\n }\n\n /**\n * Pad the given number with a zero if its not 2 digits long.\n * @param {string | number} num\n */\n static padding(num) {\n if (typeof num === 'string') {\n if (num.length < 2) {\n return '0' + num;\n } else {\n return num;\n }\n } else if (num < 10) {\n return '0' + num;\n } else {\n return num;\n }\n }\n\n /**\n * Sets the date format.\n * @param {string} format\n */\n static setDataFormat(format) {\n if (format) {\n Utils.dateFormat = format.toUpperCase().split(/[.-/]/);\n Utils.dateFormat.splice(Utils.dateFormat.indexOf('YYYY'), 1);\n }\n }\n\n /**\n * Converts the date to a string.\n * @param {string | number | Date} now\n * @returns {string}\n */\n static date2string(now) {\n if (typeof now === 'string') {\n now = now.trim();\n if (!now) return '';\n // only letters\n if (now.match(/^[\\w\\s]+$/)) {\n // Day of week\n return now;\n }\n let m = now.match(/(\\d{1,4})[-./](\\d{1,2})[-./](\\d{1,4})/);\n if (m) {\n let a = [parseInt(m[1], 10), parseInt(m[2], 10), parseInt(m[3], 10)];\n let year = a.find(y => y > 31);\n a.splice(a.indexOf(year), 1);\n let day = a.find(m => m > 12);\n if (day) {\n a.splice(a.indexOf(day), 1);\n now = new Date(year, a[0] - 1, day);\n } else {\n // MM DD\n if (Utils.dateFormat[0][0] === 'M' && Utils.dateFormat[1][0] === 'D') {\n now = new Date(year, a[0] - 1, a[1]);\n if (Math.abs(now.getTime - Date.now()) > 3600000 * 24 * 10) {\n now = new Date(year, a[1] - 1, a[0]);\n }\n } else\n // DD MM\n if (Utils.dateFormat[0][0] === 'D' && Utils.dateFormat[1][0] === 'M') {\n now = new Date(year, a[1] - 1, a[0]);\n if (Math.abs(now.getTime - Date.now()) > 3600000 * 24 * 10) {\n now = new Date(year, a[0] - 1, a[1]);\n }\n } else {\n now = new Date(now);\n }\n }\n } else {\n now = new Date(now);\n }\n } else {\n now = new Date(now);\n }\n\n let date = I18n.t('ra_dow_' + days[now.getDay()]).replace('ra_dow_', '');\n date += '. ' + now.getDate() + ' ' + I18n.t('ra_month_' + months[now.getMonth()]).replace('ra_month_', '');\n return date;\n }\n\n /**\n * Render a text as a link.\n * @param {string} text\n * @returns {string | JSX.Element[]}\n */\n static renderTextWithA(text) {\n let m = text.match(/<a [^<]+<\\/a>|<br\\/?>/);\n if (m) {\n const result = [];\n let key = 1;\n do {\n const p = text.split(m[0]);\n p[0] && result.push(<span key={'a' + (key++)}>{p[0]}</span>);\n\n if (m[0].startsWith('<br')) {\n result.push(<br key={'a' + (key++)} />);\n } else {\n let href = m[0].match(/href=\"([^\"]+)\"/) || m[0].match(/href='([^']+)'/);\n let target = m[0].match(/target=\"([^\"]+)\"/) || m[0].match(/target='([^']+)'/);\n let rel = m[0].match(/rel=\"([^\"]+)\"/) || m[0].match(/rel='([^']+)'/);\n const title = m[0].match(/>([^<]*)</);\n\n // eslint-disable-next-line\n result.push(<a key={'a' + (key++)} href={href ? href[1] : ''} target={target ? target[1] : '_blank'} rel={rel ? rel[1] : ''}>{title ? title[1] : ''}</a>);\n }\n\n text = p[1];\n\n m = text && text.match(/<a [^<]+<\\/a>|<br\\/?>/);\n if (!m) {\n p[1] && result.push(<span key={'a' + (key++)}>{p[1]}</span>);\n }\n } while (m);\n\n return result;\n } else {\n return text;\n }\n }\n\n /**\n * Get the smart name of the given state.\n * @param {Record<string, ioBroker.StateObject> | ioBroker.StateObject} states\n * @param {string} id\n * @param {string} instanceId\n * @param {boolean} [noCommon]\n */\n static getSmartName(states, id, instanceId, noCommon) {\n if (!id) {\n if (!noCommon) {\n if (!states.common) {\n return states.smartName;\n } else {\n if (states && !states.common) {\n return states.smartName;\n } else {\n return states.common.smartName;\n }\n }\n } else {\n if (states && !states.common) {\n return states.smartName;\n } else {\n return (states &&\n states.common &&\n states.common.custom &&\n states.common.custom[instanceId]) ?\n states.common.custom[instanceId].smartName : undefined;\n }\n }\n } else\n if (!noCommon) {\n return states[id].common.smartName;\n } else {\n return (states[id] &&\n states[id].common &&\n states[id].common.custom &&\n states[id].common.custom[instanceId]) ?\n states[id].common.custom[instanceId].smartName || null : null;\n }\n }\n\n /**\n * Get the smart name from a state.\n * @param {ioBroker.StateObject} obj\n * @param {string} instanceId\n * @param {boolean} [noCommon]\n */\n static getSmartNameFromObj(obj, instanceId, noCommon) {\n if (!noCommon) {\n if (!obj.common) {\n return obj.smartName;\n } else {\n if (obj && !obj.common) {\n return obj.smartName;\n } else {\n return obj.common.smartName;\n }\n }\n } else {\n if (obj && !obj.common) {\n return obj.smartName;\n } else {\n return (obj &&\n obj.common &&\n obj.common.custom &&\n obj.common.custom[instanceId]) ?\n obj.common.custom[instanceId].smartName : undefined;\n }\n }\n }\n\n /**\n * Enable smart name for a state.\n * @param {ioBroker.StateObject} obj\n * @param {string} instanceId\n * @param {boolean} [noCommon]\n */\n static enableSmartName(obj, instanceId, noCommon) {\n if (noCommon) {\n obj.common.custom = obj.common.custom || {};\n obj.common.custom[instanceId] = obj.common.custom[instanceId] || {};\n obj.common.custom[instanceId].smartName = {};\n } else {\n obj.common.smartName = {};\n }\n }\n\n /**\n * Completely remove smart name from a state.\n * @param {ioBroker.StateObject} obj\n * @param {string | number} instanceId\n * @param {boolean} [noCommon]\n */\n static removeSmartName(obj, instanceId, noCommon) {\n if (noCommon) {\n if (obj.common && obj.common.custom && obj.common.custom[instanceId]) {\n obj.common.custom[instanceId] = null;\n }\n } else {\n obj.common.smartName = null;\n }\n }\n\n /**\n * Update the smartname of a state.\n * @param {ioBroker.StateObject} obj\n * @param {string} newSmartName\n * @param {string | undefined} byON\n * @param {string | undefined} smartType\n * @param {string} instanceId\n * @param {boolean} [noCommon]\n */\n static updateSmartName(obj, newSmartName, byON, smartType, instanceId, noCommon) {\n const language = I18n.getLanguage();\n\n // convert Old format\n if (typeof obj.common.smartName === 'string') {\n const nnn = obj.common.smartName;\n obj.common.smartName = {};\n obj.common.smartName[language] = nnn;\n }\n\n // convert old settings\n if (obj.native && obj.native.byON) {\n delete obj.native.byON;\n let _smartName = obj.common.smartName;\n\n if (!_smartName || typeof _smartName !== 'object') {\n _smartName = {en: _smartName};\n _smartName[language] = _smartName.en;\n }\n obj.common.smartName = _smartName;\n }\n if (smartType !== undefined) {\n if (noCommon) {\n obj.common.custom = obj.common.custom || {};\n obj.common.custom[instanceId] = obj.common.custom[instanceId] || {};\n obj.common.custom[instanceId].smartName = obj.common.custom[instanceId].smartName || {};\n if (!smartType) {\n delete obj.common.custom[instanceId].smartName.smartType;\n } else {\n obj.common.custom[instanceId].smartName.smartType = smartType;\n }\n } else {\n obj.common.smartName = obj.common.smartName || {};\n if (!smartType) {\n delete obj.common.smartName.smartType;\n } else {\n obj.common.smartName.smartType = smartType;\n }\n\n }\n }\n if (byON !== undefined) {\n if (noCommon) {\n obj.common.custom = obj.common.custom || {};\n obj.common.custom[instanceId] = obj.common.custom[instanceId] || {};\n obj.common.custom[instanceId].smartName = obj.common.custom[instanceId].smartName || {};\n obj.common.custom[instanceId].smartName.byON = byON;\n } else {\n obj.common.smartName = obj.common.smartName || {};\n obj.common.smartName.byON = byON;\n }\n }\n if (newSmartName !== undefined) {\n let smartName;\n if (noCommon) {\n obj.common.custom = obj.common.custom || {};\n obj.common.custom[instanceId] = obj.common.custom[instanceId] || {};\n obj.common.custom[instanceId].smartName = obj.common.custom[instanceId].smartName || {};\n smartName = obj.common.custom[instanceId].smartName;\n } else {\n obj.common.smartName = obj.common.smartName || {};\n smartName = obj.common.smartName;\n }\n smartName[language] = newSmartName;\n\n // If smart name deleted\n if (smartName && (!smartName[language] ||\n (smartName[language] === obj.common.name &&\n (!obj.common.role || obj.common.role.indexOf('button') >= 0)))) {\n delete smartName[language];\n let empty = true;\n // Check if structure has any definitions\n for (const key in smartName) {\n if (smartName.hasOwnProperty(key)) {\n empty = false;\n break;\n }\n }\n // If empty => delete smartName completely\n if (empty) {\n if (noCommon) {\n if (obj.common.custom[instanceId].smartName.byON === undefined) {\n delete obj.common.custom[instanceId];\n } else {\n delete obj.common.custom[instanceId].en;\n delete obj.common.custom[instanceId].de;\n delete obj.common.custom[instanceId].ru;\n delete obj.common.custom[instanceId].nl;\n delete obj.common.custom[instanceId].pl;\n delete obj.common.custom[instanceId].it;\n delete obj.common.custom[instanceId].fr;\n delete obj.common.custom[instanceId].pt;\n delete obj.common.custom[instanceId].es;\n delete obj.common.custom[instanceId]['zh-cn'];\n }\n } else {\n if (obj.common.smartName.byON !== undefined) {\n delete obj.common.smartName.en;\n delete obj.common.smartName.de;\n delete obj.common.smartName.ru;\n delete obj.common.smartName.nl;\n delete obj.common.smartName.pl;\n delete obj.common.smartName.it;\n delete obj.common.smartName.fr;\n delete obj.common.smartName.pt;\n delete obj.common.smartName.es;\n delete obj.common.smartName['zh-cn'];\n } else {\n obj.common.smartName = null;\n }\n }\n }\n }\n }\n }\n\n /**\n * Disable the smart name of a state.\n * @param {ioBroker.StateObject} obj\n * @param {string} instanceId\n * @param {boolean} [noCommon]\n */\n static disableSmartName(obj, instanceId, noCommon) {\n if (noCommon) {\n obj.common.custom = obj.common.custom || {};\n obj.common.custom[instanceId] = obj.common.custom[instanceId] || {};\n obj.common.custom[instanceId].smartName = false;\n } else {\n obj.common.smartName = false;\n }\n }\n\n /**\n * Copy text to the clipboard.\n * @param {string} text\n * @param {Event} [e]\n */\n static copyToClipboard(text, e) {\n const el = window.document.createElement('textarea');\n el.value = text;\n window.document.body.appendChild(el);\n el.select();\n window.document.execCommand('copy');\n window.document.body.removeChild(el);\n console.log(text);\n e && e.stopPropagation();\n e && e.preventDefault();\n }\n\n /**\n * Gets the extension of a file name.\n * @param {string | null} [fileName] the file name.\n * @returns {string | null} The extension in lower case.\n */\n static getFileExtension(fileName) {\n const pos = (fileName || '').lastIndexOf('.');\n if (pos !== -1) {\n return fileName.substring(pos + 1).toLowerCase();\n } else {\n return null;\n }\n }\n\n /**\n * Format number of bytes as a string with B, KB, MB or GB.\n * The base for all calculations is 1024.\n * @param {number} bytes The number of bytes.\n * @returns {string} The formatted string (e.g. '723.5 KB')\n */\n static formatBytes(bytes) {\n if (Math.abs(bytes) < 1024) {\n return bytes + ' B';\n }\n\n const units = ['KB','MB','GB'];\n //const units = ['KiB','MiB','GiB','TiB','PiB','EiB','ZiB','YiB'];\n let u = -1;\n\n do {\n bytes /= 1024;\n ++u;\n } while (Math.abs(bytes) >= 1024 && u < units.length - 1);\n\n return bytes.toFixed(1) + ' ' + units[u];\n }\n\n /**\n * Invert the given color according to theme type to get the inverted text color for background\n * @param {string} color Color in the format '#rrggbb' or '#rgb' (or without hash)\n * @param {string} themeType theme type\n * @param {string} invert dark theme has light color in control or light theme has light color in control\n * @returns {string}\n */\n static getInvertedColor(color, themeType, invert) {\n if (!color) {\n return undefined;\n } else {\n const invertedColor = Utils.invertColor(color, true);\n if (invertedColor === '#FFFFFF' && (themeType === 'dark' || (invert && themeType === 'light'))) {\n return '#DDD';\n } else\n if (invertedColor === '#000000' && (themeType === 'light' || (invert && themeType === 'dark'))) {\n return '#222';\n } else {\n return undefined;\n }\n }\n }\n\n // Big thanks to: https://stackoverflow.com/questions/35969656/how-can-i-generate-the-opposite-color-according-to-current-color\n /**\n * Invert the given color\n * @param {string} hex Color in the format '#rrggbb' or '#rgb' (or without hash)\n * @param {boolean} bw Set to black or white.\n * @returns {string}\n */\n static invertColor(hex, bw) {\n if (hex === undefined || hex === null || hex === '' || typeof hex !== 'string') {\n return '';\n }\n if (hex.startsWith('rgba')) {\n const m = hex.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+),\\s*([.\\d]+)\\)/);\n if (m) {\n hex = parseInt(m[1], 10).toString(16).padStart(2, '0') +\n parseInt(m[2], 10).toString(16).padStart(2, '0') +\n parseInt(m[2], 10).toString(16).padStart(2, '0');\n }\n } else if (hex.startsWith('rgba')) {\n const m = hex.match(/rgb?\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)/);\n if (m) {\n hex = parseInt(m[1], 10).toString(16).padStart(2, '0') +\n parseInt(m[2], 10).toString(16).padStart(2, '0') +\n parseInt(m[2], 10).toString(16).padStart(2, '0');\n }\n } else\n if (hex.startsWith('#')) {\n hex = hex.slice(1);\n }\n // convert 3-digit hex to 6-digits.\n if (hex.length === 3) {\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\n }\n if (hex.length !== 6) {\n console.warn('Cannot invert color: ' + hex);\n return hex;\n }\n let r = parseInt(hex.slice(0, 2), 16);\n let g = parseInt(hex.slice(2, 4), 16);\n let b = parseInt(hex.slice(4, 6), 16);\n\n if (bw) {\n // http://stackoverflow.com/a/3943023/112731\n return (r * 0.299 + g * 0.587 + b * 0.114) > 186\n ? '#000000'\n : '#FFFFFF';\n }\n // invert color components\n r = (255 - r).toString(16);\n g = (255 - g).toString(16);\n b = (255 - b).toString(16);\n // pad each with zeros and return\n return '#' + r.padStart(2, '0') + g.padStart(2, '0') + b.padStart(2, '0');\n }\n\n // https://github.com/lukeed/clsx/blob/master/src/index.js\n // License\n // MIT © Luke Edwards\n /**\n * @private\n * @param {any} mix\n * @returns {string}\n */\n static _toVal(mix) {\n let k, y, str='';\n\n if (typeof mix === 'string' || typeof mix === 'number') {\n str += mix;\n } else if (typeof mix === 'object') {\n if (Array.isArray(mix)) {\n for (k=0; k < mix.length; k++) {\n if (mix[k]) {\n if ((y = Utils._toVal(mix[k]))) {\n str && (str += ' ');\n str += y;\n }\n }\n }\n } else {\n for (k in mix) {\n if (mix[k]) {\n str && (str += ' ');\n str += k;\n }\n }\n }\n }\n\n return str;\n }\n\n // https://github.com/lukeed/clsx/blob/master/src/index.js\n // License\n // MIT © Luke Edwards\n /**\n * Convert any object to a string with its values.\n * @returns {string}\n */\n static clsx () {\n let i = 0;\n let tmp;\n let x;\n let str = '';\n while (i < arguments.length) {\n if ((tmp = arguments[i++])) {\n if ((x = Utils._toVal(tmp))) {\n str && (str += ' ');\n str += x\n }\n }\n }\n return str;\n }\n\n /**\n * Get the current theme name (either from local storage or the browser settings).\n * @param {string} [themeName]\n * @returns {string}\n */\n static getThemeName(themeName = '') {\n if (window.vendorPrefix && window.vendorPrefix !== '@@vendorPrefix@@') {\n return window.vendorPrefix;\n }\n\n return themeName ? themeName : window.localStorage && window.localStorage.getItem('App.themeName') ?\n 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.setItem('App.themeName', themeName);\n 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 states.forEach((value, key) => result[key] = value);\n return result;\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","_id","forEnumId","hasOwnProperty","custom","user","subOrder","JSON","parse","stringify","order","subURLs","URLs","list","source","dest","result","Array","from","splice","removed","defaultEnabling","enabled","undefined","useCustom","useCommon","color","icon","s","style","length","startsWith","prefix","parts","location","pathname","match","words","i","z","ww","start","push","k","w","defaultValue","indexOf","slice","r","g","b","rgb","parseInt","parseFloat","isNaN","secs","angle","num","format","dateFormat","now","m","a","year","find","y","day","Date","abs","getTime","date","getDay","getDate","getMonth","key","p","href","target","rel","title","states","instanceId","noCommon","smartName","newSmartName","byON","smartType","getLanguage","nnn","_smartName","role","empty","nl","pl","it","fr","pt","es","e","el","document","createElement","value","body","appendChild","select","execCommand","removeChild","console","log","stopPropagation","preventDefault","fileName","bytes","units","u","toFixed","themeType","invert","invertedColor","invertColor","hex","bw","padStart","warn","mix","str","isArray","_toVal","tmp","x","arguments","themeName","vendorPrefix","localStorage","getItem","matchMedia","matches","setItem","themes","getThemeNames","newTheme","setThemeName","query","forEach","part","decodeURIComponent","f","pop","dateObj","mm","dd","getFullYear","v","getHours","getMinutes","getSeconds","getMilliseconds","round","d","h","url","open","extractHeader","header","lines","attrs","_header","line","doc","filename","json","setAttribute","encodeURIComponent","display","click","quality","object","ex","error","type","fetch","then","response","blob","Promise","resolve","reader","FileReader","onload","readAsDataURL","base64","signature","Object","keys"],"sources":["Utils.js"],"sourcesContent":["/**\n * Copyright 2018-2022 bluefox <dogafox@gmail.com>\n *\n * MIT License\n *\n **/\nimport React from 'react';\nimport I18n from '../i18n';\n\nconst NAMESPACE = 'material';\nconst days = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\nconst months = ['Jan', 'Feb', 'Mar', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\nconst QUALITY_BITS = {\n 0x00: '0x00 - good',\n\n 0x01: '0x01 - general problem',\n 0x02: '0x02 - no connection problem',\n\n 0x10: '0x10 - substitute value from controller',\n 0x20: '0x20 - substitute initial value',\n 0x40: '0x40 - substitute value from device or instance',\n 0x80: '0x80 - substitute value from sensor',\n\n 0x11: '0x11 - general problem by instance',\n 0x41: '0x41 - general problem by device',\n 0x81: '0x81 - general problem by sensor',\n\n 0x12: '0x12 - instance not connected',\n 0x42: '0x42 - device not connected',\n 0x82: '0x82 - sensor not connected',\n\n 0x44: '0x44 - device reports error',\n 0x84: '0x84 - sensor reports error',\n};\nconst SIGNATURES = {\n JVBERi0: 'pdf',\n R0lGODdh: 'gif',\n R0lGODlh: 'gif',\n iVBORw0KGgo: 'png',\n '/9j/': 'jpg',\n PHN2Zw: 'svg',\n Qk1: 'bmp',\n AAABAA: 'ico' // 00 00 01 00 according to https://en.wikipedia.org/wiki/List_of_file_signatures\n};\n\nclass Utils {\n static namespace = NAMESPACE;\n static INSTANCES = 'instances';\n static dateFormat = ['DD', 'MM'];\n static FORBIDDEN_CHARS = /[^._\\-/ :!#$%&()+=@^{}|~\\p{Ll}\\p{Lu}\\p{Nd}]+/gu;\n\n /**\n * Capitalize words.\n * @param {string | undefined} name\n * @returns {string}\n */\n static CapitalWords(name) {\n return (name || '').split(/[\\s_]/)\n .filter(item => item)\n .map(word => word ? word[0].toUpperCase() + word.substring(1).toLowerCase() : '')\n .join(' ');\n }\n\n static formatSeconds(seconds) {\n const days = Math.floor(seconds / (3600 * 24));\n seconds %= 3600 * 24;\n let hours = Math.floor(seconds / 3600);\n if (hours < 10) {\n hours = '0' + hours;\n }\n seconds %= 3600;\n let minutes = Math.floor(seconds / 60);\n if (minutes < 10) {\n minutes = '0' + minutes;\n }\n seconds %= 60;\n seconds = Math.floor(seconds);\n if (seconds < 10) {\n seconds = '0' + seconds;\n }\n let text = '';\n if (days) {\n text += `${days} ${I18n.t('ra_daysShortText')} `;\n }\n text += `${hours}:${minutes}:${seconds}`;\n\n return text;\n }\n\n /**\n * Get the name of the object by id from the name or description.\n * @param {Record<string, ioBroker.Object>} objects\n * @param {string} id\n * @param {{ name: any; } | ioBroker.Languages | null} settings\n * @param {{ language?: ioBroker.Languages; }} options\n * @param {boolean} [isDesc] Set to true to get the description.\n * @returns {string}\n */\n static getObjectName(objects, id, settings, options, isDesc) {\n let item = objects[id];\n let text = id;\n const attr = isDesc ? 'desc' : 'name';\n\n if (typeof settings === 'string' && !options) {\n options = {language: settings};\n settings = null;\n }\n\n options = options || {};\n if (!options.language) {\n options.language = (objects['system.config'] && objects['system.config'].common && objects['system.config'].common.language) || window.sysLang || 'en';\n }\n if (settings && settings.name) {\n text = settings.name;\n if (typeof text === 'object') {\n text = text[options.language] || text.en;\n }\n } else\n if (item && item.common && item.common[attr]) {\n text = item.common[attr];\n if (attr !== 'desc' && !text && item.common.desc) {\n text = item.common.desc;\n }\n if (typeof text === 'object') {\n text = text[options.language] || text.en || text.de || text.ru || '';\n }\n text = (text || '').toString().replace(/[_.]/g, ' ');\n\n if (text === text.toUpperCase()) {\n text = text[0] + text.substring(1).toLowerCase();\n }\n } else {\n let pos = id.lastIndexOf('.');\n text = id.substring(pos + 1).replace(/[_.]/g, ' ');\n text = Utils.CapitalWords(text);\n }\n\n return text.trim();\n }\n\n /**\n * Get the name of the object from the name or description.\n * @param {ioBroker.PartialObject} obj\n * @param {{ name: any; } | ioBroker.Languages | null } settings or language\n * @param {{ language?: ioBroker.Languages; } } options\n * @param {boolean} [isDesc] Set to true to get the description.\n * @returns {string}\n */\n static getObjectNameFromObj(obj, settings, options, isDesc) {\n let item = obj;\n let text = (obj && obj._id) || '';\n const attr = isDesc ? 'desc' : 'name';\n\n if (typeof settings === 'string' && !options) {\n options = {language: settings};\n settings = null;\n }\n\n options = options || {};\n\n if (settings && settings.name) {\n text = settings.name;\n if (typeof text === 'object') {\n text = text[options.language] || text.en;\n }\n } else\n if (item && item.common && item.common[attr]) {\n text = item.common[attr];\n if (attr !== 'desc' && !text && item.common.desc) {\n text = item.common.desc;\n }\n if (typeof text === 'object') {\n text = text[options.language] || text.en;\n }\n text = (text || '').toString().replace(/[_.]/g, ' ');\n\n if (text === text.toUpperCase()) {\n text = text[0] + text.substring(1).toLowerCase();\n }\n }\n return text.trim();\n }\n\n /**\n * @param {ioBroker.PartialObject | ioBroker.ObjectCommon} obj\n * @param {string} forEnumId\n * @param {{ user: string; }} options\n * @returns {string | null}\n */\n static getSettingsOrder(obj, forEnumId, options) {\n if (obj && obj.hasOwnProperty('common')) {\n obj = obj.common;\n }\n let settings;\n if (obj && obj.custom) {\n settings = (obj.custom || {})[NAMESPACE];\n const user = options.user || 'admin';\n if (settings && settings[user]) {\n if (forEnumId) {\n if (settings[user].subOrder && settings[user].subOrder[forEnumId]) {\n return JSON.parse(JSON.stringify(settings[user].subOrder[forEnumId]));\n }\n } else {\n if (settings[user].order) {\n return JSON.parse(JSON.stringify(settings[user].order));\n }\n }\n }\n }\n return null;\n }\n\n /**\n * @param {ioBroker.PartialObject | ioBroker.ObjectCommon} obj\n * @param {string} forEnumId\n * @param {{ user: string; }} options\n */\n static getSettingsCustomURLs(obj, forEnumId, options) {\n if (obj && obj.hasOwnProperty('common')) {\n obj = obj.common;\n }\n let settings;\n if (obj && obj.custom) {\n settings = (obj.custom || {})[NAMESPACE];\n const user = options.user || 'admin';\n if (settings && settings[user]) {\n if (forEnumId) {\n if (settings[user].subURLs && settings[user].subURLs[forEnumId]) {\n return JSON.parse(JSON.stringify(settings[user].subURLs[forEnumId]));\n }\n } else {\n if (settings[user].URLs) {\n return JSON.parse(JSON.stringify(settings[user].URLs));\n }\n }\n }\n }\n return null;\n }\n\n /**\n * Reorder the array items in list between source and dest.\n * @param {Iterable<any> | ArrayLike<any>} list\n * @param {number} source\n * @param {number} dest\n */\n static reorder(list, source, dest) {\n const result = Array.from(list);\n const [removed] = result.splice(source, 1);\n result.splice(dest, 0, removed);\n return result;\n };\n\n /**\n * @param {any} obj\n * @param {{ id: any; user: any; name: any; icon: any; color: any; language: ioBroker.Languages; }} options\n * @param {boolean} [defaultEnabling]\n */\n static getSettings(obj, options, defaultEnabling) {\n let settings;\n const id = (obj && obj._id) || (options && options.id);\n if (obj && obj.hasOwnProperty('common')) {\n obj = obj.common;\n }\n if (obj && obj.custom) {\n settings = obj.custom || {};\n settings = settings[NAMESPACE] && settings[NAMESPACE][options.user || 'admin'] ? JSON.parse(JSON.stringify(settings[NAMESPACE][options.user || 'admin'])) : {enabled: true};\n } else {\n settings = {enabled: defaultEnabling === undefined ? true : defaultEnabling, useCustom: false};\n }\n\n if (!settings.hasOwnProperty('enabled')) {\n settings.enabled = defaultEnabling === undefined ? true : defaultEnabling;\n }\n\n if (false && settings.useCommon) {\n if (obj.color) settings.color = obj.color;\n if (obj.icon) settings.icon = obj.icon;\n if (obj.name) settings.name = obj.name;\n } else {\n if (options) {\n if (!settings.name && options.name) settings.name = options.name;\n if (!settings.icon && options.icon) settings.icon = options.icon;\n if (!settings.color && options.color) settings.color = options.color;\n }\n\n if (obj) {\n if (!settings.color && obj.color) settings.color = obj.color;\n if (!settings.icon && obj.icon) settings.icon = obj.icon;\n if (!settings.name && obj.name) settings.name = obj.name;\n }\n }\n\n if (typeof settings.name === 'object') {\n settings.name = settings.name[options.language] || settings.name.en;\n\n settings.name = (settings.name || '').toString().replace(/_/g, ' ');\n\n if (settings.name === settings.name.toUpperCase()) {\n settings.name = settings.name[0] + settings.name.substring(1).toLowerCase();\n }\n }\n if (!settings.name && id) {\n let pos = id.lastIndexOf('.');\n settings.name = id.substring(pos + 1).replace(/[_.]/g, ' ');\n settings.name = (settings.name || '').toString().replace(/_/g, ' ');\n settings.name = Utils.CapitalWords(settings.name);\n }\n\n return settings;\n }\n\n /**\n * @param {any} obj\n * @param {any} settings\n * @param {{ user: any; language: ioBroker.Languages; }} options\n */\n static setSettings(obj, settings, options) {\n if (obj) {\n obj.common = obj.common || {};\n obj.common.custom = obj.common.custom || {};\n obj.common.custom[NAMESPACE] = obj.common.custom[NAMESPACE] || {};\n obj.common.custom[NAMESPACE][options.user || 'admin'] = settings;\n const s = obj.common.custom[NAMESPACE][options.user || 'admin'];\n if (s.useCommon) {\n if (s.color !== undefined) {\n obj.common.color = s.color;\n delete s.color;\n }\n if (s.icon !== undefined) {\n obj.common.icon = s.icon;\n delete s.icon;\n }\n if (s.name !== undefined) {\n if (typeof obj.common.name !== 'object') {\n obj.common.name = {};\n obj.common.name[options.language] = s.name;\n } else{\n obj.common.name[options.language] = s.name;\n }\n delete s.name;\n }\n }\n\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * Get the icon for the given settings.\n * @param {{ icon: string | undefined; name: string | undefined; prefix: string | undefined}} settings\n * @param {any} style\n * @returns {JSX.Element | null}\n */\n static getIcon(settings, style) {\n if (settings && settings.icon) {\n // If UTF-8 icon\n if (settings.icon.length <= 2) {\n return <span style={style || {}}>{settings.icon}</span>;\n } else\n if (settings.icon.startsWith('data:image')) {\n return <img alt={settings.name} src={settings.icon} style={style || {}}/>;\n } else { // may be later some changes for second type\n return <img alt={settings.name} src={(settings.prefix || '') + settings.icon} style={style || {}}/>;\n }\n }\n return null;\n }\n\n /**\n * Get the icon for the given object.\n * @param {string} id\n * @param {{ common: { icon: any; }; }} obj\n * @returns {string | null}\n */\n static getObjectIcon(id, obj) {\n // If id is Object\n if (typeof id === 'object') {\n obj = id;\n id = obj._id;\n }\n\n if (obj && obj.common && obj.common.icon) {\n let icon = obj.common.icon;\n // If UTF-8 icon\n if (typeof icon === 'string' && icon.length <= 2) {\n return icon;\n } else\n if (icon.startsWith('data:image')) {\n return icon;\n } else {\n const parts = id.split('.');\n if (parts[0] === 'system') {\n icon = 'adapter/' + parts[2] + (icon.startsWith('/') ? '' : '/') + icon;\n } else {\n icon = 'adapter/' + parts[0] + (icon.startsWith('/') ? '' : '/') + icon;\n }\n\n if (window.location.pathname.match(/adapter\\/[^/]+\\/[^/]+\\.html/)) {\n icon = '../../' + icon;\n } else if (window.location.pathname.match(/material\\/[.\\d]+/)) {\n icon = '../../' + icon;\n } else\n if (window.location.pathname.match(/material\\//)) {\n icon = '../' + icon;\n }\n return icon;\n }\n } else {\n return null;\n }\n }\n\n /**\n * Splits CamelCase into words.\n * @param {string | undefined} text\n * @returns {string}\n */\n static splitCamelCase(text) {\n if (false && text !== text.toUpperCase()) {\n const words = text.split(/\\s+/);\n for (let i = 0; i < words.length; i++) {\n let word = words[i];\n if (word.toLowerCase() !== word && word.toUpperCase() !== word) {\n let z = 0;\n const ww = [];\n let start = 0;\n while (z < word.length) {\n if (word[z].match(/[A-ZÜÄÖА-Я]/)) {\n ww.push(word.substring(start, z));\n start = z;\n }\n z++;\n }\n if (start !== z) {\n ww.push(word.substring(start, z));\n }\n for (let k = 0; k < ww.length; k++) {\n words.splice(i + k, 0, ww[k]);\n }\n i += ww.length;\n }\n }\n\n return words.map(w => {\n w = w.trim();\n if (w) {\n return w[0].toUpperCase() + w.substring(1).toLowerCase();\n }\n return '';\n }).join(' ');\n } else {\n return Utils.CapitalWords(text);\n }\n }\n\n /**\n * Check if the given color is bright.\n * https://stackoverflow.com/questions/35969656/how-can-i-generate-the-opposite-color-according-to-current-color\n * @param {string | null | undefined} color\n * @param {boolean} [defaultValue]\n * @returns {boolean}\n */\n static isUseBright(color, defaultValue) {\n if (color === null || color === undefined || color === '') {\n return defaultValue === undefined ? true : defaultValue;\n }\n color = color.toString();\n if (color.indexOf('#') === 0) {\n color = color.slice(1);\n }\n let r;\n let g;\n let b;\n\n const rgb = color.match(/^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?/i);\n if (rgb && rgb.length === 4) {\n r = parseInt(rgb[1], 10);\n g = parseInt(rgb[2], 10);\n b = parseInt(rgb[3], 10);\n } else {\n // convert 3-digit hex to 6-digits.\n if (color.length === 3) {\n color = color[0] + color[0] + color[1] + color[1] + color[2] + color[2];\n }\n if (color.length !== 6) {\n return false;\n }\n\n r = parseInt(color.slice(0, 2), 16);\n g = parseInt(color.slice(2, 4), 16);\n b = parseInt(color.slice(4, 6), 16);\n }\n\n // http://stackoverflow.com/a/3943023/112731\n return (r * 0.299 + g * 0.587 + b * 0.114) <= 186;\n };\n\n /**\n * Get the time string in the format 00:00.\n * @param {string | number} seconds\n */\n static getTimeString(seconds) {\n seconds = parseFloat(seconds);\n if (isNaN(seconds)) {\n return '--:--';\n }\n const hours = Math.floor(seconds / 3600);\n let minutes = Math.floor((seconds % 3600) / 60);\n let secs = seconds % 60;\n if (hours) {\n if (minutes < 10) minutes = '0' + minutes;\n if (secs < 10) secs = '0' + secs;\n return hours + ':' + minutes + ':' + secs;\n } else {\n if (secs < 10) secs = '0' + secs;\n return minutes + ':' + secs;\n }\n }\n\n /**\n * Gets the wind direction with the given angle (degrees).\n * @param {number} angle in degrees.\n * @returns {string | undefined}\n */\n static getWindDirection(angle) {\n if (angle >= 0 && angle < 11.25) {\n return 'N'\n } else if (angle >= 11.25 && angle < 33.75) {\n return 'NNE'\n } else if (angle >= 33.75 && angle < 56.25) {\n return 'NE'\n } else if (angle >= 56.25 && angle < 78.75) {\n return 'ENE'\n } else if (angle >= 78.75 && angle < 101.25) {\n return 'E'\n } else if (angle >= 101.25 && angle < 123.75) {\n return 'ESE'\n } else if (angle >= 123.75 && angle < 146.25) {\n return 'SE'\n } else if (angle >= 146.25 && angle < 168.75) {\n return 'SSE'\n } else if (angle >= 168.75 && angle < 191.25) {\n return 'S'\n } else if (angle >= 191.25 && angle < 213.75) {\n return 'SSW'\n } else if (angle >= 213.75 && angle < 236.25) {\n return 'SW'\n } else if (angle >= 236.25 && angle < 258.75) {\n return 'WSW'\n } else if (angle >= 258.75 && angle < 281.25) {\n return 'W'\n } else if (angle >= 281.25 && angle < 303.75) {\n return 'WNW'\n } else if (angle >= 303.75 && angle < 326.25) {\n return 'NW'\n } else if (angle >= 326.25 && angle < 348.75) {\n return 'NNW'\n } else if (angle >= 348.75) {\n return 'N'\n }\n }\n\n /**\n * Pad the given number with a zero if its not 2 digits long.\n * @param {string | number} num\n */\n static padding(num) {\n if (typeof num === 'string') {\n if (num.length < 2) {\n return '0' + num;\n } else {\n return num;\n }\n } else if (num < 10) {\n return '0' + num;\n } else {\n return num;\n }\n }\n\n /**\n * Sets the date format.\n * @param {string} format\n */\n static setDataFormat(format) {\n if (format) {\n Utils.dateFormat = format.toUpperCase().split(/[.-/]/);\n Utils.dateFormat.splice(Utils.dateFormat.indexOf('YYYY'), 1);\n }\n }\n\n /**\n * Converts the date to a string.\n * @param {string | number | Date} now\n * @returns {string}\n */\n static date2string(now) {\n if (typeof now === 'string') {\n now = now.trim();\n if (!now) return '';\n // only letters\n if (now.match(/^[\\w\\s]+$/)) {\n // Day of week\n return now;\n }\n let m = now.match(/(\\d{1,4})[-./](\\d{1,2})[-./](\\d{1,4})/);\n if (m) {\n let a = [parseInt(m[1], 10), parseInt(m[2], 10), parseInt(m[3], 10)];\n let year = a.find(y => y > 31);\n a.splice(a.indexOf(year), 1);\n let day = a.find(m => m > 12);\n if (day) {\n a.splice(a.indexOf(day), 1);\n now = new Date(year, a[0] - 1, day);\n } else {\n // MM DD\n if (Utils.dateFormat[0][0] === 'M' && Utils.dateFormat[1][0] === 'D') {\n now = new Date(year, a[0] - 1, a[1]);\n if (Math.abs(now.getTime - Date.now()) > 3600000 * 24 * 10) {\n now = new Date(year, a[1] - 1, a[0]);\n }\n } else\n // DD MM\n if (Utils.dateFormat[0][0] === 'D' && Utils.dateFormat[1][0] === 'M') {\n now = new Date(year, a[1] - 1, a[0]);\n if (Math.abs(now.getTime - Date.now()) > 3600000 * 24 * 10) {\n now = new Date(year, a[0] - 1, a[1]);\n }\n } else {\n now = new Date(now);\n }\n }\n } else {\n now = new Date(now);\n }\n } else {\n now = new Date(now);\n }\n\n let date = I18n.t('ra_dow_' + days[now.getDay()]).replace('ra_dow_', '');\n date += '. ' + now.getDate() + ' ' + I18n.t('ra_month_' + months[now.getMonth()]).replace('ra_month_', '');\n return date;\n }\n\n /**\n * Render a text as a link.\n * @param {string} text\n * @returns {string | JSX.Element[]}\n */\n static renderTextWithA(text) {\n let m = text.match(/<a [^<]+<\\/a>|<br\\/?>/);\n if (m) {\n const result = [];\n let key = 1;\n do {\n const p = text.split(m[0]);\n p[0] && result.push(<span key={'a' + (key++)}>{p[0]}</span>);\n\n if (m[0].startsWith('<br')) {\n result.push(<br key={'a' + (key++)} />);\n } else {\n let href = m[0].match(/href=\"([^\"]+)\"/) || m[0].match(/href='([^']+)'/);\n let target = m[0].match(/target=\"([^\"]+)\"/) || m[0].match(/target='([^']+)'/);\n let rel = m[0].match(/rel=\"([^\"]+)\"/) || m[0].match(/rel='([^']+)'/);\n const title = m[0].match(/>([^<]*)</);\n\n // eslint-disable-next-line\n result.push(<a key={'a' + (key++)} href={href ? href[1] : ''} target={target ? target[1] : '_blank'} rel={rel ? rel[1] : ''}>{title ? title[1] : ''}</a>);\n }\n\n text = p[1];\n\n m = text && text.match(/<a [^<]+<\\/a>|<br\\/?>/);\n if (!m) {\n p[1] && result.push(<span key={'a' + (key++)}>{p[1]}</span>);\n }\n } while (m);\n\n return result;\n } else {\n return text;\n }\n }\n\n /**\n * Get the smart name of the given state.\n * @param {Record<string, ioBroker.StateObject> | ioBroker.StateObject} states\n * @param {string} id\n * @param {string} instanceId\n * @param {boolean} [noCommon]\n */\n static getSmartName(states, id, instanceId, noCommon) {\n if (!id) {\n if (!noCommon) {\n if (!states.common) {\n return states.smartName;\n } else {\n if (states && !states.common) {\n return states.smartName;\n } else {\n return states.common.smartName;\n }\n }\n } else {\n if (states && !states.common) {\n return states.smartName;\n } else {\n return (states &&\n states.common &&\n states.common.custom &&\n states.common.custom[instanceId]) ?\n states.common.custom[instanceId].smartName : undefined;\n }\n }\n } else\n if (!noCommon) {\n return states[id].common.smartName;\n } else {\n return (states[id] &&\n states[id].common &&\n states[id].common.custom &&\n states[id].common.custom[instanceId]) ?\n states[id].common.custom[instanceId].smartName || null : null;\n }\n }\n\n /**\n * Get the smart name from a state.\n * @param {ioBroker.StateObject} obj\n * @param {string} instanceId\n * @param {boolean} [noCommon]\n */\n static getSmartNameFromObj(obj, instanceId, noCommon) {\n if (!noCommon) {\n if (!obj.common) {\n return obj.smartName;\n } else {\n if (obj && !obj.common) {\n return obj.smartName;\n } else {\n return obj.common.smartName;\n }\n }\n } else {\n if (obj && !obj.common) {\n return obj.smartName;\n } else {\n return (obj &&\n obj.common &&\n obj.common.custom &&\n obj.common.custom[instanceId]) ?\n obj.common.custom[instanceId].smartName : undefined;\n }\n }\n }\n\n /**\n * Enable smart name for a state.\n * @param {ioBroker.StateObject} obj\n * @param {string} instanceId\n * @param {boolean} [noCommon]\n */\n static enableSmartName(obj, instanceId, noCommon) {\n if (noCommon) {\n obj.common.custom = obj.common.custom || {};\n obj.common.custom[instanceId] = obj.common.custom[instanceId] || {};\n obj.common.custom[instanceId].smartName = {};\n } else {\n obj.common.smartName = {};\n }\n }\n\n /**\n * Completely remove smart name from a state.\n * @param {ioBroker.StateObject} obj\n * @param {string | number} instanceId\n * @param {boolean} [noCommon]\n */\n static removeSmartName(obj, instanceId, noCommon) {\n if (noCommon) {\n if (obj.common && obj.common.custom && obj.common.custom[instanceId]) {\n obj.common.custom[instanceId] = null;\n }\n } else {\n obj.common.smartName = null;\n }\n }\n\n /**\n * Update the smartname of a state.\n * @param {ioBroker.StateObject} obj\n * @param {string} newSmartName\n * @param {string | undefined} byON\n * @param {string | undefined} smartType\n * @param {string} instanceId\n * @param {boolean} [noCommon]\n */\n static updateSmartName(obj, newSmartName, byON, smartType, instanceId, noCommon) {\n const language = I18n.getLanguage();\n\n // convert Old format\n if (typeof obj.common.smartName === 'string') {\n const nnn = obj.common.smartName;\n obj.common.smartName = {};\n obj.common.smartName[language] = nnn;\n }\n\n // convert old settings\n if (obj.native && obj.native.byON) {\n delete obj.native.byON;\n let _smartName = obj.common.smartName;\n\n if (!_smartName || typeof _smartName !== 'object') {\n _smartName = {en: _smartName};\n _smartName[language] = _smartName.en;\n }\n obj.common.smartName = _smartName;\n }\n if (smartType !== undefined) {\n if (noCommon) {\n obj.common.custom = obj.common.custom || {};\n obj.common.custom[instanceId] = obj.common.custom[instanceId] || {};\n obj.common.custom[instanceId].smartName = obj.common.custom[instanceId].smartName || {};\n if (!smartType) {\n delete obj.common.custom[instanceId].smartName.smartType;\n } else {\n obj.common.custom[instanceId].smartName.smartType = smartType;\n }\n } else {\n obj.common.smartName = obj.common.smartName || {};\n if (!smartType) {\n delete obj.common.smartName.smartType;\n } else {\n obj.common.smartName.smartType = smartType;\n }\n\n }\n }\n if (byON !== undefined) {\n if (noCommon) {\n obj.common.custom = obj.common.custom || {};\n obj.common.custom[instanceId] = obj.common.custom[instanceId] || {};\n obj.common.custom[instanceId].smartName = obj.common.custom[instanceId].smartName || {};\n obj.common.custom[instanceId].smartName.byON = byON;\n } else {\n obj.common.smartName = obj.common.smartName || {};\n obj.common.smartName.byON = byON;\n }\n }\n if (newSmartName !== undefined) {\n let smartName;\n if (noCommon) {\n obj.common.custom = obj.common.custom || {};\n obj.common.custom[instanceId] = obj.common.custom[instanceId] || {};\n obj.common.custom[instanceId].smartName = obj.common.custom[instanceId].smartName || {};\n smartName = obj.common.custom[instanceId].smartName;\n } else {\n obj.common.smartName = obj.common.smartName || {};\n smartName = obj.common.smartName;\n }\n smartName[language] = newSmartName;\n\n // If smart name deleted\n if (smartName && (!smartName[language] ||\n (smartName[language] === obj.common.name &&\n (!obj.common.role || obj.common.role.indexOf('button') >= 0)))) {\n delete smartName[language];\n let empty = true;\n // Check if structure has any definitions\n for (const key in smartName) {\n if (smartName.hasOwnProperty(key)) {\n empty = false;\n break;\n }\n }\n // If empty => delete smartName completely\n if (empty) {\n if (noCommon) {\n if (obj.common.custom[instanceId].smartName.byON === undefined) {\n delete obj.common.custom[instanceId];\n } else {\n delete obj.common.custom[instanceId].en;\n delete obj.common.custom[instanceId].de;\n delete obj.common.custom[instanceId].ru;\n delete obj.common.custom[instanceId].nl;\n delete obj.common.custom[instanceId].pl;\n delete obj.common.custom[instanceId].it;\n delete obj.common.custom[instanceId].fr;\n delete obj.common.custom[instanceId].pt;\n delete obj.common.custom[instanceId].es;\n delete obj.common.custom[instanceId]['zh-cn'];\n }\n } else {\n if (obj.common.smartName.byON !== undefined) {\n delete obj.common.smartName.en;\n delete obj.common.smartName.de;\n delete obj.common.smartName.ru;\n delete obj.common.smartName.nl;\n delete obj.common.smartName.pl;\n delete obj.common.smartName.it;\n delete obj.common.smartName.fr;\n delete obj.common.smartName.pt;\n delete obj.common.smartName.es;\n delete obj.common.smartName['zh-cn'];\n } else {\n obj.common.smartName = null;\n }\n }\n }\n }\n }\n }\n\n /**\n * Disable the smart name of a state.\n * @param {ioBroker.StateObject} obj\n * @param {string} instanceId\n * @param {boolean} [noCommon]\n */\n static disableSmartName(obj, instanceId, noCommon) {\n if (noCommon) {\n obj.common.custom = obj.common.custom || {};\n obj.common.custom[instanceId] = obj.common.custom[instanceId] || {};\n obj.common.custom[instanceId].smartName = false;\n } else {\n obj.common.smartName = false;\n }\n }\n\n /**\n * Copy text to the clipboard.\n * @param {string} text\n * @param {Event} [e]\n */\n static copyToClipboard(text, e) {\n const el = window.document.createElement('textarea');\n el.value = text;\n window.document.body.appendChild(el);\n el.select();\n window.document.execCommand('copy');\n window.document.body.removeChild(el);\n console.log(text);\n e && e.stopPropagation();\n e && e.preventDefault();\n }\n\n /**\n * Gets the extension of a file name.\n * @param {string | null} [fileName] the file name.\n * @returns {string | null} The extension in lower case.\n */\n static getFileExtension(fileName) {\n const pos = (fileName || '').lastIndexOf('.');\n if (pos !== -1) {\n return fileName.substring(pos + 1).toLowerCase();\n } else {\n return null;\n }\n }\n\n /**\n * Format number of bytes as a string with B, KB, MB or GB.\n * The base for all calculations is 1024.\n * @param {number} bytes The number of bytes.\n * @returns {string} The formatted string (e.g. '723.5 KB')\n */\n static formatBytes(bytes) {\n if (Math.abs(bytes) < 1024) {\n return bytes + ' B';\n }\n\n const units = ['KB','MB','GB'];\n //const units = ['KiB','MiB','GiB','TiB','PiB','EiB','ZiB','YiB'];\n let u = -1;\n\n do {\n bytes /= 1024;\n ++u;\n } while (Math.abs(bytes) >= 1024 && u < units.length - 1);\n\n return bytes.toFixed(1) + ' ' + units[u];\n }\n\n /**\n * Invert the given color according to theme type to get the inverted text color for background\n * @param {string} color Color in the format '#rrggbb' or '#rgb' (or without hash)\n * @param {string} themeType theme type\n * @param {string} invert dark theme has light color in control or light theme has light color in control\n * @returns {string}\n */\n static getInvertedColor(color, themeType, invert) {\n if (!color) {\n return undefined;\n } else {\n const invertedColor = Utils.invertColor(color, true);\n if (invertedColor === '#FFFFFF' && (themeType === 'dark' || (invert && themeType === 'light'))) {\n return '#DDD';\n } else\n if (invertedColor === '#000000' && (themeType === 'light' || (invert && themeType === 'dark'))) {\n return '#222';\n } else {\n return undefined;\n }\n }\n }\n\n // Big thanks to: https://stackoverflow.com/questions/35969656/how-can-i-generate-the-opposite-color-according-to-current-color\n /**\n * Invert the given color\n * @param {string} hex Color in the format '#rrggbb' or '#rgb' (or without hash)\n * @param {boolean} bw Set to black or white.\n * @returns {string}\n */\n static invertColor(hex, bw) {\n if (hex === undefined || hex === null || hex === '' || typeof hex !== 'string') {\n return '';\n }\n if (hex.startsWith('rgba')) {\n const m = hex.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+),\\s*([.\\d]+)\\)/);\n if (m) {\n hex = parseInt(m[1], 10).toString(16).padStart(2, '0') +\n parseInt(m[2], 10).toString(16).padStart(2, '0') +\n parseInt(m[2], 10).toString(16).padStart(2, '0');\n }\n } else if (hex.startsWith('rgba')) {\n const m = hex.match(/rgb?\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)/);\n if (m) {\n hex = parseInt(m[1], 10).toString(16).padStart(2, '0') +\n parseInt(m[2], 10).toString(16).padStart(2, '0') +\n parseInt(m[2], 10).toString(16).padStart(2, '0');\n }\n } else\n if (hex.startsWith('#')) {\n hex = hex.slice(1);\n }\n // convert 3-digit hex to 6-digits.\n if (hex.length === 3) {\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\n }\n if (hex.length !== 6) {\n console.warn('Cannot invert color: ' + hex);\n return hex;\n }\n let r = parseInt(hex.slice(0, 2), 16);\n let g = parseInt(hex.slice(2, 4), 16);\n let b = parseInt(hex.slice(4, 6), 16);\n\n if (bw) {\n // http://stackoverflow.com/a/3943023/112731\n return (r * 0.299 + g * 0.587 + b * 0.114) > 186\n ? '#000000'\n : '#FFFFFF';\n }\n // invert color components\n r = (255 - r).toString(16);\n g = (255 - g).toString(16);\n b = (255 - b).toString(16);\n // pad each with zeros and return\n return '#' + r.padStart(2, '0') + g.padStart(2, '0') + b.padStart(2, '0');\n }\n\n // https://github.com/lukeed/clsx/blob/master/src/index.js\n // License\n // MIT © Luke Edwards\n /**\n * @private\n * @param {any} mix\n * @returns {string}\n */\n static _toVal(mix) {\n let k, y, str='';\n\n if (typeof mix === 'string' || typeof mix === 'number') {\n str += mix;\n } else if (typeof mix === 'object') {\n if (Array.isArray(mix)) {\n for (k=0; k < mix.length; k++) {\n if (mix[k]) {\n if ((y = Utils._toVal(mix[k]))) {\n str && (str += ' ');\n str += y;\n }\n }\n }\n } else {\n for (k in mix) {\n if (mix[k]) {\n str && (str += ' ');\n str += k;\n }\n }\n }\n }\n\n return str;\n }\n\n // https://github.com/lukeed/clsx/blob/master/src/index.js\n // License\n // MIT © Luke Edwards\n /**\n * Convert any object to a string with its values.\n * @returns {string}\n */\n static clsx () {\n let i = 0;\n let tmp;\n let x;\n let str = '';\n while (i < arguments.length) {\n if ((tmp = arguments[i++])) {\n if ((x = Utils._toVal(tmp))) {\n str && (str += ' ');\n str += x\n }\n }\n }\n return str;\n }\n\n /**\n * Get the current theme name (either from local storage or the browser settings).\n * @param {string} [themeName]\n * @returns {string}\n */\n static getThemeName(themeName = '') {\n if (window.vendorPrefix && window.vendorPrefix !== '@@vendorPrefix@@') {\n return window.vendorPrefix;\n }\n\n return themeName ? themeName : window.localStorage && window.localStorage.getItem('App.themeName') ?\n 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.setItem('App.themeName', themeName);\n 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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"}
package/README.md CHANGED
@@ -641,6 +641,9 @@ If you still have questions, try to find an answer [here](https://mui.com/guides
641
641
  -->
642
642
 
643
643
  ## Changelog
644
+ ### 3.1.0 (2022-06-07)
645
+ * (bluefox) Some german texts were corrected
646
+
644
647
  ### 3.0.17 (2022-06-03)
645
648
  * (bluefox) Allowed to call getAdapterInstances not for admin too
646
649