@iobroker/adapter-react-v5 2.1.7 → 2.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Components/404.js +17 -25
- package/Components/404.js.map +1 -1
- package/Components/ColorPicker.js +25 -35
- package/Components/ColorPicker.js.map +1 -1
- package/Components/ComplexCron.js +29 -37
- package/Components/ComplexCron.js.map +1 -1
- package/Components/FileBrowser.js +40 -61
- package/Components/FileBrowser.js.map +1 -1
- package/Components/FileViewer.js +18 -28
- package/Components/FileViewer.js.map +1 -1
- package/Components/Icon.js +15 -25
- package/Components/Icon.js.map +1 -1
- package/Components/IconPicker.js +6 -6
- package/Components/IconPicker.js.map +1 -1
- package/Components/IconSelector.js +25 -31
- package/Components/IconSelector.js.map +1 -1
- package/Components/Image.js +15 -25
- package/Components/Image.js.map +1 -1
- package/Components/Loader.js +14 -24
- package/Components/Loader.js.map +1 -1
- package/Components/Loaders/PT.js +13 -23
- package/Components/Loaders/PT.js.map +1 -1
- package/Components/Loaders/Vendor.js +14 -24
- package/Components/Loaders/Vendor.js.map +1 -1
- package/Components/Logo.js +15 -25
- package/Components/Logo.js.map +1 -1
- package/Components/MDUtils.js +14 -11
- package/Components/MDUtils.js.map +1 -1
- package/Components/ObjectBrowser.js +110 -175
- package/Components/ObjectBrowser.js.map +1 -1
- package/Components/Router.js +13 -21
- package/Components/Router.js.map +1 -1
- package/Components/SaveCloseButtons.js +15 -25
- package/Components/SaveCloseButtons.js.map +1 -1
- package/Components/Schedule.js +23 -37
- package/Components/Schedule.js.map +1 -1
- package/Components/SelectWithIcon.js +17 -25
- package/Components/SelectWithIcon.js.map +1 -1
- package/Components/SimpleCron/cronText.js +2 -2
- package/Components/SimpleCron/cronText.js.map +1 -1
- package/Components/SimpleCron/index.js +24 -34
- package/Components/SimpleCron/index.js.map +1 -1
- package/Components/TabContainer.js +18 -28
- package/Components/TabContainer.js.map +1 -1
- package/Components/TabContent.js +17 -27
- package/Components/TabContent.js.map +1 -1
- package/Components/TabHeader.js +13 -23
- package/Components/TabHeader.js.map +1 -1
- package/Components/TextWithIcon.js +5 -5
- package/Components/TextWithIcon.js.map +1 -1
- package/Components/ToggleThemeMenu.js +2 -2
- package/Components/ToggleThemeMenu.js.map +1 -1
- package/Components/TreeTable.js +21 -42
- package/Components/TreeTable.js.map +1 -1
- package/Components/Utils.js +31 -42
- package/Components/Utils.js.map +1 -1
- package/Connection.js +15 -22
- package/Connection.js.map +1 -1
- package/Dialogs/ComplexCron.js +15 -25
- package/Dialogs/ComplexCron.js.map +1 -1
- package/Dialogs/Confirm.js +15 -25
- package/Dialogs/Confirm.js.map +1 -1
- package/Dialogs/Cron.js +19 -27
- package/Dialogs/Cron.js.map +1 -1
- package/Dialogs/Error.js +15 -25
- package/Dialogs/Error.js.map +1 -1
- package/Dialogs/Message.js +15 -25
- package/Dialogs/Message.js.map +1 -1
- package/Dialogs/SelectID.js +19 -27
- package/Dialogs/SelectID.js.map +1 -1
- package/Dialogs/SimpleCron.js +15 -25
- package/Dialogs/SimpleCron.js.map +1 -1
- package/Dialogs/TextInput.js +18 -28
- package/Dialogs/TextInput.js.map +1 -1
- package/GenericApp.js +37 -49
- package/GenericApp.js.map +1 -1
- package/README.md +4 -0
- package/Theme.js +2 -2
- package/Theme.js.map +1 -1
- package/i18n.js +10 -14
- package/i18n.js.map +1 -1
- package/icons/IconAdapter.js +2 -2
- package/icons/IconAdapter.js.map +1 -1
- package/icons/IconAlias.js +2 -2
- package/icons/IconAlias.js.map +1 -1
- package/icons/IconChannel.js +2 -2
- package/icons/IconChannel.js.map +1 -1
- package/icons/IconClearFilter.js +2 -2
- package/icons/IconClearFilter.js.map +1 -1
- package/icons/IconClosed.js +2 -2
- package/icons/IconClosed.js.map +1 -1
- package/icons/IconCopy.js +2 -2
- package/icons/IconCopy.js.map +1 -1
- package/icons/IconDevice.js +2 -2
- package/icons/IconDevice.js.map +1 -1
- package/icons/IconDocument.js +2 -2
- package/icons/IconDocument.js.map +1 -1
- package/icons/IconExpert.js +2 -2
- package/icons/IconExpert.js.map +1 -1
- package/icons/IconFx.js +2 -2
- package/icons/IconFx.js.map +1 -1
- package/icons/IconInstance.js +2 -2
- package/icons/IconInstance.js.map +1 -1
- package/icons/IconLogout.js +2 -2
- package/icons/IconLogout.js.map +1 -1
- package/icons/IconOpen.js +2 -2
- package/icons/IconOpen.js.map +1 -1
- package/icons/IconState.js +6 -6
- package/icons/IconState.js.map +1 -1
- package/package.json +9 -9
package/GenericApp.js
CHANGED
|
@@ -1,10 +1,32 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _typeof3 = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
3
7
|
Object.defineProperty(exports, "__esModule", {
|
|
4
8
|
value: true
|
|
5
9
|
});
|
|
6
10
|
exports["default"] = void 0;
|
|
7
11
|
|
|
12
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
13
|
+
|
|
14
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
|
+
|
|
16
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
17
|
+
|
|
18
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
19
|
+
|
|
20
|
+
var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
|
21
|
+
|
|
22
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
23
|
+
|
|
24
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
25
|
+
|
|
26
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
27
|
+
|
|
28
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
29
|
+
|
|
8
30
|
var _react = _interopRequireDefault(require("react"));
|
|
9
31
|
|
|
10
32
|
var _Connection = _interopRequireWildcard(require("./Connection"));
|
|
@@ -41,42 +63,16 @@ require("./index.css");
|
|
|
41
63
|
|
|
42
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); }
|
|
43
65
|
|
|
44
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null ||
|
|
45
|
-
|
|
46
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
47
|
-
|
|
48
|
-
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
66
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
49
67
|
|
|
50
68
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
51
69
|
|
|
52
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
|
|
53
|
-
|
|
54
|
-
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
55
|
-
|
|
56
|
-
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
57
|
-
|
|
58
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
70
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
59
71
|
|
|
60
|
-
function
|
|
61
|
-
|
|
62
|
-
function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
|
|
63
|
-
|
|
64
|
-
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
65
|
-
|
|
66
|
-
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
67
|
-
|
|
68
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
69
|
-
|
|
70
|
-
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
|
|
71
|
-
|
|
72
|
-
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
72
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
73
73
|
|
|
74
74
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
75
75
|
|
|
76
|
-
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
77
|
-
|
|
78
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
79
|
-
|
|
80
76
|
if (!window.localStorage) {
|
|
81
77
|
window.localStorage = {
|
|
82
78
|
getItem: function getItem() {
|
|
@@ -93,7 +89,7 @@ if (!window.localStorage) {
|
|
|
93
89
|
|
|
94
90
|
|
|
95
91
|
var GenericApp = /*#__PURE__*/function (_Router) {
|
|
96
|
-
|
|
92
|
+
(0, _inherits2["default"])(GenericApp, _Router);
|
|
97
93
|
|
|
98
94
|
var _super = _createSuper(GenericApp);
|
|
99
95
|
|
|
@@ -104,8 +100,7 @@ var GenericApp = /*#__PURE__*/function (_Router) {
|
|
|
104
100
|
function GenericApp(props, settings) {
|
|
105
101
|
var _this;
|
|
106
102
|
|
|
107
|
-
|
|
108
|
-
|
|
103
|
+
(0, _classCallCheck2["default"])(this, GenericApp);
|
|
109
104
|
var ConnectionClass = props.Connection || settings.Connection || _Connection["default"]; // Remove `!Connection.isWeb() && window.adapterName !== 'material'` when iobroker.socket will support native ws
|
|
110
105
|
|
|
111
106
|
if (!ConnectionClass.isWeb() && window.io && window.location.port === '3000') {
|
|
@@ -118,8 +113,7 @@ var GenericApp = /*#__PURE__*/function (_Router) {
|
|
|
118
113
|
}
|
|
119
114
|
|
|
120
115
|
_this = _super.call(this, props);
|
|
121
|
-
|
|
122
|
-
_defineProperty(_assertThisInitialized(_this), "onSystemConfigChanged", function (id, obj) {
|
|
116
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onSystemConfigChanged", function (id, obj) {
|
|
123
117
|
if (obj && id === 'system.config') {
|
|
124
118
|
var _obj$common;
|
|
125
119
|
|
|
@@ -140,8 +134,7 @@ var GenericApp = /*#__PURE__*/function (_Router) {
|
|
|
140
134
|
}
|
|
141
135
|
}
|
|
142
136
|
});
|
|
143
|
-
|
|
144
|
-
_defineProperty(_assertThisInitialized(_this), "onReceiveMessage", function (message) {
|
|
137
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onReceiveMessage", function (message) {
|
|
145
138
|
if (message !== null && message !== void 0 && message.data) {
|
|
146
139
|
if (message.data === 'updateTheme') {
|
|
147
140
|
var newThemeName = _Utils["default"].getThemeName();
|
|
@@ -165,8 +158,7 @@ var GenericApp = /*#__PURE__*/function (_Router) {
|
|
|
165
158
|
}
|
|
166
159
|
}
|
|
167
160
|
});
|
|
168
|
-
|
|
169
|
-
_defineProperty(_assertThisInitialized(_this), "onResize", function () {
|
|
161
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onResize", function () {
|
|
170
162
|
_this.resizeTimer && clearTimeout(_this.resizeTimer);
|
|
171
163
|
_this.resizeTimer = setTimeout(function () {
|
|
172
164
|
_this.resizeTimer = null;
|
|
@@ -176,7 +168,6 @@ var GenericApp = /*#__PURE__*/function (_Router) {
|
|
|
176
168
|
});
|
|
177
169
|
}, 200);
|
|
178
170
|
});
|
|
179
|
-
|
|
180
171
|
(0, _Prompt["default"])();
|
|
181
172
|
var query = (window.location.search || '').replace(/^\?/, '').replace(/#.*$/, '');
|
|
182
173
|
var args = {};
|
|
@@ -349,7 +340,7 @@ var GenericApp = /*#__PURE__*/function (_Router) {
|
|
|
349
340
|
return _this;
|
|
350
341
|
}
|
|
351
342
|
|
|
352
|
-
|
|
343
|
+
(0, _createClass2["default"])(GenericApp, [{
|
|
353
344
|
key: "componentDidMount",
|
|
354
345
|
value:
|
|
355
346
|
/**
|
|
@@ -358,8 +349,7 @@ var GenericApp = /*#__PURE__*/function (_Router) {
|
|
|
358
349
|
function componentDidMount() {
|
|
359
350
|
window.addEventListener('resize', this.onResize, true);
|
|
360
351
|
window.addEventListener('message', this.onReceiveMessage, false);
|
|
361
|
-
|
|
362
|
-
_get(_getPrototypeOf(GenericApp.prototype), "componentDidMount", this).call(this);
|
|
352
|
+
(0, _get2["default"])((0, _getPrototypeOf2["default"])(GenericApp.prototype), "componentDidMount", this).call(this);
|
|
363
353
|
}
|
|
364
354
|
/**
|
|
365
355
|
* Called immediately before a component is destroyed.
|
|
@@ -370,8 +360,7 @@ var GenericApp = /*#__PURE__*/function (_Router) {
|
|
|
370
360
|
value: function componentWillUnmount() {
|
|
371
361
|
window.removeEventListener('resize', this.onResize, true);
|
|
372
362
|
window.removeEventListener('message', this.onReceiveMessage, false);
|
|
373
|
-
|
|
374
|
-
_get(_getPrototypeOf(GenericApp.prototype), "componentWillUnmount", this).call(this);
|
|
363
|
+
(0, _get2["default"])((0, _getPrototypeOf2["default"])(GenericApp.prototype), "componentWillUnmount", this).call(this);
|
|
375
364
|
}
|
|
376
365
|
}, {
|
|
377
366
|
key: "createTheme",
|
|
@@ -872,14 +861,14 @@ var GenericApp = /*#__PURE__*/function (_Router) {
|
|
|
872
861
|
}, {
|
|
873
862
|
key: "_updateNativeValue",
|
|
874
863
|
value: function _updateNativeValue(obj, attrs, value) {
|
|
875
|
-
if (
|
|
864
|
+
if ((0, _typeof2["default"])(attrs) !== 'object') {
|
|
876
865
|
attrs = attrs.split('.');
|
|
877
866
|
}
|
|
878
867
|
|
|
879
868
|
var attr = attrs.shift();
|
|
880
869
|
|
|
881
870
|
if (!attrs.length) {
|
|
882
|
-
if (value &&
|
|
871
|
+
if (value && (0, _typeof2["default"])(value) === 'object') {
|
|
883
872
|
if (JSON.stringify(obj[attr]) !== JSON.stringify(value)) {
|
|
884
873
|
obj[attr] = value;
|
|
885
874
|
return true;
|
|
@@ -893,8 +882,8 @@ var GenericApp = /*#__PURE__*/function (_Router) {
|
|
|
893
882
|
} else {
|
|
894
883
|
obj[attr] = obj[attr] || {};
|
|
895
884
|
|
|
896
|
-
if (
|
|
897
|
-
throw new Error('attribute ' + attr + ' is no object, but ' +
|
|
885
|
+
if ((0, _typeof2["default"])(obj[attr]) !== 'object') {
|
|
886
|
+
throw new Error('attribute ' + attr + ' is no object, but ' + (0, _typeof2["default"])(obj[attr]));
|
|
898
887
|
}
|
|
899
888
|
|
|
900
889
|
return this._updateNativeValue(obj[attr], attrs, value);
|
|
@@ -1005,7 +994,6 @@ var GenericApp = /*#__PURE__*/function (_Router) {
|
|
|
1005
994
|
}
|
|
1006
995
|
}
|
|
1007
996
|
}]);
|
|
1008
|
-
|
|
1009
997
|
return GenericApp;
|
|
1010
998
|
}(_Router2["default"]);
|
|
1011
999
|
|
package/GenericApp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenericApp.js","names":["window","localStorage","getItem","setItem","GenericApp","props","settings","ConnectionClass","Connection","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","query","search","replace","args","trim","split","filter","t","forEach","b","parts","length","instance","undefined","parseInt","slice","tmp","pathname","adapterName","instanceId","newReact","Router","getLocation","tab","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\nimport './index.css';\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 // 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.getItem(this.adapterName + '-adapter') || '';\n\n const themeInstance = this.createTheme();\n\n this.state = {\n selectedTab: 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[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":["window","localStorage","getItem","setItem","GenericApp","props","settings","ConnectionClass","Connection","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","query","search","replace","args","trim","split","filter","t","forEach","b","parts","length","instance","undefined","parseInt","slice","tmp","pathname","adapterName","instanceId","newReact","Router","getLocation","tab","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\nimport './index.css';\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 // 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.getItem(this.adapterName + '-adapter') || '';\n\n const themeInstance = this.createTheme();\n\n this.state = {\n selectedTab: 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[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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"}
|
package/README.md
CHANGED
|
@@ -630,6 +630,7 @@ The icons may not be reused in other projects without the proper flaticon licens
|
|
|
630
630
|
- Add to all `TextField` and `Select` the property `variant="standard"`
|
|
631
631
|
- Add to all `Button` that do not have `color` property: `color="grey"`
|
|
632
632
|
- Replace by `TextField` the `readOnly` attribute (if exists) with `InputProps={{readOnly: true}}`
|
|
633
|
+
- Remove px by all `theme.spacing`: `calc(100% - ${theme.spacing(4)}px)` => `calc(100% - ${theme.spacing(4)})`
|
|
633
634
|
|
|
634
635
|
If you still have questions, try to find an answer [here](https://mui.com/guides/migration-v4/).
|
|
635
636
|
|
|
@@ -639,6 +640,9 @@ If you still have questions, try to find an answer [here](https://mui.com/guides
|
|
|
639
640
|
-->
|
|
640
641
|
|
|
641
642
|
## Changelog
|
|
643
|
+
### 2.1.9 (2022-05-16)
|
|
644
|
+
* (bluefox) Corrected expert mode in object browser
|
|
645
|
+
|
|
642
646
|
### 2.1.7 (2022-05-09)
|
|
643
647
|
* (bluefox) Changes were synchronized with adapter-react-v5
|
|
644
648
|
* (bluefox) Added `I18n.disableWarning` method
|