@iobroker/adapter-react-v5 3.1.35 → 3.2.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.
package/GenericApp.js CHANGED
@@ -186,6 +186,7 @@ var GenericApp = /*#__PURE__*/function (_Router) {
186
186
  'it': require('./i18n/it.json'),
187
187
  'es': require('./i18n/es.json'),
188
188
  'pl': require('./i18n/pl.json'),
189
+ 'uk': require('./i18n/uk.json'),
189
190
  'zh-cn': require('./i18n/zh-cn.json')
190
191
  };
191
192
 
package/GenericApp.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"GenericApp.js","names":["cssStyle","window","localStorage","getItem","setItem","GenericApp","props","settings","ConnectionClass","Connection","document","getElementById","style","createElement","setAttribute","innerHTML","head","appendChild","isWeb","io","location","port","SocketClient","e","id","obj","socket","systemLang","common","language","I18n","setLanguage","_systemConfig","expertMode","setState","getExpertMode","message","data","newThemeName","Utils","getThemeName","setThemeName","theme","createTheme","themeName","themeType","getThemeType","onThemeChange","onThemeChanged","onToggleExpertMode","console","warn","JSON","stringify","resizeTimer","clearTimeout","setTimeout","width","getWidth","printPrompt","query","search","replace","args","trim","split","filter","t","forEach","b","parts","length","instance","undefined","parseInt","slice","tmp","pathname","adapterName","instanceId","newReact","Router","getLocation","tab","_localStorage","themeInstance","state","selectedTab","selectedTabNum","errorText","changed","connected","loaded","isConfigurationError","toast","bottomButtons","confirmClose","translations","require","Object","keys","lang","assign","setTranslations","savedNative","encryptedFields","sentryDSN","name","doNotLoadAllObjects","onProgress","progress","PROGRESS","CONNECTING","READY","onReady","objects","scripts","subscribeObject","onSystemConfigChanged","then","getSystemConfig","_secret","secret","getObject","instanceObj","waitPromise","sentryEnabled","diag","version","disableDataReporting","host","sentryStarted","Sentry","init","dsn","release","integrations","SentryIntegrations","Dedupe","sentryInited","uuidObj","uuid","configureScope","scope","setUser","Promise","resolve","onPrepareLoad","encryptedNative","parse","onConnectionReady","onError","err","error","showError","addEventListener","onResize","onReceiveMessage","removeEventListener","palette","mode","sessionStorage","value","result","i","String","fromCharCode","charCodeAt","selectTab","index","attr","encrypt","decrypt","includes","push","_socket","emit","doc","rows","item","webExtendable","map","reject","ip","_host","IPs4","address","family","IPs6","hardware","networkInterfaces","eth","inter","isClose","oldObj","_oldObj","a","hasOwnProperty","onPrepareSave","setObject","globalThis","parent","postMessage","onClose","vertical","horizontal","classes","close","native","isChanged","newNative","getIsChanged","onSave","isYes","attrs","shift","Error","_updateNativeValue","cb","text","renderError","renderToast","renderSaveCloseButtons","SIZES","xs","sm","md","lg","xl","innerWidth","reverse","widthComputed","find","key","$iframeDialog","propTypes","PropTypes","string","func","object","array","bool"],"sources":["GenericApp.js"],"sourcesContent":["/**\n * Copyright 2018-2022 bluefox <dogafox@gmail.com>\n *\n * MIT License\n *\n **/\nimport React from 'react';\nimport Connection, { PROGRESS } from './Connection';\nimport PropTypes from 'prop-types';\nimport * as Sentry from '@sentry/browser';\nimport * as SentryIntegrations from '@sentry/integrations';\n\nimport DialogError from './Dialogs/Error';\nimport Snackbar from '@mui/material/Snackbar';\nimport IconButton from '@mui/material/IconButton';\n\nimport IconClose from '@mui/icons-material/Close';\n\nimport printPrompt from './Prompt';\nimport theme from './Theme';\nimport Loader from './Components/Loader';\nimport Router from './Components/Router';\nimport Utils from './Components/Utils';\nimport SaveCloseButtons from './Components/SaveCloseButtons';\nimport ConfirmDialog from './Dialogs/Confirm';\nimport I18n from './i18n';\n\n// import './index.css';\nconst cssStyle = `\nhtml {\n height: 100%;\n}\n\nbody {\n margin: 0;\n padding: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n width: 100%;\n height: 100%;\n overflow: hidden;\n}\n\n/* scrollbar */\n::-webkit-scrollbar-track {\n background-color: #ccc;\n border-radius: 5px;\n}\n\n::-webkit-scrollbar {\n width: 5px;\n height: 5px;\n background-color: #ccc;\n}\n\n::-webkit-scrollbar-thumb {\n background-color: #575757;\n border-radius: 5px;\n}\n\n#root {\n height: 100%;\n}\n\n.App {\n height: 100%;\n}\n\n@keyframes glow {\n from {\n background-color: initial;\n }\n to {\n background-color: #58c458;\n }\n}\n`;\n\nif (!window.localStorage) {\n window.localStorage = {\n getItem: () => null,\n setItem: () => null,\n };\n}\n\n/**\n * @extends {Router<import('./types').GenericAppProps, import('./types').GenericAppState>}\n */\nclass GenericApp extends Router {\n /**\n * @param {import('./types').GenericAppProps} props\n * @param {import('./types').GenericAppSettings | undefined} settings\n */\n constructor(props, settings) {\n const ConnectionClass = props.Connection || settings.Connection || Connection;\n\n if (!window.document.getElementById('generic-app-iobroker-component')) {\n const style = window.document.createElement('style');\n style.setAttribute('id', 'generic-app-iobroker-component');\n style.innerHTML = cssStyle;\n window.document.head.appendChild(style);\n }\n\n // Remove `!Connection.isWeb() && window.adapterName !== 'material'` when iobroker.socket will support native ws\n if (!ConnectionClass.isWeb() && window.io && window.location.port === '3000') {\n try {\n const io = new window.SocketClient();\n delete window.io;\n window.io = io;\n } catch (e) {\n // ignore\n }\n }\n\n super(props);\n\n printPrompt();\n\n let query = (window.location.search || '').replace(/^\\?/, '').replace(/#.*$/, '');\n let args = {};\n query.trim().split('&').filter(t => t.trim()).forEach(b => {\n const parts = b.split('=');\n args[parts[0]] = parts.length === 2 ? parts[1] : true;\n if (args[parts[0]] === 'true') {\n args[parts[0]] = true;\n } else if (args[parts[0]] === 'false') {\n args[parts[0]] = false;\n }\n });\n\n // extract instance from URL\n this.instance = args.instance !== undefined ? parseInt(args.instance, 10) || 0 : (parseInt(window.location.search.slice(1), 10) || 0);\n // extract adapter name from URL\n const tmp = window.location.pathname.split('/');\n this.adapterName = settings?.adapterName || props.adapterName || window.adapterName || tmp[tmp.length - 2] || 'iot';\n this.instanceId = `system.adapter.${this.adapterName}.${this.instance}`;\n this.newReact = args.newReact === true; // it is admin5\n\n const location = Router.getLocation();\n location.tab = location.tab || (window._localStorage || window.localStorage).getItem(`${this.adapterName}-adapter`) || '';\n\n const themeInstance = this.createTheme();\n\n this.state = {\n selectedTab: (window._localStorage || window.localStorage).getItem(`${this.adapterName}-adapter`) || '',\n selectedTabNum: -1,\n native: {},\n errorText: '',\n changed: false,\n connected: false,\n loaded: false,\n isConfigurationError: '',\n expertMode: false,\n toast: '',\n theme: themeInstance,\n themeName: this.getThemeName(themeInstance),\n themeType: this.getThemeType(themeInstance),\n bottomButtons: (settings && settings.bottomButtons) === false ? false : ((props && props.bottomButtons) === false ? false : true),\n width: GenericApp.getWidth(),\n confirmClose: false,\n };\n\n // init translations\n const translations = {\n 'en': require('./i18n/en.json'),\n 'de': require('./i18n/de.json'),\n 'ru': require('./i18n/ru.json'),\n 'pt': require('./i18n/pt.json'),\n 'nl': require('./i18n/nl.json'),\n 'fr': require('./i18n/fr.json'),\n 'it': require('./i18n/it.json'),\n 'es': require('./i18n/es.json'),\n 'pl': require('./i18n/pl.json'),\n 'zh-cn': require('./i18n/zh-cn.json'),\n };\n\n // merge together\n if (settings && settings.translations) {\n Object.keys(settings.translations).forEach(lang => translations[lang] = Object.assign(translations[lang], settings.translations[lang]));\n } else if (props.translations) {\n Object.keys(props.translations).forEach(lang => translations[lang] = Object.assign(translations[lang], props.translations[lang]));\n }\n\n I18n.setTranslations(translations);\n\n this.savedNative = {}; // to detect if the config changed\n\n this.encryptedFields = props.encryptedFields || settings?.encryptedFields || [];\n\n this.sentryDSN = (settings && settings.sentryDSN) || props.sentryDSN;\n\n this.socket = new ConnectionClass({\n ...(props?.socket || settings?.socket),\n name: this.adapterName,\n doNotLoadAllObjects: settings?.doNotLoadAllObjects,\n onProgress: progress => {\n if (progress === PROGRESS.CONNECTING) {\n this.setState({ connected: false });\n } else if (progress === PROGRESS.READY) {\n this.setState({ connected: true });\n } else {\n this.setState({ connected: true });\n }\n },\n onReady: (objects, scripts) => {\n I18n.setLanguage(this.socket.systemLang);\n\n // subscribe because of language and expert mode\n this.socket.subscribeObject('system.config', this.onSystemConfigChanged)\n .then(() => this.getSystemConfig())\n .then(obj => {\n this._secret = (typeof obj !== 'undefined' && obj.native && obj.native.secret) || 'Zgfr56gFe87jJOM';\n this._systemConfig = obj?.common || {};\n return this.socket.getObject(this.instanceId);\n })\n .then(instanceObj => {\n let waitPromise;\n\n const sentryEnabled =\n this._systemConfig.diag !== 'none' &&\n instanceObj &&\n instanceObj.common &&\n instanceObj.common.name &&\n instanceObj.common.version &&\n !instanceObj.common.disableDataReporting &&\n window.location.host !== 'localhost:3000';\n\n // activate sentry plugin\n if (!this.sentryStarted && this.sentryDSN && sentryEnabled) {\n this.sentryStarted = true;\n\n Sentry.init({\n dsn: this.sentryDSN,\n release: `iobroker.${instanceObj.common.name}@${instanceObj.common.version}`,\n integrations: [\n new SentryIntegrations.Dedupe()\n ]\n });\n }\n\n // read UUID and init sentry with it.\n // for backward compatibility it will be processed separately from above logic: some adapters could still have this.sentryDSN as undefined\n if (!this.sentryInited && sentryEnabled) {\n this.sentryInited = true;\n\n waitPromise = this.socket.getObject('system.meta.uuid')\n .then(uuidObj => {\n if (uuidObj && uuidObj.native && uuidObj.native.uuid) {\n Sentry.configureScope(scope =>\n scope.setUser({id: uuidObj.native.uuid}));\n }\n });\n }\n\n waitPromise = waitPromise || Promise.resolve();\n\n waitPromise\n .then(() => {\n if (instanceObj) {\n this.common = instanceObj?.common;\n this.onPrepareLoad(instanceObj.native, instanceObj.encryptedNative); // decode all secrets\n this.savedNative = JSON.parse(JSON.stringify(instanceObj.native));\n this.setState({ native: instanceObj.native, loaded: true, expertMode: this.getExpertMode() }, () =>\n this.onConnectionReady && this.onConnectionReady());\n } else {\n console.warn('Cannot load instance settings');\n this.setState({ native: {}, loaded: true, expertMode: this.getExpertMode()},\n () => this.onConnectionReady && this.onConnectionReady());\n }\n });\n });\n },\n onError: err => {\n console.error(err);\n this.showError(err);\n }\n });\n }\n\n onSystemConfigChanged = (id, obj) => {\n if (obj && id === 'system.config') {\n if (this.socket.systemLang !== obj?.common.language) {\n this.socket.systemLang = obj?.common.language || 'en';\n I18n.setLanguage(this.socket.systemLang);\n }\n\n if (this._systemConfig.expertMode !== !!obj?.common?.expertMode) {\n this._systemConfig = obj?.common || {};\n this.setState({ expertMode: this.getExpertMode() });\n } else {\n this._systemConfig = obj?.common || {};\n }\n }\n }\n\n /**\n * Called immediately after a component is mounted. Setting state here will trigger re-rendering.\n */\n componentDidMount() {\n window.addEventListener('resize', this.onResize, true);\n window.addEventListener('message', this.onReceiveMessage, false);\n super.componentDidMount();\n }\n\n /**\n * Called immediately before a component is destroyed.\n */\n componentWillUnmount() {\n window.removeEventListener('resize', this.onResize, true);\n window.removeEventListener('message', this.onReceiveMessage, false);\n super.componentWillUnmount();\n }\n\n onReceiveMessage = message => {\n if (message?.data) {\n if (message.data === 'updateTheme') {\n const newThemeName = Utils.getThemeName()\n Utils.setThemeName(Utils.getThemeName());\n\n const theme = this.createTheme(newThemeName);\n\n this.setState({\n theme,\n themeName: this.getThemeName(theme),\n themeType: this.getThemeType(theme)\n }, () => {\n this.props.onThemeChange && this.props.onThemeChange(newThemeName);\n this.onThemeChanged && this.onThemeChanged(newThemeName);\n });\n } else if (message.data === 'updateExpertMode') {\n this.onToggleExpertMode && this.onToggleExpertMode(this.getExpertMode());\n } else {\n console.warn('Received unknown message: ' + JSON.stringify(message.data));\n }\n }\n };\n\n /**\n * @private\n */\n onResize = () => {\n this.resizeTimer && clearTimeout(this.resizeTimer);\n this.resizeTimer = setTimeout(() => {\n this.resizeTimer = null;\n this.setState({ width: GenericApp.getWidth() });\n }, 200);\n };\n\n /**\n * Gets the width depending on the window inner width.\n * @returns {import('./types').Width}\n */\n static getWidth() {\n /**\n * innerWidth |xs sm md lg xl\n * |-------|-------|-------|-------|------>\n * width | xs | sm | md | lg | xl\n */\n\n const SIZES = {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920\n };\n const width = window.innerWidth;\n const keys = Object.keys(SIZES).reverse();\n const widthComputed = keys.find(key => width >= SIZES[key]);\n\n return widthComputed || 'xs';\n }\n\n /**\n * Get a theme\n * @param {string} name Theme name\n * @returns {import('./types').Theme}\n */\n createTheme(name = '') {\n return theme(Utils.getThemeName(name));\n }\n\n /**\n * Get the theme name\n * @param {import('./types').Theme} theme Theme\n * @returns {string} Theme name\n */\n getThemeName(theme) {\n return theme.name;\n }\n\n /**\n * Get the theme type\n * @param {import('./types').Theme} theme Theme\n * @returns {string} Theme type\n */\n getThemeType(theme) {\n return theme.palette.mode;\n }\n\n /**\n * Changes the current theme\n */\n toggleTheme() {\n const themeName = this.state.themeName;\n\n // dark => blue => colored => light => dark\n const newThemeName = themeName === 'dark' ? 'blue' :\n (themeName === 'blue' ? 'colored' :\n (themeName === 'colored' ? 'light' : 'dark'));\n\n Utils.setThemeName(newThemeName);\n\n const theme = this.createTheme(newThemeName);\n\n this.setState({\n theme,\n themeName: this.getThemeName(theme),\n themeType: this.getThemeType(theme)\n }, () => {\n this.props.onThemeChange && this.props.onThemeChange(newThemeName);\n this.onThemeChanged && this.onThemeChanged(newThemeName);\n });\n }\n\n /**\n * Gets the system configuration.\n * @returns {Promise<ioBroker.OtherObject>}\n */\n getSystemConfig() {\n return this.socket.getSystemConfig();\n }\n\n /**\n * Get current expert mode\n * @returns {boolean}\n */\n getExpertMode() {\n return window.sessionStorage.getItem('App.expertMode') === 'true' || !!this._systemConfig.expertMode;\n }\n\n /**\n * Gets called when the socket.io connection is ready.\n * You can overload this function to execute own commands.\n */\n onConnectionReady() {\n }\n\n /**\n * Encrypts a string.\n * @param {string} value\n * @returns {string}\n */\n encrypt(value) {\n let result = '';\n for (let i = 0; i < value.length; i++) {\n result += String.fromCharCode(this._secret[i % this._secret.length].charCodeAt(0) ^ value.charCodeAt(i));\n }\n return result;\n }\n\n /**\n * Decrypts a string.\n * @param {string} value\n * @returns {string}\n */\n decrypt(value) {\n let result = '';\n for (let i = 0; i < value.length; i++) {\n result += String.fromCharCode(this._secret[i % this._secret.length].charCodeAt(0) ^ value.charCodeAt(i));\n }\n return result;\n }\n\n /**\n * Gets called when the navigation hash changes.\n * You may override this if needed.\n */\n onHashChanged() {\n const location = Router.getLocation();\n if (location.tab !== this.state.selectedTab) {\n this.selectTab(location.tab);\n }\n }\n\n /**\n * Selects the given tab.\n * @param {string} tab\n * @param {number} [index]\n */\n selectTab(tab, index) {\n (window._localStorage || window.localStorage).setItem(this.adapterName + '-adapter', tab);\n this.setState({ selectedTab: tab, selectedTabNum: index })\n }\n\n /**\n * Gets called before the settings are saved.\n * You may override this if needed.\n * @param {Record<string, any>} settings\n */\n onPrepareSave(settings) {\n // here you can encode values\n this.encryptedFields && this.encryptedFields.forEach(attr => {\n if (settings[attr]) {\n settings[attr] = this.encrypt(settings[attr]);\n }\n });\n\n return true;\n }\n\n /**\n * Gets called after the settings are loaded.\n * You may override this if needed.\n * @param {Record<string, any>} settings\n * @param {string[]} encryptedNative optional list of fields to be decrypted\n */\n onPrepareLoad(settings, encryptedNative) {\n // here you can encode values\n this.encryptedFields && this.encryptedFields.forEach(attr => {\n if (settings[attr]) {\n settings[attr] = this.decrypt(settings[attr]);\n }\n });\n encryptedNative && encryptedNative.forEach(attr => {\n this.encryptedFields = this.encryptedFields || [];\n !this.encryptedFields.includes(attr) && this.encryptedFields.push(attr);\n if (settings[attr]) {\n settings[attr] = this.decrypt(settings[attr]);\n }\n });\n }\n\n /**\n * Gets the extendable instances.\n * @returns {Promise<any[]>}\n */\n getExtendableInstances() {\n return new Promise(resolve => {\n this.socket._socket.emit('getObjectView', 'system', 'instance', null, (err, doc) => {\n if (err) {\n resolve([]);\n } else {\n resolve(doc.rows\n .filter(item => item.value.common.webExtendable)\n .map(item => item.value)\n );\n }\n });\n });\n }\n\n /**\n * Gets the IP addresses of the given host.\n * @param {string} host\n */\n getIpAddresses(host) {\n return new Promise((resolve, reject) => {\n this.socket._socket.emit('getHostByIp', host || this.common.host, (ip, _host) => {\n const IPs4 = [{ name: `[IPv4] 0.0.0.0 - ${I18n.t('ra_Listen on all IPs')}`, address: '0.0.0.0', family: 'ipv4' }];\n const IPs6 = [{ name: '[IPv6] ::', address: '::', family: 'ipv6' }];\n if (_host) {\n host = _host;\n if (host.native.hardware && host.native.hardware.networkInterfaces) {\n Object.keys(host.native.hardware.networkInterfaces).forEach(eth =>\n host.native.hardware.networkInterfaces[eth].forEach(inter => {\n if (inter.family !== 'IPv6') {\n IPs4.push({ name: `[${inter.family}] ${inter.address} - ${eth}`, address: inter.address, family: 'ipv4' });\n } else {\n IPs6.push({ name: `[${inter.family}] ${inter.address} - ${eth}`, address: inter.address, family: 'ipv6' });\n }\n }));\n }\n IPs6.forEach(ip => IPs4.push(ip));\n }\n resolve(IPs4);\n });\n });\n }\n\n /**\n * Saves the settings to the server.\n * @param {boolean} isClose True if the user is closing the dialog.\n */\n onSave(isClose) {\n let oldObj;\n if (this.state.isConfigurationError) {\n this.setState({ errorText: this.state.isConfigurationError });\n return;\n }\n\n this.socket.getObject(this.instanceId)\n .then(_oldObj => {\n oldObj = _oldObj || {};\n\n for (const a in this.state.native) {\n if (this.state.native.hasOwnProperty(a)) {\n if (this.state.native[a] === null) {\n oldObj.native[a] = null;\n } else\n if (this.state.native[a] !== undefined) {\n oldObj.native[a] = JSON.parse(JSON.stringify(this.state.native[a]));\n } else {\n delete oldObj.native[a];\n }\n }\n }\n\n if (this.state.common) {\n for (const b in this.state.common) {\n if (this.state.common[b] === null) {\n oldObj.common[b] = null;\n } else\n if (this.state.common[b] !== undefined) {\n oldObj.common[b] = JSON.parse(JSON.stringify(this.state.common[b]));\n } else {\n delete oldObj.common[b];\n }\n }\n }\n\n if (this.onPrepareSave(oldObj.native) !== false) {\n return this.socket.setObject(this.instanceId, oldObj);\n } else {\n return Promise.reject('Invalid configuration');\n }\n })\n .then(() => {\n this.savedNative = oldObj.native;\n globalThis.changed = false;\n try {\n window.parent.postMessage('nochange', '*');\n } catch (e) {\n // ignore\n }\n\n this.setState({ changed: false });\n isClose && GenericApp.onClose();\n })\n .catch(e => {\n console.error(`Cannot save configuration: ${e}`);\n });\n }\n\n /**\n * Renders the toast.\n * @returns {JSX.Element | null} The JSX element.\n */\n renderToast() {\n if (!this.state.toast) {\n return null;\n }\n\n return <Snackbar\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left',\n }}\n open={true}\n autoHideDuration={6000}\n onClose={() => this.setState({ toast: '' })}\n ContentProps={{ 'aria-describedby': 'message-id' }}\n message={<span id=\"message-id\">{this.state.toast}</span>}\n action={[\n <IconButton\n key=\"close\"\n aria-label=\"Close\"\n color=\"inherit\"\n className={this.props.classes.close}\n onClick={() => this.setState({ toast: '' })}\n size=\"large\">\n <IconClose />\n </IconButton>,\n ]}\n />;\n }\n\n /**\n * Closes the dialog.\n * @private\n */\n static onClose() {\n if (typeof window.parent !== 'undefined' && window.parent) {\n try {\n if (window.parent.$iframeDialog && typeof window.parent.$iframeDialog.close === 'function') {\n window.parent.$iframeDialog.close();\n } else {\n window.parent.postMessage('close', '*');\n }\n } catch (e) {\n window.parent.postMessage('close', '*');\n }\n }\n }\n\n /**\n * Renders the error dialog.\n * @returns {JSX.Element | null} The JSX element.\n */\n renderError() {\n if (!this.state.errorText) {\n return null;\n } else {\n return <DialogError text={this.state.errorText} onClose={() => this.setState({ errorText: '' })}/>;\n }\n }\n\n /**\n * Checks if the configuration has changed.\n * @param {Record<string, any>} [native] the new state\n */\n getIsChanged(native) {\n native = native || this.state.native;\n const isChanged = JSON.stringify(native) !== JSON.stringify(this.savedNative);\n\n globalThis.changed = isChanged;\n\n return isChanged;\n }\n\n /**\n * Gets called when loading the configuration.\n * @param {Record<string, any>} newNative The new configuration object.\n */\n onLoadConfig(newNative) {\n if (JSON.stringify(newNative) !== JSON.stringify(this.state.native)) {\n this.setState({ native: newNative, changed: this.getIsChanged(newNative) })\n }\n }\n\n /**\n * Sets the configuration error.\n * @param {string} errorText\n */\n setConfigurationError(errorText) {\n if (this.state.isConfigurationError !== errorText) {\n this.setState({ isConfigurationError: errorText });\n }\n }\n\n /**\n * Renders the save and close buttons.\n * @returns {JSX.Element | undefined} The JSX element.\n */\n renderSaveCloseButtons() {\n if (!this.state.confirmClose && !this.state.bottomButtons) {\n return null;\n }\n\n return <>\n {this.state.bottomButtons ? <SaveCloseButtons\n theme={this.state.theme}\n newReact={this.newReact}\n noTextOnButtons={this.state.width === 'xs' || this.state.width === 'sm' || this.state.width === 'md'}\n changed={this.state.changed}\n onSave={isClose => this.onSave(isClose)}\n onClose={() => {\n if (this.state.changed) {\n this.setState({ confirmClose: true });\n } else {\n GenericApp.onClose();\n }\n }}\n /> : null}\n {this.state.confirmClose ? <ConfirmDialog\n title={I18n.t('ra_Please confirm')}\n text={I18n.t('ra_Some data are not stored. Discard?')}\n ok={I18n.t('ra_Discard')}\n cancel={I18n.t('ra_Cancel')}\n onClose={isYes =>\n this.setState({ confirmClose: false }, () =>\n isYes && GenericApp.onClose())}\n /> : null}\n </>;\n }\n\n /**\n * @private\n * @param {Record<string, any>} obj\n * @param {any} attrs\n * @param {any} value\n * @returns {boolean | undefined}\n */\n _updateNativeValue(obj, attrs, value) {\n if (typeof attrs !== 'object') {\n attrs = attrs.split('.');\n }\n const attr = attrs.shift();\n if (!attrs.length) {\n if (value && typeof value === 'object') {\n if (JSON.stringify(obj[attr]) !== JSON.stringify(value)) {\n obj[attr] = value;\n return true;\n }\n } else if (obj[attr] !== value) {\n obj[attr] = value;\n return true;\n } else {\n return false;\n }\n\n } else {\n obj[attr] = obj[attr] || {};\n if (typeof obj[attr] !== 'object') {\n throw new Error(`attribute ${attr} is no object, but ${typeof obj[attr]}`);\n }\n return this._updateNativeValue(obj[attr], attrs, value);\n }\n }\n\n /**\n * Update the native value\n * @param {string} attr The attribute name with dots as delimiter.\n * @param {any} value The new value.\n * @param {(() => void)} [cb] Callback which will be called upon completion.\n */\n updateNativeValue(attr, value, cb) {\n const native = JSON.parse(JSON.stringify(this.state.native));\n if (this._updateNativeValue(native, attr, value)) {\n const changed = this.getIsChanged(native);\n\n if (changed !== this.state.changed) {\n try {\n window.parent.postMessage(changed ? 'change' : 'nochange', '*');\n } catch (e) {\n // ignore\n }\n }\n\n this.setState({ native, changed }, cb);\n }\n }\n\n /**\n * Set the error text to be shown.\n * @param {string | JSX.Element} text\n */\n showError(text) {\n this.setState({ errorText: text });\n }\n\n /**\n * Sets the toast to be shown.\n * @param {string} toast\n */\n showToast(toast) {\n this.setState({ toast });\n }\n\n /**\n * Renders this component.\n * @returns {JSX.Element} The JSX element.\n */\n render() {\n if (!this.state.loaded) {\n return <Loader theme={this.state.themeType}/>;\n }\n\n return <div className=\"App\">\n {this.renderError()}\n {this.renderToast()}\n {this.renderSaveCloseButtons()}\n </div>;\n }\n}\n\nGenericApp.propTypes = {\n adapterName: PropTypes.string, // (optional) name of adapter\n onThemeChange: PropTypes.func, // (optional) called by theme change\n socket: PropTypes.object, // (optional) socket information (host, port)\n encryptedFields: PropTypes.array, // (optional) list of native attributes, that must be encrypted\n bottomButtons: PropTypes.bool, // If the bottom buttons (Save/Close) must be shown\n Connection: PropTypes.object, // If the bottom buttons (Save/Close) must be shown\n};\n\nexport default GenericApp;\n"],"mappings":"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"}
1
+ {"version":3,"file":"GenericApp.js","names":["cssStyle","window","localStorage","getItem","setItem","GenericApp","props","settings","ConnectionClass","Connection","document","getElementById","style","createElement","setAttribute","innerHTML","head","appendChild","isWeb","io","location","port","SocketClient","e","id","obj","socket","systemLang","common","language","I18n","setLanguage","_systemConfig","expertMode","setState","getExpertMode","message","data","newThemeName","Utils","getThemeName","setThemeName","theme","createTheme","themeName","themeType","getThemeType","onThemeChange","onThemeChanged","onToggleExpertMode","console","warn","JSON","stringify","resizeTimer","clearTimeout","setTimeout","width","getWidth","printPrompt","query","search","replace","args","trim","split","filter","t","forEach","b","parts","length","instance","undefined","parseInt","slice","tmp","pathname","adapterName","instanceId","newReact","Router","getLocation","tab","_localStorage","themeInstance","state","selectedTab","selectedTabNum","errorText","changed","connected","loaded","isConfigurationError","toast","bottomButtons","confirmClose","translations","require","Object","keys","lang","assign","setTranslations","savedNative","encryptedFields","sentryDSN","name","doNotLoadAllObjects","onProgress","progress","PROGRESS","CONNECTING","READY","onReady","objects","scripts","subscribeObject","onSystemConfigChanged","then","getSystemConfig","_secret","secret","getObject","instanceObj","waitPromise","sentryEnabled","diag","version","disableDataReporting","host","sentryStarted","Sentry","init","dsn","release","integrations","SentryIntegrations","Dedupe","sentryInited","uuidObj","uuid","configureScope","scope","setUser","Promise","resolve","onPrepareLoad","encryptedNative","parse","onConnectionReady","onError","err","error","showError","addEventListener","onResize","onReceiveMessage","removeEventListener","palette","mode","sessionStorage","value","result","i","String","fromCharCode","charCodeAt","selectTab","index","attr","encrypt","decrypt","includes","push","_socket","emit","doc","rows","item","webExtendable","map","reject","ip","_host","IPs4","address","family","IPs6","hardware","networkInterfaces","eth","inter","isClose","oldObj","_oldObj","a","hasOwnProperty","onPrepareSave","setObject","globalThis","parent","postMessage","onClose","vertical","horizontal","classes","close","native","isChanged","newNative","getIsChanged","onSave","isYes","attrs","shift","Error","_updateNativeValue","cb","text","renderError","renderToast","renderSaveCloseButtons","SIZES","xs","sm","md","lg","xl","innerWidth","reverse","widthComputed","find","key","$iframeDialog","propTypes","PropTypes","string","func","object","array","bool"],"sources":["GenericApp.js"],"sourcesContent":["/**\n * Copyright 2018-2022 bluefox <dogafox@gmail.com>\n *\n * MIT License\n *\n **/\nimport React from 'react';\nimport Connection, { PROGRESS } from './Connection';\nimport PropTypes from 'prop-types';\nimport * as Sentry from '@sentry/browser';\nimport * as SentryIntegrations from '@sentry/integrations';\n\nimport DialogError from './Dialogs/Error';\nimport Snackbar from '@mui/material/Snackbar';\nimport IconButton from '@mui/material/IconButton';\n\nimport IconClose from '@mui/icons-material/Close';\n\nimport printPrompt from './Prompt';\nimport theme from './Theme';\nimport Loader from './Components/Loader';\nimport Router from './Components/Router';\nimport Utils from './Components/Utils';\nimport SaveCloseButtons from './Components/SaveCloseButtons';\nimport ConfirmDialog from './Dialogs/Confirm';\nimport I18n from './i18n';\n\n// import './index.css';\nconst cssStyle = `\nhtml {\n height: 100%;\n}\n\nbody {\n margin: 0;\n padding: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n width: 100%;\n height: 100%;\n overflow: hidden;\n}\n\n/* scrollbar */\n::-webkit-scrollbar-track {\n background-color: #ccc;\n border-radius: 5px;\n}\n\n::-webkit-scrollbar {\n width: 5px;\n height: 5px;\n background-color: #ccc;\n}\n\n::-webkit-scrollbar-thumb {\n background-color: #575757;\n border-radius: 5px;\n}\n\n#root {\n height: 100%;\n}\n\n.App {\n height: 100%;\n}\n\n@keyframes glow {\n from {\n background-color: initial;\n }\n to {\n background-color: #58c458;\n }\n}\n`;\n\nif (!window.localStorage) {\n window.localStorage = {\n getItem: () => null,\n setItem: () => null,\n };\n}\n\n/**\n * @extends {Router<import('./types').GenericAppProps, import('./types').GenericAppState>}\n */\nclass GenericApp extends Router {\n /**\n * @param {import('./types').GenericAppProps} props\n * @param {import('./types').GenericAppSettings | undefined} settings\n */\n constructor(props, settings) {\n const ConnectionClass = props.Connection || settings.Connection || Connection;\n\n if (!window.document.getElementById('generic-app-iobroker-component')) {\n const style = window.document.createElement('style');\n style.setAttribute('id', 'generic-app-iobroker-component');\n style.innerHTML = cssStyle;\n window.document.head.appendChild(style);\n }\n\n // Remove `!Connection.isWeb() && window.adapterName !== 'material'` when iobroker.socket will support native ws\n if (!ConnectionClass.isWeb() && window.io && window.location.port === '3000') {\n try {\n const io = new window.SocketClient();\n delete window.io;\n window.io = io;\n } catch (e) {\n // ignore\n }\n }\n\n super(props);\n\n printPrompt();\n\n let query = (window.location.search || '').replace(/^\\?/, '').replace(/#.*$/, '');\n let args = {};\n query.trim().split('&').filter(t => t.trim()).forEach(b => {\n const parts = b.split('=');\n args[parts[0]] = parts.length === 2 ? parts[1] : true;\n if (args[parts[0]] === 'true') {\n args[parts[0]] = true;\n } else if (args[parts[0]] === 'false') {\n args[parts[0]] = false;\n }\n });\n\n // extract instance from URL\n this.instance = args.instance !== undefined ? parseInt(args.instance, 10) || 0 : (parseInt(window.location.search.slice(1), 10) || 0);\n // extract adapter name from URL\n const tmp = window.location.pathname.split('/');\n this.adapterName = settings?.adapterName || props.adapterName || window.adapterName || tmp[tmp.length - 2] || 'iot';\n this.instanceId = `system.adapter.${this.adapterName}.${this.instance}`;\n this.newReact = args.newReact === true; // it is admin5\n\n const location = Router.getLocation();\n location.tab = location.tab || (window._localStorage || window.localStorage).getItem(`${this.adapterName}-adapter`) || '';\n\n const themeInstance = this.createTheme();\n\n this.state = {\n selectedTab: (window._localStorage || window.localStorage).getItem(`${this.adapterName}-adapter`) || '',\n selectedTabNum: -1,\n native: {},\n errorText: '',\n changed: false,\n connected: false,\n loaded: false,\n isConfigurationError: '',\n expertMode: false,\n toast: '',\n theme: themeInstance,\n themeName: this.getThemeName(themeInstance),\n themeType: this.getThemeType(themeInstance),\n bottomButtons: (settings && settings.bottomButtons) === false ? false : ((props && props.bottomButtons) === false ? false : true),\n width: GenericApp.getWidth(),\n confirmClose: false,\n };\n\n // init translations\n const translations = {\n 'en': require('./i18n/en.json'),\n 'de': require('./i18n/de.json'),\n 'ru': require('./i18n/ru.json'),\n 'pt': require('./i18n/pt.json'),\n 'nl': require('./i18n/nl.json'),\n 'fr': require('./i18n/fr.json'),\n 'it': require('./i18n/it.json'),\n 'es': require('./i18n/es.json'),\n 'pl': require('./i18n/pl.json'),\n 'uk': require('./i18n/uk.json'),\n 'zh-cn': require('./i18n/zh-cn.json'),\n };\n\n // merge together\n if (settings && settings.translations) {\n Object.keys(settings.translations).forEach(lang => translations[lang] = Object.assign(translations[lang], settings.translations[lang]));\n } else if (props.translations) {\n Object.keys(props.translations).forEach(lang => translations[lang] = Object.assign(translations[lang], props.translations[lang]));\n }\n\n I18n.setTranslations(translations);\n\n this.savedNative = {}; // to detect if the config changed\n\n this.encryptedFields = props.encryptedFields || settings?.encryptedFields || [];\n\n this.sentryDSN = (settings && settings.sentryDSN) || props.sentryDSN;\n\n this.socket = new ConnectionClass({\n ...(props?.socket || settings?.socket),\n name: this.adapterName,\n doNotLoadAllObjects: settings?.doNotLoadAllObjects,\n onProgress: progress => {\n if (progress === PROGRESS.CONNECTING) {\n this.setState({ connected: false });\n } else if (progress === PROGRESS.READY) {\n this.setState({ connected: true });\n } else {\n this.setState({ connected: true });\n }\n },\n onReady: (objects, scripts) => {\n I18n.setLanguage(this.socket.systemLang);\n\n // subscribe because of language and expert mode\n this.socket.subscribeObject('system.config', this.onSystemConfigChanged)\n .then(() => this.getSystemConfig())\n .then(obj => {\n this._secret = (typeof obj !== 'undefined' && obj.native && obj.native.secret) || 'Zgfr56gFe87jJOM';\n this._systemConfig = obj?.common || {};\n return this.socket.getObject(this.instanceId);\n })\n .then(instanceObj => {\n let waitPromise;\n\n const sentryEnabled =\n this._systemConfig.diag !== 'none' &&\n instanceObj &&\n instanceObj.common &&\n instanceObj.common.name &&\n instanceObj.common.version &&\n !instanceObj.common.disableDataReporting &&\n window.location.host !== 'localhost:3000';\n\n // activate sentry plugin\n if (!this.sentryStarted && this.sentryDSN && sentryEnabled) {\n this.sentryStarted = true;\n\n Sentry.init({\n dsn: this.sentryDSN,\n release: `iobroker.${instanceObj.common.name}@${instanceObj.common.version}`,\n integrations: [\n new SentryIntegrations.Dedupe()\n ]\n });\n }\n\n // read UUID and init sentry with it.\n // for backward compatibility it will be processed separately from above logic: some adapters could still have this.sentryDSN as undefined\n if (!this.sentryInited && sentryEnabled) {\n this.sentryInited = true;\n\n waitPromise = this.socket.getObject('system.meta.uuid')\n .then(uuidObj => {\n if (uuidObj && uuidObj.native && uuidObj.native.uuid) {\n Sentry.configureScope(scope =>\n scope.setUser({id: uuidObj.native.uuid}));\n }\n });\n }\n\n waitPromise = waitPromise || Promise.resolve();\n\n waitPromise\n .then(() => {\n if (instanceObj) {\n this.common = instanceObj?.common;\n this.onPrepareLoad(instanceObj.native, instanceObj.encryptedNative); // decode all secrets\n this.savedNative = JSON.parse(JSON.stringify(instanceObj.native));\n this.setState({ native: instanceObj.native, loaded: true, expertMode: this.getExpertMode() }, () =>\n this.onConnectionReady && this.onConnectionReady());\n } else {\n console.warn('Cannot load instance settings');\n this.setState({ native: {}, loaded: true, expertMode: this.getExpertMode()},\n () => this.onConnectionReady && this.onConnectionReady());\n }\n });\n });\n },\n onError: err => {\n console.error(err);\n this.showError(err);\n }\n });\n }\n\n onSystemConfigChanged = (id, obj) => {\n if (obj && id === 'system.config') {\n if (this.socket.systemLang !== obj?.common.language) {\n this.socket.systemLang = obj?.common.language || 'en';\n I18n.setLanguage(this.socket.systemLang);\n }\n\n if (this._systemConfig.expertMode !== !!obj?.common?.expertMode) {\n this._systemConfig = obj?.common || {};\n this.setState({ expertMode: this.getExpertMode() });\n } else {\n this._systemConfig = obj?.common || {};\n }\n }\n }\n\n /**\n * Called immediately after a component is mounted. Setting state here will trigger re-rendering.\n */\n componentDidMount() {\n window.addEventListener('resize', this.onResize, true);\n window.addEventListener('message', this.onReceiveMessage, false);\n super.componentDidMount();\n }\n\n /**\n * Called immediately before a component is destroyed.\n */\n componentWillUnmount() {\n window.removeEventListener('resize', this.onResize, true);\n window.removeEventListener('message', this.onReceiveMessage, false);\n super.componentWillUnmount();\n }\n\n onReceiveMessage = message => {\n if (message?.data) {\n if (message.data === 'updateTheme') {\n const newThemeName = Utils.getThemeName()\n Utils.setThemeName(Utils.getThemeName());\n\n const theme = this.createTheme(newThemeName);\n\n this.setState({\n theme,\n themeName: this.getThemeName(theme),\n themeType: this.getThemeType(theme)\n }, () => {\n this.props.onThemeChange && this.props.onThemeChange(newThemeName);\n this.onThemeChanged && this.onThemeChanged(newThemeName);\n });\n } else if (message.data === 'updateExpertMode') {\n this.onToggleExpertMode && this.onToggleExpertMode(this.getExpertMode());\n } else {\n console.warn('Received unknown message: ' + JSON.stringify(message.data));\n }\n }\n };\n\n /**\n * @private\n */\n onResize = () => {\n this.resizeTimer && clearTimeout(this.resizeTimer);\n this.resizeTimer = setTimeout(() => {\n this.resizeTimer = null;\n this.setState({ width: GenericApp.getWidth() });\n }, 200);\n };\n\n /**\n * Gets the width depending on the window inner width.\n * @returns {import('./types').Width}\n */\n static getWidth() {\n /**\n * innerWidth |xs sm md lg xl\n * |-------|-------|-------|-------|------>\n * width | xs | sm | md | lg | xl\n */\n\n const SIZES = {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920\n };\n const width = window.innerWidth;\n const keys = Object.keys(SIZES).reverse();\n const widthComputed = keys.find(key => width >= SIZES[key]);\n\n return widthComputed || 'xs';\n }\n\n /**\n * Get a theme\n * @param {string} name Theme name\n * @returns {import('./types').Theme}\n */\n createTheme(name = '') {\n return theme(Utils.getThemeName(name));\n }\n\n /**\n * Get the theme name\n * @param {import('./types').Theme} theme Theme\n * @returns {string} Theme name\n */\n getThemeName(theme) {\n return theme.name;\n }\n\n /**\n * Get the theme type\n * @param {import('./types').Theme} theme Theme\n * @returns {string} Theme type\n */\n getThemeType(theme) {\n return theme.palette.mode;\n }\n\n /**\n * Changes the current theme\n */\n toggleTheme() {\n const themeName = this.state.themeName;\n\n // dark => blue => colored => light => dark\n const newThemeName = themeName === 'dark' ? 'blue' :\n (themeName === 'blue' ? 'colored' :\n (themeName === 'colored' ? 'light' : 'dark'));\n\n Utils.setThemeName(newThemeName);\n\n const theme = this.createTheme(newThemeName);\n\n this.setState({\n theme,\n themeName: this.getThemeName(theme),\n themeType: this.getThemeType(theme)\n }, () => {\n this.props.onThemeChange && this.props.onThemeChange(newThemeName);\n this.onThemeChanged && this.onThemeChanged(newThemeName);\n });\n }\n\n /**\n * Gets the system configuration.\n * @returns {Promise<ioBroker.OtherObject>}\n */\n getSystemConfig() {\n return this.socket.getSystemConfig();\n }\n\n /**\n * Get current expert mode\n * @returns {boolean}\n */\n getExpertMode() {\n return window.sessionStorage.getItem('App.expertMode') === 'true' || !!this._systemConfig.expertMode;\n }\n\n /**\n * Gets called when the socket.io connection is ready.\n * You can overload this function to execute own commands.\n */\n onConnectionReady() {\n }\n\n /**\n * Encrypts a string.\n * @param {string} value\n * @returns {string}\n */\n encrypt(value) {\n let result = '';\n for (let i = 0; i < value.length; i++) {\n result += String.fromCharCode(this._secret[i % this._secret.length].charCodeAt(0) ^ value.charCodeAt(i));\n }\n return result;\n }\n\n /**\n * Decrypts a string.\n * @param {string} value\n * @returns {string}\n */\n decrypt(value) {\n let result = '';\n for (let i = 0; i < value.length; i++) {\n result += String.fromCharCode(this._secret[i % this._secret.length].charCodeAt(0) ^ value.charCodeAt(i));\n }\n return result;\n }\n\n /**\n * Gets called when the navigation hash changes.\n * You may override this if needed.\n */\n onHashChanged() {\n const location = Router.getLocation();\n if (location.tab !== this.state.selectedTab) {\n this.selectTab(location.tab);\n }\n }\n\n /**\n * Selects the given tab.\n * @param {string} tab\n * @param {number} [index]\n */\n selectTab(tab, index) {\n (window._localStorage || window.localStorage).setItem(this.adapterName + '-adapter', tab);\n this.setState({ selectedTab: tab, selectedTabNum: index })\n }\n\n /**\n * Gets called before the settings are saved.\n * You may override this if needed.\n * @param {Record<string, any>} settings\n */\n onPrepareSave(settings) {\n // here you can encode values\n this.encryptedFields && this.encryptedFields.forEach(attr => {\n if (settings[attr]) {\n settings[attr] = this.encrypt(settings[attr]);\n }\n });\n\n return true;\n }\n\n /**\n * Gets called after the settings are loaded.\n * You may override this if needed.\n * @param {Record<string, any>} settings\n * @param {string[]} encryptedNative optional list of fields to be decrypted\n */\n onPrepareLoad(settings, encryptedNative) {\n // here you can encode values\n this.encryptedFields && this.encryptedFields.forEach(attr => {\n if (settings[attr]) {\n settings[attr] = this.decrypt(settings[attr]);\n }\n });\n encryptedNative && encryptedNative.forEach(attr => {\n this.encryptedFields = this.encryptedFields || [];\n !this.encryptedFields.includes(attr) && this.encryptedFields.push(attr);\n if (settings[attr]) {\n settings[attr] = this.decrypt(settings[attr]);\n }\n });\n }\n\n /**\n * Gets the extendable instances.\n * @returns {Promise<any[]>}\n */\n getExtendableInstances() {\n return new Promise(resolve => {\n this.socket._socket.emit('getObjectView', 'system', 'instance', null, (err, doc) => {\n if (err) {\n resolve([]);\n } else {\n resolve(doc.rows\n .filter(item => item.value.common.webExtendable)\n .map(item => item.value)\n );\n }\n });\n });\n }\n\n /**\n * Gets the IP addresses of the given host.\n * @param {string} host\n */\n getIpAddresses(host) {\n return new Promise((resolve, reject) => {\n this.socket._socket.emit('getHostByIp', host || this.common.host, (ip, _host) => {\n const IPs4 = [{ name: `[IPv4] 0.0.0.0 - ${I18n.t('ra_Listen on all IPs')}`, address: '0.0.0.0', family: 'ipv4' }];\n const IPs6 = [{ name: '[IPv6] ::', address: '::', family: 'ipv6' }];\n if (_host) {\n host = _host;\n if (host.native.hardware && host.native.hardware.networkInterfaces) {\n Object.keys(host.native.hardware.networkInterfaces).forEach(eth =>\n host.native.hardware.networkInterfaces[eth].forEach(inter => {\n if (inter.family !== 'IPv6') {\n IPs4.push({ name: `[${inter.family}] ${inter.address} - ${eth}`, address: inter.address, family: 'ipv4' });\n } else {\n IPs6.push({ name: `[${inter.family}] ${inter.address} - ${eth}`, address: inter.address, family: 'ipv6' });\n }\n }));\n }\n IPs6.forEach(ip => IPs4.push(ip));\n }\n resolve(IPs4);\n });\n });\n }\n\n /**\n * Saves the settings to the server.\n * @param {boolean} isClose True if the user is closing the dialog.\n */\n onSave(isClose) {\n let oldObj;\n if (this.state.isConfigurationError) {\n this.setState({ errorText: this.state.isConfigurationError });\n return;\n }\n\n this.socket.getObject(this.instanceId)\n .then(_oldObj => {\n oldObj = _oldObj || {};\n\n for (const a in this.state.native) {\n if (this.state.native.hasOwnProperty(a)) {\n if (this.state.native[a] === null) {\n oldObj.native[a] = null;\n } else\n if (this.state.native[a] !== undefined) {\n oldObj.native[a] = JSON.parse(JSON.stringify(this.state.native[a]));\n } else {\n delete oldObj.native[a];\n }\n }\n }\n\n if (this.state.common) {\n for (const b in this.state.common) {\n if (this.state.common[b] === null) {\n oldObj.common[b] = null;\n } else\n if (this.state.common[b] !== undefined) {\n oldObj.common[b] = JSON.parse(JSON.stringify(this.state.common[b]));\n } else {\n delete oldObj.common[b];\n }\n }\n }\n\n if (this.onPrepareSave(oldObj.native) !== false) {\n return this.socket.setObject(this.instanceId, oldObj);\n } else {\n return Promise.reject('Invalid configuration');\n }\n })\n .then(() => {\n this.savedNative = oldObj.native;\n globalThis.changed = false;\n try {\n window.parent.postMessage('nochange', '*');\n } catch (e) {\n // ignore\n }\n\n this.setState({ changed: false });\n isClose && GenericApp.onClose();\n })\n .catch(e => {\n console.error(`Cannot save configuration: ${e}`);\n });\n }\n\n /**\n * Renders the toast.\n * @returns {JSX.Element | null} The JSX element.\n */\n renderToast() {\n if (!this.state.toast) {\n return null;\n }\n\n return <Snackbar\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left',\n }}\n open={true}\n autoHideDuration={6000}\n onClose={() => this.setState({ toast: '' })}\n ContentProps={{ 'aria-describedby': 'message-id' }}\n message={<span id=\"message-id\">{this.state.toast}</span>}\n action={[\n <IconButton\n key=\"close\"\n aria-label=\"Close\"\n color=\"inherit\"\n className={this.props.classes.close}\n onClick={() => this.setState({ toast: '' })}\n size=\"large\">\n <IconClose />\n </IconButton>,\n ]}\n />;\n }\n\n /**\n * Closes the dialog.\n * @private\n */\n static onClose() {\n if (typeof window.parent !== 'undefined' && window.parent) {\n try {\n if (window.parent.$iframeDialog && typeof window.parent.$iframeDialog.close === 'function') {\n window.parent.$iframeDialog.close();\n } else {\n window.parent.postMessage('close', '*');\n }\n } catch (e) {\n window.parent.postMessage('close', '*');\n }\n }\n }\n\n /**\n * Renders the error dialog.\n * @returns {JSX.Element | null} The JSX element.\n */\n renderError() {\n if (!this.state.errorText) {\n return null;\n } else {\n return <DialogError text={this.state.errorText} onClose={() => this.setState({ errorText: '' })}/>;\n }\n }\n\n /**\n * Checks if the configuration has changed.\n * @param {Record<string, any>} [native] the new state\n */\n getIsChanged(native) {\n native = native || this.state.native;\n const isChanged = JSON.stringify(native) !== JSON.stringify(this.savedNative);\n\n globalThis.changed = isChanged;\n\n return isChanged;\n }\n\n /**\n * Gets called when loading the configuration.\n * @param {Record<string, any>} newNative The new configuration object.\n */\n onLoadConfig(newNative) {\n if (JSON.stringify(newNative) !== JSON.stringify(this.state.native)) {\n this.setState({ native: newNative, changed: this.getIsChanged(newNative) })\n }\n }\n\n /**\n * Sets the configuration error.\n * @param {string} errorText\n */\n setConfigurationError(errorText) {\n if (this.state.isConfigurationError !== errorText) {\n this.setState({ isConfigurationError: errorText });\n }\n }\n\n /**\n * Renders the save and close buttons.\n * @returns {JSX.Element | undefined} The JSX element.\n */\n renderSaveCloseButtons() {\n if (!this.state.confirmClose && !this.state.bottomButtons) {\n return null;\n }\n\n return <>\n {this.state.bottomButtons ? <SaveCloseButtons\n theme={this.state.theme}\n newReact={this.newReact}\n noTextOnButtons={this.state.width === 'xs' || this.state.width === 'sm' || this.state.width === 'md'}\n changed={this.state.changed}\n onSave={isClose => this.onSave(isClose)}\n onClose={() => {\n if (this.state.changed) {\n this.setState({ confirmClose: true });\n } else {\n GenericApp.onClose();\n }\n }}\n /> : null}\n {this.state.confirmClose ? <ConfirmDialog\n title={I18n.t('ra_Please confirm')}\n text={I18n.t('ra_Some data are not stored. Discard?')}\n ok={I18n.t('ra_Discard')}\n cancel={I18n.t('ra_Cancel')}\n onClose={isYes =>\n this.setState({ confirmClose: false }, () =>\n isYes && GenericApp.onClose())}\n /> : null}\n </>;\n }\n\n /**\n * @private\n * @param {Record<string, any>} obj\n * @param {any} attrs\n * @param {any} value\n * @returns {boolean | undefined}\n */\n _updateNativeValue(obj, attrs, value) {\n if (typeof attrs !== 'object') {\n attrs = attrs.split('.');\n }\n const attr = attrs.shift();\n if (!attrs.length) {\n if (value && typeof value === 'object') {\n if (JSON.stringify(obj[attr]) !== JSON.stringify(value)) {\n obj[attr] = value;\n return true;\n }\n } else if (obj[attr] !== value) {\n obj[attr] = value;\n return true;\n } else {\n return false;\n }\n\n } else {\n obj[attr] = obj[attr] || {};\n if (typeof obj[attr] !== 'object') {\n throw new Error(`attribute ${attr} is no object, but ${typeof obj[attr]}`);\n }\n return this._updateNativeValue(obj[attr], attrs, value);\n }\n }\n\n /**\n * Update the native value\n * @param {string} attr The attribute name with dots as delimiter.\n * @param {any} value The new value.\n * @param {(() => void)} [cb] Callback which will be called upon completion.\n */\n updateNativeValue(attr, value, cb) {\n const native = JSON.parse(JSON.stringify(this.state.native));\n if (this._updateNativeValue(native, attr, value)) {\n const changed = this.getIsChanged(native);\n\n if (changed !== this.state.changed) {\n try {\n window.parent.postMessage(changed ? 'change' : 'nochange', '*');\n } catch (e) {\n // ignore\n }\n }\n\n this.setState({ native, changed }, cb);\n }\n }\n\n /**\n * Set the error text to be shown.\n * @param {string | JSX.Element} text\n */\n showError(text) {\n this.setState({ errorText: text });\n }\n\n /**\n * Sets the toast to be shown.\n * @param {string} toast\n */\n showToast(toast) {\n this.setState({ toast });\n }\n\n /**\n * Renders this component.\n * @returns {JSX.Element} The JSX element.\n */\n render() {\n if (!this.state.loaded) {\n return <Loader theme={this.state.themeType}/>;\n }\n\n return <div className=\"App\">\n {this.renderError()}\n {this.renderToast()}\n {this.renderSaveCloseButtons()}\n </div>;\n }\n}\n\nGenericApp.propTypes = {\n adapterName: PropTypes.string, // (optional) name of adapter\n onThemeChange: PropTypes.func, // (optional) called by theme change\n socket: PropTypes.object, // (optional) socket information (host, port)\n encryptedFields: PropTypes.array, // (optional) list of native attributes, that must be encrypted\n bottomButtons: PropTypes.bool, // If the bottom buttons (Save/Close) must be shown\n Connection: PropTypes.object, // If the bottom buttons (Save/Close) must be shown\n};\n\nexport default GenericApp;\n"],"mappings":"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"}
package/README.md CHANGED
@@ -643,6 +643,9 @@ If you still have questions, try to find an answer [here](https://mui.com/guides
643
643
  -->
644
644
 
645
645
  ## Changelog
646
+ ### 3.2.0 (2022-10-19)
647
+ * (bluefox) Added ukrainian translation
648
+
646
649
  ### 3.1.35 (2022-10-17)
647
650
  * (bluefox) small changes for material
648
651
 
package/i18n/uk.json ADDED
@@ -0,0 +1,326 @@
1
+ {
2
+ "Not a number": "Не номер",
3
+ "ra_%s object(s) processed": "Оброблено %s об’єктів",
4
+ "ra_%s was imported": "%s було імпортовано",
5
+ "ra_Add new child object to selected parent": "Додати новий дочірній об’єкт до вибраного батьківського",
6
+ "ra_Add objects tree from JSON file": "Додайте дерево об’єктів із файлу JSON",
7
+ "ra_Add row": "Додати рядок",
8
+ "ra_All items are filtered out": "Усі елементи відфільтровано",
9
+ "ra_All objects": "Всі об'єкти",
10
+ "ra_Are you sure?": "Ти впевнений?",
11
+ "ra_Auto (no custom columns)": "Автоматично (без спеціальних стовпців)",
12
+ "ra_Back to %s": "Назад до %s",
13
+ "ra_Background image": "Фонове зображення",
14
+ "ra_Cancel": "Скасувати",
15
+ "ra_Cannot add items with set filter": "Неможливо додати елементи зі встановленим фільтром",
16
+ "ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser": "Неможливо визначити положення: системні налаштування порожні, а визначення GPS вимкнено в браузері",
17
+ "ra_Cannot find \"%s\"": "Не вдається знайти \"%s\"",
18
+ "ra_Cannot read \"%s\"": "Неможливо прочитати \"%s\"",
19
+ "ra_Cannot retrieve options, as instance is offline": "Неможливо отримати параметри, оскільки екземпляр офлайн",
20
+ "ra_Cannot update attribute, because not found in the object": "Неможливо оновити атрибут, оскільки його не знайдено в об’єкті",
21
+ "ra_Cannot upload": "Неможливо завантажити",
22
+ "ra_Change color theme": "Змінити кольорову тему",
23
+ "ra_Changed from": "Змінено з",
24
+ "ra_Channel → State": "Канал → Стан",
25
+ "ra_Clear": "Видалити",
26
+ "ra_Clear filter": "Очистити фільтр",
27
+ "ra_Clear icon": "Очистити значок",
28
+ "ra_Close": "Закрити",
29
+ "ra_Collapse all nodes": "Згорнути всі вузли",
30
+ "ra_Collapse one step node": "Згорнути на один рівень",
31
+ "ra_Configure": "Налаштувати",
32
+ "ra_Configure visible columns": "Налаштувати видимі стовпці",
33
+ "ra_Confirm deletion of %s": "Підтвердити видалення %s",
34
+ "ra_Connected": "Підключено",
35
+ "ra_Copied": "Скопійовано",
36
+ "ra_Copied %s": "Скопійовано \"%s\"",
37
+ "ra_Copy content": "Скопіюйте вміст",
38
+ "ra_Create": "Створити",
39
+ "ra_Create folder": "Створити папку",
40
+ "ra_Create new folder in %s": "Створіть нову папку в %s",
41
+ "ra_Crop": "Урожай",
42
+ "ra_Define functions": "Визначити функції",
43
+ "ra_Define rooms": "Визначте кімнати",
44
+ "ra_Define schedule": "Визначити розклад",
45
+ "ra_Define schedule...": "Визначити розклад...",
46
+ "ra_Delete": "Видалити",
47
+ "ra_Delete (no confirm for 5 mins)": "Видалити (без підтвердження протягом 5 хвилин)",
48
+ "ra_Delete current row": "Видалити поточний рядок",
49
+ "ra_Deselect all": "Скасувати вибір усіх",
50
+ "ra_Device → Channel → State": "Пристрій → Канал → Стан",
51
+ "ra_Discard": "Відкинути",
52
+ "ra_Disconnected": "Відключено",
53
+ "ra_Double click to reset table layout": "Двічі клацніть, щоб скинути макет таблиці",
54
+ "ra_Drag 'n' drop some files here, or click to select files": "Перетягніть деякі файли сюди або натисніть, щоб вибрати файли",
55
+ "ra_Drop file here": "Перетягніть файл сюди",
56
+ "ra_Drop the files here...": "Перетягніть файл сюди...",
57
+ "ra_Duplicate name": "Повторюване ім'я",
58
+ "ra_Edit custom config": "Редагувати спеціальну конфігурацію",
59
+ "ra_Edit object field": "Поле редагування об'єкта",
60
+ "ra_Error": "Помилка",
61
+ "ra_Expand all nodes": "Розгорнути всі вузли",
62
+ "ra_Expand one step node": "Розгорніть один рівень",
63
+ "ra_Failed to open JSON File": "Не вдалося відкрити файл JSON",
64
+ "ra_File is too big. Max %sk allowed. Try use SVG.": "Файл завеликий. Максимально дозволено %sk. Спробуйте використовувати SVG.",
65
+ "ra_Filter": "фільтр",
66
+ "ra_Folder name": "Назва папки",
67
+ "ra_Folder → Channel → State": "Папка → Канал → Стан",
68
+ "ra_Folder → Device → Channel → State": "Папка → Пристрій → Канал → Стан",
69
+ "ra_Folder → State": "Папка → Стан",
70
+ "ra_Folders always first": "Папки завжди першими",
71
+ "ra_Good luck": "Удачі",
72
+ "ra_Hide empty folders": "Приховати порожні папки",
73
+ "ra_If no file will be created in the folder, it will disappear after the browser closed": "Якщо в папці не буде створено файл, він зникне після закриття браузера",
74
+ "ra_Instance %s is alive": "Примірник %s живий",
75
+ "ra_Instance %s is not alive": "Примірник %s не живий",
76
+ "ra_Invalid CRON": "Недійсний CRON",
77
+ "ra_Invalid parent folder!": "Недійсна батьківська папка!",
78
+ "ra_Invalid structure": "Недійсна структура",
79
+ "ra_JSON editor": "Редактор JSON",
80
+ "ra_Last change": "Остання зміна",
81
+ "ra_Listen on all IPs": "Прослуховування на всіх IP",
82
+ "ra_Load configuration from file": "Завантажити конфігурацію з файлу",
83
+ "ra_Message": "повідомлення",
84
+ "ra_Move down": "Рухатися вниз",
85
+ "ra_Move up": "Рухатися вгору",
86
+ "ra_Non-experts may create new objects only in \"0_userdata.0\" or \"alias.0\".": "Неексперти можуть створювати нові об’єкти лише в «0_userdata.0» або «alias.0».",
87
+ "ra_Objects": "Об'єкти",
88
+ "ra_Ok": "В порядку",
89
+ "ra_On weekdays": "В будні дні",
90
+ "ra_Only following structures of objects are available:": "Доступні тільки такі структури об'єктів:",
91
+ "ra_Only selected": "Тільки обрані",
92
+ "ra_Owner group": "Група власників",
93
+ "ra_Owner user": "Користувач-власник",
94
+ "ra_Passwords are not equal!": "Паролі не бувають рівними!",
95
+ "ra_Place your files here or click here to open the browse dialog": "Розмістіть свої файли тут або натисніть тут, щоб відкрити діалогове вікно перегляду",
96
+ "ra_Please confirm": "Будь-ласка підтвердіть",
97
+ "ra_Please select object ID...": "Виберіть ідентифікатор об'єкта...",
98
+ "ra_Quality code": "якість",
99
+ "ra_Refresh tree": "Оновити дерево",
100
+ "ra_Reload files": "Перезавантажте файли",
101
+ "ra_Repeat": "Повторіть",
102
+ "ra_Root": "Корінь",
103
+ "ra_Save": "зберегти",
104
+ "ra_Save and close": "Зберегти та закрити",
105
+ "ra_Save configuration to file": "Зберегти конфігурацію у файл",
106
+ "ra_Save objects tree as JSON file": "Зберегти дерево об’єктів як файл JSON",
107
+ "ra_Select all": "Вибрати все",
108
+ "ra_Select predefined icon": "Виберіть попередньо визначений значок",
109
+ "ra_Selected": "Вибране",
110
+ "ra_Show lines between rows": "Показувати лінії між рядками",
111
+ "ra_Show/hide filter input": "Показати/сховати введення фільтра",
112
+ "ra_Some data are not stored. Discard?": "Деякі дані не зберігаються. Відкинути?",
113
+ "ra_States": "держави",
114
+ "ra_Suppress question for next %s minutes": "Приховати запитання на наступні %s хвилин",
115
+ "ra_System language": "Системна мова",
116
+ "ra_The experts may create objects everywhere but from second level (e.g. \"vis.0\" or \"javascript.0\").": "Експерти можуть створювати об’єкти всюди, крім другого рівня (наприклад, «vis.0» або «javascript.0»).",
117
+ "ra_The page you are looking for was not found": "Сторінка, яку ви шукаєте, не знайдена",
118
+ "ra_Timestamp": "Мітка часу",
119
+ "ra_Toggle expert mode": "Перемкнути експертний режим",
120
+ "ra_Toggle the states view": "Перемкнути перегляд штатів",
121
+ "ra_Toggle view mode": "Перемкнути режим перегляду",
122
+ "ra_Too big": "Занадто великий",
123
+ "ra_Too small": "Занадто малий",
124
+ "ra_Transparent dialog": "Прозорий діалог",
125
+ "ra_Unknown error!": "Невідома помилка!",
126
+ "ra_Update": "оновлення",
127
+ "ra_Upload file": "Завантажити файл",
128
+ "ra_Used system settings": "Використані системні налаштування",
129
+ "ra_User files": "Файли користувача",
130
+ "ra_Value": "Значення",
131
+ "ra_View: %s": "Перегляд: %s",
132
+ "ra_Width": "Ширина",
133
+ "ra_You can filter entries by entering here some text": "Ви можете фільтрувати записи, ввівши тут певний текст",
134
+ "ra___different__": "інший",
135
+ "ra_aclEveryone_read_object": "Кожен може читати об'єкт",
136
+ "ra_aclEveryone_read_state": "Кожен може читати стан",
137
+ "ra_aclEveryone_write_object": "Кожен може написати об'єкт",
138
+ "ra_aclEveryone_write_state": "Кожен може написати стан",
139
+ "ra_aclGroup_read_object": "Група може читати об'єкт",
140
+ "ra_aclGroup_read_state": "Група може читати стан",
141
+ "ra_aclGroup_write_object": "Група може писати об'єкт",
142
+ "ra_aclGroup_write_state": "Група може писати стан",
143
+ "ra_aclOwner_read_object": "Власник може читати об'єкт",
144
+ "ra_aclOwner_read_state": "Власник може читати стан",
145
+ "ra_aclOwner_write_object": "Власник може написати об'єкт",
146
+ "ra_aclOwner_write_state": "Власник може написати стан",
147
+ "ra_buttons": "кнопки",
148
+ "ra_changedFrom": "Змінено з",
149
+ "ra_close": "закрити",
150
+ "ra_daysShortText": "днів",
151
+ "ra_dow_Fr": "О",
152
+ "ra_dow_Mo": "пн",
153
+ "ra_dow_Sa": "Sa",
154
+ "ra_dow_Su": "Нд",
155
+ "ra_dow_Th": "чт",
156
+ "ra_dow_Tu": "вт",
157
+ "ra_dow_We": "ми",
158
+ "ra_expertMode": "Експертний режим",
159
+ "ra_filter_customs": "Налаштування",
160
+ "ra_filter_func": "функція",
161
+ "ra_filter_id": "ID",
162
+ "ra_filter_name": "Ім'я",
163
+ "ra_filter_role": "Роль",
164
+ "ra_filter_room": "Кімната",
165
+ "ra_filter_type": "Тип",
166
+ "ra_invalidConfig": "Недійсні налаштування",
167
+ "ra_lastChange": "Остання зміна",
168
+ "ra_months_Apr": "квіт",
169
+ "ra_months_Aug": "серп",
170
+ "ra_months_Dec": "груд",
171
+ "ra_months_Feb": "лютий",
172
+ "ra_months_Jan": "січня",
173
+ "ra_months_Jul": "лип",
174
+ "ra_months_Jun": "черв",
175
+ "ra_months_Mai": "травень",
176
+ "ra_months_Mar": "березень",
177
+ "ra_months_Nov": "Листопад",
178
+ "ra_months_Oct": "жовт",
179
+ "ra_months_Sep": "вер",
180
+ "ra_none": "немає",
181
+ "ra_object_changed_by": "Об'єкт змінено",
182
+ "ra_object_changed_by_user": "Об'єкт востаннє змінено о",
183
+ "ra_otherConfig": "Налаштування з іншого адаптера %s",
184
+ "ra_qualityCode": "Код якості",
185
+ "ra_repeat": "повторити",
186
+ "ra_state_changed_by": "Стан змінено на",
187
+ "ra_state_changed_from": "Об'єкт змінено з",
188
+ "ra_timestamp": "Мітка часу",
189
+ "ra_tooltip_ack": "Визнано",
190
+ "ra_tooltip_comment": "коментар",
191
+ "ra_tooltip_copyState": "Скопіюйте значення стану",
192
+ "ra_tooltip_customConfig": "Спеціальні налаштування",
193
+ "ra_tooltip_deleteObject": "Видалити об'єкт",
194
+ "ra_tooltip_editObject": "Редагувати об'єкт",
195
+ "ra_tooltip_editState": "Відредагуйте значення стану",
196
+ "ra_tooltip_from": "Від",
197
+ "ra_tooltip_lc": "Востаннє змінено",
198
+ "ra_tooltip_quality": "якість",
199
+ "ra_tooltip_ts": "Позначка часу",
200
+ "ra_tooltip_user": "Користувач",
201
+ "ra_tooltip_value": "Значення",
202
+ "ra_use seconds": "використовуйте секунди",
203
+ "ra_val": "Значення",
204
+ "sc_cron": "CRON",
205
+ "sc_date": "Дата",
206
+ "sc_dates": "дати",
207
+ "sc_dows": "День тижня",
208
+ "sc_every": "кожен",
209
+ "sc_everyN_dates": "кожні N днів",
210
+ "sc_everyN_dows": "кожні N днів тижня",
211
+ "sc_everyN_hours": "кожні N годин",
212
+ "sc_everyN_minutes": "кожні N хвилин",
213
+ "sc_everyN_months": "кожні N місяців",
214
+ "sc_everyN_seconds": "кожні N секунд",
215
+ "sc_every_dates": "кожен день",
216
+ "sc_every_dows": "кожен день тижня",
217
+ "sc_every_hours": "щогодини",
218
+ "sc_every_minutes": "кожну хвилину",
219
+ "sc_every_months": "щомісяця",
220
+ "sc_every_seconds": "кожна секунда",
221
+ "sc_from": "Від",
222
+ "sc_hours": "години",
223
+ "sc_interval": "Інтервал",
224
+ "sc_intervalBetween": "Інтервал між",
225
+ "sc_minutes": "хвилин",
226
+ "sc_months": "місяців",
227
+ "sc_once": "Один раз",
228
+ "sc_period": "Крапка",
229
+ "sc_seconds": "секунд",
230
+ "sc_simple": "просто",
231
+ "sc_specific": "Конкретний час",
232
+ "sc_specific_dates": "конкретні дати",
233
+ "sc_specific_dows": "конкретний день тижня",
234
+ "sc_specific_hours": "конкретні години",
235
+ "sc_specific_minutes": "конкретні хвилини",
236
+ "sc_specific_months": "конкретні місяці",
237
+ "sc_specific_seconds": "конкретні секунди",
238
+ "sc_time": "час",
239
+ "sc_to": "до",
240
+ "sc_wizard": "майстер",
241
+ "sch_all": "все",
242
+ "sch_astroDay": "Астродень",
243
+ "sch_astroNight": "Астро ніч",
244
+ "sch_astro_dawn": "Світанок",
245
+ "sch_astro_dusk": "Сутінки",
246
+ "sch_astro_goldenHour": "Золота година",
247
+ "sch_astro_goldenHourEnd": "Кінець золотої години",
248
+ "sch_astro_nadir": "Надір",
249
+ "sch_astro_nauticalDawn": "Морський світанок",
250
+ "sch_astro_nauticalDusk": "Морські сутінки",
251
+ "sch_astro_night": "ніч",
252
+ "sch_astro_nightEnd": "Кінець ночі",
253
+ "sch_astro_solarNoon": "Сонячний полудень",
254
+ "sch_astro_sunrise": "Схід сонця",
255
+ "sch_astro_sunriseEnd": "Кінець сходу сонця",
256
+ "sch_astro_sunset": "Захід сонця",
257
+ "sch_astro_sunsetStart": "Початок заходу сонця",
258
+ "sch_at": "в",
259
+ "sch_desc_atTime": "в %s",
260
+ "sch_desc_everyDay": "кожен день",
261
+ "sch_desc_everyHour": "щогодини",
262
+ "sch_desc_everyMinute": "кожну хвилину",
263
+ "sch_desc_everyMonth": "щомісяця",
264
+ "sch_desc_everyNDay": "кожен %s день",
265
+ "sch_desc_everyNHours": "кожні %s годин",
266
+ "sch_desc_everyNMinutes": "кожні %s хвилин",
267
+ "sch_desc_everyNMonths": "кожні %s місяців",
268
+ "sch_desc_everyNWeeks": "кожні %s тижнів",
269
+ "sch_desc_everyNYears": "кожні %s років",
270
+ "sch_desc_everyWeek": "щотижня",
271
+ "sch_desc_everyYear": "щороку",
272
+ "sch_desc_intervalFromTo": "від %s до %s",
273
+ "sch_desc_never": "ніколи",
274
+ "sch_desc_onDate": "на %s з %s",
275
+ "sch_desc_onDates": "на %s і %s з",
276
+ "sch_desc_onEveryDate": "на кожну дату",
277
+ "sch_desc_onMonth": "%s",
278
+ "sch_desc_onMonths": "%s і %s",
279
+ "sch_desc_onWeekday": "на %s",
280
+ "sch_desc_onWeekdays": "на %s і %s",
281
+ "sch_desc_onWeekends": "на вихідних",
282
+ "sch_desc_onWorkdays": "в робочі дні",
283
+ "sch_desc_onceInPast": "більше не виконуватиметься, оскільки запуск у минулому",
284
+ "sch_desc_once_on": "на %s",
285
+ "sch_desc_validFrom": "від %s",
286
+ "sch_desc_validFromTo": "Виконати від до",
287
+ "sch_desc_validTo": "до %s",
288
+ "sch_every": "кожен",
289
+ "sch_exactTime": "Конкретний час",
290
+ "sch_from": "від",
291
+ "sch_fromTo": "Від до",
292
+ "sch_intervalTime": "Час інтервалу",
293
+ "sch_invert": "інвертувати",
294
+ "sch_no_one": "немає",
295
+ "sch_on": "на",
296
+ "sch_period": "Крапка",
297
+ "sch_periodDaily": "Щодня",
298
+ "sch_periodDates": "дати",
299
+ "sch_periodDay": "День",
300
+ "sch_periodEvery": "кожен",
301
+ "sch_periodEveryDay": "Кожен день",
302
+ "sch_periodEveryMonth": "Щомісяця",
303
+ "sch_periodEveryWeek": "Щотижня",
304
+ "sch_periodEveryYear": "Щороку",
305
+ "sch_periodHours": "години",
306
+ "sch_periodMinutes": "хвилин",
307
+ "sch_periodMonth": "місяць",
308
+ "sch_periodMonthly": "Щомісяця",
309
+ "sch_periodOnce": "Один раз",
310
+ "sch_periodSpecificMonths": "Конкретні місяці",
311
+ "sch_periodWeek": "тиждень",
312
+ "sch_periodWeekdays": "будні",
313
+ "sch_periodWeekend": "Вихідні",
314
+ "sch_periodWeekly": "Щотижня",
315
+ "sch_periodWorkdays": "робочі дні",
316
+ "sch_periodYear": "рік",
317
+ "sch_periodYearly": "щорічно",
318
+ "sch_specificTime": "Конкретний час",
319
+ "sch_time": "час",
320
+ "sch_to": "до",
321
+ "sch_valid": "Дійсний",
322
+ "sch_validFrom": "від",
323
+ "sch_validTo": "до",
324
+ "sch_wholeDay": "Цілий день",
325
+ "sch_yearEveryMonth": "щомісяця"
326
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iobroker/adapter-react-v5",
3
- "version": "3.1.35",
3
+ "version": "3.2.0",
4
4
  "description": "React classes to develop admin interfaces for ioBroker with react.",
5
5
  "author": {
6
6
  "name": "bluefox",