@iobroker/adapter-react-v5 3.1.29 → 3.1.32

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.d.ts CHANGED
@@ -38,6 +38,7 @@ declare class GenericApp extends Router<import("./types").GenericAppProps, impor
38
38
  themeType: string;
39
39
  bottomButtons: boolean;
40
40
  width: import("./types").Width;
41
+ confirmClose: boolean;
41
42
  };
42
43
  savedNative: {};
43
44
  encryptedFields: string[];
@@ -193,6 +194,10 @@ declare class GenericApp extends Router<import("./types").GenericAppProps, impor
193
194
  * @param {string} toast
194
195
  */
195
196
  showToast(toast: string): void;
197
+ /**
198
+ * Render close confirm dialog.
199
+ */
200
+ renderCloseConfirmDialog(): JSX.Element;
196
201
  /**
197
202
  * Renders this component.
198
203
  * @returns {JSX.Element} The JSX element.
package/GenericApp.js CHANGED
@@ -57,6 +57,8 @@ var _Utils = _interopRequireDefault(require("./Components/Utils"));
57
57
 
58
58
  var _SaveCloseButtons = _interopRequireDefault(require("./Components/SaveCloseButtons"));
59
59
 
60
+ var _Confirm = _interopRequireDefault(require("./Dialogs/Confirm"));
61
+
60
62
  var _i18n = _interopRequireDefault(require("./i18n"));
61
63
 
62
64
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -202,12 +204,12 @@ var GenericApp = /*#__PURE__*/function (_Router) {
202
204
 
203
205
  var location = _Router2["default"].getLocation();
204
206
 
205
- location.tab = location.tab || (window._localStorage || window.localStorage).getItem(_this.adapterName + '-adapter') || '';
207
+ location.tab = location.tab || (window._localStorage || window.localStorage).getItem("".concat(_this.adapterName, "-adapter")) || '';
206
208
 
207
209
  var themeInstance = _this.createTheme();
208
210
 
209
211
  _this.state = {
210
- selectedTab: (window._localStorage || window.localStorage).getItem(_this.adapterName + '-adapter') || '',
212
+ selectedTab: (window._localStorage || window.localStorage).getItem("".concat(_this.adapterName, "-adapter")) || '',
211
213
  selectedTabNum: -1,
212
214
  "native": {},
213
215
  errorText: '',
@@ -221,7 +223,8 @@ var GenericApp = /*#__PURE__*/function (_Router) {
221
223
  themeName: _this.getThemeName(themeInstance),
222
224
  themeType: _this.getThemeType(themeInstance),
223
225
  bottomButtons: (settings && settings.bottomButtons) === false ? false : (props && props.bottomButtons) === false ? false : true,
224
- width: GenericApp.getWidth()
226
+ width: GenericApp.getWidth(),
227
+ confirmClose: false
225
228
  }; // init translations
226
229
 
227
230
  var translations = {
@@ -515,7 +518,7 @@ var GenericApp = /*#__PURE__*/function (_Router) {
515
518
  }, {
516
519
  key: "selectTab",
517
520
  value: function selectTab(tab, index) {
518
- (window._localStorage || window.localStorage)[this.adapterName + '-adapter'] = tab;
521
+ (window._localStorage || window.localStorage).setItem(this.adapterName + '-adapter', tab);
519
522
  this.setState({
520
523
  selectedTab: tab,
521
524
  selectedTabNum: index
@@ -604,7 +607,7 @@ var GenericApp = /*#__PURE__*/function (_Router) {
604
607
  return new Promise(function (resolve, reject) {
605
608
  _this6.socket._socket.emit('getHostByIp', host || _this6.common.host, function (ip, _host) {
606
609
  var IPs4 = [{
607
- name: '[IPv4] 0.0.0.0 - ' + _i18n["default"].t('ra_Listen on all IPs'),
610
+ name: "[IPv4] 0.0.0.0 - ".concat(_i18n["default"].t('ra_Listen on all IPs')),
608
611
  address: '0.0.0.0',
609
612
  family: 'ipv4'
610
613
  }];
@@ -622,13 +625,13 @@ var GenericApp = /*#__PURE__*/function (_Router) {
622
625
  return host["native"].hardware.networkInterfaces[eth].forEach(function (inter) {
623
626
  if (inter.family !== 'IPv6') {
624
627
  IPs4.push({
625
- name: '[' + inter.family + '] ' + inter.address + ' - ' + eth,
628
+ name: "[".concat(inter.family, "] ").concat(inter.address, " - ").concat(eth),
626
629
  address: inter.address,
627
630
  family: 'ipv4'
628
631
  });
629
632
  } else {
630
633
  IPs6.push({
631
- name: '[' + inter.family + '] ' + inter.address + ' - ' + eth,
634
+ name: "[".concat(inter.family, "] ").concat(inter.address, " - ").concat(eth),
632
635
  address: inter.address,
633
636
  family: 'ipv6'
634
637
  });
@@ -701,6 +704,11 @@ var GenericApp = /*#__PURE__*/function (_Router) {
701
704
  _this7.savedNative = oldObj["native"];
702
705
  globalThis.changed = false;
703
706
 
707
+ try {
708
+ window.parent.postMessage('nochange', '*');
709
+ } catch (e) {// ignore
710
+ }
711
+
704
712
  _this7.setState({
705
713
  changed: false
706
714
  });
@@ -794,13 +802,7 @@ var GenericApp = /*#__PURE__*/function (_Router) {
794
802
  value: function getIsChanged(_native) {
795
803
  _native = _native || this.state["native"];
796
804
  var isChanged = JSON.stringify(_native) !== JSON.stringify(this.savedNative);
797
-
798
- if (isChanged) {
799
- globalThis.changed = true;
800
- } else {
801
- globalThis.changed = false;
802
- }
803
-
805
+ globalThis.changed = isChanged;
804
806
  return isChanged;
805
807
  }
806
808
  /**
@@ -852,7 +854,13 @@ var GenericApp = /*#__PURE__*/function (_Router) {
852
854
  return _this10.onSave(isClose);
853
855
  },
854
856
  onClose: function onClose() {
855
- return GenericApp.onClose();
857
+ if (_this10.state.changed) {
858
+ _this10.setState({
859
+ confirmClose: true
860
+ });
861
+ } else {
862
+ GenericApp.onClose();
863
+ }
856
864
  }
857
865
  });
858
866
  } else {
@@ -892,7 +900,7 @@ var GenericApp = /*#__PURE__*/function (_Router) {
892
900
  obj[attr] = obj[attr] || {};
893
901
 
894
902
  if ((0, _typeof2["default"])(obj[attr]) !== 'object') {
895
- throw new Error('attribute ' + attr + ' is no object, but ' + (0, _typeof2["default"])(obj[attr]));
903
+ throw new Error("attribute ".concat(attr, " is no object, but ").concat((0, _typeof2["default"])(obj[attr])));
896
904
  }
897
905
 
898
906
  return this._updateNativeValue(obj[attr], attrs, value);
@@ -912,6 +920,14 @@ var GenericApp = /*#__PURE__*/function (_Router) {
912
920
 
913
921
  if (this._updateNativeValue(_native2, attr, value)) {
914
922
  var changed = this.getIsChanged(_native2);
923
+
924
+ if (changed !== this.state.changed) {
925
+ try {
926
+ window.parent.postMessage(changed ? 'change' : 'nochange', '*');
927
+ } catch (e) {// ignore
928
+ }
929
+ }
930
+
915
931
  this.setState({
916
932
  "native": _native2,
917
933
  changed: changed
@@ -942,6 +958,33 @@ var GenericApp = /*#__PURE__*/function (_Router) {
942
958
  toast: toast
943
959
  });
944
960
  }
961
+ /**
962
+ * Render close confirm dialog.
963
+ */
964
+
965
+ }, {
966
+ key: "renderCloseConfirmDialog",
967
+ value: function renderCloseConfirmDialog() {
968
+ var _this11 = this;
969
+
970
+ if (!this.state.confirmClose) {
971
+ return null;
972
+ }
973
+
974
+ return /*#__PURE__*/_react["default"].createElement(_Confirm["default"], {
975
+ title: _i18n["default"].t('ra_Please confirm'),
976
+ text: _i18n["default"].t('ra_Some data are not stored. Discard?'),
977
+ ok: _i18n["default"].t('ra_Discard'),
978
+ cancel: _i18n["default"].t('ra_Cancel'),
979
+ onClose: function onClose(isYes) {
980
+ return _this11.setState({
981
+ confirmClose: false
982
+ }, function () {
983
+ return isYes && GenericApp.onClose();
984
+ });
985
+ }
986
+ });
987
+ }
945
988
  /**
946
989
  * Renders this component.
947
990
  * @returns {JSX.Element} The JSX element.
@@ -958,7 +1001,7 @@ var GenericApp = /*#__PURE__*/function (_Router) {
958
1001
 
959
1002
  return /*#__PURE__*/_react["default"].createElement("div", {
960
1003
  className: "App"
961
- }, this.renderError(), this.renderToast(), this.renderSaveCloseButtons());
1004
+ }, this.renderCloseConfirmDialog(), this.renderError(), this.renderToast(), this.renderSaveCloseButtons());
962
1005
  }
963
1006
  }], [{
964
1007
  key: "getWidth",
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","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","onClose","vertical","horizontal","classes","close","native","isChanged","newNative","getIsChanged","onSave","attrs","shift","Error","_updateNativeValue","cb","text","renderError","renderToast","renderSaveCloseButtons","SIZES","xs","sm","md","lg","xl","innerWidth","reverse","widthComputed","find","key","parent","$iframeDialog","postMessage","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 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 };\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()}, () => 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)[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.filter(item => item.value.common.webExtendable).map(item => item.value));\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 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={{\n 'aria-describedby': 'message-id',\n }}\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 if(isChanged) {\n globalThis.changed = true;\n } else {\n globalThis.changed = false;\n }\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.bottomButtons) {\n return <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={() => GenericApp.onClose()}\n />;\n } else {\n return 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 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","attrs","shift","Error","_updateNativeValue","cb","text","isYes","renderCloseConfirmDialog","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.bottomButtons) {\n return <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 />;\n } else {\n return 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 * Render close confirm dialog.\n */\n renderCloseConfirmDialog() {\n if (!this.state.confirmClose) {\n return null;\n }\n return <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 />;\n }\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.renderCloseConfirmDialog()}\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
@@ -642,7 +642,10 @@ If you still have questions, try to find an answer [here](https://mui.com/guides
642
642
  -->
643
643
 
644
644
  ## Changelog
645
- ### 3.1.29 (2022-08-23)
645
+ ### 3.1.32 (2022-08-24)
646
+ * (bluefox) Added support for onchange flag
647
+
648
+ ### 3.1.30 (2022-08-23)
646
649
  * (bluefox) Added method `getCompactSystemRepositories`
647
650
  * (bluefox) corrected error in `ObjectBrowser`
648
651
 
package/i18n/de.json CHANGED
@@ -320,5 +320,7 @@
320
320
  "ra_Disconnected": "Getrennt",
321
321
  "ra_Connected": "Verbunden",
322
322
  "ra_Configure": "Konfigurieren",
323
- "ra_Invalid CRON": "Ungültiger CRON"
323
+ "ra_Invalid CRON": "Ungültiger CRON",
324
+ "ra_Discard": "Verwerfen",
325
+ "ra_Some data are not stored. Discard?": "Einige Daten werden nicht gespeichert. Verwerfen?"
324
326
  }
package/i18n/en.json CHANGED
@@ -320,5 +320,7 @@
320
320
  "ra_Disconnected": "Disconnected",
321
321
  "ra_Connected": "Connected",
322
322
  "ra_Configure": "Configure",
323
- "ra_Invalid CRON": "Invalid CRON"
323
+ "ra_Invalid CRON": "Invalid CRON",
324
+ "ra_Discard": "Discard",
325
+ "ra_Some data are not stored. Discard?": "Some data are not stored. Discard?"
324
326
  }
package/i18n/es.json CHANGED
@@ -307,5 +307,7 @@
307
307
  "ra_Disconnected": "Desconectado",
308
308
  "ra_Connected": "Conectado",
309
309
  "ra_Configure": "Configurar",
310
- "ra_Invalid CRON": "CRON no válido"
310
+ "ra_Invalid CRON": "CRON no válido",
311
+ "ra_Discard": "Desechar",
312
+ "ra_Some data are not stored. Discard?": "Algunos datos no se almacenan. ¿Desechar?"
311
313
  }
package/i18n/fr.json CHANGED
@@ -307,5 +307,7 @@
307
307
  "ra_Disconnected": "Débranché",
308
308
  "ra_Connected": "Lié",
309
309
  "ra_Configure": "Configurer",
310
- "ra_Invalid CRON": "CRON invalide"
310
+ "ra_Invalid CRON": "CRON invalide",
311
+ "ra_Discard": "Jeter",
312
+ "ra_Some data are not stored. Discard?": "Certaines données ne sont pas stockées. Jeter?"
311
313
  }
package/i18n/it.json CHANGED
@@ -307,5 +307,7 @@
307
307
  "ra_Disconnected": "Disconnesso",
308
308
  "ra_Connected": "Collegato",
309
309
  "ra_Configure": "Configura",
310
- "ra_Invalid CRON": "CRON non valido"
310
+ "ra_Invalid CRON": "CRON non valido",
311
+ "ra_Discard": "Scartare",
312
+ "ra_Some data are not stored. Discard?": "Alcuni dati non vengono memorizzati. Scartare?"
311
313
  }
package/i18n/nl.json CHANGED
@@ -307,5 +307,7 @@
307
307
  "ra_Disconnected": "Verbinding verbroken",
308
308
  "ra_Connected": "Verbonden",
309
309
  "ra_Configure": "Configureren",
310
- "ra_Invalid CRON": "Ongeldige CRON"
310
+ "ra_Invalid CRON": "Ongeldige CRON",
311
+ "ra_Discard": "Weggooien",
312
+ "ra_Some data are not stored. Discard?": "Sommige gegevens worden niet opgeslagen. Weggooien?"
311
313
  }
package/i18n/pl.json CHANGED
@@ -307,5 +307,7 @@
307
307
  "ra_Disconnected": "Niepowiązany",
308
308
  "ra_Connected": "Połączony",
309
309
  "ra_Configure": "Konfiguruj",
310
- "ra_Invalid CRON": "Nieprawidłowy CRON"
310
+ "ra_Invalid CRON": "Nieprawidłowy CRON",
311
+ "ra_Discard": "Wyrzucać",
312
+ "ra_Some data are not stored. Discard?": "Niektóre dane nie są przechowywane. Wyrzucać?"
311
313
  }
package/i18n/pt.json CHANGED
@@ -307,5 +307,7 @@
307
307
  "ra_Disconnected": "Desconectado",
308
308
  "ra_Connected": "Conectado",
309
309
  "ra_Configure": "Configurar",
310
- "ra_Invalid CRON": "CRON inválido"
310
+ "ra_Invalid CRON": "CRON inválido",
311
+ "ra_Discard": "Descartar",
312
+ "ra_Some data are not stored. Discard?": "Alguns dados não são armazenados. Descartar?"
311
313
  }
package/i18n/ru.json CHANGED
@@ -320,5 +320,7 @@
320
320
  "ra_Disconnected": "Отключено",
321
321
  "ra_Connected": "Соединение установлено",
322
322
  "ra_Configure": "Настроить",
323
- "ra_Invalid CRON": "Неверный CRON"
323
+ "ra_Invalid CRON": "Неверный CRON",
324
+ "ra_Discard": "Отказаться",
325
+ "ra_Some data are not stored. Discard?": "Некоторые данные не сохранились. Отказаться?"
324
326
  }
package/i18n/zh-cn.json CHANGED
@@ -307,5 +307,7 @@
307
307
  "ra_Disconnected": "断开连接",
308
308
  "ra_Connected": "连接的",
309
309
  "ra_Configure": "配置",
310
- "ra_Invalid CRON": "无效的 CRON"
310
+ "ra_Invalid CRON": "无效的 CRON",
311
+ "ra_Discard": "丢弃",
312
+ "ra_Some data are not stored. Discard?": "部分数据未存储。丢弃?"
311
313
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iobroker/adapter-react-v5",
3
- "version": "3.1.29",
3
+ "version": "3.1.32",
4
4
  "description": "React classes to develop admin interfaces for ioBroker with react.",
5
5
  "author": {
6
6
  "name": "bluefox",