@iobroker/adapter-react-v5 3.1.30 → 3.1.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Components/ObjectBrowser.js +1 -1
- package/Components/ObjectBrowser.js.map +1 -1
- package/GenericApp.d.ts +1 -0
- package/GenericApp.js +57 -29
- package/GenericApp.js.map +1 -1
- package/README.md +3 -0
- package/i18n/de.json +3 -1
- package/i18n/en.json +3 -1
- package/i18n/es.json +3 -1
- package/i18n/fr.json +3 -1
- package/i18n/it.json +3 -1
- package/i18n/nl.json +3 -1
- package/i18n/pl.json +3 -1
- package/i18n/pt.json +3 -1
- package/i18n/ru.json +3 -1
- package/i18n/zh-cn.json +3 -1
- package/package.json +1 -1
package/GenericApp.d.ts
CHANGED
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
|
|
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
|
|
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)
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
/**
|
|
@@ -842,22 +844,40 @@ var GenericApp = /*#__PURE__*/function (_Router) {
|
|
|
842
844
|
value: function renderSaveCloseButtons() {
|
|
843
845
|
var _this10 = this;
|
|
844
846
|
|
|
845
|
-
if (this.state.bottomButtons) {
|
|
846
|
-
return /*#__PURE__*/_react["default"].createElement(_SaveCloseButtons["default"], {
|
|
847
|
-
theme: this.state.theme,
|
|
848
|
-
newReact: this.newReact,
|
|
849
|
-
noTextOnButtons: this.state.width === 'xs' || this.state.width === 'sm' || this.state.width === 'md',
|
|
850
|
-
changed: this.state.changed,
|
|
851
|
-
onSave: function onSave(isClose) {
|
|
852
|
-
return _this10.onSave(isClose);
|
|
853
|
-
},
|
|
854
|
-
onClose: function onClose() {
|
|
855
|
-
return GenericApp.onClose();
|
|
856
|
-
}
|
|
857
|
-
});
|
|
858
|
-
} else {
|
|
847
|
+
if (!this.state.confirmClose && !this.state.bottomButtons) {
|
|
859
848
|
return null;
|
|
860
849
|
}
|
|
850
|
+
|
|
851
|
+
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, this.state.bottomButtons ? /*#__PURE__*/_react["default"].createElement(_SaveCloseButtons["default"], {
|
|
852
|
+
theme: this.state.theme,
|
|
853
|
+
newReact: this.newReact,
|
|
854
|
+
noTextOnButtons: this.state.width === 'xs' || this.state.width === 'sm' || this.state.width === 'md',
|
|
855
|
+
changed: this.state.changed,
|
|
856
|
+
onSave: function onSave(isClose) {
|
|
857
|
+
return _this10.onSave(isClose);
|
|
858
|
+
},
|
|
859
|
+
onClose: function onClose() {
|
|
860
|
+
if (_this10.state.changed) {
|
|
861
|
+
_this10.setState({
|
|
862
|
+
confirmClose: true
|
|
863
|
+
});
|
|
864
|
+
} else {
|
|
865
|
+
GenericApp.onClose();
|
|
866
|
+
}
|
|
867
|
+
}
|
|
868
|
+
}) : null, this.state.confirmClose ? /*#__PURE__*/_react["default"].createElement(_Confirm["default"], {
|
|
869
|
+
title: _i18n["default"].t('ra_Please confirm'),
|
|
870
|
+
text: _i18n["default"].t('ra_Some data are not stored. Discard?'),
|
|
871
|
+
ok: _i18n["default"].t('ra_Discard'),
|
|
872
|
+
cancel: _i18n["default"].t('ra_Cancel'),
|
|
873
|
+
onClose: function onClose(isYes) {
|
|
874
|
+
return _this10.setState({
|
|
875
|
+
confirmClose: false
|
|
876
|
+
}, function () {
|
|
877
|
+
return isYes && GenericApp.onClose();
|
|
878
|
+
});
|
|
879
|
+
}
|
|
880
|
+
}) : null);
|
|
861
881
|
}
|
|
862
882
|
/**
|
|
863
883
|
* @private
|
|
@@ -892,7 +912,7 @@ var GenericApp = /*#__PURE__*/function (_Router) {
|
|
|
892
912
|
obj[attr] = obj[attr] || {};
|
|
893
913
|
|
|
894
914
|
if ((0, _typeof2["default"])(obj[attr]) !== 'object') {
|
|
895
|
-
throw new Error(
|
|
915
|
+
throw new Error("attribute ".concat(attr, " is no object, but ").concat((0, _typeof2["default"])(obj[attr])));
|
|
896
916
|
}
|
|
897
917
|
|
|
898
918
|
return this._updateNativeValue(obj[attr], attrs, value);
|
|
@@ -912,6 +932,14 @@ var GenericApp = /*#__PURE__*/function (_Router) {
|
|
|
912
932
|
|
|
913
933
|
if (this._updateNativeValue(_native2, attr, value)) {
|
|
914
934
|
var changed = this.getIsChanged(_native2);
|
|
935
|
+
|
|
936
|
+
if (changed !== this.state.changed) {
|
|
937
|
+
try {
|
|
938
|
+
window.parent.postMessage(changed ? 'change' : 'nochange', '*');
|
|
939
|
+
} catch (e) {// ignore
|
|
940
|
+
}
|
|
941
|
+
}
|
|
942
|
+
|
|
915
943
|
this.setState({
|
|
916
944
|
"native": _native2,
|
|
917
945
|
changed: changed
|
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","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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AAEA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;AAEA;AACA,IAAMA,QAAQ,43BAAd;;AAmDA,IAAI,CAACC,MAAM,CAACC,YAAZ,EAA0B;EACtBD,MAAM,CAACC,YAAP,GAAsB;IAClBC,OAAO,EAAE;MAAA,OAAM,IAAN;IAAA,CADS;IAElBC,OAAO,EAAE;MAAA,OAAM,IAAN;IAAA;EAFS,CAAtB;AAIH;AAED;AACA;AACA;;;IACMC,U;;;;;EACF;AACJ;AACA;AACA;EACI,oBAAYC,KAAZ,EAAmBC,QAAnB,EAA6B;IAAA;;IAAA;IACzB,IAAMC,eAAe,GAAGF,KAAK,CAACG,UAAN,IAAoBF,QAAQ,CAACE,UAA7B,IAA2CA,sBAAnE;;IAEA,IAAI,CAACR,MAAM,CAACS,QAAP,CAAgBC,cAAhB,CAA+B,gCAA/B,CAAL,EAAuE;MACnE,IAAMC,KAAK,GAAGX,MAAM,CAACS,QAAP,CAAgBG,aAAhB,CAA8B,OAA9B,CAAd;MACAD,KAAK,CAACE,YAAN,CAAmB,IAAnB,EAAyB,gCAAzB;MACAF,KAAK,CAACG,SAAN,GAAkBf,QAAlB;MACAC,MAAM,CAACS,QAAP,CAAgBM,IAAhB,CAAqBC,WAArB,CAAiCL,KAAjC;IACH,CARwB,CAUzB;;;IACA,IAAI,CAACJ,eAAe,CAACU,KAAhB,EAAD,IAA4BjB,MAAM,CAACkB,EAAnC,IAAyClB,MAAM,CAACmB,QAAP,CAAgBC,IAAhB,KAAyB,MAAtE,EAA8E;MAC1E,IAAI;QACA,IAAMF,EAAE,GAAG,IAAIlB,MAAM,CAACqB,YAAX,EAAX;QACA,OAAOrB,MAAM,CAACkB,EAAd;QACAlB,MAAM,CAACkB,EAAP,GAAYA,EAAZ;MACH,CAJD,CAIE,OAAOI,CAAP,EAAU,CACR;MACH;IACJ;;IAED,0BAAMjB,KAAN;IArByB,0GA0LL,UAACkB,EAAD,EAAKC,GAAL,EAAa;MACjC,IAAIA,GAAG,IAAID,EAAE,KAAK,eAAlB,EAAmC;QAAA;;QAC/B,IAAI,MAAKE,MAAL,CAAYC,UAAZ,MAA2BF,GAA3B,aAA2BA,GAA3B,uBAA2BA,GAAG,CAAEG,MAAL,CAAYC,QAAvC,CAAJ,EAAqD;UACjD,MAAKH,MAAL,CAAYC,UAAZ,GAAyB,CAAAF,GAAG,SAAH,IAAAA,GAAG,WAAH,YAAAA,GAAG,CAAEG,MAAL,CAAYC,QAAZ,KAAwB,IAAjD;;UACAC,gBAAA,CAAKC,WAAL,CAAiB,MAAKL,MAAL,CAAYC,UAA7B;QACH;;QAED,IAAI,MAAKK,aAAL,CAAmBC,UAAnB,KAAkC,CAAC,EAACR,GAAD,aAACA,GAAD,8BAACA,GAAG,CAAEG,MAAN,wCAAC,YAAaK,UAAd,CAAvC,EAAiE;UAC7D,MAAKD,aAAL,GAAqB,CAAAP,GAAG,SAAH,IAAAA,GAAG,WAAH,YAAAA,GAAG,CAAEG,MAAL,KAAe,EAApC;;UACA,MAAKM,QAAL,CAAc;YAAED,UAAU,EAAE,MAAKE,aAAL;UAAd,CAAd;QACH,CAHD,MAGO;UACH,MAAKH,aAAL,GAAqB,CAAAP,GAAG,SAAH,IAAAA,GAAG,WAAH,YAAAA,GAAG,CAAEG,MAAL,KAAe,EAApC;QACH;MACJ;IACJ,CAxM4B;IAAA,qGA4NV,UAAAQ,OAAO,EAAI;MAC1B,IAAIA,OAAJ,aAAIA,OAAJ,eAAIA,OAAO,CAAEC,IAAb,EAAmB;QACf,IAAID,OAAO,CAACC,IAAR,KAAiB,aAArB,EAAoC;UAChC,IAAMC,YAAY,GAAGC,iBAAA,CAAMC,YAAN,EAArB;;UACAD,iBAAA,CAAME,YAAN,CAAmBF,iBAAA,CAAMC,YAAN,EAAnB;;UAEA,IAAME,MAAK,GAAG,MAAKC,WAAL,CAAiBL,YAAjB,CAAd;;UAEA,MAAKJ,QAAL,CAAc;YACVQ,KAAK,EAALA,MADU;YAEVE,SAAS,EAAE,MAAKJ,YAAL,CAAkBE,MAAlB,CAFD;YAGVG,SAAS,EAAE,MAAKC,YAAL,CAAkBJ,MAAlB;UAHD,CAAd,EAIG,YAAM;YACL,MAAKpC,KAAL,CAAWyC,aAAX,IAA4B,MAAKzC,KAAL,CAAWyC,aAAX,CAAyBT,YAAzB,CAA5B;YACA,MAAKU,cAAL,IAAuB,MAAKA,cAAL,CAAoBV,YAApB,CAAvB;UACH,CAPD;QAQH,CAdD,MAcO,IAAIF,OAAO,CAACC,IAAR,KAAiB,kBAArB,EAAyC;UAC5C,MAAKY,kBAAL,IAA2B,MAAKA,kBAAL,CAAwB,MAAKd,aAAL,EAAxB,CAA3B;QACH,CAFM,MAEA;UACHe,OAAO,CAACC,IAAR,CAAa,+BAA+BC,IAAI,CAACC,SAAL,CAAejB,OAAO,CAACC,IAAvB,CAA5C;QACH;MACJ;IACJ,CAlP4B;IAAA,6FAuPlB,YAAM;MACb,MAAKiB,WAAL,IAAoBC,YAAY,CAAC,MAAKD,WAAN,CAAhC;MACA,MAAKA,WAAL,GAAmBE,UAAU,CAAC,YAAM;QAChC,MAAKF,WAAL,GAAmB,IAAnB;;QACA,MAAKpB,QAAL,CAAc;UAAEuB,KAAK,EAAEpD,UAAU,CAACqD,QAAX;QAAT,CAAd;MACH,CAH4B,EAG1B,GAH0B,CAA7B;IAIH,CA7P4B;IAuBzB,IAAAC,kBAAA;IAEA,IAAIC,KAAK,GAAG,CAAC3D,MAAM,CAACmB,QAAP,CAAgByC,MAAhB,IAA0B,EAA3B,EAA+BC,OAA/B,CAAuC,KAAvC,EAA8C,EAA9C,EAAkDA,OAAlD,CAA0D,MAA1D,EAAkE,EAAlE,CAAZ;IACA,IAAIC,IAAI,GAAG,EAAX;IACAH,KAAK,CAACI,IAAN,GAAaC,KAAb,CAAmB,GAAnB,EAAwBC,MAAxB,CAA+B,UAAAC,CAAC;MAAA,OAAIA,CAAC,CAACH,IAAF,EAAJ;IAAA,CAAhC,EAA8CI,OAA9C,CAAsD,UAAAC,CAAC,EAAI;MACvD,IAAMC,KAAK,GAAGD,CAAC,CAACJ,KAAF,CAAQ,GAAR,CAAd;MACAF,IAAI,CAACO,KAAK,CAAC,CAAD,CAAN,CAAJ,GAAiBA,KAAK,CAACC,MAAN,KAAiB,CAAjB,GAAqBD,KAAK,CAAC,CAAD,CAA1B,GAAgC,IAAjD;;MACA,IAAIP,IAAI,CAACO,KAAK,CAAC,CAAD,CAAN,CAAJ,KAAmB,MAAvB,EAA+B;QAC3BP,IAAI,CAACO,KAAK,CAAC,CAAD,CAAN,CAAJ,GAAiB,IAAjB;MACH,CAFD,MAEO,IAAIP,IAAI,CAACO,KAAK,CAAC,CAAD,CAAN,CAAJ,KAAmB,OAAvB,EAAgC;QACnCP,IAAI,CAACO,KAAK,CAAC,CAAD,CAAN,CAAJ,GAAiB,KAAjB;MACH;IACJ,CARD,EA3ByB,CAqCzB;;IACA,MAAKE,QAAL,GAAgBT,IAAI,CAACS,QAAL,KAAkBC,SAAlB,GAA8BC,QAAQ,CAACX,IAAI,CAACS,QAAN,EAAgB,EAAhB,CAAR,IAA+B,CAA7D,GAAkEE,QAAQ,CAACzE,MAAM,CAACmB,QAAP,CAAgByC,MAAhB,CAAuBc,KAAvB,CAA6B,CAA7B,CAAD,EAAkC,EAAlC,CAAR,IAAiD,CAAnI,CAtCyB,CAuCzB;;IACA,IAAMC,GAAG,GAAG3E,MAAM,CAACmB,QAAP,CAAgByD,QAAhB,CAAyBZ,KAAzB,CAA+B,GAA/B,CAAZ;IACA,MAAKa,WAAL,GAAmB,CAAAvE,QAAQ,SAAR,IAAAA,QAAQ,WAAR,YAAAA,QAAQ,CAAEuE,WAAV,KAAyBxE,KAAK,CAACwE,WAA/B,IAA8C7E,MAAM,CAAC6E,WAArD,IAAoEF,GAAG,CAACA,GAAG,CAACL,MAAJ,GAAa,CAAd,CAAvE,IAA2F,KAA9G;IACA,MAAKQ,UAAL,4BAAqC,MAAKD,WAA1C,cAAyD,MAAKN,QAA9D;IACA,MAAKQ,QAAL,GAAgBjB,IAAI,CAACiB,QAAL,KAAkB,IAAlC,CA3CyB,CA2Ce;;IAExC,IAAM5D,QAAQ,GAAG6D,mBAAA,CAAOC,WAAP,EAAjB;;IACA9D,QAAQ,CAAC+D,GAAT,GAAe/D,QAAQ,CAAC+D,GAAT,IAAgB,CAAClF,MAAM,CAACmF,aAAP,IAAwBnF,MAAM,CAACC,YAAhC,EAA8CC,OAA9C,WAAyD,MAAK2E,WAA9D,cAAhB,IAAwG,EAAvH;;IAEA,IAAMO,aAAa,GAAG,MAAK1C,WAAL,EAAtB;;IAEA,MAAK2C,KAAL,GAAa;MACTC,WAAW,EAAK,CAACtF,MAAM,CAACmF,aAAP,IAAwBnF,MAAM,CAACC,YAAhC,EAA8CC,OAA9C,WAAyD,MAAK2E,WAA9D,kBAAwF,EAD/F;MAETU,cAAc,EAAE,CAAC,CAFR;MAGT,UAAgB,EAHP;MAITC,SAAS,EAAO,EAJP;MAKTC,OAAO,EAAS,KALP;MAMTC,SAAS,EAAO,KANP;MAOTC,MAAM,EAAU,KAPP;MAQTC,oBAAoB,EAAE,EARb;MAST5D,UAAU,EAAM,KATP;MAUT6D,KAAK,EAAW,EAVP;MAWTpD,KAAK,EAAW2C,aAXP;MAYTzC,SAAS,EAAO,MAAKJ,YAAL,CAAkB6C,aAAlB,CAZP;MAaTxC,SAAS,EAAO,MAAKC,YAAL,CAAkBuC,aAAlB,CAbP;MAcTU,aAAa,EAAG,CAACxF,QAAQ,IAAIA,QAAQ,CAACwF,aAAtB,MAAyC,KAAzC,GAAiD,KAAjD,GAA0D,CAACzF,KAAK,IAAIA,KAAK,CAACyF,aAAhB,MAAmC,KAAnC,GAA2C,KAA3C,GAAmD,IAdpH;MAeTtC,KAAK,EAAWpD,UAAU,CAACqD,QAAX,EAfP;MAgBTsC,YAAY,EAAI;IAhBP,CAAb,CAlDyB,CAqEzB;;IACA,IAAMC,YAAY,GAAG;MACjB,MAAMC,OAAO,CAAC,gBAAD,CADI;MAEjB,MAAMA,OAAO,CAAC,gBAAD,CAFI;MAGjB,MAAMA,OAAO,CAAC,gBAAD,CAHI;MAIjB,MAAMA,OAAO,CAAC,gBAAD,CAJI;MAKjB,MAAMA,OAAO,CAAC,gBAAD,CALI;MAMjB,MAAMA,OAAO,CAAC,gBAAD,CANI;MAOjB,MAAMA,OAAO,CAAC,gBAAD,CAPI;MAQjB,MAAMA,OAAO,CAAC,gBAAD,CARI;MASjB,MAAMA,OAAO,CAAC,gBAAD,CATI;MAUjB,SAASA,OAAO,CAAC,mBAAD;IAVC,CAArB,CAtEyB,CAmFzB;;IACA,IAAI3F,QAAQ,IAAIA,QAAQ,CAAC0F,YAAzB,EAAuC;MACnCE,MAAM,CAACC,IAAP,CAAY7F,QAAQ,CAAC0F,YAArB,EAAmC7B,OAAnC,CAA2C,UAAAiC,IAAI;QAAA,OAAIJ,YAAY,CAACI,IAAD,CAAZ,GAAqBF,MAAM,CAACG,MAAP,CAAcL,YAAY,CAACI,IAAD,CAA1B,EAAkC9F,QAAQ,CAAC0F,YAAT,CAAsBI,IAAtB,CAAlC,CAAzB;MAAA,CAA/C;IACH,CAFD,MAEO,IAAI/F,KAAK,CAAC2F,YAAV,EAAwB;MAC3BE,MAAM,CAACC,IAAP,CAAY9F,KAAK,CAAC2F,YAAlB,EAAgC7B,OAAhC,CAAwC,UAAAiC,IAAI;QAAA,OAAIJ,YAAY,CAACI,IAAD,CAAZ,GAAqBF,MAAM,CAACG,MAAP,CAAcL,YAAY,CAACI,IAAD,CAA1B,EAAkC/F,KAAK,CAAC2F,YAAN,CAAmBI,IAAnB,CAAlC,CAAzB;MAAA,CAA5C;IACH;;IAEDvE,gBAAA,CAAKyE,eAAL,CAAqBN,YAArB;;IAEA,MAAKO,WAAL,GAAmB,EAAnB,CA5FyB,CA4FF;;IAEvB,MAAKC,eAAL,GAAuBnG,KAAK,CAACmG,eAAN,KAAyBlG,QAAzB,aAAyBA,QAAzB,uBAAyBA,QAAQ,CAAEkG,eAAnC,KAAsD,EAA7E;IAEA,MAAKC,SAAL,GAAkBnG,QAAQ,IAAIA,QAAQ,CAACmG,SAAtB,IAAoCpG,KAAK,CAACoG,SAA3D;IAEA,MAAKhF,MAAL,GAAc,IAAIlB,eAAJ,iCACN,CAAAF,KAAK,SAAL,IAAAA,KAAK,WAAL,YAAAA,KAAK,CAAEoB,MAAP,MAAiBnB,QAAjB,aAAiBA,QAAjB,uBAAiBA,QAAQ,CAAEmB,MAA3B,CADM;MAEViF,IAAI,EAAE,MAAK7B,WAFD;MAGV8B,mBAAmB,EAAErG,QAAF,aAAEA,QAAF,uBAAEA,QAAQ,CAAEqG,mBAHrB;MAIVC,UAAU,EAAE,oBAAAC,QAAQ,EAAI;QACpB,IAAIA,QAAQ,KAAKC,oBAAA,CAASC,UAA1B,EAAsC;UAClC,MAAK9E,QAAL,CAAc;YAAEyD,SAAS,EAAE;UAAb,CAAd;QACH,CAFD,MAEO,IAAImB,QAAQ,KAAKC,oBAAA,CAASE,KAA1B,EAAiC;UACpC,MAAK/E,QAAL,CAAc;YAAEyD,SAAS,EAAE;UAAb,CAAd;QACH,CAFM,MAEA;UACH,MAAKzD,QAAL,CAAc;YAAEyD,SAAS,EAAE;UAAb,CAAd;QACH;MACJ,CAZS;MAaVuB,OAAO,EAAE,iBAACC,OAAD,EAAUC,OAAV,EAAsB;QAC3BtF,gBAAA,CAAKC,WAAL,CAAiB,MAAKL,MAAL,CAAYC,UAA7B,EAD2B,CAG3B;;;QACA,MAAKD,MAAL,CAAY2F,eAAZ,CAA4B,eAA5B,EAA6C,MAAKC,qBAAlD,EACKC,IADL,CACU;UAAA,OAAM,MAAKC,eAAL,EAAN;QAAA,CADV,EAEKD,IAFL,CAEU,UAAA9F,GAAG,EAAI;UACT,MAAKgG,OAAL,GAAgB,OAAOhG,GAAP,KAAe,WAAf,IAA8BA,GAAG,UAAjC,IAA4CA,GAAG,UAAH,CAAWiG,MAAxD,IAAmE,iBAAlF;UACA,MAAK1F,aAAL,GAAqB,CAAAP,GAAG,SAAH,IAAAA,GAAG,WAAH,YAAAA,GAAG,CAAEG,MAAL,KAAe,EAApC;UACA,OAAO,MAAKF,MAAL,CAAYiG,SAAZ,CAAsB,MAAK5C,UAA3B,CAAP;QACH,CANL,EAOKwC,IAPL,CAOU,UAAAK,WAAW,EAAI;UACjB,IAAIC,WAAJ;UAEA,IAAMC,aAAa,GACf,MAAK9F,aAAL,CAAmB+F,IAAnB,KAA4B,MAA5B,IACAH,WADA,IAEAA,WAAW,CAAChG,MAFZ,IAGAgG,WAAW,CAAChG,MAAZ,CAAmB+E,IAHnB,IAIAiB,WAAW,CAAChG,MAAZ,CAAmBoG,OAJnB,IAKA,CAACJ,WAAW,CAAChG,MAAZ,CAAmBqG,oBALpB,IAMAhI,MAAM,CAACmB,QAAP,CAAgB8G,IAAhB,KAAyB,gBAP7B,CAHiB,CAYjB;;UACA,IAAI,CAAC,MAAKC,aAAN,IAAuB,MAAKzB,SAA5B,IAAyCoB,aAA7C,EAA4D;YACxD,MAAKK,aAAL,GAAqB,IAArB;YAEAC,MAAM,CAACC,IAAP,CAAY;cACRC,GAAG,EAAE,MAAK5B,SADF;cAER6B,OAAO,qBAAcX,WAAW,CAAChG,MAAZ,CAAmB+E,IAAjC,cAAyCiB,WAAW,CAAChG,MAAZ,CAAmBoG,OAA5D,CAFC;cAGRQ,YAAY,EAAE,CACV,IAAIC,kBAAkB,CAACC,MAAvB,EADU;YAHN,CAAZ;UAOH,CAvBgB,CAyBjB;UACA;;;UACA,IAAI,CAAC,MAAKC,YAAN,IAAsBb,aAA1B,EAAyC;YACrC,MAAKa,YAAL,GAAoB,IAApB;YAEAd,WAAW,GAAG,MAAKnG,MAAL,CAAYiG,SAAZ,CAAsB,kBAAtB,EACTJ,IADS,CACJ,UAAAqB,OAAO,EAAI;cACb,IAAIA,OAAO,IAAIA,OAAO,UAAlB,IAA6BA,OAAO,UAAP,CAAeC,IAAhD,EAAsD;gBAClDT,MAAM,CAACU,cAAP,CAAsB,UAAAC,KAAK;kBAAA,OACvBA,KAAK,CAACC,OAAN,CAAc;oBAACxH,EAAE,EAAEoH,OAAO,UAAP,CAAeC;kBAApB,CAAd,CADuB;gBAAA,CAA3B;cAEH;YACJ,CANS,CAAd;UAOH;;UAEDhB,WAAW,GAAGA,WAAW,IAAIoB,OAAO,CAACC,OAAR,EAA7B;UAEArB,WAAW,CACNN,IADL,CACU,YAAM;YACR,IAAIK,WAAJ,EAAiB;cACb,MAAKhG,MAAL,GAAcgG,WAAd,aAAcA,WAAd,uBAAcA,WAAW,CAAEhG,MAA3B;;cACA,MAAKuH,aAAL,CAAmBvB,WAAW,UAA9B,EAAuCA,WAAW,CAACwB,eAAnD,EAFa,CAEwD;;;cACrE,MAAK5C,WAAL,GAAmBpD,IAAI,CAACiG,KAAL,CAAWjG,IAAI,CAACC,SAAL,CAAeuE,WAAW,UAA1B,CAAX,CAAnB;;cACA,MAAK1F,QAAL,CAAc;gBAAE,UAAQ0F,WAAW,UAArB;gBAA8BhC,MAAM,EAAE,IAAtC;gBAA4C3D,UAAU,EAAE,MAAKE,aAAL;cAAxD,CAAd,EAA8F;gBAAA,OAC1F,MAAKmH,iBAAL,IAA0B,MAAKA,iBAAL,EADgE;cAAA,CAA9F;YAEH,CAND,MAMO;cACHpG,OAAO,CAACC,IAAR,CAAa,+BAAb;;cACA,MAAKjB,QAAL,CAAc;gBAAE,UAAQ,EAAV;gBAAc0D,MAAM,EAAE,IAAtB;gBAA4B3D,UAAU,EAAE,MAAKE,aAAL;cAAxC,CAAd,EACI;gBAAA,OAAM,MAAKmH,iBAAL,IAA0B,MAAKA,iBAAL,EAAhC;cAAA,CADJ;YAEH;UACJ,CAbL;QAcH,CA9DL;MA+DH,CAhFS;MAiFVC,OAAO,EAAE,iBAAAC,GAAG,EAAI;QACZtG,OAAO,CAACuG,KAAR,CAAcD,GAAd;;QACA,MAAKE,SAAL,CAAeF,GAAf;MACH;IApFS,GAAd;IAlGyB;EAwL5B;;;;;IAkBD;AACJ;AACA;IACI,6BAAoB;MAChBvJ,MAAM,CAAC0J,gBAAP,CAAwB,QAAxB,EAAkC,KAAKC,QAAvC,EAAiD,IAAjD;MACA3J,MAAM,CAAC0J,gBAAP,CAAwB,SAAxB,EAAmC,KAAKE,gBAAxC,EAA0D,KAA1D;MACA;IACH;IAED;AACJ;AACA;;;;WACI,gCAAuB;MACnB5J,MAAM,CAAC6J,mBAAP,CAA2B,QAA3B,EAAqC,KAAKF,QAA1C,EAAoD,IAApD;MACA3J,MAAM,CAAC6J,mBAAP,CAA2B,SAA3B,EAAsC,KAAKD,gBAA3C,EAA6D,KAA7D;MACA;IACH;;;;IA8DD;AACJ;AACA;AACA;AACA;IACI,uBAAuB;MAAA,IAAXlD,IAAW,uEAAJ,EAAI;MACnB,OAAO,IAAAjE,iBAAA,EAAMH,iBAAA,CAAMC,YAAN,CAAmBmE,IAAnB,CAAN,CAAP;IACH;IAED;AACJ;AACA;AACA;AACA;;;;WACI,sBAAajE,KAAb,EAAoB;MAChB,OAAOA,KAAK,CAACiE,IAAb;IACH;IAED;AACJ;AACA;AACA;AACA;;;;WACI,sBAAajE,KAAb,EAAoB;MAChB,OAAOA,KAAK,CAACqH,OAAN,CAAcC,IAArB;IACH;IAED;AACJ;AACA;;;;WACI,uBAAc;MAAA;;MACV,IAAMpH,SAAS,GAAG,KAAK0C,KAAL,CAAW1C,SAA7B,CADU,CAGV;;MACA,IAAMN,YAAY,GAAGM,SAAS,KAAK,MAAd,GAAuB,MAAvB,GAChBA,SAAS,KAAK,MAAd,GAAuB,SAAvB,GACIA,SAAS,KAAK,SAAd,GAA0B,OAA1B,GAAoC,MAF7C;;MAIAL,iBAAA,CAAME,YAAN,CAAmBH,YAAnB;;MAEA,IAAMI,KAAK,GAAG,KAAKC,WAAL,CAAiBL,YAAjB,CAAd;MAEA,KAAKJ,QAAL,CAAc;QACVQ,KAAK,EAALA,KADU;QAEVE,SAAS,EAAE,KAAKJ,YAAL,CAAkBE,KAAlB,CAFD;QAGVG,SAAS,EAAE,KAAKC,YAAL,CAAkBJ,KAAlB;MAHD,CAAd,EAIG,YAAM;QACL,MAAI,CAACpC,KAAL,CAAWyC,aAAX,IAA4B,MAAI,CAACzC,KAAL,CAAWyC,aAAX,CAAyBT,YAAzB,CAA5B;QACA,MAAI,CAACU,cAAL,IAAuB,MAAI,CAACA,cAAL,CAAoBV,YAApB,CAAvB;MACH,CAPD;IAQH;IAED;AACJ;AACA;AACA;;;;WACI,2BAAkB;MACd,OAAO,KAAKZ,MAAL,CAAY8F,eAAZ,EAAP;IACH;IAED;AACJ;AACA;AACA;;;;WACI,yBAAgB;MACZ,OAAOvH,MAAM,CAACgK,cAAP,CAAsB9J,OAAtB,CAA8B,gBAA9B,MAAoD,MAApD,IAA8D,CAAC,CAAC,KAAK6B,aAAL,CAAmBC,UAA1F;IACH;IAED;AACJ;AACA;AACA;;;;WACI,6BAAoB,CACnB;IAED;AACJ;AACA;AACA;AACA;;;;WACI,iBAAQiI,KAAR,EAAe;MACX,IAAIC,MAAM,GAAG,EAAb;;MACA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGF,KAAK,CAAC3F,MAA1B,EAAkC6F,CAAC,EAAnC,EAAuC;QACnCD,MAAM,IAAIE,MAAM,CAACC,YAAP,CAAoB,KAAK7C,OAAL,CAAa2C,CAAC,GAAG,KAAK3C,OAAL,CAAalD,MAA9B,EAAsCgG,UAAtC,CAAiD,CAAjD,IAAsDL,KAAK,CAACK,UAAN,CAAiBH,CAAjB,CAA1E,CAAV;MACH;;MACD,OAAOD,MAAP;IACH;IAED;AACJ;AACA;AACA;AACA;;;;WACI,iBAAQD,KAAR,EAAe;MACX,IAAIC,MAAM,GAAG,EAAb;;MACA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGF,KAAK,CAAC3F,MAA1B,EAAkC6F,CAAC,EAAnC,EAAuC;QACnCD,MAAM,IAAIE,MAAM,CAACC,YAAP,CAAoB,KAAK7C,OAAL,CAAa2C,CAAC,GAAG,KAAK3C,OAAL,CAAalD,MAA9B,EAAsCgG,UAAtC,CAAiD,CAAjD,IAAsDL,KAAK,CAACK,UAAN,CAAiBH,CAAjB,CAA1E,CAAV;MACH;;MACD,OAAOD,MAAP;IACH;IAED;AACJ;AACA;AACA;;;;WACI,yBAAgB;MACZ,IAAM/I,QAAQ,GAAG6D,mBAAA,CAAOC,WAAP,EAAjB;;MACA,IAAI9D,QAAQ,CAAC+D,GAAT,KAAiB,KAAKG,KAAL,CAAWC,WAAhC,EAA6C;QACzC,KAAKiF,SAAL,CAAepJ,QAAQ,CAAC+D,GAAxB;MACH;IACJ;IAED;AACJ;AACA;AACA;AACA;;;;WACI,mBAAUA,GAAV,EAAesF,KAAf,EAAsB;MAClB,CAACxK,MAAM,CAACmF,aAAP,IAAwBnF,MAAM,CAACC,YAAhC,EAA8CE,OAA9C,CAAsD,KAAK0E,WAAL,GAAmB,UAAzE,EAAqFK,GAArF;MACA,KAAKjD,QAAL,CAAc;QAAEqD,WAAW,EAAEJ,GAAf;QAAoBK,cAAc,EAAEiF;MAApC,CAAd;IACH;IAED;AACJ;AACA;AACA;AACA;;;;WACI,uBAAclK,QAAd,EAAwB;MAAA;;MACpB;MACA,KAAKkG,eAAL,IAAwB,KAAKA,eAAL,CAAqBrC,OAArB,CAA6B,UAAAsG,IAAI,EAAI;QACzD,IAAInK,QAAQ,CAACmK,IAAD,CAAZ,EAAoB;UAChBnK,QAAQ,CAACmK,IAAD,CAAR,GAAiB,MAAI,CAACC,OAAL,CAAapK,QAAQ,CAACmK,IAAD,CAArB,CAAjB;QACH;MACJ,CAJuB,CAAxB;MAMA,OAAO,IAAP;IACH;IAED;AACJ;AACA;AACA;AACA;AACA;;;;WACI,uBAAcnK,QAAd,EAAwB6I,eAAxB,EAAyC;MAAA;;MACrC;MACA,KAAK3C,eAAL,IAAwB,KAAKA,eAAL,CAAqBrC,OAArB,CAA6B,UAAAsG,IAAI,EAAI;QACzD,IAAInK,QAAQ,CAACmK,IAAD,CAAZ,EAAoB;UAChBnK,QAAQ,CAACmK,IAAD,CAAR,GAAiB,MAAI,CAACE,OAAL,CAAarK,QAAQ,CAACmK,IAAD,CAArB,CAAjB;QACH;MACJ,CAJuB,CAAxB;MAKAtB,eAAe,IAAIA,eAAe,CAAChF,OAAhB,CAAwB,UAAAsG,IAAI,EAAI;QAC/C,MAAI,CAACjE,eAAL,GAAuB,MAAI,CAACA,eAAL,IAAwB,EAA/C;QACA,CAAC,MAAI,CAACA,eAAL,CAAqBoE,QAArB,CAA8BH,IAA9B,CAAD,IAAwC,MAAI,CAACjE,eAAL,CAAqBqE,IAArB,CAA0BJ,IAA1B,CAAxC;;QACA,IAAInK,QAAQ,CAACmK,IAAD,CAAZ,EAAoB;UAChBnK,QAAQ,CAACmK,IAAD,CAAR,GAAiB,MAAI,CAACE,OAAL,CAAarK,QAAQ,CAACmK,IAAD,CAArB,CAAjB;QACH;MACJ,CANkB,CAAnB;IAOH;IAED;AACJ;AACA;AACA;;;;WACI,kCAAyB;MAAA;;MACrB,OAAO,IAAIzB,OAAJ,CAAY,UAAAC,OAAO,EAAI;QAC1B,MAAI,CAACxH,MAAL,CAAYqJ,OAAZ,CAAoBC,IAApB,CAAyB,eAAzB,EAA0C,QAA1C,EAAoD,UAApD,EAAgE,IAAhE,EAAsE,UAACxB,GAAD,EAAMyB,GAAN,EAAc;UAChF,IAAIzB,GAAJ,EAAS;YACLN,OAAO,CAAC,EAAD,CAAP;UACH,CAFD,MAEO;YACHA,OAAO,CAAC+B,GAAG,CAACC,IAAJ,CACHhH,MADG,CACI,UAAAiH,IAAI;cAAA,OAAIA,IAAI,CAACjB,KAAL,CAAWtI,MAAX,CAAkBwJ,aAAtB;YAAA,CADR,EAEHC,GAFG,CAEC,UAAAF,IAAI;cAAA,OAAIA,IAAI,CAACjB,KAAT;YAAA,CAFL,CAAD,CAAP;UAIH;QACJ,CATD;MAUH,CAXM,CAAP;IAYH;IAED;AACJ;AACA;AACA;;;;WACI,wBAAehC,IAAf,EAAqB;MAAA;;MACjB,OAAO,IAAIe,OAAJ,CAAY,UAACC,OAAD,EAAUoC,MAAV,EAAqB;QACpC,MAAI,CAAC5J,MAAL,CAAYqJ,OAAZ,CAAoBC,IAApB,CAAyB,aAAzB,EAAwC9C,IAAI,IAAI,MAAI,CAACtG,MAAL,CAAYsG,IAA5D,EAAkE,UAACqD,EAAD,EAAKC,KAAL,EAAe;UAC7E,IAAMC,IAAI,GAAG,CAAC;YAAE9E,IAAI,6BAAsB7E,gBAAA,CAAKqC,CAAL,CAAO,sBAAP,CAAtB,CAAN;YAA8DuH,OAAO,EAAE,SAAvE;YAAkFC,MAAM,EAAE;UAA1F,CAAD,CAAb;UACA,IAAMC,IAAI,GAAG,CAAC;YAAEjF,IAAI,EAAE,WAAR;YAAqB+E,OAAO,EAAE,IAA9B;YAAoCC,MAAM,EAAE;UAA5C,CAAD,CAAb;;UACA,IAAIH,KAAJ,EAAW;YACPtD,IAAI,GAAGsD,KAAP;;YACA,IAAItD,IAAI,UAAJ,CAAY2D,QAAZ,IAAwB3D,IAAI,UAAJ,CAAY2D,QAAZ,CAAqBC,iBAAjD,EAAoE;cAChE3F,MAAM,CAACC,IAAP,CAAY8B,IAAI,UAAJ,CAAY2D,QAAZ,CAAqBC,iBAAjC,EAAoD1H,OAApD,CAA4D,UAAA2H,GAAG;gBAAA,OAC3D7D,IAAI,UAAJ,CAAY2D,QAAZ,CAAqBC,iBAArB,CAAuCC,GAAvC,EAA4C3H,OAA5C,CAAoD,UAAA4H,KAAK,EAAI;kBACzD,IAAIA,KAAK,CAACL,MAAN,KAAiB,MAArB,EAA6B;oBACzBF,IAAI,CAACX,IAAL,CAAU;sBAAEnE,IAAI,aAAMqF,KAAK,CAACL,MAAZ,eAAuBK,KAAK,CAACN,OAA7B,gBAA0CK,GAA1C,CAAN;sBAAuDL,OAAO,EAAEM,KAAK,CAACN,OAAtE;sBAA+EC,MAAM,EAAE;oBAAvF,CAAV;kBACH,CAFD,MAEO;oBACHC,IAAI,CAACd,IAAL,CAAU;sBAAEnE,IAAI,aAAMqF,KAAK,CAACL,MAAZ,eAAuBK,KAAK,CAACN,OAA7B,gBAA0CK,GAA1C,CAAN;sBAAuDL,OAAO,EAAEM,KAAK,CAACN,OAAtE;sBAA+EC,MAAM,EAAE;oBAAvF,CAAV;kBACH;gBACJ,CAND,CAD2D;cAAA,CAA/D;YAQH;;YACDC,IAAI,CAACxH,OAAL,CAAa,UAAAmH,EAAE;cAAA,OAAIE,IAAI,CAACX,IAAL,CAAUS,EAAV,CAAJ;YAAA,CAAf;UACH;;UACDrC,OAAO,CAACuC,IAAD,CAAP;QACH,CAlBD;MAmBH,CApBM,CAAP;IAqBH;IAED;AACJ;AACA;AACA;;;;WACI,gBAAOQ,OAAP,EAAgB;MAAA;;MACZ,IAAIC,MAAJ;;MACA,IAAI,KAAK5G,KAAL,CAAWO,oBAAf,EAAqC;QACjC,KAAK3D,QAAL,CAAc;UAAEuD,SAAS,EAAE,KAAKH,KAAL,CAAWO;QAAxB,CAAd;QACA;MACH;;MAED,KAAKnE,MAAL,CAAYiG,SAAZ,CAAsB,KAAK5C,UAA3B,EACKwC,IADL,CACU,UAAA4E,OAAO,EAAI;QACbD,MAAM,GAAGC,OAAO,IAAI,EAApB;;QAEA,KAAK,IAAMC,CAAX,IAAgB,MAAI,CAAC9G,KAAL,UAAhB,EAAmC;UAC/B,IAAI,MAAI,CAACA,KAAL,WAAkB+G,cAAlB,CAAiCD,CAAjC,CAAJ,EAAyC;YACrC,IAAI,MAAI,CAAC9G,KAAL,WAAkB8G,CAAlB,MAAyB,IAA7B,EAAmC;cAC/BF,MAAM,UAAN,CAAcE,CAAd,IAAmB,IAAnB;YACH,CAFD,MAGA,IAAI,MAAI,CAAC9G,KAAL,WAAkB8G,CAAlB,MAAyB3H,SAA7B,EAAwC;cACpCyH,MAAM,UAAN,CAAcE,CAAd,IAAmBhJ,IAAI,CAACiG,KAAL,CAAWjG,IAAI,CAACC,SAAL,CAAe,MAAI,CAACiC,KAAL,WAAkB8G,CAAlB,CAAf,CAAX,CAAnB;YACH,CAFD,MAEO;cACH,OAAOF,MAAM,UAAN,CAAcE,CAAd,CAAP;YACH;UACJ;QACJ;;QAED,IAAI,MAAI,CAAC9G,KAAL,CAAW1D,MAAf,EAAuB;UACnB,KAAK,IAAMyC,CAAX,IAAgB,MAAI,CAACiB,KAAL,CAAW1D,MAA3B,EAAmC;YAC/B,IAAI,MAAI,CAAC0D,KAAL,CAAW1D,MAAX,CAAkByC,CAAlB,MAAyB,IAA7B,EAAmC;cAC/B6H,MAAM,CAACtK,MAAP,CAAcyC,CAAd,IAAmB,IAAnB;YACH,CAFD,MAGA,IAAI,MAAI,CAACiB,KAAL,CAAW1D,MAAX,CAAkByC,CAAlB,MAAyBI,SAA7B,EAAwC;cACpCyH,MAAM,CAACtK,MAAP,CAAcyC,CAAd,IAAmBjB,IAAI,CAACiG,KAAL,CAAWjG,IAAI,CAACC,SAAL,CAAe,MAAI,CAACiC,KAAL,CAAW1D,MAAX,CAAkByC,CAAlB,CAAf,CAAX,CAAnB;YACH,CAFD,MAEO;cACH,OAAO6H,MAAM,CAACtK,MAAP,CAAcyC,CAAd,CAAP;YACH;UACJ;QACJ;;QAED,IAAI,MAAI,CAACiI,aAAL,CAAmBJ,MAAM,UAAzB,MAAsC,KAA1C,EAAiD;UAC7C,OAAO,MAAI,CAACxK,MAAL,CAAY6K,SAAZ,CAAsB,MAAI,CAACxH,UAA3B,EAAuCmH,MAAvC,CAAP;QACH,CAFD,MAEO;UACH,OAAOjD,OAAO,CAACqC,MAAR,CAAe,uBAAf,CAAP;QACH;MACJ,CAnCL,EAoCK/D,IApCL,CAoCU,YAAM;QACR,MAAI,CAACf,WAAL,GAAmB0F,MAAM,UAAzB;QACAM,UAAU,CAAC9G,OAAX,GAAqB,KAArB;;QACA,IAAI;UACAzF,MAAM,CAACwM,MAAP,CAAcC,WAAd,CAA0B,UAA1B,EAAsC,GAAtC;QACH,CAFD,CAEE,OAAOnL,CAAP,EAAU,CACR;QACH;;QAED,MAAI,CAACW,QAAL,CAAc;UAAEwD,OAAO,EAAE;QAAX,CAAd;;QACAuG,OAAO,IAAI5L,UAAU,CAACsM,OAAX,EAAX;MACH,CA/CL,WAgDW,UAAApL,CAAC,EAAI;QACR2B,OAAO,CAACuG,KAAR,sCAA4ClI,CAA5C;MACH,CAlDL;IAmDH;IAED;AACJ;AACA;AACA;;;;WACI,uBAAc;MAAA;;MACV,IAAI,CAAC,KAAK+D,KAAL,CAAWQ,KAAhB,EAAuB;QACnB,OAAO,IAAP;MACH;;MAED,oBAAO,gCAAC,oBAAD;QACH,YAAY,EAAE;UACV8G,QAAQ,EAAE,QADA;UAEVC,UAAU,EAAE;QAFF,CADX;QAKH,IAAI,EAAE,IALH;QAMH,gBAAgB,EAAE,IANf;QAOH,OAAO,EAAE;UAAA,OAAM,MAAI,CAAC3K,QAAL,CAAc;YAAE4D,KAAK,EAAE;UAAT,CAAd,CAAN;QAAA,CAPN;QAQH,YAAY,EAAE;UAAE,oBAAoB;QAAtB,CARX;QASH,OAAO,eAAE;UAAM,EAAE,EAAC;QAAT,GAAuB,KAAKR,KAAL,CAAWQ,KAAlC,CATN;QAUH,MAAM,EAAE,cACJ,gCAAC,sBAAD;UACI,GAAG,EAAC,OADR;UAEI,cAAW,OAFf;UAGI,KAAK,EAAC,SAHV;UAII,SAAS,EAAE,KAAKxF,KAAL,CAAWwM,OAAX,CAAmBC,KAJlC;UAKI,OAAO,EAAE;YAAA,OAAM,MAAI,CAAC7K,QAAL,CAAc;cAAE4D,KAAK,EAAE;YAAT,CAAd,CAAN;UAAA,CALb;UAMI,IAAI,EAAC;QANT,gBAOI,gCAAC,iBAAD,OAPJ,CADI;MAVL,EAAP;IAsBH;IAED;AACJ;AACA;AACA;;;;;IAeI;AACJ;AACA;AACA;IACI,uBAAc;MAAA;;MACV,IAAI,CAAC,KAAKR,KAAL,CAAWG,SAAhB,EAA2B;QACvB,OAAO,IAAP;MACH,CAFD,MAEO;QACH,oBAAO,gCAAC,iBAAD;UAAa,IAAI,EAAE,KAAKH,KAAL,CAAWG,SAA9B;UAAyC,OAAO,EAAE;YAAA,OAAM,MAAI,CAACvD,QAAL,CAAc;cAAEuD,SAAS,EAAE;YAAb,CAAd,CAAN;UAAA;QAAlD,EAAP;MACH;IACJ;IAED;AACJ;AACA;AACA;;;;WACI,sBAAauH,OAAb,EAAqB;MACjBA,OAAM,GAAGA,OAAM,IAAI,KAAK1H,KAAL,UAAnB;MACA,IAAM2H,SAAS,GAAI7J,IAAI,CAACC,SAAL,CAAe2J,OAAf,MAA2B5J,IAAI,CAACC,SAAL,CAAe,KAAKmD,WAApB,CAA9C;MAEAgG,UAAU,CAAC9G,OAAX,GAAqBuH,SAArB;MAEA,OAAOA,SAAP;IACH;IAED;AACJ;AACA;AACA;;;;WACI,sBAAaC,SAAb,EAAwB;MACpB,IAAI9J,IAAI,CAACC,SAAL,CAAe6J,SAAf,MAA8B9J,IAAI,CAACC,SAAL,CAAe,KAAKiC,KAAL,UAAf,CAAlC,EAAqE;QACjE,KAAKpD,QAAL,CAAc;UAAE,UAAQgL,SAAV;UAAqBxH,OAAO,EAAE,KAAKyH,YAAL,CAAkBD,SAAlB;QAA9B,CAAd;MACH;IACJ;IAED;AACJ;AACA;AACA;;;;WACI,+BAAsBzH,SAAtB,EAAiC;MAC7B,IAAI,KAAKH,KAAL,CAAWO,oBAAX,KAAoCJ,SAAxC,EAAmD;QAC/C,KAAKvD,QAAL,CAAc;UAAE2D,oBAAoB,EAAEJ;QAAxB,CAAd;MACH;IACJ;IAED;AACJ;AACA;AACA;;;;WACI,kCAAyB;MAAA;;MACrB,IAAI,CAAC,KAAKH,KAAL,CAAWU,YAAZ,IAA4B,CAAC,KAAKV,KAAL,CAAWS,aAA5C,EAA2D;QACvD,OAAO,IAAP;MACH;;MAED,oBAAO,kEACF,KAAKT,KAAL,CAAWS,aAAX,gBAA2B,gCAAC,4BAAD;QACxB,KAAK,EAAE,KAAKT,KAAL,CAAW5C,KADM;QAExB,QAAQ,EAAE,KAAKsC,QAFS;QAGxB,eAAe,EAAE,KAAKM,KAAL,CAAW7B,KAAX,KAAqB,IAArB,IAA6B,KAAK6B,KAAL,CAAW7B,KAAX,KAAqB,IAAlD,IAA0D,KAAK6B,KAAL,CAAW7B,KAAX,KAAqB,IAHxE;QAIxB,OAAO,EAAE,KAAK6B,KAAL,CAAWI,OAJI;QAKxB,MAAM,EAAE,gBAAAuG,OAAO;UAAA,OAAI,OAAI,CAACmB,MAAL,CAAYnB,OAAZ,CAAJ;QAAA,CALS;QAMxB,OAAO,EAAE,mBAAM;UACX,IAAI,OAAI,CAAC3G,KAAL,CAAWI,OAAf,EAAwB;YACpB,OAAI,CAACxD,QAAL,CAAc;cAAE8D,YAAY,EAAE;YAAhB,CAAd;UACH,CAFD,MAEO;YACH3F,UAAU,CAACsM,OAAX;UACH;QACJ;MAZuB,EAA3B,GAaI,IAdF,EAeF,KAAKrH,KAAL,CAAWU,YAAX,gBAA0B,gCAAC,mBAAD;QACvB,KAAK,EAAElE,gBAAA,CAAKqC,CAAL,CAAO,mBAAP,CADgB;QAEvB,IAAI,EAAErC,gBAAA,CAAKqC,CAAL,CAAO,uCAAP,CAFiB;QAGvB,EAAE,EAAErC,gBAAA,CAAKqC,CAAL,CAAO,YAAP,CAHmB;QAIvB,MAAM,EAAErC,gBAAA,CAAKqC,CAAL,CAAO,WAAP,CAJe;QAKvB,OAAO,EAAE,iBAAAkJ,KAAK;UAAA,OACV,OAAI,CAACnL,QAAL,CAAc;YAAE8D,YAAY,EAAE;UAAhB,CAAd,EAAuC;YAAA,OACnCqH,KAAK,IAAIhN,UAAU,CAACsM,OAAX,EAD0B;UAAA,CAAvC,CADU;QAAA;MALS,EAA1B,GAQI,IAvBF,CAAP;IAyBH;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;;;;WACI,4BAAmBlL,GAAnB,EAAwB6L,KAAxB,EAA+BpD,KAA/B,EAAsC;MAClC,IAAI,yBAAOoD,KAAP,MAAiB,QAArB,EAA+B;QAC3BA,KAAK,GAAGA,KAAK,CAACrJ,KAAN,CAAY,GAAZ,CAAR;MACH;;MACD,IAAMyG,IAAI,GAAG4C,KAAK,CAACC,KAAN,EAAb;;MACA,IAAI,CAACD,KAAK,CAAC/I,MAAX,EAAmB;QACf,IAAI2F,KAAK,IAAI,yBAAOA,KAAP,MAAiB,QAA9B,EAAwC;UACpC,IAAI9G,IAAI,CAACC,SAAL,CAAe5B,GAAG,CAACiJ,IAAD,CAAlB,MAA8BtH,IAAI,CAACC,SAAL,CAAe6G,KAAf,CAAlC,EAAyD;YACrDzI,GAAG,CAACiJ,IAAD,CAAH,GAAYR,KAAZ;YACA,OAAO,IAAP;UACH;QACJ,CALD,MAKO,IAAIzI,GAAG,CAACiJ,IAAD,CAAH,KAAcR,KAAlB,EAAyB;UAC5BzI,GAAG,CAACiJ,IAAD,CAAH,GAAYR,KAAZ;UACA,OAAO,IAAP;QACH,CAHM,MAGA;UACH,OAAO,KAAP;QACH;MAEJ,CAbD,MAaO;QACHzI,GAAG,CAACiJ,IAAD,CAAH,GAAYjJ,GAAG,CAACiJ,IAAD,CAAH,IAAa,EAAzB;;QACA,IAAI,yBAAOjJ,GAAG,CAACiJ,IAAD,CAAV,MAAqB,QAAzB,EAAmC;UAC/B,MAAM,IAAI8C,KAAJ,qBAAuB9C,IAAvB,yDAAwDjJ,GAAG,CAACiJ,IAAD,CAA3D,GAAN;QACH;;QACD,OAAO,KAAK+C,kBAAL,CAAwBhM,GAAG,CAACiJ,IAAD,CAA3B,EAAmC4C,KAAnC,EAA0CpD,KAA1C,CAAP;MACH;IACJ;IAED;AACJ;AACA;AACA;AACA;AACA;;;;WACI,2BAAkBQ,IAAlB,EAAwBR,KAAxB,EAA+BwD,EAA/B,EAAmC;MAC/B,IAAMV,QAAM,GAAG5J,IAAI,CAACiG,KAAL,CAAWjG,IAAI,CAACC,SAAL,CAAe,KAAKiC,KAAL,UAAf,CAAX,CAAf;;MACA,IAAI,KAAKmI,kBAAL,CAAwBT,QAAxB,EAAgCtC,IAAhC,EAAsCR,KAAtC,CAAJ,EAAkD;QAC9C,IAAMxE,OAAO,GAAG,KAAKyH,YAAL,CAAkBH,QAAlB,CAAhB;;QAEA,IAAItH,OAAO,KAAK,KAAKJ,KAAL,CAAWI,OAA3B,EAAoC;UAChC,IAAI;YACAzF,MAAM,CAACwM,MAAP,CAAcC,WAAd,CAA0BhH,OAAO,GAAG,QAAH,GAAc,UAA/C,EAA2D,GAA3D;UACH,CAFD,CAEE,OAAOnE,CAAP,EAAU,CACR;UACH;QACJ;;QAED,KAAKW,QAAL,CAAc;UAAE,UAAA8K,QAAF;UAAUtH,OAAO,EAAPA;QAAV,CAAd,EAAmCgI,EAAnC;MACH;IACJ;IAED;AACJ;AACA;AACA;;;;WACI,mBAAUC,IAAV,EAAgB;MACZ,KAAKzL,QAAL,CAAc;QAAEuD,SAAS,EAAEkI;MAAb,CAAd;IACH;IAED;AACJ;AACA;AACA;;;;WACI,mBAAU7H,KAAV,EAAiB;MACb,KAAK5D,QAAL,CAAc;QAAE4D,KAAK,EAALA;MAAF,CAAd;IACH;IAED;AACJ;AACA;AACA;;;;WACI,kBAAS;MACL,IAAI,CAAC,KAAKR,KAAL,CAAWM,MAAhB,EAAwB;QACpB,oBAAO,gCAAC,kBAAD;UAAQ,KAAK,EAAE,KAAKN,KAAL,CAAWzC;QAA1B,EAAP;MACH;;MAED,oBAAO;QAAK,SAAS,EAAC;MAAf,GACF,KAAK+K,WAAL,EADE,EAEF,KAAKC,WAAL,EAFE,EAGF,KAAKC,sBAAL,EAHE,CAAP;IAKH;;;;IAngBD;AACJ;AACA;AACA;IACI,oBAAkB;MACd;AACR;AACA;AACA;AACA;MAEQ,IAAMC,KAAK,GAAG;QACVC,EAAE,EAAE,CADM;QAEVC,EAAE,EAAE,GAFM;QAGVC,EAAE,EAAE,GAHM;QAIVC,EAAE,EAAE,IAJM;QAKVC,EAAE,EAAE;MALM,CAAd;MAOA,IAAM3K,KAAK,GAAGxD,MAAM,CAACoO,UAArB;MACA,IAAMjI,IAAI,GAAGD,MAAM,CAACC,IAAP,CAAY2H,KAAZ,EAAmBO,OAAnB,EAAb;MACA,IAAMC,aAAa,GAAGnI,IAAI,CAACoI,IAAL,CAAU,UAAAC,GAAG;QAAA,OAAIhL,KAAK,IAAIsK,KAAK,CAACU,GAAD,CAAlB;MAAA,CAAb,CAAtB;MAEA,OAAOF,aAAa,IAAI,IAAxB;IACH;;;WAsTD,mBAAiB;MACb,IAAI,OAAOtO,MAAM,CAACwM,MAAd,KAAyB,WAAzB,IAAwCxM,MAAM,CAACwM,MAAnD,EAA2D;QACvD,IAAI;UACA,IAAIxM,MAAM,CAACwM,MAAP,CAAciC,aAAd,IAA+B,OAAOzO,MAAM,CAACwM,MAAP,CAAciC,aAAd,CAA4B3B,KAAnC,KAA6C,UAAhF,EAA4F;YACxF9M,MAAM,CAACwM,MAAP,CAAciC,aAAd,CAA4B3B,KAA5B;UACH,CAFD,MAEO;YACH9M,MAAM,CAACwM,MAAP,CAAcC,WAAd,CAA0B,OAA1B,EAAmC,GAAnC;UACH;QACJ,CAND,CAME,OAAOnL,CAAP,EAAU;UACRtB,MAAM,CAACwM,MAAP,CAAcC,WAAd,CAA0B,OAA1B,EAAmC,GAAnC;QACH;MACJ;IACJ;;;EA7lBoBzH,mB;;AA0wBzB5E,UAAU,CAACsO,SAAX,GAAuB;EACnB7J,WAAW,EAAE8J,qBAAA,CAAUC,MADJ;EACY;EAC/B9L,aAAa,EAAE6L,qBAAA,CAAUE,IAFN;EAEY;EAC/BpN,MAAM,EAAEkN,qBAAA,CAAUG,MAHC;EAGO;EAC1BtI,eAAe,EAAEmI,qBAAA,CAAUI,KAJR;EAIe;EAClCjJ,aAAa,EAAE6I,qBAAA,CAAUK,IALN;EAKY;EAC/BxO,UAAU,EAAEmO,qBAAA,CAAUG,MANH,CAMW;;AANX,CAAvB;eASe1O,U"}
|
package/README.md
CHANGED
|
@@ -642,6 +642,9 @@ 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.33 (2022-08-24)
|
|
646
|
+
* (bluefox) Added support for onchange flag
|
|
647
|
+
|
|
645
648
|
### 3.1.30 (2022-08-23)
|
|
646
649
|
* (bluefox) Added method `getCompactSystemRepositories`
|
|
647
650
|
* (bluefox) corrected error in `ObjectBrowser`
|
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