@iobroker/adapter-react-v5 7.2.3 → 7.2.6

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 (375) hide show
  1. package/README.md +3 -3
  2. package/build/AdminConnection.d.ts +1 -0
  3. package/build/AdminConnection.js +2 -0
  4. package/build/AdminConnection.js.map +1 -0
  5. package/{src/Components/404.tsx → build/Components/404.js} +14 -39
  6. package/build/Components/404.js.map +1 -0
  7. package/{Components → build/Components}/ColorPicker.d.ts +2 -2
  8. package/{Components → build/Components}/ColorPicker.js +50 -65
  9. package/build/Components/ColorPicker.js.map +1 -0
  10. package/{Components → build/Components}/ComplexCron.d.ts +2 -2
  11. package/{Components → build/Components}/ComplexCron.js +43 -71
  12. package/build/Components/ComplexCron.js.map +1 -0
  13. package/{Components → build/Components}/CopyToClipboard.d.ts +1 -2
  14. package/{src/Components/CopyToClipboard.tsx → build/Components/CopyToClipboard.js} +20 -38
  15. package/build/Components/CopyToClipboard.js.map +1 -0
  16. package/{Components → build/Components}/CustomModal.d.ts +3 -3
  17. package/build/Components/CustomModal.js +60 -0
  18. package/build/Components/CustomModal.js.map +1 -0
  19. package/{Components → build/Components}/FileBrowser.d.ts +21 -21
  20. package/{Components → build/Components}/FileBrowser.js +253 -248
  21. package/build/Components/FileBrowser.js.map +1 -0
  22. package/build/Components/FileViewer.d.ts +48 -0
  23. package/build/Components/FileViewer.js +277 -0
  24. package/build/Components/FileViewer.js.map +1 -0
  25. package/{Components → build/Components}/Icon.d.ts +1 -1
  26. package/build/Components/Icon.js +140 -0
  27. package/build/Components/Icon.js.map +1 -0
  28. package/{Components → build/Components}/IconPicker.d.ts +2 -2
  29. package/build/Components/IconPicker.js +73 -0
  30. package/build/Components/IconPicker.js.map +1 -0
  31. package/{Components → build/Components}/IconSelector.d.ts +3 -3
  32. package/{Components → build/Components}/IconSelector.js +29 -57
  33. package/build/Components/IconSelector.js.map +1 -0
  34. package/{Components → build/Components}/Image.d.ts +2 -2
  35. package/{Components → build/Components}/Image.js +16 -22
  36. package/build/Components/Image.js.map +1 -0
  37. package/{Components → build/Components}/Loader.d.ts +2 -2
  38. package/{Components → build/Components}/Loader.js +15 -40
  39. package/build/Components/Loader.js.map +1 -0
  40. package/{Components → build/Components}/Loaders/MV.d.ts +2 -2
  41. package/build/Components/Loaders/MV.js +61 -0
  42. package/build/Components/Loaders/MV.js.map +1 -0
  43. package/{Components → build/Components}/Loaders/PT.d.ts +2 -2
  44. package/{Components → build/Components}/Loaders/PT.js +10 -35
  45. package/build/Components/Loaders/PT.js.map +1 -0
  46. package/{Components → build/Components}/Loaders/Vendor.d.ts +2 -2
  47. package/build/Components/Loaders/Vendor.js +52 -0
  48. package/build/Components/Loaders/Vendor.js.map +1 -0
  49. package/{Components → build/Components}/Logo.d.ts +2 -2
  50. package/build/Components/Logo.js +108 -0
  51. package/build/Components/Logo.js.map +1 -0
  52. package/{Components → build/Components}/MDUtils.d.ts +1 -2
  53. package/{Components → build/Components}/MDUtils.js +4 -9
  54. package/build/Components/MDUtils.js.map +1 -0
  55. package/{Components → build/Components}/ObjectBrowser.d.ts +7 -4
  56. package/{Components → build/Components}/ObjectBrowser.js +1183 -1133
  57. package/build/Components/ObjectBrowser.js.map +1 -0
  58. package/{Components → build/Components}/Router.d.ts +1 -2
  59. package/{Components → build/Components}/Router.js +6 -7
  60. package/build/Components/Router.js.map +1 -0
  61. package/{Components → build/Components}/SaveCloseButtons.d.ts +2 -2
  62. package/build/Components/SaveCloseButtons.js +65 -0
  63. package/build/Components/SaveCloseButtons.js.map +1 -0
  64. package/{Components → build/Components}/Schedule.d.ts +3 -3
  65. package/{Components → build/Components}/Schedule.js +246 -261
  66. package/build/Components/Schedule.js.map +1 -0
  67. package/{Components → build/Components}/SelectWithIcon.d.ts +2 -2
  68. package/build/Components/SelectWithIcon.js +135 -0
  69. package/build/Components/SelectWithIcon.js.map +1 -0
  70. package/build/Components/SimpleCron/cronText.js +15 -0
  71. package/build/Components/SimpleCron/cronText.js.map +1 -0
  72. package/{Components → build/Components}/SimpleCron/index.d.ts +2 -2
  73. package/{Components → build/Components}/SimpleCron/index.js +55 -56
  74. package/build/Components/SimpleCron/index.js.map +1 -0
  75. package/{Components → build/Components}/TabContainer.d.ts +2 -2
  76. package/build/Components/TabContainer.js +23 -0
  77. package/build/Components/TabContainer.js.map +1 -0
  78. package/{Components → build/Components}/TabContent.d.ts +3 -2
  79. package/build/Components/TabContent.js +20 -0
  80. package/build/Components/TabContent.js.map +1 -0
  81. package/build/Components/TabHeader.d.ts +6 -0
  82. package/build/Components/TabHeader.js +6 -0
  83. package/build/Components/TabHeader.js.map +1 -0
  84. package/{Components → build/Components}/TableResize.d.ts +2 -2
  85. package/{src/Components/TableResize.tsx → build/Components/TableResize.js} +64 -134
  86. package/build/Components/TableResize.js.map +1 -0
  87. package/{Components → build/Components}/TextWithIcon.d.ts +2 -2
  88. package/{src/Components/TextWithIcon.tsx → build/Components/TextWithIcon.js} +30 -75
  89. package/build/Components/TextWithIcon.js.map +1 -0
  90. package/{Components → build/Components}/ToggleThemeMenu.d.ts +1 -1
  91. package/build/Components/ToggleThemeMenu.js +13 -0
  92. package/build/Components/ToggleThemeMenu.js.map +1 -0
  93. package/{Components → build/Components}/TreeTable.d.ts +3 -3
  94. package/{Components → build/Components}/TreeTable.js +87 -99
  95. package/build/Components/TreeTable.js.map +1 -0
  96. package/{Components → build/Components}/UploadImage.d.ts +2 -2
  97. package/{Components → build/Components}/UploadImage.js +46 -69
  98. package/build/Components/UploadImage.js.map +1 -0
  99. package/{Components → build/Components}/Utils.d.ts +2 -2
  100. package/{Components → build/Components}/Utils.js +47 -60
  101. package/build/Components/Utils.js.map +1 -0
  102. package/build/Components/withWidth.d.ts +2 -0
  103. package/build/Components/withWidth.js +22 -0
  104. package/build/Components/withWidth.js.map +1 -0
  105. package/build/Connection.d.ts +1 -0
  106. package/build/Connection.js +2 -0
  107. package/build/Connection.js.map +1 -0
  108. package/{Dialogs → build/Dialogs}/ComplexCron.d.ts +2 -2
  109. package/build/Dialogs/ComplexCron.js +85 -0
  110. package/build/Dialogs/ComplexCron.js.map +1 -0
  111. package/{Dialogs → build/Dialogs}/Confirm.d.ts +2 -2
  112. package/build/Dialogs/Confirm.js +83 -0
  113. package/build/Dialogs/Confirm.js.map +1 -0
  114. package/{Dialogs → build/Dialogs}/Cron.d.ts +2 -2
  115. package/build/Dialogs/Cron.js +72 -0
  116. package/build/Dialogs/Cron.js.map +1 -0
  117. package/{Dialogs → build/Dialogs}/Error.d.ts +2 -2
  118. package/build/Dialogs/Error.js +27 -0
  119. package/build/Dialogs/Error.js.map +1 -0
  120. package/{Dialogs → build/Dialogs}/Message.d.ts +2 -2
  121. package/build/Dialogs/Message.js +29 -0
  122. package/build/Dialogs/Message.js.map +1 -0
  123. package/{Dialogs → build/Dialogs}/SelectFile.d.ts +2 -2
  124. package/build/Dialogs/SelectFile.js +116 -0
  125. package/build/Dialogs/SelectFile.js.map +1 -0
  126. package/{Dialogs → build/Dialogs}/SelectID.d.ts +3 -3
  127. package/{Dialogs → build/Dialogs}/SelectID.js +28 -53
  128. package/build/Dialogs/SelectID.js.map +1 -0
  129. package/{Dialogs → build/Dialogs}/SimpleCron.d.ts +2 -2
  130. package/build/Dialogs/SimpleCron.js +46 -0
  131. package/build/Dialogs/SimpleCron.js.map +1 -0
  132. package/build/Dialogs/TextInput.d.ts +2 -0
  133. package/build/Dialogs/TextInput.js +31 -0
  134. package/build/Dialogs/TextInput.js.map +1 -0
  135. package/{GenericApp.d.ts → build/GenericApp.d.ts} +2 -3
  136. package/{GenericApp.js → build/GenericApp.js} +162 -176
  137. package/build/GenericApp.js.map +1 -0
  138. package/{LegacyConnection.d.ts → build/LegacyConnection.d.ts} +69 -4
  139. package/{LegacyConnection.js → build/LegacyConnection.js} +106 -99
  140. package/build/LegacyConnection.js.map +1 -0
  141. package/{Prompt.d.ts → build/Prompt.d.ts} +1 -1
  142. package/{Prompt.js → build/Prompt.js} +3 -4
  143. package/build/Prompt.js.map +1 -0
  144. package/build/Theme.d.ts +5 -0
  145. package/{Theme.js → build/Theme.js} +37 -32
  146. package/build/Theme.js.map +1 -0
  147. package/build/assets/devices/parseNames.d.ts +0 -0
  148. package/build/assets/devices/parseNames.js +35 -0
  149. package/build/assets/devices/parseNames.js.map +1 -0
  150. package/build/assets/rooms/parseNames.d.ts +0 -0
  151. package/build/assets/rooms/parseNames.js +35 -0
  152. package/build/assets/rooms/parseNames.js.map +1 -0
  153. package/build/dictionary.d.ts +1 -0
  154. package/build/dictionary.js +25 -0
  155. package/build/dictionary.js.map +1 -0
  156. package/build/i18n/de.json +449 -0
  157. package/build/i18n/en.json +449 -0
  158. package/build/i18n/es.json +449 -0
  159. package/build/i18n/fr.json +449 -0
  160. package/build/i18n/it.json +449 -0
  161. package/build/i18n/nl.json +449 -0
  162. package/build/i18n/pl.json +449 -0
  163. package/build/i18n/pt.json +449 -0
  164. package/build/i18n/ru.json +449 -0
  165. package/build/i18n/uk.json +449 -0
  166. package/build/i18n/zh-cn.json +449 -0
  167. package/{i18n.d.ts → build/i18n.d.ts} +2 -2
  168. package/{i18n.js → build/i18n.js} +9 -11
  169. package/build/i18n.js.map +1 -0
  170. package/build/icons/IconAdapter.d.ts +3 -0
  171. package/build/icons/IconAdapter.js +6 -0
  172. package/build/icons/IconAdapter.js.map +1 -0
  173. package/build/icons/IconAlias.d.ts +3 -0
  174. package/build/icons/IconAlias.js +6 -0
  175. package/build/icons/IconAlias.js.map +1 -0
  176. package/build/icons/IconChannel.d.ts +3 -0
  177. package/build/icons/IconChannel.js +9 -0
  178. package/build/icons/IconChannel.js.map +1 -0
  179. package/build/icons/IconClearFilter.d.ts +3 -0
  180. package/build/icons/IconClearFilter.js +7 -0
  181. package/build/icons/IconClearFilter.js.map +1 -0
  182. package/build/icons/IconClosed.d.ts +3 -0
  183. package/build/icons/IconClosed.js +6 -0
  184. package/build/icons/IconClosed.js.map +1 -0
  185. package/build/icons/IconCopy.d.ts +3 -0
  186. package/build/icons/IconCopy.js +5 -0
  187. package/build/icons/IconCopy.js.map +1 -0
  188. package/build/icons/IconDevice.d.ts +3 -0
  189. package/build/icons/IconDevice.js +15 -0
  190. package/build/icons/IconDevice.js.map +1 -0
  191. package/build/icons/IconDocument.d.ts +3 -0
  192. package/build/icons/IconDocument.js +6 -0
  193. package/build/icons/IconDocument.js.map +1 -0
  194. package/build/icons/IconDocumentReadOnly.d.ts +3 -0
  195. package/build/icons/IconDocumentReadOnly.js +7 -0
  196. package/build/icons/IconDocumentReadOnly.js.map +1 -0
  197. package/build/icons/IconExpert.d.ts +3 -0
  198. package/build/icons/IconExpert.js +6 -0
  199. package/build/icons/IconExpert.js.map +1 -0
  200. package/build/icons/IconFx.d.ts +3 -0
  201. package/build/icons/IconFx.js +5 -0
  202. package/build/icons/IconFx.js.map +1 -0
  203. package/build/icons/IconInstance.d.ts +3 -0
  204. package/build/icons/IconInstance.js +6 -0
  205. package/build/icons/IconInstance.js.map +1 -0
  206. package/build/icons/IconLogout.d.ts +3 -0
  207. package/build/icons/IconLogout.js +6 -0
  208. package/build/icons/IconLogout.js.map +1 -0
  209. package/build/icons/IconNoIcon.d.ts +3 -0
  210. package/build/icons/IconNoIcon.js +5 -0
  211. package/build/icons/IconNoIcon.js.map +1 -0
  212. package/build/icons/IconOpen.d.ts +3 -0
  213. package/build/icons/IconOpen.js +6 -0
  214. package/build/icons/IconOpen.js.map +1 -0
  215. package/{icons → build/icons}/IconProps.d.ts +1 -1
  216. package/build/icons/IconProps.js +2 -0
  217. package/build/icons/IconProps.js.map +1 -0
  218. package/build/icons/IconState.d.ts +3 -0
  219. package/build/icons/IconState.js +6 -0
  220. package/build/icons/IconState.js.map +1 -0
  221. package/build/index.d.ts +67 -0
  222. package/build/index.js +67 -0
  223. package/build/index.js.map +1 -0
  224. package/{types.d.ts → build/types.d.ts} +1 -1
  225. package/package.json +84 -47
  226. package/AdminConnection.d.ts +0 -2
  227. package/AdminConnection.js +0 -4
  228. package/Components/404.js +0 -101
  229. package/Components/CopyToClipboard.js +0 -163
  230. package/Components/CustomModal.js +0 -88
  231. package/Components/FileViewer.d.ts +0 -10
  232. package/Components/FileViewer.js +0 -305
  233. package/Components/Icon.js +0 -148
  234. package/Components/IconPicker.js +0 -98
  235. package/Components/Loaders/MV.js +0 -66
  236. package/Components/Loaders/Vendor.js +0 -77
  237. package/Components/Logo.js +0 -117
  238. package/Components/SaveCloseButtons.js +0 -69
  239. package/Components/SelectWithIcon.js +0 -168
  240. package/Components/SimpleCron/cronText.js +0 -19
  241. package/Components/TabContainer.js +0 -25
  242. package/Components/TabContent.js +0 -21
  243. package/Components/TabHeader.d.ts +0 -6
  244. package/Components/TabHeader.js +0 -11
  245. package/Components/TableResize.js +0 -226
  246. package/Components/TextWithIcon.js +0 -119
  247. package/Components/ToggleThemeMenu.js +0 -18
  248. package/Components/withWidth.d.ts +0 -3
  249. package/Components/withWidth.js +0 -27
  250. package/Connection.d.ts +0 -3
  251. package/Connection.js +0 -8
  252. package/Dialogs/ComplexCron.js +0 -90
  253. package/Dialogs/Confirm.js +0 -111
  254. package/Dialogs/Cron.js +0 -100
  255. package/Dialogs/Error.js +0 -55
  256. package/Dialogs/Message.js +0 -57
  257. package/Dialogs/SelectFile.js +0 -119
  258. package/Dialogs/SimpleCron.js +0 -51
  259. package/Dialogs/TextInput.d.ts +0 -3
  260. package/Dialogs/TextInput.js +0 -35
  261. package/Theme.d.ts +0 -6
  262. package/i18n/de.json +0 -449
  263. package/i18n/en.json +0 -449
  264. package/i18n/es.json +0 -449
  265. package/i18n/fr.json +0 -449
  266. package/i18n/it.json +0 -449
  267. package/i18n/nl.json +0 -449
  268. package/i18n/pl.json +0 -449
  269. package/i18n/pt.json +0 -449
  270. package/i18n/ru.json +0 -449
  271. package/i18n/uk.json +0 -449
  272. package/i18n/zh-cn.json +0 -449
  273. package/icons/IconAdapter.d.ts +0 -4
  274. package/icons/IconAdapter.js +0 -10
  275. package/icons/IconAlias.d.ts +0 -4
  276. package/icons/IconAlias.js +0 -10
  277. package/icons/IconChannel.d.ts +0 -4
  278. package/icons/IconChannel.js +0 -13
  279. package/icons/IconClearFilter.d.ts +0 -4
  280. package/icons/IconClearFilter.js +0 -11
  281. package/icons/IconClosed.d.ts +0 -4
  282. package/icons/IconClosed.js +0 -10
  283. package/icons/IconCopy.d.ts +0 -4
  284. package/icons/IconCopy.js +0 -9
  285. package/icons/IconDevice.d.ts +0 -4
  286. package/icons/IconDevice.js +0 -19
  287. package/icons/IconDocument.d.ts +0 -4
  288. package/icons/IconDocument.js +0 -10
  289. package/icons/IconDocumentReadOnly.d.ts +0 -4
  290. package/icons/IconDocumentReadOnly.js +0 -11
  291. package/icons/IconExpert.d.ts +0 -4
  292. package/icons/IconExpert.js +0 -10
  293. package/icons/IconFx.d.ts +0 -4
  294. package/icons/IconFx.js +0 -9
  295. package/icons/IconInstance.d.ts +0 -4
  296. package/icons/IconInstance.js +0 -10
  297. package/icons/IconLogout.d.ts +0 -4
  298. package/icons/IconLogout.js +0 -10
  299. package/icons/IconNoIcon.d.ts +0 -4
  300. package/icons/IconNoIcon.js +0 -9
  301. package/icons/IconOpen.d.ts +0 -4
  302. package/icons/IconOpen.js +0 -10
  303. package/icons/IconProps.js +0 -2
  304. package/icons/IconState.d.ts +0 -4
  305. package/icons/IconState.js +0 -10
  306. package/index.d.ts +0 -128
  307. package/index.js +0 -215
  308. package/src/AdminConnection.tsx +0 -3
  309. package/src/Components/ColorPicker.tsx +0 -343
  310. package/src/Components/ComplexCron.tsx +0 -561
  311. package/src/Components/CustomModal.tsx +0 -170
  312. package/src/Components/FileBrowser.tsx +0 -2550
  313. package/src/Components/FileViewer.tsx +0 -412
  314. package/src/Components/Icon.tsx +0 -238
  315. package/src/Components/IconPicker.tsx +0 -165
  316. package/src/Components/IconSelector.tsx +0 -2220
  317. package/src/Components/Image.tsx +0 -193
  318. package/src/Components/Loader.tsx +0 -328
  319. package/src/Components/Logo.tsx +0 -176
  320. package/src/Components/MDUtils.tsx +0 -104
  321. package/src/Components/ObjectBrowser.tsx +0 -8935
  322. package/src/Components/Router.tsx +0 -90
  323. package/src/Components/SaveCloseButtons.tsx +0 -117
  324. package/src/Components/Schedule.tsx +0 -1995
  325. package/src/Components/SelectWithIcon.tsx +0 -239
  326. package/src/Components/TabContainer.tsx +0 -57
  327. package/src/Components/TabContent.tsx +0 -38
  328. package/src/Components/TabHeader.tsx +0 -20
  329. package/src/Components/ToggleThemeMenu.tsx +0 -52
  330. package/src/Components/TreeTable.tsx +0 -1002
  331. package/src/Components/UploadImage.tsx +0 -643
  332. package/src/Components/Utils.tsx +0 -1802
  333. package/src/Components/loader.css +0 -231
  334. package/src/Components/withWidth.tsx +0 -32
  335. package/src/Connection.tsx +0 -5
  336. package/src/Dialogs/ComplexCron.tsx +0 -163
  337. package/src/Dialogs/Confirm.tsx +0 -185
  338. package/src/Dialogs/Cron.tsx +0 -192
  339. package/src/Dialogs/Error.tsx +0 -67
  340. package/src/Dialogs/Message.tsx +0 -73
  341. package/src/Dialogs/SelectFile.tsx +0 -280
  342. package/src/Dialogs/SelectID.tsx +0 -310
  343. package/src/Dialogs/SimpleCron.tsx +0 -101
  344. package/src/Dialogs/TextInput.tsx +0 -99
  345. package/src/GenericApp.tsx +0 -1076
  346. package/src/LegacyConnection.tsx +0 -3720
  347. package/src/Prompt.tsx +0 -22
  348. package/src/Theme.tsx +0 -472
  349. package/src/icons/IconAdapter.tsx +0 -22
  350. package/src/icons/IconAlias.tsx +0 -22
  351. package/src/icons/IconChannel.tsx +0 -60
  352. package/src/icons/IconClearFilter.tsx +0 -24
  353. package/src/icons/IconClosed.tsx +0 -22
  354. package/src/icons/IconCopy.tsx +0 -21
  355. package/src/icons/IconDevice.tsx +0 -126
  356. package/src/icons/IconDocument.tsx +0 -22
  357. package/src/icons/IconDocumentReadOnly.tsx +0 -27
  358. package/src/icons/IconExpert.tsx +0 -26
  359. package/src/icons/IconFx.tsx +0 -38
  360. package/src/icons/IconInstance.tsx +0 -22
  361. package/src/icons/IconLogout.tsx +0 -32
  362. package/src/icons/IconNoIcon.tsx +0 -21
  363. package/src/icons/IconOpen.tsx +0 -22
  364. package/src/icons/IconProps.tsx +0 -16
  365. package/src/icons/IconState.tsx +0 -38
  366. package/src/index.css +0 -56
  367. /package/{Components → build/Components}/404.d.ts +0 -0
  368. /package/{Components → build/Components}/SimpleCron/cronText.d.ts +0 -0
  369. /package/{assets → build/assets}/devices.json +0 -0
  370. /package/{assets → build/assets}/lamp_ceiling.svg +0 -0
  371. /package/{assets → build/assets}/lamp_table.svg +0 -0
  372. /package/{assets → build/assets}/no_icon.svg +0 -0
  373. /package/{assets → build/assets}/rooms.json +0 -0
  374. /package/{index.css → build/index.css} +0 -0
  375. /package/{tasks.js → tasksExample.js} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Utils.js","sourceRoot":"./src/","sources":["Components/Utils.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright 2018-2024 Denis Haev <dogafox@gmail.com>\n *\n * MIT License\n *\n */\nimport React from 'react';\n\nimport { copy } from './CopyToClipboard';\nimport { I18n } from '../i18n';\nimport type { IobTheme, ThemeName, ThemeType } from '../types';\n\nconst NAMESPACE = 'material';\nconst days = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\nconst months = ['Jan', 'Feb', 'Mar', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\nconst QUALITY_BITS: Record<ioBroker.STATE_QUALITY[keyof ioBroker.STATE_QUALITY], string> = {\n 0x00: '0x00 - good',\n\n 0x01: '0x01 - general problem',\n 0x02: '0x02 - no connection problem',\n\n 0x10: '0x10 - substitute value from controller',\n 0x20: '0x20 - substitute initial value',\n 0x40: '0x40 - substitute value from device or instance',\n 0x80: '0x80 - substitute value from sensor',\n\n 0x11: '0x11 - general problem by instance',\n 0x41: '0x41 - general problem by device',\n 0x81: '0x81 - general problem by sensor',\n\n 0x12: '0x12 - instance not connected',\n 0x42: '0x42 - device not connected',\n 0x82: '0x82 - sensor not connected',\n\n 0x44: '0x44 - device reports error',\n 0x84: '0x84 - sensor reports error',\n};\nconst SIGNATURES: Record<string, string> = {\n JVBERi0: 'pdf',\n R0lGODdh: 'gif',\n R0lGODlh: 'gif',\n iVBORw0KGgo: 'png',\n '/9j/': 'jpg',\n PHN2Zw: 'svg',\n Qk1: 'bmp',\n AAABAA: 'ico', // 00 00 01 00 according to https://en.wikipedia.org/wiki/List_of_file_signatures\n};\n\ntype SmartName =\n | null\n | false\n | string\n | ({ [lang in ioBroker.Languages]?: string } & {\n /** Which kind of device it is */\n smartType?: string | null;\n /** Which value to set when the ON command is issued */\n byON?: string | null;\n });\n\ntype ClassDictionary = Record<string, any>;\ntype ClassValue = ClassArray | ClassDictionary | string | number | null | boolean | undefined;\ntype ClassArray = ClassValue[];\n\nexport class Utils {\n static namespace = NAMESPACE;\n\n static INSTANCES = 'instances';\n\n static dateFormat = ['DD', 'MM'];\n\n static FORBIDDEN_CHARS = /[^._\\-/ :!#$%&()+=@^{}|~\\p{Ll}\\p{Lu}\\p{Nd}]+/gu;\n\n /**\n * Capitalize words.\n */\n static CapitalWords(name: string | null | undefined): string {\n return (name || '')\n .split(/[\\s_]/)\n .filter(item => item)\n .map(word => (word ? word[0].toUpperCase() + word.substring(1).toLowerCase() : ''))\n .join(' ');\n }\n\n static formatSeconds(seconds: number): string {\n const days_ = Math.floor(seconds / (3600 * 24));\n seconds %= 3600 * 24;\n\n const hours = Math.floor(seconds / 3600)\n .toString()\n .padStart(2, '0');\n seconds %= 3600;\n\n const minutes = Math.floor(seconds / 60)\n .toString()\n .padStart(2, '0');\n seconds %= 60;\n\n const secondsStr = Math.floor(seconds).toString().padStart(2, '0');\n\n let text = '';\n if (days_) {\n text += `${days_} ${I18n.t('ra_daysShortText')} `;\n }\n text += `${hours}:${minutes}:${secondsStr}`;\n\n return text;\n }\n\n /**\n * Get the name of the object by id from the name or description.\n */\n static getObjectName(\n objects: Record<string, ioBroker.Object>,\n id: string,\n settings?: { name: ioBroker.StringOrTranslated } | ioBroker.Languages | null,\n options?: { language?: ioBroker.Languages },\n /** Set to true to get the description. */\n isDesc?: boolean,\n ): string {\n const item = objects[id];\n let text: string | undefined;\n\n if (typeof settings === 'string' && !options) {\n options = { language: settings };\n settings = null;\n }\n\n options = options || {};\n if (!options.language) {\n options.language =\n (objects['system.config'] &&\n objects['system.config'].common &&\n objects['system.config'].common.language) ||\n window.sysLang ||\n 'en';\n }\n if ((settings as { name: ioBroker.StringOrTranslated })?.name) {\n const textObj = (settings as { name: ioBroker.StringOrTranslated }).name;\n if (typeof textObj === 'object') {\n text = (options.language && textObj[options.language]) || textObj.en;\n } else {\n text = textObj;\n }\n } else if (isDesc && item?.common?.desc) {\n const textObj = item.common.desc;\n if (typeof textObj === 'object') {\n text = (options.language && textObj[options.language]) || textObj.en || textObj.de || textObj.ru || '';\n } else {\n text = textObj;\n }\n text = (text || '').toString().replace(/[_.]/g, ' ');\n\n if (text === text.toUpperCase()) {\n text = text[0] + text.substring(1).toLowerCase();\n }\n } else if (!isDesc && item?.common) {\n const textObj = item.common.name || item.common.desc;\n if (textObj && typeof textObj === 'object') {\n text = (options.language && textObj[options.language]) || textObj.en || textObj.de || textObj.ru || '';\n } else {\n text = textObj as string;\n }\n text = (text || '').toString().replace(/[_.]/g, ' ');\n\n if (text === text.toUpperCase()) {\n text = text[0] + text.substring(1).toLowerCase();\n }\n } else {\n const pos = id.lastIndexOf('.');\n text = id.substring(pos + 1).replace(/[_.]/g, ' ');\n text = Utils.CapitalWords(text);\n }\n\n return text?.trim() || '';\n }\n\n /**\n * Get the name of the object from the name or description.\n */\n static getObjectNameFromObj(\n obj: ioBroker.PartialObject,\n /** settings or language */\n settings: { name: ioBroker.StringOrTranslated } | ioBroker.Languages | null,\n options?: { language?: ioBroker.Languages },\n /** Set to true to get the description. */\n isDesc?: boolean,\n /** Allow using spaces in name (by edit) */\n noTrim?: boolean,\n ): string {\n const item = obj;\n let text = (obj && obj._id) || '';\n\n if (typeof settings === 'string' && !options) {\n options = { language: settings };\n settings = null;\n }\n\n options = options || {};\n\n if ((settings as { name: ioBroker.StringOrTranslated })?.name) {\n const name = (settings as { name: ioBroker.StringOrTranslated }).name;\n if (typeof name === 'object') {\n text = (options.language && name[options.language]) || name.en;\n } else {\n text = name;\n }\n } else if (isDesc && item?.common?.desc) {\n const desc: ioBroker.StringOrTranslated = item.common.desc;\n if (typeof desc === 'object') {\n text = (options.language && desc[options.language]) || desc.en;\n } else {\n text = desc;\n }\n text = (text || '').toString().replace(/[_.]/g, ' ');\n\n if (text === text.toUpperCase()) {\n text = text[0] + text.substring(1).toLowerCase();\n }\n } else if (!isDesc && item?.common?.name) {\n let name = item.common.name;\n if (!name && item.common.desc) {\n name = item.common.desc;\n }\n if (typeof name === 'object') {\n text = (options.language && name[options.language]) || name.en;\n } else {\n text = name;\n }\n text = (text || '').toString().replace(/[_.]/g, ' ');\n\n if (text === text.toUpperCase()) {\n text = text[0] + text.substring(1).toLowerCase();\n }\n }\n return noTrim ? text : text.trim();\n }\n\n /**\n * Extracts from the object material settings, depends on username\n */\n static getSettingsOrder(\n obj: ioBroker.StateObject | ioBroker.StateCommon,\n forEnumId: string,\n options: { user?: string },\n ): string | null {\n let common: ioBroker.StateCommon | undefined;\n if (obj && Object.prototype.hasOwnProperty.call(obj, 'common')) {\n common = (obj as ioBroker.StateObject).common;\n } else {\n common = obj as any as ioBroker.StateCommon;\n }\n let settings;\n if (common?.custom) {\n settings = common.custom[NAMESPACE];\n const user = options.user || 'admin';\n if (settings && settings[user]) {\n if (forEnumId) {\n if (settings[user].subOrder && settings[user].subOrder[forEnumId]) {\n return JSON.parse(JSON.stringify(settings[user].subOrder[forEnumId]));\n }\n } else if (settings[user].order) {\n return JSON.parse(JSON.stringify(settings[user].order));\n }\n }\n }\n return null;\n }\n\n /**\n Used in material\n */\n static getSettingsCustomURLs(\n obj: ioBroker.StateObject | ioBroker.StateCommon,\n forEnumId: string,\n options: { user?: string },\n ): string | null {\n let common: ioBroker.StateCommon | undefined;\n if (obj && Object.prototype.hasOwnProperty.call(obj, 'common')) {\n common = (obj as ioBroker.StateObject).common;\n } else {\n common = obj as any as ioBroker.StateCommon;\n }\n let settings;\n if (common?.custom) {\n settings = common.custom[NAMESPACE];\n const user = options.user || 'admin';\n if (settings && settings[user]) {\n if (forEnumId) {\n if (settings[user].subURLs && settings[user].subURLs[forEnumId]) {\n return JSON.parse(JSON.stringify(settings[user].subURLs[forEnumId]));\n }\n } else if (settings[user].URLs) {\n return JSON.parse(JSON.stringify(settings[user].URLs));\n }\n }\n }\n return null;\n }\n\n /**\n * Reorder the array items in list between source and dest.\n */\n static reorder(list: Iterable<any> | ArrayLike<any>, source: number, dest: number): Iterable<any> | ArrayLike<any> {\n const result = Array.from(list);\n const [removed] = result.splice(source, 1);\n result.splice(dest, 0, removed);\n return result;\n }\n\n /**\n Get smart name settings for the given object.\n */\n static getSettings(\n obj: ioBroker.StateObject | ioBroker.StateCommon,\n options: {\n id?: string;\n user?: string;\n name?: ioBroker.StringOrTranslated;\n icon?: string;\n color?: string;\n language?: ioBroker.Languages;\n },\n defaultEnabling?: boolean,\n ): {\n name: string;\n enabled?: boolean;\n useCustom?: boolean;\n icon?: string;\n color?: string;\n } {\n let settings;\n const id = (obj as ioBroker.StateObject)?._id || options?.id;\n let common: ioBroker.StateCommon | undefined;\n if (obj && Object.prototype.hasOwnProperty.call(obj, 'common')) {\n common = (obj as ioBroker.StateObject).common;\n } else {\n common = obj as ioBroker.StateCommon;\n }\n if (common?.custom) {\n settings = common.custom;\n settings =\n settings[NAMESPACE] && settings[NAMESPACE][options.user || 'admin']\n ? JSON.parse(JSON.stringify(settings[NAMESPACE][options.user || 'admin']))\n : { enabled: true };\n } else {\n settings = { enabled: defaultEnabling === undefined ? true : defaultEnabling, useCustom: false };\n }\n\n if (!Object.prototype.hasOwnProperty.call(settings, 'enabled')) {\n settings.enabled = defaultEnabling === undefined ? true : defaultEnabling;\n }\n\n if (options) {\n if (!settings.name && options.name) {\n settings.name = options.name;\n }\n if (!settings.icon && options.icon) {\n settings.icon = options.icon;\n }\n if (!settings.color && options.color) {\n settings.color = options.color;\n }\n }\n\n if (common) {\n if (!settings.color && common.color) {\n settings.color = common.color;\n }\n if (!settings.icon && common.icon) {\n settings.icon = common.icon;\n }\n if (!settings.name && common.name) {\n settings.name = common.name;\n }\n }\n\n if (typeof settings.name === 'object') {\n settings.name = (options.language && settings.name[options.language]) || settings.name.en;\n\n settings.name = (settings.name || '').toString().replace(/_/g, ' ');\n\n if (settings.name === settings.name.toUpperCase()) {\n settings.name = settings.name[0] + settings.name.substring(1).toLowerCase();\n }\n }\n if (!settings.name && id) {\n const pos = id.lastIndexOf('.');\n settings.name = id.substring(pos + 1).replace(/[_.]/g, ' ');\n settings.name = (settings.name || '').toString().replace(/_/g, ' ');\n settings.name = Utils.CapitalWords(settings.name);\n }\n\n return settings;\n }\n\n /**\n Sets smartName settings for the given object.\n */\n static setSettings(\n obj: Partial<ioBroker.Object>,\n settings: Record<string, any>,\n options: { user?: string; language?: ioBroker.Languages },\n ): boolean {\n if (obj) {\n obj.common = obj.common || ({} as ioBroker.StateCommon);\n obj.common.custom = obj.common.custom || {};\n obj.common.custom[NAMESPACE] = obj.common.custom[NAMESPACE] || {};\n obj.common.custom[NAMESPACE][options.user || 'admin'] = settings;\n const s = obj.common.custom[NAMESPACE][options.user || 'admin'];\n if (s.useCommon) {\n if (s.color !== undefined) {\n obj.common.color = s.color;\n delete s.color;\n }\n if (s.icon !== undefined) {\n obj.common.icon = s.icon;\n delete s.icon;\n }\n if (s.name !== undefined) {\n if (typeof obj.common.name !== 'object' && options.language) {\n obj.common.name = { [options.language]: s.name } as ioBroker.StringOrTranslated;\n } else if (typeof obj.common.name === 'object' && options.language) {\n obj.common.name[options.language] = s.name;\n }\n delete s.name;\n }\n }\n\n return true;\n }\n\n return false;\n }\n\n /**\n * Get the icon for the given settings.\n */\n static getIcon(\n settings: { icon?: string; name?: string; prefix?: string },\n style?: React.CSSProperties,\n ): React.JSX.Element | null {\n if (settings?.icon) {\n // If UTF-8 icon\n if (settings.icon.length <= 2) {\n return <span style={style || {}}>{settings.icon}</span>;\n }\n if (settings.icon.startsWith('data:image')) {\n return (\n <img\n alt={settings.name}\n src={settings.icon}\n style={style || {}}\n />\n );\n }\n // maybe later some changes for a second type\n return (\n <img\n alt={settings.name}\n src={(settings.prefix || '') + settings.icon}\n style={style}\n />\n );\n }\n return null;\n }\n\n /**\n * Get the icon for the given object.\n */\n static getObjectIcon(id: string | ioBroker.PartialObject, obj?: ioBroker.PartialObject): string | null {\n // If id is Object\n if (typeof id === 'object') {\n obj = id;\n id = obj?._id;\n }\n\n if (obj?.common?.icon) {\n let icon = obj.common.icon;\n // If UTF-8 icon\n if (typeof icon === 'string' && icon.length <= 2) {\n return icon;\n }\n if (icon.startsWith('data:image')) {\n return icon;\n }\n\n const parts = id.split('.');\n if (parts[0] === 'system') {\n icon = `adapter/${parts[2]}${icon.startsWith('/') ? '' : '/'}${icon}`;\n } else {\n icon = `adapter/${parts[0]}${icon.startsWith('/') ? '' : '/'}${icon}`;\n }\n\n if (window.location.pathname.match(/adapter\\/[^/]+\\/[^/]+\\.html/)) {\n icon = `../../${icon}`;\n } else if (window.location.pathname.match(/material\\/[.\\d]+/)) {\n icon = `../../${icon}`;\n } else if (window.location.pathname.match(/material\\//)) {\n icon = `../${icon}`;\n }\n return icon;\n }\n\n return null;\n }\n\n /**\n * Converts word1_word2 to word1Word2.\n */\n static splitCamelCase(text: string | null | undefined): string {\n // if (false && text !== text.toUpperCase()) {\n // const words = text.split(/\\s+/);\n // for (let i = 0; i < words.length; i++) {\n // const word = words[i];\n // if (word.toLowerCase() !== word && word.toUpperCase() !== word) {\n // let z = 0;\n // const ww = [];\n // let start = 0;\n // while (z < word.length) {\n // if (word[z].match(/[A-ZÜÄÖА-Я]/)) {\n // ww.push(word.substring(start, z));\n // start = z;\n // }\n // z++;\n // }\n // if (start !== z) {\n // ww.push(word.substring(start, z));\n // }\n // for (let k = 0; k < ww.length; k++) {\n // words.splice(i + k, 0, ww[k]);\n // }\n // i += ww.length;\n // }\n // }\n //\n // return words.map(w => {\n // w = w.trim();\n // if (w) {\n // return w[0].toUpperCase() + w.substring(1).toLowerCase();\n // }\n // return '';\n // }).join(' ');\n // }\n return text ? Utils.CapitalWords(text) : '';\n }\n\n /**\n * Check if the given color is bright.\n * https://stackoverflow.com/questions/35969656/how-can-i-generate-the-opposite-color-according-to-current-color\n */\n static isUseBright(color: string | null | undefined, defaultValue?: boolean): boolean {\n if (!color) {\n return defaultValue === undefined ? true : defaultValue;\n }\n color = color.toString();\n if (color.startsWith('#')) {\n color = color.slice(1);\n }\n let r;\n let g;\n let b;\n\n const rgb = color.match(/^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?/i);\n if (rgb && rgb.length === 4) {\n r = parseInt(rgb[1], 10);\n g = parseInt(rgb[2], 10);\n b = parseInt(rgb[3], 10);\n } else {\n // convert 3-digit hex to 6-digits.\n if (color.length === 3) {\n color = color[0] + color[0] + color[1] + color[1] + color[2] + color[2];\n }\n // remove alfa channel\n if (color.length === 8) {\n color = color.substring(0, 6);\n } else if (color.length !== 6) {\n return false;\n }\n\n r = parseInt(color.slice(0, 2), 16);\n g = parseInt(color.slice(2, 4), 16);\n b = parseInt(color.slice(4, 6), 16);\n }\n\n // http://stackoverflow.com/a/3943023/112731\n return r * 0.299 + g * 0.587 + b * 0.114 <= 186;\n }\n\n /**\n * Get the time string in the format 00:00.\n */\n static getTimeString(seconds: string | number): string {\n seconds = parseFloat(seconds as string);\n if (Number.isNaN(seconds)) {\n return '--:--';\n }\n const hours = Math.floor(seconds / 3600);\n const minutes = Math.floor((seconds % 3600) / 60)\n .toString()\n .padStart(2, '0');\n const secs = (seconds % 60).toString().padStart(2, '0');\n if (hours) {\n return `${hours}:${minutes}:${secs}`;\n }\n\n return `${minutes}:${secs}`;\n }\n\n /**\n * Gets the wind direction with the given angle (degrees).\n */\n static getWindDirection(\n /** angle in degrees from 0° to 360° */\n angle: number,\n ): string {\n if (angle >= 0 && angle < 11.25) {\n return 'N';\n }\n if (angle >= 11.25 && angle < 33.75) {\n return 'NNE';\n }\n if (angle >= 33.75 && angle < 56.25) {\n return 'NE';\n }\n if (angle >= 56.25 && angle < 78.75) {\n return 'ENE';\n }\n if (angle >= 78.75 && angle < 101.25) {\n return 'E';\n }\n if (angle >= 101.25 && angle < 123.75) {\n return 'ESE';\n }\n if (angle >= 123.75 && angle < 146.25) {\n return 'SE';\n }\n if (angle >= 146.25 && angle < 168.75) {\n return 'SSE';\n }\n if (angle >= 168.75 && angle < 191.25) {\n return 'S';\n }\n if (angle >= 191.25 && angle < 213.75) {\n return 'SSW';\n }\n if (angle >= 213.75 && angle < 236.25) {\n return 'SW';\n }\n if (angle >= 236.25 && angle < 258.75) {\n return 'WSW';\n }\n if (angle >= 258.75 && angle < 281.25) {\n return 'W';\n }\n if (angle >= 281.25 && angle < 303.75) {\n return 'WNW';\n }\n if (angle >= 303.75 && angle < 326.25) {\n return 'NW';\n }\n if (angle >= 326.25 && angle < 348.75) {\n return 'NNW';\n }\n // if (angle >= 348.75) {\n return 'N';\n }\n\n /**\n * Pad the given number with a zero if it's not two digits long.\n */\n static padding(num: string | number): string {\n if (typeof num === 'string') {\n if (num.length < 2) {\n return `0${num}`;\n }\n return num;\n }\n if (num < 10) {\n return `0${num}`;\n }\n return num.toString();\n }\n\n /**\n * Sets the date format.\n */\n static setDataFormat(format: string): void {\n if (format) {\n Utils.dateFormat = format.toUpperCase().split(/[.-/]/);\n Utils.dateFormat.splice(Utils.dateFormat.indexOf('YYYY'), 1);\n }\n }\n\n /**\n * Converts the date to a string.\n */\n static date2string(now: string | number | Date): string {\n if (typeof now === 'string') {\n now = now.trim();\n if (!now) {\n return '';\n }\n // only letters\n if (now.match(/^[\\w\\s]+$/)) {\n // Day of the week\n return now;\n }\n const m = now.match(/(\\d{1,4})[-./](\\d{1,2})[-./](\\d{1,4})/);\n if (m) {\n const a = [parseInt(m[1], 10), parseInt(m[2], 10), parseInt(m[3], 10)];\n // We now have 3 numbers. Let's try to detect where is year, where is day and where is month\n const year = a.find(y => y > 31);\n if (year !== undefined) {\n a.splice(a.indexOf(year), 1);\n\n const day = a.find(mm => mm > 12);\n if (day) {\n a.splice(a.indexOf(day), 1);\n now = new Date(year, a[0] - 1, day);\n } else if (Utils.dateFormat[0][0] === 'M' && Utils.dateFormat[1][0] === 'D') {\n // MM DD\n now = new Date(year, a[0] - 1, a[1]);\n if (Math.abs(now.getTime() - Date.now()) > 3600000 * 24 * 10) {\n now = new Date(year, a[1] - 1, a[0]);\n }\n } else if (Utils.dateFormat[0][0] === 'D' && Utils.dateFormat[1][0] === 'M') {\n // DD MM\n now = new Date(year, a[1] - 1, a[0]);\n if (Math.abs(now.getTime() - Date.now()) > 3600000 * 24 * 10) {\n now = new Date(year, a[0] - 1, a[1]);\n }\n } else {\n now = new Date(now);\n }\n } else {\n now = new Date(now);\n }\n } else {\n now = new Date(now);\n }\n } else {\n now = new Date(now);\n }\n\n let date = I18n.t(`ra_dow_${days[now.getDay()]}`).replace('ra_dow_', '');\n date += `. ${now.getDate()} ${I18n.t(`ra_month_${months[now.getMonth()]}`).replace('ra_month_', '')}`;\n return date;\n }\n\n /**\n * Render a text as a link.\n */\n static renderTextWithA(text: string): React.JSX.Element[] | string {\n let m: RegExpMatchArray | null = text.match(/<a [^<]+<\\/a>|<br\\s?\\/?>|<b>[^<]+<\\/b>|<i>[^<]+<\\/i>/);\n if (m) {\n const result: React.JSX.Element[] = [];\n let key = 1;\n do {\n const start = text.substring(0, m.index);\n text = text.substring((m.index || 0) + m[0].length);\n start && result.push(<span key={`a${key++}`}>{start}</span>);\n\n if (m[0].startsWith('<b>')) {\n result.push(<b key={`a${key++}`}>{m[0].substring(3, m[0].length - 4)}</b>);\n } else if (m[0].startsWith('<i>')) {\n result.push(<i key={`a${key++}`}>{m[0].substring(3, m[0].length - 4)}</i>);\n } else if (m[0].startsWith('<br')) {\n result.push(<br key={`a${key++}`} />);\n } else {\n const href = m[0].match(/href=\"([^\"]+)\"/) || m[0].match(/href='([^']+)'/);\n const target = m[0].match(/target=\"([^\"]+)\"/) || m[0].match(/target='([^']+)'/);\n const rel = m[0].match(/rel=\"([^\"]+)\"/) || m[0].match(/rel='([^']+)'/);\n const title = m[0].match(/>([^<]*)</);\n\n result.push(\n // eslint-disable-next-line react/jsx-no-target-blank\n <a\n key={`a${key++}`}\n href={href ? href[1] : ''}\n target={target ? target[1] : '_blank'}\n rel={rel ? rel[1] : 'noreferrer'}\n style={{ color: 'inherit' }}\n >\n {title ? title[1] : ''}\n </a>,\n );\n }\n\n m = text ? text.match(/<a [^<]+<\\/a>|<br\\/?>|<b>[^<]+<\\/b>|<i>[^<]+<\\/i>/) : null;\n if (!m) {\n text && result.push(<span key={`a${key++}`}>{text}</span>);\n }\n } while (m);\n\n return result;\n }\n\n return text;\n }\n\n /**\n * Get the smart name of the given state.\n */\n static getSmartName(\n states: Record<string, ioBroker.StateObject> | ioBroker.StateObject | ioBroker.StateCommon,\n id: string,\n instanceId: string,\n noCommon?: boolean,\n ): SmartName | undefined {\n if (!id) {\n if (!noCommon) {\n if (!(states as ioBroker.StateObject).common) {\n return (states as ioBroker.StateCommon).smartName;\n }\n if (states && !(states as ioBroker.StateObject).common) {\n return (states as ioBroker.StateCommon).smartName;\n }\n return (states as ioBroker.StateObject).common.smartName;\n }\n if (states && !(states as ioBroker.StateObject).common) {\n return (states as ioBroker.StateCommon).smartName;\n }\n const obj = states as ioBroker.StateObject;\n return obj?.common?.custom && obj.common.custom[instanceId]\n ? obj.common.custom[instanceId].smartName\n : undefined;\n }\n if (!noCommon) {\n return (states as Record<string, ioBroker.StateObject>)[id].common.smartName;\n }\n const obj = (states as Record<string, ioBroker.StateObject>)[id];\n\n return obj?.common?.custom && obj.common.custom[instanceId]\n ? obj.common.custom[instanceId].smartName || null\n : null;\n }\n\n /**\n * Get the smart name from a state.\n */\n static getSmartNameFromObj(\n obj: ioBroker.StateObject | ioBroker.StateCommon,\n instanceId: string,\n noCommon?: boolean,\n ): SmartName | undefined {\n if (!noCommon) {\n if (!(obj as ioBroker.StateObject).common) {\n return (obj as ioBroker.StateCommon).smartName;\n }\n if (obj && !(obj as ioBroker.StateObject).common) {\n return (obj as ioBroker.StateCommon).smartName;\n }\n\n return (obj as ioBroker.StateObject).common.smartName;\n }\n if (obj && !(obj as ioBroker.StateObject).common) {\n return (obj as ioBroker.StateCommon).smartName;\n }\n\n const custom: Record<string, string> | undefined | null = (obj as ioBroker.StateObject)?.common?.custom?.[\n instanceId\n ];\n\n return custom ? custom.smartName : undefined;\n }\n\n /**\n * Enable smart name for a state.\n */\n static enableSmartName(obj: ioBroker.StateObject, instanceId: string, noCommon?: boolean): void {\n if (noCommon) {\n obj.common.custom = obj.common.custom || {};\n obj.common.custom[instanceId] = obj.common.custom[instanceId] || {};\n obj.common.custom[instanceId].smartName = {};\n } else {\n obj.common.smartName = {};\n }\n }\n\n /**\n * Completely remove smart name from a state.\n */\n static removeSmartName(obj: ioBroker.StateObject, instanceId: string, noCommon?: boolean): void {\n if (noCommon) {\n if (obj.common && obj.common.custom && obj.common.custom[instanceId]) {\n obj.common.custom[instanceId] = null;\n }\n } else {\n obj.common.smartName = null;\n }\n }\n\n /**\n * Update the smart name of a state.\n */\n static updateSmartName(\n obj: ioBroker.StateObject,\n newSmartName: ioBroker.StringOrTranslated,\n byON: string | null,\n smartType: string | null,\n instanceId: string,\n noCommon?: boolean,\n ): void {\n const language = I18n.getLanguage();\n\n // convert the old format\n if (typeof obj.common.smartName === 'string') {\n const nnn = obj.common.smartName;\n obj.common.smartName = {};\n obj.common.smartName[language] = nnn;\n }\n\n // convert the old settings\n if (obj.native && obj.native.byON) {\n delete obj.native.byON;\n let _smartName: SmartName = obj.common.smartName as SmartName;\n\n if (_smartName && typeof _smartName !== 'object') {\n _smartName = {\n en: _smartName,\n [language]: _smartName,\n };\n }\n obj.common.smartName = _smartName;\n }\n if (smartType !== undefined) {\n if (noCommon) {\n obj.common.custom = obj.common.custom || {};\n obj.common.custom[instanceId] = obj.common.custom[instanceId] || {};\n obj.common.custom[instanceId].smartName = obj.common.custom[instanceId].smartName || {};\n if (!smartType) {\n delete obj.common.custom[instanceId].smartName.smartType;\n } else {\n obj.common.custom[instanceId].smartName.smartType = smartType;\n }\n } else {\n obj.common.smartName = obj.common.smartName || {};\n if (!smartType) {\n // @ts-expect-error fixed in js-controller\n delete obj.common.smartName.smartType;\n } else {\n // @ts-expect-error fixed in js-controller\n obj.common.smartName.smartType = smartType;\n }\n }\n }\n\n if (byON !== undefined) {\n if (noCommon) {\n obj.common.custom = obj.common.custom || {};\n obj.common.custom[instanceId] = obj.common.custom[instanceId] || {};\n obj.common.custom[instanceId].smartName = obj.common.custom[instanceId].smartName || {};\n obj.common.custom[instanceId].smartName.byON = byON;\n } else {\n obj.common.smartName = obj.common.smartName || {};\n // @ts-expect-error fixed in js-controller\n obj.common.smartName.byON = byON;\n }\n }\n\n if (newSmartName !== undefined) {\n let smartName;\n if (noCommon) {\n obj.common.custom = obj.common.custom || {};\n obj.common.custom[instanceId] = obj.common.custom[instanceId] || {};\n obj.common.custom[instanceId].smartName = obj.common.custom[instanceId].smartName || {};\n smartName = obj.common.custom[instanceId].smartName;\n } else {\n obj.common.smartName = obj.common.smartName || {};\n smartName = obj.common.smartName;\n }\n smartName[language] = newSmartName;\n\n // If smart name deleted\n if (\n smartName &&\n (!smartName[language] ||\n (smartName[language] === obj.common.name &&\n (!obj.common.role || obj.common.role.includes('button'))))\n ) {\n delete smartName[language];\n let empty = true;\n // Check if the structure has any definitions\n for (const key in smartName) {\n if (Object.prototype.hasOwnProperty.call(smartName, key)) {\n empty = false;\n break;\n }\n }\n // If empty => delete smartName completely\n if (empty) {\n if (noCommon && obj.common.custom && obj.common.custom[instanceId]) {\n if (obj.common.custom[instanceId].smartName.byON === undefined) {\n delete obj.common.custom[instanceId];\n } else {\n delete obj.common.custom[instanceId].en;\n delete obj.common.custom[instanceId].de;\n delete obj.common.custom[instanceId].ru;\n delete obj.common.custom[instanceId].nl;\n delete obj.common.custom[instanceId].pl;\n delete obj.common.custom[instanceId].it;\n delete obj.common.custom[instanceId].fr;\n delete obj.common.custom[instanceId].pt;\n delete obj.common.custom[instanceId].es;\n delete obj.common.custom[instanceId].uk;\n delete obj.common.custom[instanceId]['zh-cn'];\n }\n // @ts-expect-error fixed in js-controller\n } else if (obj.common.smartName && (obj.common.smartName as SmartName).byON !== undefined) {\n const _smartName: { [lang in ioBroker.Languages]?: string } = obj.common.smartName as {\n [lang in ioBroker.Languages]?: string;\n };\n delete _smartName.en;\n delete _smartName.de;\n delete _smartName.ru;\n delete _smartName.nl;\n delete _smartName.pl;\n delete _smartName.it;\n delete _smartName.fr;\n delete _smartName.pt;\n delete _smartName.es;\n delete _smartName.uk;\n delete _smartName['zh-cn'];\n } else {\n obj.common.smartName = null;\n }\n }\n }\n }\n }\n\n /**\n * Disable the smart name of a state.\n */\n static disableSmartName(obj: ioBroker.StateObject, instanceId: string, noCommon?: boolean): void {\n if (noCommon) {\n obj.common.custom = obj.common.custom || {};\n obj.common.custom[instanceId] = obj.common.custom[instanceId] || {};\n obj.common.custom[instanceId].smartName = false;\n } else {\n obj.common.smartName = false;\n }\n }\n\n /**\n * Copy text to the clipboard.\n */\n static copyToClipboard(text: string, e?: Event): boolean {\n if (e) {\n e.stopPropagation();\n e.preventDefault();\n }\n return copy(text);\n }\n\n /**\n * Gets the extension of a file name.\n *\n * @param fileName the file name.\n * @returns The extension in lower case.\n */\n static getFileExtension(fileName: string): string | null {\n const pos = (fileName || '').lastIndexOf('.');\n if (pos !== -1) {\n return fileName.substring(pos + 1).toLowerCase();\n }\n return null;\n }\n\n /**\n * Format number of bytes as a string with B, KB, MB or GB.\n * The base for all calculations is 1024.\n *\n * @param bytes The number of bytes.\n * @returns The formatted string (e.g. '723.5 KB')\n */\n static formatBytes(bytes: number): string {\n if (Math.abs(bytes) < 1024) {\n return `${bytes} B`;\n }\n\n const units = ['KB', 'MB', 'GB'];\n // const units = ['KiB','MiB','GiB','TiB','PiB','EiB','ZiB','YiB'];\n let u = -1;\n\n do {\n bytes /= 1024;\n ++u;\n } while (Math.abs(bytes) >= 1024 && u < units.length - 1);\n\n return `${bytes.toFixed(1)} ${units[u]}`;\n }\n\n /**\n * Invert the given color according to a theme type to get the inverted text color for background\n *\n * @param color Color in the format '#rrggbb' or '#rgb' (or without a hash)\n * @param themeType 'light' or 'dark'\n * @param invert If true, the dark theme has a light color in the control, or the dark theme has a light color in the control\n */\n static getInvertedColor(color: string, themeType: ThemeType, invert?: boolean): string | undefined {\n if (!color) {\n return undefined;\n }\n const invertedColor = Utils.invertColor(color, true);\n if (invertedColor === '#FFFFFF' && (themeType === 'dark' || (invert && themeType === 'light'))) {\n return '#DDD';\n }\n if (invertedColor === '#000000' && (themeType === 'light' || (invert && themeType === 'dark'))) {\n return '#222';\n }\n\n return undefined;\n }\n\n // Big thanks to: https://stackoverflow.com/questions/35969656/how-can-i-generate-the-opposite-color-according-to-current-color\n /**\n * Invert the given color\n *\n * @param hex Color in the format '#rrggbb' or '#rgb' (or without a hash)\n * @param bw Set to black or white.\n */\n static invertColor(hex: string, bw?: boolean): string {\n if (hex === undefined || hex === null || hex === '' || typeof hex !== 'string') {\n return '';\n }\n if (hex.startsWith('rgba')) {\n const m = hex.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+),\\s*([.\\d]+)\\)/);\n if (m) {\n hex =\n parseInt(m[1], 10).toString(16).padStart(2, '0') +\n parseInt(m[2], 10).toString(16).padStart(2, '0') +\n parseInt(m[2], 10).toString(16).padStart(2, '0');\n }\n } else if (hex.startsWith('rgb')) {\n const m = hex.match(/rgb?\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)/);\n if (m) {\n hex =\n parseInt(m[1], 10).toString(16).padStart(2, '0') +\n parseInt(m[2], 10).toString(16).padStart(2, '0') +\n parseInt(m[2], 10).toString(16).padStart(2, '0');\n }\n } else if (hex.startsWith('#')) {\n hex = hex.slice(1);\n }\n // convert 3-digit hex to 6-digits.\n if (hex.length === 3) {\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\n }\n let alfa = null;\n if (hex.length === 8) {\n alfa = hex.substring(6, 8);\n hex = hex.substring(0, 6);\n } else if (hex.length !== 6) {\n console.warn(`Cannot invert color: ${hex}`);\n return hex;\n }\n const r = parseInt(hex.slice(0, 2), 16);\n const g = parseInt(hex.slice(2, 4), 16);\n const b = parseInt(hex.slice(4, 6), 16);\n\n if (bw) {\n // http://stackoverflow.com/a/3943023/112731\n return r * 0.299 + g * 0.587 + b * 0.114 > 186 ? `#000000${alfa || ''}` : `#FFFFFF${alfa || ''}`;\n }\n // invert color components\n const rs = (255 - r).toString(16);\n const gs = (255 - g).toString(16);\n const bd = (255 - b).toString(16);\n // pad each with zeros and return\n return `#${rs.padStart(2, '0')}${gs.padStart(2, '0')}${bd.padStart(2, '0')}${alfa || ''}`;\n }\n\n /**\n * Convert RGB to array [r, g, b]\n *\n * @param hex Color in the format '#rrggbb' or '#rgb' (or without hash) or rgb(r,g,b) or rgba(r,g,b,a)\n * @returns Array with 3 elements [r, g, b]\n */\n static color2rgb(hex: string): false | [number, number, number] | '' {\n if (hex === undefined || hex === null || hex === '' || typeof hex !== 'string') {\n return false;\n }\n if (hex.startsWith('rgba')) {\n const m = hex.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+),\\s*([.\\d]+)\\)/);\n if (m) {\n hex =\n parseInt(m[1], 10).toString(16).padStart(2, '0') +\n parseInt(m[2], 10).toString(16).padStart(2, '0') +\n parseInt(m[2], 10).toString(16).padStart(2, '0');\n }\n } else if (hex.startsWith('rgb')) {\n const m = hex.match(/rgb?\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)/);\n if (m) {\n hex =\n parseInt(m[1], 10).toString(16).padStart(2, '0') +\n parseInt(m[2], 10).toString(16).padStart(2, '0') +\n parseInt(m[2], 10).toString(16).padStart(2, '0');\n }\n } else if (hex.startsWith('#')) {\n hex = hex.slice(1);\n }\n // convert 3-digit hex to 6-digits.\n if (hex.length === 3) {\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\n }\n if (hex.length !== 6 && hex.length !== 8) {\n console.warn(`Cannot invert color: ${hex}`);\n return false;\n }\n\n return [parseInt(hex.slice(0, 2), 16), parseInt(hex.slice(2, 4), 16), parseInt(hex.slice(4, 6), 16)];\n }\n\n // Big thanks to: https://github.com/antimatter15/rgb-lab\n /**\n * Convert RGB to LAB\n *\n * @param rgb color in format [r,g,b]\n * @returns lab color in format [l,a,b]\n */\n static rgb2lab(rgb: [number, number, number]): [number, number, number] {\n let r = rgb[0] / 255;\n let g = rgb[1] / 255;\n let b = rgb[2] / 255;\n\n r = r > 0.04045 ? ((r + 0.055) / 1.055) ** 2.4 : r / 12.92;\n g = g > 0.04045 ? ((g + 0.055) / 1.055) ** 2.4 : g / 12.92;\n b = b > 0.04045 ? ((b + 0.055) / 1.055) ** 2.4 : b / 12.92;\n\n let x = (r * 0.4124 + g * 0.3576 + b * 0.1805) / 0.95047;\n let y = r * 0.2126 + g * 0.7152 + b * 0.0722; /* / 1.00000; */\n let z = (r * 0.0193 + g * 0.1192 + b * 0.9505) / 1.08883;\n\n x = x > 0.008856 ? x ** 0.33333333 : 7.787 * x + 0.137931; // 16 / 116;\n y = y > 0.008856 ? y ** 0.33333333 : 7.787 * y + 0.137931; // 16 / 116;\n z = z > 0.008856 ? z ** 0.33333333 : 7.787 * z + 0.137931; // 16 / 116;\n\n return [116 * y - 16, 500 * (x - y), 200 * (y - z)];\n }\n\n /**\n * Calculate the distance between two colors in LAB color space in the range 0-100^2\n * If the distance is less than 1000, the colors are similar\n *\n * @param color1 Color in the format '#rrggbb' or '#rgb' (or without hash) or rgb(r,g,b) or rgba(r,g,b,a)\n * @param color2 Color in the format '#rrggbb' or '#rgb' (or without hash) or rgb(r,g,b) or rgba(r,g,b,a)\n * @returns distance in the range 0-100^2\n */\n static colorDistance(color1: string, color2: string): number {\n const rgb1 = Utils.color2rgb(color1);\n const rgb2 = Utils.color2rgb(color2);\n if (!rgb1 || !rgb2) {\n return 0;\n }\n\n const lab1 = Utils.rgb2lab(rgb1);\n const lab2 = Utils.rgb2lab(rgb2);\n const dltL = lab1[0] - lab2[0];\n const dltA = lab1[1] - lab2[1];\n const dltB = lab1[2] - lab2[2];\n const c1 = Math.sqrt(lab1[1] * lab1[1] + lab1[2] * lab1[2]);\n const c2 = Math.sqrt(lab2[1] * lab2[1] + lab2[2] * lab2[2]);\n const dltC = c1 - c2;\n let dltH = dltA * dltA + dltB * dltB - dltC * dltC;\n dltH = dltH < 0 ? 0 : Math.sqrt(dltH);\n const sc = 1.0 + 0.045 * c1;\n const sh = 1.0 + 0.015 * c1;\n const dltLKlsl = dltL;\n const dltCkcsc = dltC / sc;\n const dltHkhsh = dltH / sh;\n const i = dltLKlsl * dltLKlsl + dltCkcsc * dltCkcsc + dltHkhsh * dltHkhsh;\n return i < 0 ? 0 : i;\n }\n\n // https://github.com/lukeed/clsx/blob/master/src/index.js\n // License\n // MIT © Luke Edwards\n private static _toVal(mix: ClassValue): string {\n let y;\n let str = '';\n\n if (typeof mix === 'string' || typeof mix === 'number') {\n str += mix;\n } else if (typeof mix === 'object') {\n if (Array.isArray(mix)) {\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n y = Utils._toVal(mix[k]);\n if (y) {\n str && (str += ' ');\n str += y;\n }\n }\n }\n } else {\n for (const k in mix) {\n if (mix[k]) {\n str && (str += ' ');\n str += k;\n }\n }\n }\n }\n\n return str;\n }\n\n // https://github.com/lukeed/clsx/blob/master/src/index.js\n // License\n // MIT © Luke Edwards\n /**\n * Convert any object to a string with its values.\n */\n static clsx(...inputs: ClassValue[]): string {\n let i = 0;\n let tmp;\n let x;\n let str = '';\n while (i < inputs.length) {\n tmp = inputs[i++];\n if (tmp) {\n x = Utils._toVal(tmp);\n if (x) {\n str && (str += ' ');\n str += x;\n }\n }\n }\n return str;\n }\n\n /**\n * Get the current theme name (either from local storage or the browser settings).\n */\n static getThemeName(themeName?: ThemeName | null): ThemeName {\n if (\n (window as any).vendorPrefix &&\n (window as any).vendorPrefix !== '@@vendorPrefix@@' &&\n (window as any).vendorPrefix !== 'MV'\n ) {\n return (window as any).vendorPrefix;\n }\n\n themeName = ((window as any)._localStorage || window.localStorage).getItem('App.themeName');\n if (themeName) {\n return themeName;\n }\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'colored';\n }\n\n /**\n * Get the type of theme.\n */\n static getThemeType(themeName?: ThemeName): ThemeType {\n if ((window as any).vendorPrefix && (window as any).vendorPrefix !== '@@vendorPrefix@@') {\n return 'light';\n }\n\n themeName = themeName || Utils.getThemeName();\n return themeName === 'dark' || themeName === 'blue' ? 'dark' : 'light';\n }\n\n /**\n * Set the theme name and theme type.\n */\n static setThemeName(themeName: ThemeName): void {\n const vendorPrefix = (window as any).vendorPrefix;\n if (vendorPrefix && vendorPrefix !== '@@vendorPrefix@@' && vendorPrefix !== 'MV') {\n return; // ignore\n }\n ((window as any)._localStorage || window.localStorage).setItem('App.themeName', themeName);\n ((window as any)._localStorage || window.localStorage).setItem(\n 'App.theme',\n themeName === 'dark' || themeName === 'blue' ? 'dark' : 'light',\n );\n }\n\n /**\n * Toggle the theme name between 'dark' and 'colored'.\n *\n * @returns the new theme name.\n */\n static toggleTheme(themeName?: ThemeName | null): ThemeName {\n if (\n (window as any).vendorPrefix &&\n (window as any).vendorPrefix !== '@@vendorPrefix@@' &&\n (window as any).vendorPrefix !== 'MV'\n ) {\n return (window as any).vendorPrefix as ThemeName;\n }\n themeName =\n themeName || ((window as any)._localStorage || window.localStorage).getItem('App.themeName') || 'light';\n\n // dark => blue => colored => light => dark\n const themes = Utils.getThemeNames();\n const pos = themeName ? themes.indexOf(themeName) : -1;\n let newTheme: ThemeName;\n if (pos !== -1) {\n newTheme = themes[(pos + 1) % themes.length];\n } else {\n newTheme = themes[0];\n }\n Utils.setThemeName(newTheme);\n\n return newTheme;\n }\n\n /**\n * Get the list of themes\n *\n * @returns list of possible themes\n */\n static getThemeNames(): ThemeName[] {\n if (\n (window as any).vendorPrefix &&\n (window as any).vendorPrefix !== '@@vendorPrefix@@' &&\n (window as any).vendorPrefix !== 'MV'\n ) {\n return [(window as any).vendorPrefix as ThemeName];\n }\n\n return ['light', 'dark'];\n }\n\n /**\n * Parse a query string into its parts.\n */\n static parseQuery(query: string): Record<string, string | number | boolean> {\n query = (query || '').toString().replace(/^\\?/, '');\n const result: Record<string, string | number | boolean> = {};\n query.split('&').forEach(part => {\n part = part.trim();\n if (part) {\n const parts = part.split('=');\n const attr = decodeURIComponent(parts[0]).trim();\n if (parts.length > 1) {\n const value = decodeURIComponent(parts[1]);\n if (value === 'true') {\n result[attr] = true;\n } else if (value === 'false') {\n result[attr] = false;\n } else {\n const f = parseFloat(value);\n if (f.toString() === value) {\n result[attr] = f;\n } else {\n result[attr] = value;\n }\n }\n } else {\n result[attr] = true;\n }\n }\n });\n return result;\n }\n\n /**\n * Returns parent ID.\n *\n * @returns parent ID or null if no parent\n */\n static getParentId(id: string): string | null {\n const p = (id || '').toString().split('.');\n if (p.length > 1) {\n p.pop();\n return p.join('.');\n }\n\n return null;\n }\n\n static formatDate(dateObj: Date, dateFormat: string): string {\n // format could be DD.MM.YYYY, YYYY.MM.DD or MM/DD/YYYY\n\n if (!dateObj) {\n return '';\n }\n\n let text;\n const mm = (dateObj.getMonth() + 1).toString().padStart(2, '0');\n const dd = dateObj.getDate().toString().padStart(2, '0');\n\n if (dateFormat === 'MM/DD/YYYY') {\n text = `${mm}/${dd}/${dateObj.getFullYear()}`;\n } else {\n text = `${dateObj.getFullYear()}-${mm}-${dd}`;\n }\n\n // time\n text += ` ${dateObj.getHours().toString().padStart(2, '0')}:${dateObj.getMinutes().toString().padStart(2, '0')}:${dateObj.getSeconds().toString().padStart(2, '0')}.${dateObj.getMilliseconds().toString().padStart(3, '0')}`;\n\n return text;\n }\n\n /**\n * Format seconds to string like 'h:mm:ss' or 'd.hh:mm:ss'\n */\n static formatTime(seconds: number): string {\n if (seconds) {\n seconds = Math.round(seconds);\n const d = Math.floor(seconds / (3600 * 24));\n const h = Math.floor((seconds % (3600 * 24)) / 3600);\n const m = Math.floor((seconds % 3600) / 60);\n const s = seconds % 60;\n if (d) {\n return `${d}.${h.toString().padStart(2, '0')}:${m.toString().padStart(2, '0')}:${s.toString().padStart(2, '0')}`;\n }\n if (h) {\n return `${h}:${m.toString().padStart(2, '0')}:${s.toString().padStart(2, '0')}`;\n }\n\n return `0:${m.toString().padStart(2, '0')}:${s.toString().padStart(2, '0')}`;\n }\n return '0:00:00';\n }\n\n static MDtext2link(text: string): string {\n const m = text.match(/\\d+\\.\\)\\s/);\n if (m) {\n text = text.replace(m[0], m[0].replace(/\\s/, '&nbsp;'));\n }\n\n return text\n .replace(/[^a-zA-Zа-яА-Я0-9]/g, '')\n .trim()\n .replace(/\\s/g, '')\n .toLowerCase();\n }\n\n /**\n * Open url link in the new target window\n */\n static openLink(url: string, target?: string): void {\n // replace IPv6 Address with [ipv6]:port\n url = url.replace(/\\/\\/([0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*)(:\\d+)?\\//i, '//[$1]$2/');\n\n if (target === 'this') {\n window.location.href = url;\n } else {\n window.open(url, target || '_blank');\n }\n }\n\n static MDgetTitle(text: string): string {\n const result = Utils.MDextractHeader(text);\n const header = result.header;\n let body = result.body;\n if (!header.title) {\n // remove {docsify-bla}\n body = body.replace(/{[^}]*}/g, '');\n body = body.trim();\n const lines = body.replace(/\\r/g, '').split('\\n');\n for (let i = 0; i < lines.length; i++) {\n if (lines[i].startsWith('# ')) {\n return lines[i].substring(2).trim();\n }\n }\n return '';\n }\n\n return header.title?.toString() || '';\n }\n\n static MDextractHeader(text: string): { header: Record<string, string | boolean | number>; body: string } {\n const attrs: Record<string, string | boolean | number> = {};\n if (text.substring(0, 3) === '---') {\n const pos = text.substring(3).indexOf('\\n---');\n if (pos !== -1) {\n const _header = text.substring(3, pos + 3);\n const lines = _header.replace(/\\r/g, '').split('\\n');\n lines.forEach(line => {\n if (!line.trim()) {\n return;\n }\n const pos_ = line.indexOf(':');\n if (pos_ !== -1) {\n const attr = line.substring(0, pos_).trim();\n let value = line.substring(pos_ + 1).trim();\n value = value.replace(/^['\"]|['\"]$/g, '');\n if (value === 'true') {\n attrs[attr] = true;\n } else if (value === 'false') {\n attrs[attr] = false;\n } else if (parseFloat(value).toString() === attrs[attr]) {\n attrs[attr] = parseFloat(value);\n } else {\n attrs[attr] = value;\n }\n } else {\n attrs[line.trim()] = true;\n }\n });\n text = text.substring(pos + 7);\n }\n }\n return { header: attrs, body: text };\n }\n\n static MDremoveDocsify(text: string): string {\n const m = text.match(/{docsify-[^}]*}/g);\n if (m) {\n m.forEach(doc => (text = text.replace(doc, '')));\n }\n return text;\n }\n\n /**\n * Generate the file for download from JSON object.\n */\n static generateFile(\n fileName: string,\n /** json file data */\n json: Record<string, any>,\n ): void {\n const el = document.createElement('a');\n el.setAttribute(\n 'href',\n `data:application/json;charset=utf-8,${encodeURIComponent(JSON.stringify(json, null, 2))}`,\n );\n el.setAttribute('download', fileName);\n\n el.style.display = 'none';\n document.body.appendChild(el);\n\n el.click();\n\n document.body.removeChild(el);\n }\n\n /**\n * Convert quality code into text\n *\n * @returns lines that decode quality\n */\n static quality2text(quality: ioBroker.STATE_QUALITY[keyof ioBroker.STATE_QUALITY]): string[] {\n const custom = quality & 0xffff0000;\n const text: string = QUALITY_BITS[quality];\n let result;\n if (text) {\n result = [text];\n } else if (quality & 0x01) {\n result = [QUALITY_BITS[0x01], `0x${(quality & (0xffff & ~1)).toString(16)}`];\n } else if (quality & 0x02) {\n result = [QUALITY_BITS[0x02], `0x${(quality & (0xffff & ~2)).toString(16)}`];\n } else {\n result = [`0x${quality.toString(16)}`];\n }\n if (custom) {\n result.push(`0x${(custom >> 16).toString(16).toUpperCase()}`);\n }\n return result;\n }\n\n /**\n * Deep copy object\n */\n static clone(object: Record<string, any>): Record<string, any> {\n return JSON.parse(JSON.stringify(object));\n }\n\n /**\n * Get states of object\n *\n * @returns states as an object in form {\"value1\": \"label1\", \"value2\": \"label2\"} or null\n */\n static getStates(obj: ioBroker.StateObject | null | undefined): Record<string, string> | null {\n const states: Record<string, string> | string[] | string | undefined | null = obj?.common?.states;\n let result: Record<string, string> | null | undefined;\n if (states) {\n if (typeof states === 'string' && states[0] === '{') {\n try {\n result = JSON.parse(states) as Record<string, string>;\n } catch {\n console.error(`Cannot parse states: ${states}`);\n result = null;\n }\n } else if (typeof states === 'string') {\n // if old format val1:text1;val2:text2\n const parts = states.split(';');\n result = {};\n for (let p = 0; p < parts.length; p++) {\n const s = parts[p].split(':');\n result[s[0]] = s[1];\n }\n } else if (Array.isArray(states)) {\n result = {};\n if (obj?.common.type === 'number') {\n states.forEach((value, key) => (result[key] = value));\n } else if (obj?.common.type === 'string') {\n states.forEach(value => (result[value] = value));\n } else if (obj?.common.type === 'boolean') {\n result.false = states[0];\n result.true = states[1];\n }\n } else if (typeof states === 'object') {\n result = states;\n }\n }\n\n return result || null;\n }\n\n /**\n * Get svg file as text\n *\n * @param url URL of SVG file\n * @returns Promise with \"data:image...\"\n */\n static async getSvg(url: string): Promise<string> {\n const response = await fetch(url);\n const blob = await response.blob();\n return new Promise(resolve => {\n const reader = new FileReader();\n reader.onload = function () {\n resolve(this.result?.toString() || '');\n };\n reader.readAsDataURL(blob);\n });\n }\n\n /**\n * Detect a file extension by its content\n *\n * @returns The detected extension, like 'jpg'\n */\n static detectMimeType(\n /** Base64 encoded binary file */\n base64: string,\n ): string | null {\n const signature = Object.keys(SIGNATURES).find(s => base64.startsWith(s));\n return signature ? SIGNATURES[signature] : null;\n }\n\n /**\n * Check if configured repository is the stable repository\n */\n static isStableRepository(\n /** current configured repository or multi repository */\n activeRepo: string | string[],\n ): boolean {\n return !!(\n (typeof activeRepo === 'string' && activeRepo.toLowerCase().startsWith('stable')) ||\n (activeRepo && typeof activeRepo !== 'string' && activeRepo.find(r => r.toLowerCase().startsWith('stable')))\n );\n }\n\n /**\n * Check if a given string is an integer\n */\n static isStringInteger(str: string | number): boolean {\n if (typeof str === 'number') {\n return Math.round(str) === str;\n }\n return parseInt(str, 10).toString() === str;\n }\n\n /**\n * Check if the date is valid\n */\n static isValidDate(date: any): boolean {\n return date instanceof Date && !isNaN(date as any as number);\n }\n\n static getStyle(\n theme: IobTheme,\n ...args: (((_theme: IobTheme) => Record<string, any>) | undefined | Record<string, any>)[]\n ): Record<string, any> {\n const result: Record<string, any> = {};\n\n for (let a = 0; a < args.length; a++) {\n if (typeof args[a] === 'function') {\n Object.assign(result, (args[a] as (_theme: IobTheme) => Record<string, any>)(theme));\n } else if (args[a] && typeof args[a] === 'object') {\n Object.keys(args[a] as Record<string, any>).forEach((attr: string) => {\n if (typeof (args[a] as Record<string, any>)[attr] === 'function') {\n result[attr] = (\n (args[a] as Record<string, any>)[attr] as (_theme: IobTheme) => Record<string, any>\n )(theme);\n } else if (typeof (args[a] as Record<string, any>)[attr] === 'object') {\n const obj = (args[a] as Record<string, any>)[attr];\n result[attr] = {};\n Object.keys(obj).forEach((attr1: string) => {\n if (typeof obj[attr1] === 'function') {\n result[attr][attr1] = obj(theme);\n } else if (obj[attr1] || obj[attr1] === 0) {\n result[attr][attr1] = obj[attr1];\n }\n });\n } else if ((args[a] as Record<string, any>)[attr] || (args[a] as Record<string, any>)[attr] === 0) {\n result[attr] = (args[a] as Record<string, any>)[attr];\n }\n });\n }\n }\n\n return result;\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import { type JSXElementConstructor, type JSX } from 'react';
2
+ export declare function withWidth(): (WrappedComponent: JSXElementConstructor<any>) => (props: Record<string, any>) => JSX.Element;
@@ -0,0 +1,22 @@
1
+ import React, {} from 'react';
2
+ import { useTheme } from '@mui/material/styles';
3
+ import { useMediaQuery } from '@mui/material';
4
+ function useWidth() {
5
+ const theme = useTheme();
6
+ const keys = [...theme.breakpoints.keys].reverse();
7
+ return (keys.reduce((output, key) => {
8
+ // eslint-disable-next-line react-hooks/rules-of-hooks
9
+ const matches = useMediaQuery(theme.breakpoints.up(key));
10
+ return !output && matches ? key : output;
11
+ }, null) || 'xs');
12
+ }
13
+ // FIXME checkout https://mui.com/components/use-media-query/#migrating-from-withwidth
14
+ export function withWidth() {
15
+ return (WrappedComponent) => {
16
+ return function AnyComponent(props) {
17
+ const width = useWidth();
18
+ return (React.createElement(WrappedComponent, { ...props, width: width }));
19
+ };
20
+ };
21
+ }
22
+ //# sourceMappingURL=withWidth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withWidth.js","sourceRoot":"./src/","sources":["Components/withWidth.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAwC,MAAM,OAAO,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAmB,aAAa,EAAE,MAAM,eAAe,CAAC;AAE/D,SAAS,QAAQ;IACb,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;IACnD,OAAO,CACH,IAAI,CAAC,MAAM,CAAC,CAAC,MAAyB,EAAE,GAAe,EAAE,EAAE;QACvD,sDAAsD;QACtD,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACzD,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IAC7C,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CACnB,CAAC;AACN,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,SAAS;IACrB,OAAO,CAAC,gBAA4C,EAAE,EAAE;QACpD,OAAO,SAAS,YAAY,CAAC,KAA0B;YACnD,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;YACzB,OAAO,CACH,oBAAC,gBAAgB,OACT,KAAK,EACT,KAAK,EAAE,KAAK,GACd,CACL,CAAC;QACN,CAAC,CAAC;IACN,CAAC,CAAC;AACN,CAAC","sourcesContent":["import React, { type JSXElementConstructor, type JSX } from 'react';\nimport { useTheme } from '@mui/material/styles';\nimport { type Breakpoint, useMediaQuery } from '@mui/material';\n\nfunction useWidth(): Breakpoint {\n const theme = useTheme();\n const keys = [...theme.breakpoints.keys].reverse();\n return (\n keys.reduce((output: Breakpoint | null, key: Breakpoint) => {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const matches = useMediaQuery(theme.breakpoints.up(key));\n return !output && matches ? key : output;\n }, null) || 'xs'\n );\n}\n\n// FIXME checkout https://mui.com/components/use-media-query/#migrating-from-withwidth\nexport function withWidth() {\n return (WrappedComponent: JSXElementConstructor<any>) => {\n return function AnyComponent(props: Record<string, any>): JSX.Element {\n const width = useWidth();\n return (\n <WrappedComponent\n {...props}\n width={width}\n />\n );\n };\n };\n}\n"]}
@@ -0,0 +1 @@
1
+ export { Connection, PROGRESS, ERRORS, PERMISSION_ERROR } from '@iobroker/socket-client';
@@ -0,0 +1,2 @@
1
+ export { Connection, PROGRESS, ERRORS, PERMISSION_ERROR } from '@iobroker/socket-client';
2
+ //# sourceMappingURL=Connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Connection.js","sourceRoot":"./src/","sources":["Connection.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC","sourcesContent":["export { Connection, PROGRESS, ERRORS, PERMISSION_ERROR } from '@iobroker/socket-client';\n"]}
@@ -13,7 +13,7 @@ interface DialogCronState {
13
13
  cron: string;
14
14
  showWarning: '' | 'everySecond' | 'everyMinute';
15
15
  }
16
- declare class DialogComplexCron extends React.Component<DialogCronProps, DialogCronState> {
16
+ export declare class DialogComplexCron extends React.Component<DialogCronProps, DialogCronState> {
17
17
  constructor(props: DialogCronProps);
18
18
  handleCancel(): void;
19
19
  handleOk(ignoreCheck?: boolean): void;
@@ -21,4 +21,4 @@ declare class DialogComplexCron extends React.Component<DialogCronProps, DialogC
21
21
  handleClear(): void;
22
22
  render(): JSX.Element;
23
23
  }
24
- export default DialogComplexCron;
24
+ export {};
@@ -0,0 +1,85 @@
1
+ import React, {} from 'react';
2
+ import { Button, DialogTitle, DialogContent, DialogActions, Dialog } from '@mui/material';
3
+ import { Check as IconOk, Cancel as IconCancel, Delete as IconClear } from '@mui/icons-material';
4
+ import { ComplexCron } from '../Components/ComplexCron';
5
+ import { DialogConfirm } from '../Dialogs/Confirm';
6
+ import { I18n } from '../i18n';
7
+ // Generate cron expression
8
+ const styles = {
9
+ headerID: {
10
+ fontWeight: 'bold',
11
+ fontStyle: 'italic',
12
+ },
13
+ radio: {
14
+ display: 'inline-block',
15
+ },
16
+ dialogPaper: {
17
+ height: 'calc(100% - 96px)',
18
+ },
19
+ };
20
+ export class DialogComplexCron extends React.Component {
21
+ constructor(props) {
22
+ super(props);
23
+ let cron;
24
+ if (this.props.cron && typeof this.props.cron === 'string' && this.props.cron.replace(/^["']/, '')[0] !== '{') {
25
+ cron = this.props.cron.replace(/['"]/g, '').trim();
26
+ }
27
+ else {
28
+ cron = this.props.cron || '{}';
29
+ if (typeof cron === 'string') {
30
+ cron = cron.replace(/^["']/, '').replace(/["']\n?$/, '');
31
+ }
32
+ }
33
+ this.state = {
34
+ showWarning: '',
35
+ cron,
36
+ };
37
+ }
38
+ handleCancel() {
39
+ this.props.onClose();
40
+ }
41
+ handleOk(ignoreCheck) {
42
+ if (!ignoreCheck) {
43
+ // Check if the CRON will be executed every second or every minute and warn about it
44
+ const cron = ComplexCron.cron2state(this.state.cron);
45
+ if (cron.seconds === '*' || cron.seconds === '*/1') {
46
+ this.setState({ showWarning: 'everySecond' });
47
+ return;
48
+ }
49
+ if (cron.minutes === '*' || cron.minutes === '*/1') {
50
+ this.setState({ showWarning: 'everyMinute' });
51
+ return;
52
+ }
53
+ }
54
+ this.props.onOk(this.state.cron);
55
+ this.props.onClose();
56
+ }
57
+ renderWarningDialog() {
58
+ if (!this.state.showWarning) {
59
+ return null;
60
+ }
61
+ return (React.createElement(DialogConfirm, { title: I18n.t('ra_Please confirm'), text: I18n.t(this.state.showWarning === 'everySecond'
62
+ ? 'ra_The schedule will be executed every second. Are you sure?'
63
+ : 'ra_The schedule will be executed every minute. Are you sure?'), onClose: (ok) => this.setState({ showWarning: '' }, () => {
64
+ if (ok) {
65
+ this.handleOk(true);
66
+ }
67
+ }) }));
68
+ }
69
+ handleClear() {
70
+ this.props.onOk(false);
71
+ this.props.onClose();
72
+ }
73
+ render() {
74
+ return (React.createElement(Dialog, { onClose: () => { }, maxWidth: "md", fullWidth: true, sx: { '& .MuiDialog-paper': styles.dialogPaper }, open: !0, "aria-labelledby": "cron-dialog-title" },
75
+ this.renderWarningDialog(),
76
+ React.createElement(DialogTitle, { id: "cron-dialog-title" }, this.props.title || I18n.t('ra_Define schedule...')),
77
+ React.createElement(DialogContent, { style: { height: '100%', overflow: 'hidden' } },
78
+ React.createElement(ComplexCron, { cronExpression: this.state.cron, onChange: cron => this.setState({ cron }), language: I18n.getLanguage() })),
79
+ React.createElement(DialogActions, null,
80
+ !!this.props.clearButton && (React.createElement(Button, { color: "grey", variant: "contained", onClick: () => this.handleClear(), startIcon: React.createElement(IconClear, null) }, this.props.clear || I18n.t('ra_Clear'))),
81
+ React.createElement(Button, { variant: "contained", onClick: () => this.handleOk(), color: "primary", startIcon: React.createElement(IconOk, null) }, this.props.ok || I18n.t('ra_Ok')),
82
+ React.createElement(Button, { color: "grey", variant: "contained", onClick: () => this.handleCancel(), startIcon: React.createElement(IconCancel, null) }, this.props.cancel || I18n.t('ra_Cancel')))));
83
+ }
84
+ }
85
+ //# sourceMappingURL=ComplexCron.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComplexCron.js","sourceRoot":"./src/","sources":["Dialogs/ComplexCron.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { type JSX } from 'react';\n\nimport { Button, DialogTitle, DialogContent, DialogActions, Dialog } from '@mui/material';\n\nimport { Check as IconOk, Cancel as IconCancel, Delete as IconClear } from '@mui/icons-material';\n\nimport { ComplexCron } from '../Components/ComplexCron';\nimport { DialogConfirm } from '../Dialogs/Confirm';\n\nimport { I18n } from '../i18n';\n\n// Generate cron expression\nconst styles: Record<string, React.CSSProperties> = {\n headerID: {\n fontWeight: 'bold',\n fontStyle: 'italic',\n },\n radio: {\n display: 'inline-block',\n },\n dialogPaper: {\n height: 'calc(100% - 96px)',\n },\n};\n\ninterface DialogCronProps {\n onClose: () => void;\n onOk: (cron: string | false) => void;\n title?: string;\n cron?: string;\n cancel?: string;\n ok?: string;\n clear?: string;\n clearButton?: boolean;\n}\n\ninterface DialogCronState {\n cron: string;\n showWarning: '' | 'everySecond' | 'everyMinute';\n}\n\nexport class DialogComplexCron extends React.Component<DialogCronProps, DialogCronState> {\n constructor(props: DialogCronProps) {\n super(props);\n let cron;\n if (this.props.cron && typeof this.props.cron === 'string' && this.props.cron.replace(/^[\"']/, '')[0] !== '{') {\n cron = this.props.cron.replace(/['\"]/g, '').trim();\n } else {\n cron = this.props.cron || '{}';\n if (typeof cron === 'string') {\n cron = cron.replace(/^[\"']/, '').replace(/[\"']\\n?$/, '');\n }\n }\n\n this.state = {\n showWarning: '',\n cron,\n };\n }\n\n handleCancel(): void {\n this.props.onClose();\n }\n\n handleOk(ignoreCheck?: boolean): void {\n if (!ignoreCheck) {\n // Check if the CRON will be executed every second or every minute and warn about it\n const cron = ComplexCron.cron2state(this.state.cron);\n if (cron.seconds === '*' || cron.seconds === '*/1') {\n this.setState({ showWarning: 'everySecond' });\n return;\n }\n if (cron.minutes === '*' || cron.minutes === '*/1') {\n this.setState({ showWarning: 'everyMinute' });\n return;\n }\n }\n\n this.props.onOk(this.state.cron);\n this.props.onClose();\n }\n\n renderWarningDialog(): JSX.Element | null {\n if (!this.state.showWarning) {\n return null;\n }\n return (\n <DialogConfirm\n title={I18n.t('ra_Please confirm')}\n text={I18n.t(\n this.state.showWarning === 'everySecond'\n ? 'ra_The schedule will be executed every second. Are you sure?'\n : 'ra_The schedule will be executed every minute. Are you sure?',\n )}\n onClose={(ok: boolean) =>\n this.setState({ showWarning: '' }, () => {\n if (ok) {\n this.handleOk(true);\n }\n })\n }\n />\n );\n }\n\n handleClear(): void {\n this.props.onOk(false);\n this.props.onClose();\n }\n\n render(): JSX.Element {\n return (\n <Dialog\n onClose={() => {}}\n maxWidth=\"md\"\n fullWidth\n sx={{ '& .MuiDialog-paper': styles.dialogPaper }}\n open={!0}\n aria-labelledby=\"cron-dialog-title\"\n >\n {this.renderWarningDialog()}\n <DialogTitle id=\"cron-dialog-title\">{this.props.title || I18n.t('ra_Define schedule...')}</DialogTitle>\n <DialogContent style={{ height: '100%', overflow: 'hidden' }}>\n <ComplexCron\n cronExpression={this.state.cron}\n onChange={cron => this.setState({ cron })}\n language={I18n.getLanguage()}\n />\n </DialogContent>\n <DialogActions>\n {!!this.props.clearButton && (\n <Button\n color=\"grey\"\n variant=\"contained\"\n onClick={() => this.handleClear()}\n startIcon={<IconClear />}\n >\n {this.props.clear || I18n.t('ra_Clear')}\n </Button>\n )}\n <Button\n variant=\"contained\"\n onClick={() => this.handleOk()}\n color=\"primary\"\n startIcon={<IconOk />}\n >\n {this.props.ok || I18n.t('ra_Ok')}\n </Button>\n <Button\n color=\"grey\"\n variant=\"contained\"\n onClick={() => this.handleCancel()}\n startIcon={<IconCancel />}\n >\n {this.props.cancel || I18n.t('ra_Cancel')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n }\n}\n"]}
@@ -30,10 +30,10 @@ interface DialogConfirmProps {
30
30
  interface DialogConfirmState {
31
31
  suppress: number | boolean;
32
32
  }
33
- declare class DialogConfirm extends Component<DialogConfirmProps, DialogConfirmState> {
33
+ export declare class DialogConfirm extends Component<DialogConfirmProps, DialogConfirmState> {
34
34
  constructor(props: DialogConfirmProps);
35
35
  handleOk(): void;
36
36
  handleCancel(): void;
37
37
  render(): JSX.Element | null;
38
38
  }
39
- export default DialogConfirm;
39
+ export {};
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Copyright 2019-2024 Denis Haev (bluefox) <dogafox@gmail.com>
3
+ *
4
+ * MIT License
5
+ *
6
+ */
7
+ // please do not delete React, as without it other projects could not be compiled: ReferenceError: React is not defined
8
+ import React, { Component } from 'react';
9
+ import { Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, FormControlLabel, Checkbox, } from '@mui/material';
10
+ import { Check as IconCheck, Close as IconClose } from '@mui/icons-material';
11
+ import { I18n } from '../i18n';
12
+ const styles = {
13
+ suppress: {
14
+ fontSize: 12,
15
+ },
16
+ suppressRoot: {
17
+ // it is sx
18
+ marginTop: '16px',
19
+ },
20
+ };
21
+ export class DialogConfirm extends Component {
22
+ constructor(props) {
23
+ super(props);
24
+ if (!this.props.dialogName && this.props.suppressQuestionMinutes) {
25
+ throw new Error('dialogName required if suppressQuestionMinutes used');
26
+ }
27
+ let suppress = false;
28
+ if (this.props.suppressQuestionMinutes) {
29
+ suppress =
30
+ parseInt((window._localStorage || window.localStorage).getItem(this.props.dialogName), 10) ||
31
+ 0;
32
+ if (!suppress) {
33
+ suppress = false;
34
+ }
35
+ else if (Date.now() > suppress) {
36
+ (window._localStorage || window.localStorage).removeItem(this.props.dialogName);
37
+ suppress = false;
38
+ }
39
+ }
40
+ this.state = {
41
+ suppress,
42
+ };
43
+ }
44
+ handleOk() {
45
+ if (this.state.suppress) {
46
+ (window._localStorage || window.localStorage).setItem(this.props.dialogName, Date.now() + (this.props.suppressQuestionMinutes || 2) * 60000);
47
+ }
48
+ if (this.props.onClose) {
49
+ this.props.onClose(true);
50
+ }
51
+ }
52
+ handleCancel() {
53
+ if (this.props.onClose) {
54
+ this.props.onClose(false);
55
+ }
56
+ }
57
+ render() {
58
+ if (typeof this.state.suppress === 'number') {
59
+ setTimeout(() => this.props.onClose && this.props.onClose(true), 100);
60
+ return null;
61
+ }
62
+ return (React.createElement(Dialog, { open: !0, maxWidth: "md", fullWidth: this.props.fullWidth !== undefined ? this.props.fullWidth : true, onClose: (event, reason) => {
63
+ if (reason !== 'backdropClick' && reason !== 'escapeKeyDown') {
64
+ this.handleCancel();
65
+ }
66
+ }, "aria-labelledby": "ar_confirmation_dialog_title", "aria-describedby": "ar_confirmation_dialog_description" },
67
+ React.createElement(DialogTitle, { id: "ar_confirmation_dialog_title" }, this.props.title || I18n.t('ra_Are you sure?')),
68
+ React.createElement(DialogContent, null,
69
+ React.createElement(DialogContentText, { id: "ar_confirmation_dialog_description" },
70
+ this.props.icon || null,
71
+ this.props.text,
72
+ this.props.suppressQuestionMinutes ? React.createElement("br", null) : null,
73
+ this.props.suppressQuestionMinutes ? (React.createElement(FormControlLabel, { sx: {
74
+ '& .FormControlLabel-label': styles.suppress,
75
+ '&.FormControlLabel-root': styles.suppressRoot,
76
+ }, control: React.createElement(Checkbox, { id: `ar_dialog_confirm_suppress_${this.props.dialogName || ''}`, checked: !!this.state.suppress, onChange: () => this.setState({ suppress: !this.state.suppress }) }), label: this.props.suppressText ||
77
+ I18n.t('ra_Suppress question for next %s minutes', (this.props.suppressQuestionMinutes || 2).toString()) })) : null)),
78
+ React.createElement(DialogActions, null,
79
+ React.createElement(Button, { id: `ar_dialog_confirm_ok_${this.props.dialogName || ''}`, variant: "contained", onClick: () => this.handleOk(), color: "primary", autoFocus: true, startIcon: React.createElement(IconCheck, null) }, this.props.ok || I18n.t('ra_Ok')),
80
+ React.createElement(Button, { id: `ar_dialog_confirm_cancel_${this.props.dialogName || ''}`, variant: "contained", onClick: () => this.handleCancel(), color: "grey", startIcon: React.createElement(IconClose, null) }, this.props.cancel || I18n.t('ra_Cancel')))));
81
+ }
82
+ }
83
+ //# sourceMappingURL=Confirm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Confirm.js","sourceRoot":"./src/","sources":["Dialogs/Confirm.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright 2019-2024 Denis Haev (bluefox) <dogafox@gmail.com>\n *\n * MIT License\n *\n */\n\n// please do not delete React, as without it other projects could not be compiled: ReferenceError: React is not defined\nimport React, { Component, type JSX } from 'react';\n\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n FormControlLabel,\n Checkbox,\n} from '@mui/material';\n\nimport { Check as IconCheck, Close as IconClose } from '@mui/icons-material';\n\nimport { I18n } from '../i18n';\n\nconst styles: Record<string, React.CSSProperties> = {\n suppress: {\n fontSize: 12,\n },\n suppressRoot: {\n // it is sx\n marginTop: '16px',\n },\n};\n\ninterface DialogConfirmProps {\n /** The dialog title; default: Are you sure? (translated) */\n title?: string;\n /** The dialog text */\n text?: string | React.JSX.Element | React.JSX.Element[];\n /** Close handler. */\n onClose?: (ok: boolean) => void;\n /** if the dialog must be fill sized */\n fullWidth?: boolean;\n /** optional icon */\n icon?: React.JSX.Element;\n /** optional ok button text */\n ok?: string;\n /** optional cancel button text */\n cancel?: string;\n /** optional interval in minutes for which the confirmation dialog will be suppressed if activated. */\n suppressQuestionMinutes?: number;\n /** optional text for the suppression checkbox */\n suppressText?: string;\n /** optional name of the dialog. Used only with suppressQuestionMinutes to store the user choice */\n dialogName?: string;\n}\n\ninterface DialogConfirmState {\n suppress: number | boolean;\n}\n\nexport class DialogConfirm extends Component<DialogConfirmProps, DialogConfirmState> {\n constructor(props: DialogConfirmProps) {\n super(props);\n\n if (!this.props.dialogName && this.props.suppressQuestionMinutes) {\n throw new Error('dialogName required if suppressQuestionMinutes used');\n }\n let suppress: number | boolean = false;\n\n if (this.props.suppressQuestionMinutes) {\n suppress =\n parseInt(((window as any)._localStorage || window.localStorage).getItem(this.props.dialogName), 10) ||\n 0;\n\n if (!suppress) {\n suppress = false;\n } else if (Date.now() > suppress) {\n ((window as any)._localStorage || window.localStorage).removeItem(this.props.dialogName);\n suppress = false;\n }\n }\n\n this.state = {\n suppress,\n };\n }\n\n handleOk(): void {\n if (this.state.suppress) {\n ((window as any)._localStorage || window.localStorage).setItem(\n this.props.dialogName,\n Date.now() + (this.props.suppressQuestionMinutes || 2) * 60000,\n );\n }\n if (this.props.onClose) {\n this.props.onClose(true);\n }\n }\n\n handleCancel(): void {\n if (this.props.onClose) {\n this.props.onClose(false);\n }\n }\n\n render(): JSX.Element | null {\n if (typeof this.state.suppress === 'number') {\n setTimeout(() => this.props.onClose && this.props.onClose(true), 100);\n return null;\n }\n\n return (\n <Dialog\n open={!0}\n maxWidth=\"md\"\n fullWidth={this.props.fullWidth !== undefined ? this.props.fullWidth : true}\n onClose={(event, reason) => {\n if (reason !== 'backdropClick' && reason !== 'escapeKeyDown') {\n this.handleCancel();\n }\n }}\n aria-labelledby=\"ar_confirmation_dialog_title\"\n aria-describedby=\"ar_confirmation_dialog_description\"\n >\n <DialogTitle id=\"ar_confirmation_dialog_title\">\n {this.props.title || I18n.t('ra_Are you sure?')}\n </DialogTitle>\n <DialogContent>\n <DialogContentText id=\"ar_confirmation_dialog_description\">\n {this.props.icon || null}\n {this.props.text}\n {this.props.suppressQuestionMinutes ? <br /> : null}\n {this.props.suppressQuestionMinutes ? (\n <FormControlLabel\n sx={{\n '& .FormControlLabel-label': styles.suppress,\n '&.FormControlLabel-root': styles.suppressRoot,\n }}\n control={\n <Checkbox\n id={`ar_dialog_confirm_suppress_${this.props.dialogName || ''}`}\n checked={!!this.state.suppress}\n onChange={() => this.setState({ suppress: !this.state.suppress })}\n />\n }\n label={\n this.props.suppressText ||\n I18n.t(\n 'ra_Suppress question for next %s minutes',\n (this.props.suppressQuestionMinutes || 2).toString(),\n )\n }\n />\n ) : null}\n </DialogContentText>\n </DialogContent>\n <DialogActions>\n <Button\n id={`ar_dialog_confirm_ok_${this.props.dialogName || ''}`}\n variant=\"contained\"\n onClick={() => this.handleOk()}\n color=\"primary\"\n autoFocus\n startIcon={<IconCheck />}\n >\n {this.props.ok || I18n.t('ra_Ok')}\n </Button>\n <Button\n id={`ar_dialog_confirm_cancel_${this.props.dialogName || ''}`}\n variant=\"contained\"\n onClick={() => this.handleCancel()}\n color=\"grey\"\n startIcon={<IconClose />}\n >\n {this.props.cancel || I18n.t('ra_Cancel')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n }\n}\n"]}