@iobroker/adapter-react-v5 2.1.0 → 2.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Components/404.js +3 -3
- package/Components/404.js.map +1 -1
- package/Components/FileBrowser.js +4 -4
- package/Components/FileBrowser.js.map +1 -1
- package/Components/FileViewer.js +3 -3
- package/Components/FileViewer.js.map +1 -1
- package/Components/IconSelector.js +6 -4
- package/Components/IconSelector.js.map +1 -1
- package/Components/ObjectBrowser.js +3 -3
- package/Components/ObjectBrowser.js.map +1 -1
- package/Components/SimpleCron/index.js.map +1 -1
- package/Components/ToggleThemeMenu.js +1 -1
- package/Components/ToggleThemeMenu.js.map +1 -1
- package/Components/TreeTable.js +28 -12
- package/Components/TreeTable.js.map +1 -1
- package/Components/Utils.js +2 -2
- package/Components/Utils.js.map +1 -1
- package/GenericApp.js.map +1 -1
- package/README.md +8 -0
- package/i18n/de.json +292 -279
- package/i18n/en.json +14 -1
- package/i18n/es.json +14 -1
- package/i18n/fr.json +14 -1
- package/i18n/it.json +14 -1
- package/i18n/nl.json +14 -1
- package/i18n/pl.json +14 -1
- package/i18n/pt.json +14 -1
- package/i18n/ru.json +14 -1
- package/i18n/zh-cn.json +14 -1
- package/package.json +1 -1
package/Components/Utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Utils.js"],"names":["NAMESPACE","days","months","QUALITY_BITS","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"],"mappings":"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","sourcesContent":["/**\n * Copyright 2018-2021 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};\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('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/, ' '));\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 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\nexport default Utils;\n"],"file":"Utils.js"}
|
|
1
|
+
{"version":3,"sources":["Utils.js"],"names":["NAMESPACE","days","months","QUALITY_BITS","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"],"mappings":"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","sourcesContent":["/**\n * Copyright 2018-2021 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};\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/, ' '));\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 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\nexport default Utils;\n"],"file":"Utils.js"}
|