@iobroker/adapter-react-v5 7.0.2 → 7.1.1

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.
Files changed (307) hide show
  1. package/Components/404.d.ts +3 -2
  2. package/Components/404.js +3 -2
  3. package/Components/ColorPicker.d.ts +22 -8
  4. package/Components/ColorPicker.js +34 -17
  5. package/Components/ComplexCron.js +24 -24
  6. package/Components/CopyToClipboard.d.ts +10 -1
  7. package/Components/CopyToClipboard.js +17 -8
  8. package/Components/CustomModal.d.ts +1 -1
  9. package/Components/CustomModal.js +8 -8
  10. package/Components/FileBrowser.d.ts +11 -11
  11. package/Components/FileBrowser.js +135 -152
  12. package/Components/FileViewer.js +34 -23
  13. package/Components/Icon.d.ts +16 -2
  14. package/Components/Icon.js +19 -8
  15. package/Components/IconPicker.js +10 -14
  16. package/Components/IconSelector.d.ts +1 -1
  17. package/Components/IconSelector.js +64 -74
  18. package/Components/Image.d.ts +8 -4
  19. package/Components/Image.js +13 -32
  20. package/Components/Loader.d.ts +2 -2
  21. package/Components/Loader.js +21 -18
  22. package/Components/Loaders/MV.d.ts +6 -1
  23. package/Components/Loaders/MV.js +23 -7
  24. package/Components/Loaders/PT.d.ts +7 -2
  25. package/Components/Loaders/PT.js +20 -7
  26. package/Components/Loaders/Vendor.d.ts +2 -2
  27. package/Components/Loaders/Vendor.js +15 -7
  28. package/Components/Logo.js +16 -18
  29. package/Components/MDUtils.d.ts +1 -1
  30. package/Components/MDUtils.js +8 -4
  31. package/Components/ObjectBrowser.d.ts +40 -39
  32. package/Components/ObjectBrowser.js +550 -435
  33. package/Components/Router.d.ts +1 -3
  34. package/Components/Router.js +3 -1
  35. package/Components/SaveCloseButtons.d.ts +3 -3
  36. package/Components/SaveCloseButtons.js +3 -3
  37. package/Components/Schedule.d.ts +15 -15
  38. package/Components/Schedule.js +177 -154
  39. package/Components/SelectWithIcon.d.ts +2 -2
  40. package/Components/SelectWithIcon.js +45 -34
  41. package/Components/SimpleCron/index.js +83 -43
  42. package/Components/TabContainer.js +2 -2
  43. package/Components/TabContent.js +1 -1
  44. package/Components/TabHeader.js +1 -1
  45. package/Components/TableResize.d.ts +2 -2
  46. package/Components/TableResize.js +5 -5
  47. package/Components/TextWithIcon.d.ts +1 -1
  48. package/Components/TextWithIcon.js +10 -8
  49. package/Components/ToggleThemeMenu.d.ts +2 -2
  50. package/Components/ToggleThemeMenu.js +3 -3
  51. package/Components/TreeTable.d.ts +18 -18
  52. package/Components/TreeTable.js +76 -72
  53. package/Components/UploadImage.d.ts +2 -2
  54. package/Components/UploadImage.js +25 -21
  55. package/Components/Utils.d.ts +42 -22
  56. package/Components/Utils.js +66 -65
  57. package/Components/withWidth.d.ts +2 -2
  58. package/Components/withWidth.js +10 -6
  59. package/Dialogs/ComplexCron.d.ts +2 -2
  60. package/Dialogs/ComplexCron.js +3 -3
  61. package/Dialogs/Confirm.d.ts +4 -4
  62. package/Dialogs/Confirm.js +18 -8
  63. package/Dialogs/Cron.d.ts +3 -3
  64. package/Dialogs/Cron.js +21 -17
  65. package/Dialogs/Error.d.ts +3 -3
  66. package/Dialogs/Error.js +6 -4
  67. package/Dialogs/Message.d.ts +3 -3
  68. package/Dialogs/Message.js +6 -4
  69. package/Dialogs/SelectFile.d.ts +4 -4
  70. package/Dialogs/SelectFile.js +6 -4
  71. package/Dialogs/SelectID.d.ts +12 -10
  72. package/Dialogs/SelectID.js +12 -8
  73. package/Dialogs/SimpleCron.d.ts +2 -2
  74. package/Dialogs/SimpleCron.js +2 -2
  75. package/Dialogs/TextInput.d.ts +2 -2
  76. package/Dialogs/TextInput.js +3 -3
  77. package/GenericApp.d.ts +19 -13
  78. package/GenericApp.js +128 -85
  79. package/LegacyConnection.d.ts +240 -248
  80. package/LegacyConnection.js +500 -525
  81. package/README.md +1264 -1171
  82. package/Theme.d.ts +1 -1
  83. package/Theme.js +9 -12
  84. package/assets/devices.json +1 -0
  85. package/assets/rooms.json +1 -0
  86. package/craco-module-federation.js +3 -12
  87. package/i18n/de.json +434 -434
  88. package/i18n/en.json +434 -434
  89. package/i18n/es.json +434 -434
  90. package/i18n/fr.json +434 -434
  91. package/i18n/it.json +434 -434
  92. package/i18n/nl.json +434 -434
  93. package/i18n/pl.json +434 -434
  94. package/i18n/pt.json +434 -434
  95. package/i18n/ru.json +434 -434
  96. package/i18n/uk.json +434 -434
  97. package/i18n/zh-cn.json +434 -434
  98. package/i18n.d.ts +26 -19
  99. package/i18n.js +28 -22
  100. package/icons/IconAdapter.js +2 -2
  101. package/icons/IconAlias.js +2 -2
  102. package/icons/IconChannel.js +2 -2
  103. package/icons/IconClearFilter.js +2 -2
  104. package/icons/IconClosed.js +2 -2
  105. package/icons/IconCopy.js +2 -2
  106. package/icons/IconDevice.js +2 -2
  107. package/icons/IconDocument.js +2 -2
  108. package/icons/IconDocumentReadOnly.js +2 -2
  109. package/icons/IconExpert.js +2 -2
  110. package/icons/IconFx.js +2 -2
  111. package/icons/IconInstance.js +2 -2
  112. package/icons/IconLogout.js +2 -2
  113. package/icons/IconNoIcon.js +2 -2
  114. package/icons/IconOpen.d.ts +2 -2
  115. package/icons/IconOpen.js +2 -2
  116. package/icons/IconProps.d.ts +4 -3
  117. package/icons/IconState.d.ts +2 -2
  118. package/icons/IconState.js +2 -2
  119. package/index.css +3 -2
  120. package/package.json +4 -4
  121. package/src/Components/404.tsx +32 -31
  122. package/src/Components/ColorPicker.tsx +142 -114
  123. package/src/Components/ComplexCron.tsx +174 -137
  124. package/src/Components/CopyToClipboard.tsx +22 -9
  125. package/src/Components/CustomModal.tsx +76 -69
  126. package/src/Components/FileBrowser.tsx +959 -852
  127. package/src/Components/FileViewer.tsx +146 -127
  128. package/src/Components/Icon.tsx +80 -52
  129. package/src/Components/IconPicker.tsx +83 -67
  130. package/src/Components/IconSelector.tsx +159 -141
  131. package/src/Components/Image.tsx +43 -26
  132. package/src/Components/Loader.tsx +56 -32
  133. package/src/Components/Logo.tsx +62 -52
  134. package/src/Components/MDUtils.tsx +10 -6
  135. package/src/Components/ObjectBrowser.tsx +3198 -2478
  136. package/src/Components/Router.tsx +11 -11
  137. package/src/Components/SaveCloseButtons.tsx +43 -39
  138. package/src/Components/Schedule.tsx +1091 -853
  139. package/src/Components/SelectWithIcon.tsx +135 -93
  140. package/src/Components/TabContainer.tsx +22 -20
  141. package/src/Components/TabContent.tsx +13 -12
  142. package/src/Components/TabHeader.tsx +10 -9
  143. package/src/Components/TableResize.tsx +52 -37
  144. package/src/Components/TextWithIcon.tsx +30 -19
  145. package/src/Components/ToggleThemeMenu.tsx +31 -13
  146. package/src/Components/TreeTable.tsx +468 -385
  147. package/src/Components/UploadImage.tsx +153 -121
  148. package/src/Components/Utils.tsx +135 -127
  149. package/src/Components/loader.css +40 -31
  150. package/src/Components/withWidth.tsx +23 -12
  151. package/src/Connection.tsx +1 -3
  152. package/src/Dialogs/ComplexCron.tsx +55 -61
  153. package/src/Dialogs/Confirm.tsx +88 -65
  154. package/src/Dialogs/Cron.tsx +122 -112
  155. package/src/Dialogs/Error.tsx +37 -42
  156. package/src/Dialogs/Message.tsx +39 -37
  157. package/src/Dialogs/SelectFile.tsx +95 -85
  158. package/src/Dialogs/SelectID.tsx +141 -129
  159. package/src/Dialogs/SimpleCron.tsx +44 -44
  160. package/src/Dialogs/TextInput.tsx +60 -68
  161. package/src/GenericApp.tsx +342 -242
  162. package/src/LegacyConnection.tsx +972 -842
  163. package/src/Prompt.tsx +3 -1
  164. package/src/Theme.tsx +19 -26
  165. package/src/icons/IconAdapter.tsx +16 -14
  166. package/src/icons/IconAlias.tsx +16 -14
  167. package/src/icons/IconChannel.tsx +55 -16
  168. package/src/icons/IconClearFilter.tsx +17 -15
  169. package/src/icons/IconClosed.tsx +16 -11
  170. package/src/icons/IconCopy.tsx +16 -11
  171. package/src/icons/IconDevice.tsx +121 -22
  172. package/src/icons/IconDocument.tsx +16 -11
  173. package/src/icons/IconDocumentReadOnly.tsx +21 -12
  174. package/src/icons/IconExpert.tsx +20 -12
  175. package/src/icons/IconFx.tsx +16 -14
  176. package/src/icons/IconInstance.tsx +16 -14
  177. package/src/icons/IconLogout.tsx +20 -18
  178. package/src/icons/IconNoIcon.tsx +16 -14
  179. package/src/icons/IconOpen.tsx +17 -12
  180. package/src/icons/IconProps.tsx +4 -3
  181. package/src/icons/IconState.tsx +34 -13
  182. package/src/index.css +3 -2
  183. package/tasks.js +91 -0
  184. package/types.d.ts +141 -0
  185. package/Components/Loaders/PT.css +0 -109
  186. package/Components/Loaders/Vendor.css +0 -13
  187. package/Components/loader.css +0 -222
  188. package/Components/types.d.ts +0 -82
  189. package/assets/devices/Alarm Systems.svg +0 -19
  190. package/assets/devices/Amplifier.svg +0 -22
  191. package/assets/devices/Awnings.svg +0 -5
  192. package/assets/devices/Battery Status.svg +0 -5
  193. package/assets/devices/Ceiling Spotlights.svg +0 -16
  194. package/assets/devices/Chandelier.svg +0 -7
  195. package/assets/devices/Climate.svg +0 -12
  196. package/assets/devices/Coffee Makers.svg +0 -6
  197. package/assets/devices/Cold Water.svg +0 -31
  198. package/assets/devices/Computer.svg +0 -21
  199. package/assets/devices/Consumption.svg +0 -8
  200. package/assets/devices/Curtains.svg +0 -43
  201. package/assets/devices/Dishwashers.svg +0 -12
  202. package/assets/devices/Doors.svg +0 -6
  203. package/assets/devices/Doorstep.svg +0 -35
  204. package/assets/devices/Dryer.svg +0 -14
  205. package/assets/devices/Fan.svg +0 -20
  206. package/assets/devices/Floor Lamps.svg +0 -5
  207. package/assets/devices/Garage Doors.svg +0 -9
  208. package/assets/devices/Gates.svg +0 -32
  209. package/assets/devices/Hairdryer.svg +0 -23
  210. package/assets/devices/Handle.svg +0 -6
  211. package/assets/devices/Hanging Lamps.svg +0 -9
  212. package/assets/devices/Heater.svg +0 -44
  213. package/assets/devices/Hoods.svg +0 -12
  214. package/assets/devices/Hot Water.svg +0 -10
  215. package/assets/devices/Humidity.svg +0 -41
  216. package/assets/devices/Iron.svg +0 -5
  217. package/assets/devices/Irrigation.svg +0 -23
  218. package/assets/devices/Led Strip.svg +0 -31
  219. package/assets/devices/Light.svg +0 -30
  220. package/assets/devices/Lightings.svg +0 -46
  221. package/assets/devices/Lock.svg +0 -19
  222. package/assets/devices/Louvre.svg +0 -7
  223. package/assets/devices/Mowing Machine.svg +0 -9
  224. package/assets/devices/Music.svg +0 -13
  225. package/assets/devices/Outdoor Blinds.svg +0 -7
  226. package/assets/devices/People.svg +0 -19
  227. package/assets/devices/Pool.svg +0 -8
  228. package/assets/devices/Power Consumption.svg +0 -13
  229. package/assets/devices/Printer.svg +0 -10
  230. package/assets/devices/Pump.svg +0 -10
  231. package/assets/devices/Receiver.svg +0 -19
  232. package/assets/devices/Sconces.svg +0 -10
  233. package/assets/devices/Security.svg +0 -34
  234. package/assets/devices/Shading.svg +0 -5
  235. package/assets/devices/Shutters.svg +0 -11
  236. package/assets/devices/SmokeDetector.svg +0 -13
  237. package/assets/devices/Sockets.svg +0 -13
  238. package/assets/devices/Speaker.svg +0 -35
  239. package/assets/devices/Stove.svg +0 -12
  240. package/assets/devices/Table Lamps.svg +0 -12
  241. package/assets/devices/Temperature Sensors.svg +0 -28
  242. package/assets/devices/Tv.svg +0 -8
  243. package/assets/devices/Vacuum Cleaner.svg +0 -16
  244. package/assets/devices/Ventilation.svg +0 -12
  245. package/assets/devices/Washing Machines.svg +0 -16
  246. package/assets/devices/Water Consumption.svg +0 -6
  247. package/assets/devices/Water Heater.svg +0 -8
  248. package/assets/devices/Water.svg +0 -40
  249. package/assets/devices/Weather.svg +0 -28
  250. package/assets/devices/Window.svg +0 -8
  251. package/assets/rooms/Anteroom.svg +0 -53
  252. package/assets/rooms/Attic.svg +0 -21
  253. package/assets/rooms/Balcony.svg +0 -13
  254. package/assets/rooms/Barn.svg +0 -6
  255. package/assets/rooms/Basement.svg +0 -5
  256. package/assets/rooms/Bathroom.svg +0 -38
  257. package/assets/rooms/Bedroom.svg +0 -5
  258. package/assets/rooms/Boiler Room.svg +0 -13
  259. package/assets/rooms/Carport.svg +0 -17
  260. package/assets/rooms/Cellar.svg +0 -89
  261. package/assets/rooms/Chamber.svg +0 -9
  262. package/assets/rooms/Corridor.svg +0 -53
  263. package/assets/rooms/Dining Area.svg +0 -37
  264. package/assets/rooms/Dining Room.svg +0 -37
  265. package/assets/rooms/Dining.svg +0 -37
  266. package/assets/rooms/Dressing Room.svg +0 -5
  267. package/assets/rooms/Driveway.svg +0 -15
  268. package/assets/rooms/Entrance.svg +0 -44
  269. package/assets/rooms/Equipment Room.svg +0 -15
  270. package/assets/rooms/Front Yard.svg +0 -64
  271. package/assets/rooms/Gallery.svg +0 -14
  272. package/assets/rooms/Garage.svg +0 -20
  273. package/assets/rooms/Garden.svg +0 -13
  274. package/assets/rooms/Ground Floor.svg +0 -95
  275. package/assets/rooms/Guest Bathroom.svg +0 -33
  276. package/assets/rooms/Guest Room.svg +0 -5
  277. package/assets/rooms/Gym.svg +0 -5
  278. package/assets/rooms/Hall.svg +0 -19
  279. package/assets/rooms/Home Theater.svg +0 -8
  280. package/assets/rooms/Kitchen.svg +0 -18
  281. package/assets/rooms/Laundry Room.svg +0 -12
  282. package/assets/rooms/Living Area.svg +0 -11
  283. package/assets/rooms/Living Room.svg +0 -10
  284. package/assets/rooms/Locker Room.svg +0 -17
  285. package/assets/rooms/Nursery.svg +0 -5
  286. package/assets/rooms/Office.svg +0 -8
  287. package/assets/rooms/Outdoors.svg +0 -7
  288. package/assets/rooms/Playroom.svg +0 -6
  289. package/assets/rooms/Pool.svg +0 -8
  290. package/assets/rooms/Rear Wall.svg +0 -30
  291. package/assets/rooms/Second Floor.svg +0 -95
  292. package/assets/rooms/Shed.svg +0 -16
  293. package/assets/rooms/Sleeping Area.svg +0 -22
  294. package/assets/rooms/Stairway.svg +0 -5
  295. package/assets/rooms/Stairwell.svg +0 -15
  296. package/assets/rooms/Storeroom.svg +0 -5
  297. package/assets/rooms/Summer House.svg +0 -27
  298. package/assets/rooms/Swimming Pool.svg +0 -21
  299. package/assets/rooms/Terrace.svg +0 -7
  300. package/assets/rooms/Toilet.svg +0 -10
  301. package/assets/rooms/Upstairs.svg +0 -6
  302. package/assets/rooms/Wardrobe.svg +0 -60
  303. package/assets/rooms/Washroom.svg +0 -20
  304. package/assets/rooms/Wc.svg +0 -10
  305. package/assets/rooms/Windscreen.svg +0 -60
  306. package/assets/rooms/Workshop.svg +0 -23
  307. package/assets/rooms/Workspace.svg +0 -8
package/GenericApp.js CHANGED
@@ -31,7 +31,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
31
31
  *
32
32
  * MIT License
33
33
  *
34
- * */
34
+ */
35
35
  const react_1 = __importDefault(require("react"));
36
36
  const socket_client_1 = require("@iobroker/socket-client");
37
37
  const Sentry = __importStar(require("@sentry/browser"));
@@ -46,6 +46,17 @@ const SaveCloseButtons_1 = __importDefault(require("./Components/SaveCloseButton
46
46
  const Confirm_1 = __importDefault(require("./Dialogs/Confirm"));
47
47
  const i18n_1 = __importDefault(require("./i18n"));
48
48
  const Error_1 = __importDefault(require("./Dialogs/Error"));
49
+ const en_json_1 = __importDefault(require("./i18n/en.json"));
50
+ const de_json_1 = __importDefault(require("./i18n/de.json"));
51
+ const ru_json_1 = __importDefault(require("./i18n/ru.json"));
52
+ const pt_json_1 = __importDefault(require("./i18n/pt.json"));
53
+ const nl_json_1 = __importDefault(require("./i18n/nl.json"));
54
+ const fr_json_1 = __importDefault(require("./i18n/fr.json"));
55
+ const it_json_1 = __importDefault(require("./i18n/it.json"));
56
+ const es_json_1 = __importDefault(require("./i18n/es.json"));
57
+ const pl_json_1 = __importDefault(require("./i18n/pl.json"));
58
+ const uk_json_1 = __importDefault(require("./i18n/uk.json"));
59
+ const zh_cn_json_1 = __importDefault(require("./i18n/zh-cn.json"));
49
60
  // import './index.css';
50
61
  const cssStyle = `
51
62
  html {
@@ -100,7 +111,9 @@ body {
100
111
  class GenericApp extends Router_1.default {
101
112
  constructor(props, settings) {
102
113
  var _a, _b;
103
- const ConnectionClass = (props.Connection || (settings === null || settings === void 0 ? void 0 : settings.Connection) || socket_client_1.Connection);
114
+ const ConnectionClass = (props.Connection ||
115
+ (settings === null || settings === void 0 ? void 0 : settings.Connection) ||
116
+ socket_client_1.Connection);
104
117
  // const ConnectionClass = props.Connection === 'admin' || settings.Connection = 'admin' ? AdminConnection : (props.Connection || settings.Connection || Connection);
105
118
  if (!window.document.getElementById('generic-app-iobroker-component')) {
106
119
  const style = window.document.createElement('style');
@@ -115,7 +128,7 @@ class GenericApp extends Router_1.default {
115
128
  delete window.io;
116
129
  window.io = io;
117
130
  }
118
- catch (e) {
131
+ catch (_c) {
119
132
  // ignore
120
133
  }
121
134
  }
@@ -132,11 +145,13 @@ class GenericApp extends Router_1.default {
132
145
  i18n_1.default.setLanguage(this.socket.systemLang);
133
146
  }
134
147
  if (((_a = this._systemConfig) === null || _a === void 0 ? void 0 : _a.expertMode) !== !!((_b = obj === null || obj === void 0 ? void 0 : obj.common) === null || _b === void 0 ? void 0 : _b.expertMode)) {
135
- this._systemConfig = (obj === null || obj === void 0 ? void 0 : obj.common) || {};
148
+ this._systemConfig =
149
+ (obj === null || obj === void 0 ? void 0 : obj.common) || {};
136
150
  this.setState({ expertMode: this.getExpertMode() });
137
151
  }
138
152
  else {
139
- this._systemConfig = (obj === null || obj === void 0 ? void 0 : obj.common) || {};
153
+ this._systemConfig =
154
+ (obj === null || obj === void 0 ? void 0 : obj.common) || {};
140
155
  }
141
156
  }
142
157
  };
@@ -158,8 +173,8 @@ class GenericApp extends Router_1.default {
158
173
  else if (message.data === 'updateExpertMode') {
159
174
  this.onToggleExpertMode && this.onToggleExpertMode(this.getExpertMode());
160
175
  }
161
- else if (message.data !== 'chartReady') { // if not "echart ready" message
162
- // eslint-disable-next-line no-console
176
+ else if (message.data !== 'chartReady') {
177
+ // if not "echart ready" message
163
178
  console.debug(`Received unknown message: "${JSON.stringify(message.data)}". May be it will be processed later`);
164
179
  }
165
180
  }
@@ -174,7 +189,11 @@ class GenericApp extends Router_1.default {
174
189
  (0, Prompt_1.default)();
175
190
  const query = (window.location.search || '').replace(/^\?/, '').replace(/#.*$/, '');
176
191
  const args = {};
177
- query.trim().split('&').filter(t => t.trim()).forEach(b => {
192
+ query
193
+ .trim()
194
+ .split('&')
195
+ .filter(t => t.trim())
196
+ .forEach(b => {
178
197
  const parts = b.split('=');
179
198
  args[parts[0]] = parts.length === 2 ? parts[1] : true;
180
199
  if (args[parts[0]] === 'true') {
@@ -185,29 +204,36 @@ class GenericApp extends Router_1.default {
185
204
  }
186
205
  });
187
206
  // extract instance from URL
188
- this.instance = (_b = (_a = settings === null || settings === void 0 ? void 0 : settings.instance) !== null && _a !== void 0 ? _a : props.instance) !== null && _b !== void 0 ? _b : (args.instance !== undefined ? parseInt(args.instance, 10) || 0 : (parseInt(window.location.search.slice(1), 10) || 0));
207
+ this.instance =
208
+ (_b = (_a = settings === null || settings === void 0 ? void 0 : settings.instance) !== null && _a !== void 0 ? _a : props.instance) !== null && _b !== void 0 ? _b : (args.instance !== undefined
209
+ ? parseInt(args.instance, 10) || 0
210
+ : parseInt(window.location.search.slice(1), 10) || 0);
189
211
  // extract adapter name from URL
190
212
  const tmp = window.location.pathname.split('/');
191
- this.adapterName = (settings === null || settings === void 0 ? void 0 : settings.adapterName) || props.adapterName || window.adapterName || tmp[tmp.length - 2] || 'iot';
213
+ this.adapterName =
214
+ (settings === null || settings === void 0 ? void 0 : settings.adapterName) || props.adapterName || window.adapterName || tmp[tmp.length - 2] || 'iot';
192
215
  this.instanceId = `system.adapter.${this.adapterName}.${this.instance}`;
193
216
  this.newReact = args.newReact === true; // it is admin5
194
217
  const location = Router_1.default.getLocation();
195
- location.tab = location.tab || (window._localStorage || window.localStorage).getItem(`${this.adapterName}-adapter`) || '';
218
+ location.tab =
219
+ location.tab ||
220
+ (window._localStorage || window.localStorage).getItem(`${this.adapterName}-adapter`) ||
221
+ '';
196
222
  const themeInstance = this.createTheme();
197
- this.state = Object.assign(Object.assign({}, (this.state || {})), { selectedTab: (window._localStorage || window.localStorage).getItem(`${this.adapterName}-adapter`) || '', selectedTabNum: -1, native: {}, errorText: '', changed: false, connected: false, loaded: false, isConfigurationError: '', expertMode: false, toast: '', theme: themeInstance, themeName: this.getThemeName(themeInstance), themeType: this.getThemeType(themeInstance), bottomButtons: (settings && settings.bottomButtons) === false ? false : ((props === null || props === void 0 ? void 0 : props.bottomButtons) !== false), width: GenericApp.getWidth(), confirmClose: false, _alert: false, _alertType: 'info', _alertMessage: '' });
223
+ this.state = Object.assign(Object.assign({}, (this.state || {})), { selectedTab: (window._localStorage || window.localStorage).getItem(`${this.adapterName}-adapter`) || '', selectedTabNum: -1, native: {}, errorText: '', changed: false, connected: false, loaded: false, isConfigurationError: '', expertMode: false, toast: '', theme: themeInstance, themeName: this.getThemeName(themeInstance), themeType: this.getThemeType(themeInstance), bottomButtons: (settings && settings.bottomButtons) === false ? false : (props === null || props === void 0 ? void 0 : props.bottomButtons) !== false, width: GenericApp.getWidth(), confirmClose: false, _alert: false, _alertType: 'info', _alertMessage: '' });
198
224
  // init translations
199
225
  const translations = {
200
- en: require('./i18n/en.json'),
201
- de: require('./i18n/de.json'),
202
- ru: require('./i18n/ru.json'),
203
- pt: require('./i18n/pt.json'),
204
- nl: require('./i18n/nl.json'),
205
- fr: require('./i18n/fr.json'),
206
- it: require('./i18n/it.json'),
207
- es: require('./i18n/es.json'),
208
- pl: require('./i18n/pl.json'),
209
- uk: require('./i18n/uk.json'),
210
- 'zh-cn': require('./i18n/zh-cn.json'),
226
+ en: en_json_1.default,
227
+ de: de_json_1.default,
228
+ ru: ru_json_1.default,
229
+ pt: pt_json_1.default,
230
+ nl: nl_json_1.default,
231
+ fr: fr_json_1.default,
232
+ it: it_json_1.default,
233
+ es: es_json_1.default,
234
+ pl: pl_json_1.default,
235
+ uk: uk_json_1.default,
236
+ 'zh-cn': zh_cn_json_1.default,
211
237
  };
212
238
  // merge together
213
239
  if (settings && settings.translations) {
@@ -266,10 +292,12 @@ class GenericApp extends Router_1.default {
266
292
  }, onReady: ( /* objects, scripts */) => {
267
293
  i18n_1.default.setLanguage(this.socket.systemLang);
268
294
  // subscribe because of language and expert mode
269
- this.socket.subscribeObject('system.config', this.onSystemConfigChanged)
295
+ this.socket
296
+ .subscribeObject('system.config', this.onSystemConfigChanged)
270
297
  .then(() => this.getSystemConfig())
271
298
  .then(obj => {
272
- this._secret = (typeof obj !== 'undefined' && obj.native && obj.native.secret) || 'Zgfr56gFe87jJOM';
299
+ this._secret =
300
+ (typeof obj !== 'undefined' && obj.native && obj.native.secret) || 'Zgfr56gFe87jJOM';
273
301
  this._systemConfig = (obj === null || obj === void 0 ? void 0 : obj.common) || {};
274
302
  return this.socket.getObject(this.instanceId);
275
303
  })
@@ -292,9 +320,7 @@ class GenericApp extends Router_1.default {
292
320
  Sentry.init({
293
321
  dsn: this.sentryDSN,
294
322
  release: `iobroker.${instanceObj.common.name}@${instanceObj.common.version}`,
295
- integrations: [
296
- Sentry.dedupeIntegration(),
297
- ],
323
+ integrations: [Sentry.dedupeIntegration()],
298
324
  });
299
325
  console.log('Sentry initialized');
300
326
  }
@@ -302,8 +328,7 @@ class GenericApp extends Router_1.default {
302
328
  // for backward compatibility it will be processed separately from the above logic: some adapters could still have this.sentryDSN as undefined
303
329
  if (!this.sentryInited && sentryEnabled) {
304
330
  this.sentryInited = true;
305
- waitPromise = this.socket.getObject('system.meta.uuid')
306
- .then(uuidObj => {
331
+ waitPromise = this.socket.getObject('system.meta.uuid').then(uuidObj => {
307
332
  if (uuidObj && uuidObj.native && uuidObj.native.uuid) {
308
333
  const scope = Sentry.getCurrentScope();
309
334
  scope.setUser({ id: uuidObj.native.uuid });
@@ -311,8 +336,7 @@ class GenericApp extends Router_1.default {
311
336
  });
312
337
  }
313
338
  waitPromise = waitPromise || Promise.resolve();
314
- waitPromise
315
- .then(() => {
339
+ void waitPromise.then(() => {
316
340
  if (instanceObj) {
317
341
  this.common = instanceObj === null || instanceObj === void 0 ? void 0 : instanceObj.common;
318
342
  this.onPrepareLoad(instanceObj.native, instanceObj.encryptedNative); // decode all secrets
@@ -337,6 +361,7 @@ class GenericApp extends Router_1.default {
337
361
  }
338
362
  /**
339
363
  * Checks if this connection is running in a web adapter and not in an admin.
364
+ *
340
365
  * @returns True if running in a web adapter or in a socketio adapter.
341
366
  */
342
367
  static isWeb() {
@@ -354,9 +379,11 @@ class GenericApp extends Router_1.default {
354
379
  }
355
380
  renderAlertSnackbar() {
356
381
  this.alertDialogRendered = true;
357
- return react_1.default.createElement(material_1.Snackbar, { style: this.state._alertType === 'error' ?
358
- { backgroundColor: '#f44336' } :
359
- (this.state._alertType === 'success' ? { backgroundColor: '#4caf50' } : undefined), open: this.state._alert, autoHideDuration: 6000, onClose: (_e, reason) => reason !== 'clickaway' && this.setState({ _alert: false }), message: this.state._alertMessage });
382
+ return (react_1.default.createElement(material_1.Snackbar, { style: this.state._alertType === 'error'
383
+ ? { backgroundColor: '#f44336' }
384
+ : this.state._alertType === 'success'
385
+ ? { backgroundColor: '#4caf50' }
386
+ : undefined, open: this.state._alert, autoHideDuration: 6000, onClose: (_e, reason) => reason !== 'clickaway' && this.setState({ _alert: false }), message: this.state._alertMessage }));
360
387
  }
361
388
  /**
362
389
  * Called immediately after a component is mounted. Setting state here will trigger re-rendering.
@@ -376,7 +403,6 @@ class GenericApp extends Router_1.default {
376
403
  }
377
404
  /**
378
405
  * Gets the width depending on the window inner width.
379
- * @returns {import('./types').Width}
380
406
  */
381
407
  static getWidth() {
382
408
  /**
@@ -398,36 +424,46 @@ class GenericApp extends Router_1.default {
398
424
  }
399
425
  /**
400
426
  * Get a theme
427
+ *
401
428
  * @param name Theme name
402
429
  */
430
+ // eslint-disable-next-line class-methods-use-this
403
431
  createTheme(name) {
404
432
  return (0, Theme_1.default)(Utils_1.default.getThemeName(name));
405
433
  }
406
434
  /**
407
435
  * Get the theme name
408
436
  */
437
+ // eslint-disable-next-line class-methods-use-this
409
438
  getThemeName(currentTheme) {
410
439
  return currentTheme.name;
411
440
  }
412
441
  /**
413
442
  * Get the theme type
414
443
  */
444
+ // eslint-disable-next-line class-methods-use-this
415
445
  getThemeType(currentTheme) {
416
446
  return currentTheme.palette.mode;
417
447
  }
418
- onThemeChanged(_newThemeName) {
419
- }
420
- onToggleExpertMode(_expertMode) {
421
- }
448
+ // eslint-disable-next-line class-methods-use-this
449
+ onThemeChanged(_newThemeName) { }
450
+ // eslint-disable-next-line class-methods-use-this
451
+ onToggleExpertMode(_expertMode) { }
422
452
  /**
423
453
  * Changes the current theme
424
- * */
454
+ */
425
455
  toggleTheme(newThemeName) {
426
456
  const themeName = this.state.themeName;
427
457
  // dark => blue => colored => light => dark
428
- newThemeName = newThemeName || (themeName === 'dark' ? 'blue' :
429
- (themeName === 'blue' ? 'colored' :
430
- (themeName === 'colored' ? 'light' : 'dark')));
458
+ newThemeName =
459
+ newThemeName ||
460
+ (themeName === 'dark'
461
+ ? 'light'
462
+ : themeName === 'blue'
463
+ ? 'light'
464
+ : themeName === 'colored'
465
+ ? 'light'
466
+ : 'dark');
431
467
  if (newThemeName !== themeName) {
432
468
  Utils_1.default.setThemeName(newThemeName);
433
469
  const newTheme = this.createTheme(newThemeName);
@@ -443,7 +479,6 @@ class GenericApp extends Router_1.default {
443
479
  }
444
480
  /**
445
481
  * Gets the system configuration.
446
- * @returns {Promise<ioBroker.OtherObject>}
447
482
  */
448
483
  getSystemConfig() {
449
484
  return this.socket.getSystemConfig();
@@ -459,8 +494,8 @@ class GenericApp extends Router_1.default {
459
494
  * Gets called when the socket.io connection is ready.
460
495
  * You can overload this function to execute own commands.
461
496
  */
462
- onConnectionReady() {
463
- }
497
+ // eslint-disable-next-line class-methods-use-this
498
+ onConnectionReady() { }
464
499
  /**
465
500
  * Encrypts a string.
466
501
  */
@@ -468,7 +503,6 @@ class GenericApp extends Router_1.default {
468
503
  let result = '';
469
504
  if (this._secret) {
470
505
  for (let i = 0; i < value.length; i++) {
471
- // eslint-disable-next-line no-bitwise
472
506
  result += String.fromCharCode(this._secret[i % this._secret.length].charCodeAt(0) ^ value.charCodeAt(i));
473
507
  }
474
508
  }
@@ -481,7 +515,6 @@ class GenericApp extends Router_1.default {
481
515
  let result = '';
482
516
  if (this._secret) {
483
517
  for (let i = 0; i < value.length; i++) {
484
- // eslint-disable-next-line no-bitwise
485
518
  result += String.fromCharCode(this._secret[i % this._secret.length].charCodeAt(0) ^ value.charCodeAt(i));
486
519
  }
487
520
  }
@@ -510,43 +543,47 @@ class GenericApp extends Router_1.default {
510
543
  */
511
544
  onPrepareSave(settings) {
512
545
  // here you can encode values
513
- this.encryptedFields && this.encryptedFields.forEach(attr => {
514
- if (settings[attr]) {
515
- settings[attr] = this.encrypt(settings[attr]);
516
- }
517
- });
546
+ this.encryptedFields &&
547
+ this.encryptedFields.forEach(attr => {
548
+ if (settings[attr]) {
549
+ settings[attr] = this.encrypt(settings[attr]);
550
+ }
551
+ });
518
552
  return true;
519
553
  }
520
554
  /**
521
555
  * Gets called after the settings are loaded.
522
556
  * You may override this if needed.
557
+ *
558
+ * @param settings instance settings from native part
523
559
  * @param encryptedNative optional list of fields to be decrypted
524
560
  */
525
561
  onPrepareLoad(settings, encryptedNative) {
526
562
  // here you can encode values
527
- this.encryptedFields && this.encryptedFields.forEach(attr => {
528
- if (settings[attr]) {
529
- settings[attr] = this.decrypt(settings[attr]);
530
- }
531
- });
532
- encryptedNative && encryptedNative.forEach(attr => {
533
- this.encryptedFields = this.encryptedFields || [];
534
- !this.encryptedFields.includes(attr) && this.encryptedFields.push(attr);
535
- if (settings[attr]) {
536
- settings[attr] = this.decrypt(settings[attr]);
537
- }
538
- });
563
+ this.encryptedFields &&
564
+ this.encryptedFields.forEach(attr => {
565
+ if (settings[attr]) {
566
+ settings[attr] = this.decrypt(settings[attr]);
567
+ }
568
+ });
569
+ encryptedNative &&
570
+ encryptedNative.forEach(attr => {
571
+ this.encryptedFields = this.encryptedFields || [];
572
+ !this.encryptedFields.includes(attr) && this.encryptedFields.push(attr);
573
+ if (settings[attr]) {
574
+ settings[attr] = this.decrypt(settings[attr]);
575
+ }
576
+ });
539
577
  }
540
578
  /**
541
579
  * Gets the extendable instances.
542
- * @returns {Promise<any[]>}
543
580
  */
544
581
  async getExtendableInstances() {
545
582
  try {
546
583
  const instances = await this.socket.getObjectViewSystem('instance', 'system.adapter.', 'system.adapter.\u9999');
547
584
  return Object.values(instances).filter(instance => { var _a; return !!((_a = instance === null || instance === void 0 ? void 0 : instance.common) === null || _a === void 0 ? void 0 : _a.webExtendable); });
548
585
  }
549
- catch (e) {
586
+ catch (_a) {
550
587
  return [];
551
588
  }
552
589
  }
@@ -569,6 +606,7 @@ class GenericApp extends Router_1.default {
569
606
  }
570
607
  /**
571
608
  * Saves the settings to the server.
609
+ *
572
610
  * @param isClose True if the user is closing the dialog.
573
611
  */
574
612
  onSave(isClose) {
@@ -577,7 +615,8 @@ class GenericApp extends Router_1.default {
577
615
  this.setState({ errorText: this.state.isConfigurationError });
578
616
  return;
579
617
  }
580
- this.socket.getObject(this.instanceId)
618
+ this.socket
619
+ .getObject(this.instanceId)
581
620
  .then(_oldObj => {
582
621
  oldObj = (_oldObj || {});
583
622
  for (const a in this.state.native) {
@@ -617,7 +656,7 @@ class GenericApp extends Router_1.default {
617
656
  try {
618
657
  window.parent.postMessage('nochange', '*');
619
658
  }
620
- catch (e) {
659
+ catch (_a) {
621
660
  // ignore
622
661
  }
623
662
  this.setState({ changed: false });
@@ -633,13 +672,13 @@ class GenericApp extends Router_1.default {
633
672
  if (!this.state.toast) {
634
673
  return null;
635
674
  }
636
- return react_1.default.createElement(material_1.Snackbar, { anchorOrigin: {
675
+ return (react_1.default.createElement(material_1.Snackbar, { anchorOrigin: {
637
676
  vertical: 'bottom',
638
677
  horizontal: 'left',
639
678
  }, open: !0, autoHideDuration: 6000, onClose: () => this.setState({ toast: '' }), ContentProps: { 'aria-describedby': 'message-id' }, message: react_1.default.createElement("span", { id: "message-id" }, this.state.toast), action: [
640
679
  react_1.default.createElement(material_1.IconButton, { key: "close", "aria-label": "Close", color: "inherit", className: (_a = this.props.classes) === null || _a === void 0 ? void 0 : _a.close, onClick: () => this.setState({ toast: '' }), size: "large" },
641
680
  react_1.default.createElement(icons_material_1.Close, null)),
642
- ] });
681
+ ] }));
643
682
  }
644
683
  /**
645
684
  * Closes the dialog.
@@ -654,7 +693,7 @@ class GenericApp extends Router_1.default {
654
693
  window.parent.postMessage('close', '*');
655
694
  }
656
695
  }
657
- catch (e) {
696
+ catch (_a) {
658
697
  window.parent.postMessage('close', '*');
659
698
  }
660
699
  }
@@ -666,11 +705,12 @@ class GenericApp extends Router_1.default {
666
705
  if (!this.state.errorText) {
667
706
  return null;
668
707
  }
669
- return react_1.default.createElement(Error_1.default, { text: this.state.errorText, onClose: () => this.setState({ errorText: '' }) });
708
+ return (react_1.default.createElement(Error_1.default, { text: this.state.errorText, onClose: () => this.setState({ errorText: '' }) }));
670
709
  }
671
710
  /**
672
711
  * Checks if the configuration has changed.
673
- * @param {Record<string, any>} [native] the new state
712
+ *
713
+ * @param native the new state
674
714
  */
675
715
  getIsChanged(native) {
676
716
  native = native || this.state.native;
@@ -680,6 +720,7 @@ class GenericApp extends Router_1.default {
680
720
  }
681
721
  /**
682
722
  * Gets called when loading the configuration.
723
+ *
683
724
  * @param newNative The new configuration object.
684
725
  */
685
726
  onLoadConfig(newNative) {
@@ -702,16 +743,16 @@ class GenericApp extends Router_1.default {
702
743
  if (!this.state.confirmClose && !this.state.bottomButtons) {
703
744
  return null;
704
745
  }
705
- return react_1.default.createElement(react_1.default.Fragment, null,
706
- this.state.bottomButtons ? react_1.default.createElement(SaveCloseButtons_1.default, { theme: this.state.theme, newReact: this.newReact, noTextOnButtons: this.state.width === 'xs' || this.state.width === 'sm' || this.state.width === 'md', changed: this.state.changed, onSave: isClose => this.onSave(isClose), onClose: () => {
746
+ return (react_1.default.createElement(react_1.default.Fragment, null,
747
+ this.state.bottomButtons ? (react_1.default.createElement(SaveCloseButtons_1.default, { theme: this.state.theme, newReact: this.newReact, noTextOnButtons: this.state.width === 'xs' || this.state.width === 'sm' || this.state.width === 'md', changed: this.state.changed, onSave: isClose => this.onSave(isClose), onClose: () => {
707
748
  if (this.state.changed) {
708
749
  this.setState({ confirmClose: true });
709
750
  }
710
751
  else {
711
752
  GenericApp.onClose();
712
753
  }
713
- } }) : null,
714
- this.state.confirmClose ? react_1.default.createElement(Confirm_1.default, { title: i18n_1.default.t('ra_Please confirm'), text: i18n_1.default.t('ra_Some data are not stored. Discard?'), ok: i18n_1.default.t('ra_Discard'), cancel: i18n_1.default.t('ra_Cancel'), onClose: isYes => this.setState({ confirmClose: false }, () => isYes && GenericApp.onClose()) }) : null);
754
+ } })) : null,
755
+ this.state.confirmClose ? (react_1.default.createElement(Confirm_1.default, { title: i18n_1.default.t('ra_Please confirm'), text: i18n_1.default.t('ra_Some data are not stored. Discard?'), ok: i18n_1.default.t('ra_Discard'), cancel: i18n_1.default.t('ra_Cancel'), onClose: isYes => this.setState({ confirmClose: false }, () => isYes && GenericApp.onClose()) })) : null));
715
756
  }
716
757
  _updateNativeValue(obj, attrs, value) {
717
758
  if (typeof attrs !== 'object') {
@@ -740,6 +781,7 @@ class GenericApp extends Router_1.default {
740
781
  }
741
782
  /**
742
783
  * Update the native value
784
+ *
743
785
  * @param attr The attribute name with dots as delimiter.
744
786
  * @param value The new value.
745
787
  * @param cb Callback which will be called upon completion.
@@ -752,7 +794,7 @@ class GenericApp extends Router_1.default {
752
794
  try {
753
795
  window.parent.postMessage(changed ? 'change' : 'nochange', '*');
754
796
  }
755
- catch (e) {
797
+ catch (_a) {
756
798
  // ignore
757
799
  }
758
800
  }
@@ -767,7 +809,8 @@ class GenericApp extends Router_1.default {
767
809
  }
768
810
  /**
769
811
  * Sets the toast to be shown.
770
- * @param {string} toast
812
+ *
813
+ * @param toast Text to be shown.
771
814
  */
772
815
  showToast(toast) {
773
816
  this.setState({ toast });
@@ -776,11 +819,11 @@ class GenericApp extends Router_1.default {
776
819
  * Renders helper dialogs
777
820
  */
778
821
  renderHelperDialogs() {
779
- return react_1.default.createElement(react_1.default.Fragment, null,
822
+ return (react_1.default.createElement(react_1.default.Fragment, null,
780
823
  this.renderError(),
781
824
  this.renderToast(),
782
825
  this.renderSaveCloseButtons(),
783
- this.renderAlertSnackbar());
826
+ this.renderAlertSnackbar()));
784
827
  }
785
828
  /**
786
829
  * Renders this component.
@@ -789,11 +832,11 @@ class GenericApp extends Router_1.default {
789
832
  if (!this.state.loaded) {
790
833
  return react_1.default.createElement(Loader_1.default, { themeType: this.state.themeType });
791
834
  }
792
- return react_1.default.createElement("div", { className: "App" },
835
+ return (react_1.default.createElement("div", { className: "App" },
793
836
  this.renderError(),
794
837
  this.renderToast(),
795
838
  this.renderSaveCloseButtons(),
796
- this.renderAlertSnackbar());
839
+ this.renderAlertSnackbar()));
797
840
  }
798
841
  }
799
842
  exports.default = GenericApp;