@iobroker/gui-components 8.0.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 (368) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +1450 -0
  3. package/build/AdminConnection.d.ts +1 -0
  4. package/build/AdminConnection.js +2 -0
  5. package/build/AdminConnection.js.map +1 -0
  6. package/build/Components/404.d.ts +4 -0
  7. package/build/Components/404.js +97 -0
  8. package/build/Components/404.js.map +1 -0
  9. package/build/Components/ColorPicker.d.ts +86 -0
  10. package/build/Components/ColorPicker.js +222 -0
  11. package/build/Components/ColorPicker.js.map +1 -0
  12. package/build/Components/ComplexCron.d.ts +40 -0
  13. package/build/Components/ComplexCron.js +401 -0
  14. package/build/Components/ComplexCron.js.map +1 -0
  15. package/build/Components/CopyToClipboard.d.ts +14 -0
  16. package/build/Components/CopyToClipboard.js +160 -0
  17. package/build/Components/CopyToClipboard.js.map +1 -0
  18. package/build/Components/CustomModal.d.ts +26 -0
  19. package/build/Components/CustomModal.js +62 -0
  20. package/build/Components/CustomModal.js.map +1 -0
  21. package/build/Components/DeviceType/DeviceTypeIcon.d.ts +29 -0
  22. package/build/Components/DeviceType/DeviceTypeIcon.js +108 -0
  23. package/build/Components/DeviceType/DeviceTypeIcon.js.map +1 -0
  24. package/build/Components/DeviceType/DeviceTypeOptions.d.ts +2 -0
  25. package/build/Components/DeviceType/DeviceTypeOptions.js +69 -0
  26. package/build/Components/DeviceType/DeviceTypeOptions.js.map +1 -0
  27. package/build/Components/DeviceType/DeviceTypeSelector.d.ts +20 -0
  28. package/build/Components/DeviceType/DeviceTypeSelector.js +83 -0
  29. package/build/Components/DeviceType/DeviceTypeSelector.js.map +1 -0
  30. package/build/Components/DeviceType/deviceTypeTranslations.d.ts +1 -0
  31. package/build/Components/DeviceType/deviceTypeTranslations.js +30 -0
  32. package/build/Components/DeviceType/deviceTypeTranslations.js.map +1 -0
  33. package/build/Components/DeviceType/i18n/de.json +46 -0
  34. package/build/Components/DeviceType/i18n/en.json +46 -0
  35. package/build/Components/DeviceType/i18n/fr.json +46 -0
  36. package/build/Components/DeviceType/i18n/it.json +46 -0
  37. package/build/Components/DeviceType/i18n/nl.json +46 -0
  38. package/build/Components/DeviceType/i18n/pl.json +46 -0
  39. package/build/Components/DeviceType/i18n/pt.json +46 -0
  40. package/build/Components/DeviceType/i18n/ru.json +46 -0
  41. package/build/Components/DeviceType/i18n/uk.json +46 -0
  42. package/build/Components/DeviceType/i18n/zh-cn.json +46 -0
  43. package/build/Components/DeviceType/icons/Cleaner.d.ts +3 -0
  44. package/build/Components/DeviceType/icons/Cleaner.js +14 -0
  45. package/build/Components/DeviceType/icons/Cleaner.js.map +1 -0
  46. package/build/Components/DeviceType/icons/DoorClosed.d.ts +3 -0
  47. package/build/Components/DeviceType/icons/DoorClosed.js +7 -0
  48. package/build/Components/DeviceType/icons/DoorClosed.js.map +1 -0
  49. package/build/Components/DeviceType/icons/DoorOpened.d.ts +3 -0
  50. package/build/Components/DeviceType/icons/DoorOpened.js +7 -0
  51. package/build/Components/DeviceType/icons/DoorOpened.js.map +1 -0
  52. package/build/Components/DeviceType/icons/FireOff.d.ts +3 -0
  53. package/build/Components/DeviceType/icons/FireOff.js +8 -0
  54. package/build/Components/DeviceType/icons/FireOff.js.map +1 -0
  55. package/build/Components/DeviceType/icons/FireOn.d.ts +3 -0
  56. package/build/Components/DeviceType/icons/FireOn.js +14 -0
  57. package/build/Components/DeviceType/icons/FireOn.js.map +1 -0
  58. package/build/Components/DeviceType/icons/FloodOff.d.ts +3 -0
  59. package/build/Components/DeviceType/icons/FloodOff.js +11 -0
  60. package/build/Components/DeviceType/icons/FloodOff.js.map +1 -0
  61. package/build/Components/DeviceType/icons/FloodOn.d.ts +3 -0
  62. package/build/Components/DeviceType/icons/FloodOn.js +18 -0
  63. package/build/Components/DeviceType/icons/FloodOn.js.map +1 -0
  64. package/build/Components/DeviceType/icons/Gate.d.ts +3 -0
  65. package/build/Components/DeviceType/icons/Gate.js +8 -0
  66. package/build/Components/DeviceType/icons/Gate.js.map +1 -0
  67. package/build/Components/DeviceType/icons/HeatValve.d.ts +3 -0
  68. package/build/Components/DeviceType/icons/HeatValve.js +6 -0
  69. package/build/Components/DeviceType/icons/HeatValve.js.map +1 -0
  70. package/build/Components/DeviceType/icons/Home.d.ts +3 -0
  71. package/build/Components/DeviceType/icons/Home.js +6 -0
  72. package/build/Components/DeviceType/icons/Home.js.map +1 -0
  73. package/build/Components/DeviceType/icons/Humidity.d.ts +3 -0
  74. package/build/Components/DeviceType/icons/Humidity.js +8 -0
  75. package/build/Components/DeviceType/icons/Humidity.js.map +1 -0
  76. package/build/Components/DeviceType/icons/IconHome.d.ts +5 -0
  77. package/build/Components/DeviceType/icons/IconHome.js +21 -0
  78. package/build/Components/DeviceType/icons/IconHome.js.map +1 -0
  79. package/build/Components/DeviceType/icons/Jalousie.d.ts +3 -0
  80. package/build/Components/DeviceType/icons/Jalousie.js +7 -0
  81. package/build/Components/DeviceType/icons/Jalousie.js.map +1 -0
  82. package/build/Components/DeviceType/icons/Material.d.ts +3 -0
  83. package/build/Components/DeviceType/icons/Material.js +8 -0
  84. package/build/Components/DeviceType/icons/Material.js.map +1 -0
  85. package/build/Components/DeviceType/icons/MotionOff.d.ts +3 -0
  86. package/build/Components/DeviceType/icons/MotionOff.js +11 -0
  87. package/build/Components/DeviceType/icons/MotionOff.js.map +1 -0
  88. package/build/Components/DeviceType/icons/MotionOn.d.ts +3 -0
  89. package/build/Components/DeviceType/icons/MotionOn.js +7 -0
  90. package/build/Components/DeviceType/icons/MotionOn.js.map +1 -0
  91. package/build/Components/DeviceType/icons/PushButton.d.ts +3 -0
  92. package/build/Components/DeviceType/icons/PushButton.js +9 -0
  93. package/build/Components/DeviceType/icons/PushButton.js.map +1 -0
  94. package/build/Components/DeviceType/icons/RGB.d.ts +3 -0
  95. package/build/Components/DeviceType/icons/RGB.js +43 -0
  96. package/build/Components/DeviceType/icons/RGB.js.map +1 -0
  97. package/build/Components/DeviceType/icons/RepairExpert.d.ts +3 -0
  98. package/build/Components/DeviceType/icons/RepairExpert.js +6 -0
  99. package/build/Components/DeviceType/icons/RepairExpert.js.map +1 -0
  100. package/build/Components/DeviceType/icons/Socket.d.ts +3 -0
  101. package/build/Components/DeviceType/icons/Socket.js +8 -0
  102. package/build/Components/DeviceType/icons/Socket.js.map +1 -0
  103. package/build/Components/DeviceType/icons/Thermometer.d.ts +3 -0
  104. package/build/Components/DeviceType/icons/Thermometer.js +7 -0
  105. package/build/Components/DeviceType/icons/Thermometer.js.map +1 -0
  106. package/build/Components/DeviceType/icons/ThermometerSimple.d.ts +3 -0
  107. package/build/Components/DeviceType/icons/ThermometerSimple.js +8 -0
  108. package/build/Components/DeviceType/icons/ThermometerSimple.js.map +1 -0
  109. package/build/Components/DeviceType/icons/Thermostat.d.ts +3 -0
  110. package/build/Components/DeviceType/icons/Thermostat.js +9 -0
  111. package/build/Components/DeviceType/icons/Thermostat.js.map +1 -0
  112. package/build/Components/DeviceType/icons/Valve.d.ts +3 -0
  113. package/build/Components/DeviceType/icons/Valve.js +7 -0
  114. package/build/Components/DeviceType/icons/Valve.js.map +1 -0
  115. package/build/Components/DeviceType/icons/WindowClosed.d.ts +3 -0
  116. package/build/Components/DeviceType/icons/WindowClosed.js +8 -0
  117. package/build/Components/DeviceType/icons/WindowClosed.js.map +1 -0
  118. package/build/Components/DeviceType/icons/WindowOpened.d.ts +3 -0
  119. package/build/Components/DeviceType/icons/WindowOpened.js +9 -0
  120. package/build/Components/DeviceType/icons/WindowOpened.js.map +1 -0
  121. package/build/Components/DeviceType/icons/WindowTilted.d.ts +3 -0
  122. package/build/Components/DeviceType/icons/WindowTilted.js +8 -0
  123. package/build/Components/DeviceType/icons/WindowTilted.js.map +1 -0
  124. package/build/Components/DeviceType/icons/index.d.ts +28 -0
  125. package/build/Components/DeviceType/icons/index.js +28 -0
  126. package/build/Components/DeviceType/icons/index.js.map +1 -0
  127. package/build/Components/FileBrowser.d.ts +187 -0
  128. package/build/Components/FileBrowser.js +1711 -0
  129. package/build/Components/FileBrowser.js.map +1 -0
  130. package/build/Components/FileViewer.d.ts +49 -0
  131. package/build/Components/FileViewer.js +247 -0
  132. package/build/Components/FileViewer.js.map +1 -0
  133. package/build/Components/Icon.d.ts +35 -0
  134. package/build/Components/Icon.js +140 -0
  135. package/build/Components/Icon.js.map +1 -0
  136. package/build/Components/IconPicker.d.ts +25 -0
  137. package/build/Components/IconPicker.js +72 -0
  138. package/build/Components/IconPicker.js.map +1 -0
  139. package/build/Components/IconSelector.d.ts +33 -0
  140. package/build/Components/IconSelector.js +2086 -0
  141. package/build/Components/IconSelector.js.map +1 -0
  142. package/build/Components/Image.d.ts +31 -0
  143. package/build/Components/Image.js +126 -0
  144. package/build/Components/Image.js.map +1 -0
  145. package/build/Components/InfoBox.d.ts +37 -0
  146. package/build/Components/InfoBox.js +115 -0
  147. package/build/Components/InfoBox.js.map +1 -0
  148. package/build/Components/IobUri.d.ts +14 -0
  149. package/build/Components/IobUri.js +168 -0
  150. package/build/Components/IobUri.js.map +1 -0
  151. package/build/Components/Loader.d.ts +31 -0
  152. package/build/Components/Loader.js +265 -0
  153. package/build/Components/Loader.js.map +1 -0
  154. package/build/Components/Loaders/MV.d.ts +17 -0
  155. package/build/Components/Loaders/MV.js +61 -0
  156. package/build/Components/Loaders/MV.js.map +1 -0
  157. package/build/Components/Loaders/PT.d.ts +27 -0
  158. package/build/Components/Loaders/PT.js +150 -0
  159. package/build/Components/Loaders/PT.js.map +1 -0
  160. package/build/Components/Loaders/Vendor.d.ts +22 -0
  161. package/build/Components/Loaders/Vendor.js +52 -0
  162. package/build/Components/Loaders/Vendor.js.map +1 -0
  163. package/build/Components/Logo.d.ts +18 -0
  164. package/build/Components/Logo.js +109 -0
  165. package/build/Components/Logo.js.map +1 -0
  166. package/build/Components/MDUtils.d.ts +11 -0
  167. package/build/Components/MDUtils.js +99 -0
  168. package/build/Components/MDUtils.js.map +1 -0
  169. package/build/Components/ObjectBrowser.d.ts +665 -0
  170. package/build/Components/ObjectBrowser.js +6245 -0
  171. package/build/Components/ObjectBrowser.js.map +1 -0
  172. package/build/Components/Router.d.ts +21 -0
  173. package/build/Components/Router.js +77 -0
  174. package/build/Components/Router.js.map +1 -0
  175. package/build/Components/SaveCloseButtons.d.ts +20 -0
  176. package/build/Components/SaveCloseButtons.js +65 -0
  177. package/build/Components/SaveCloseButtons.js.map +1 -0
  178. package/build/Components/Schedule.d.ts +62 -0
  179. package/build/Components/Schedule.js +1266 -0
  180. package/build/Components/Schedule.js.map +1 -0
  181. package/build/Components/SelectWithIcon.d.ts +37 -0
  182. package/build/Components/SelectWithIcon.js +139 -0
  183. package/build/Components/SelectWithIcon.js.map +1 -0
  184. package/build/Components/SimpleCron/cronText.d.ts +10 -0
  185. package/build/Components/SimpleCron/cronText.js +14 -0
  186. package/build/Components/SimpleCron/cronText.js.map +1 -0
  187. package/build/Components/SimpleCron/index.d.ts +55 -0
  188. package/build/Components/SimpleCron/index.js +698 -0
  189. package/build/Components/SimpleCron/index.js.map +1 -0
  190. package/build/Components/TabContainer.d.ts +15 -0
  191. package/build/Components/TabContainer.js +23 -0
  192. package/build/Components/TabContainer.js.map +1 -0
  193. package/build/Components/TabContent.d.ts +11 -0
  194. package/build/Components/TabContent.js +20 -0
  195. package/build/Components/TabContent.js.map +1 -0
  196. package/build/Components/TabHeader.d.ts +6 -0
  197. package/build/Components/TabHeader.js +6 -0
  198. package/build/Components/TabHeader.js.map +1 -0
  199. package/build/Components/TableResize.d.ts +45 -0
  200. package/build/Components/TableResize.js +204 -0
  201. package/build/Components/TableResize.js.map +1 -0
  202. package/build/Components/TextWithIcon.d.ts +21 -0
  203. package/build/Components/TextWithIcon.js +113 -0
  204. package/build/Components/TextWithIcon.js.map +1 -0
  205. package/build/Components/ToggleThemeMenu.d.ts +12 -0
  206. package/build/Components/ToggleThemeMenu.js +13 -0
  207. package/build/Components/ToggleThemeMenu.js.map +1 -0
  208. package/build/Components/TreeTable.d.ts +79 -0
  209. package/build/Components/TreeTable.js +538 -0
  210. package/build/Components/TreeTable.js.map +1 -0
  211. package/build/Components/UploadImage.d.ts +23 -0
  212. package/build/Components/UploadImage.js +516 -0
  213. package/build/Components/UploadImage.js.map +1 -0
  214. package/build/Components/Utils.d.ts +331 -0
  215. package/build/Components/Utils.js +1605 -0
  216. package/build/Components/Utils.js.map +1 -0
  217. package/build/Components/withWidth.d.ts +2 -0
  218. package/build/Components/withWidth.js +22 -0
  219. package/build/Components/withWidth.js.map +1 -0
  220. package/build/Connection.d.ts +1 -0
  221. package/build/Connection.js +2 -0
  222. package/build/Connection.js.map +1 -0
  223. package/build/Dialogs/ComplexCron.d.ts +24 -0
  224. package/build/Dialogs/ComplexCron.js +85 -0
  225. package/build/Dialogs/ComplexCron.js.map +1 -0
  226. package/build/Dialogs/Confirm.d.ts +39 -0
  227. package/build/Dialogs/Confirm.js +83 -0
  228. package/build/Dialogs/Confirm.js.map +1 -0
  229. package/build/Dialogs/Cron.d.ts +29 -0
  230. package/build/Dialogs/Cron.js +72 -0
  231. package/build/Dialogs/Cron.js.map +1 -0
  232. package/build/Dialogs/Error.d.ts +18 -0
  233. package/build/Dialogs/Error.js +27 -0
  234. package/build/Dialogs/Error.js.map +1 -0
  235. package/build/Dialogs/Message.d.ts +20 -0
  236. package/build/Dialogs/Message.js +29 -0
  237. package/build/Dialogs/Message.js.map +1 -0
  238. package/build/Dialogs/SelectFile.d.ts +85 -0
  239. package/build/Dialogs/SelectFile.js +115 -0
  240. package/build/Dialogs/SelectFile.js.map +1 -0
  241. package/build/Dialogs/SelectID.d.ts +102 -0
  242. package/build/Dialogs/SelectID.js +151 -0
  243. package/build/Dialogs/SelectID.js.map +1 -0
  244. package/build/Dialogs/SimpleCron.d.ts +19 -0
  245. package/build/Dialogs/SimpleCron.js +46 -0
  246. package/build/Dialogs/SimpleCron.js.map +1 -0
  247. package/build/Dialogs/TextInput.d.ts +2 -0
  248. package/build/Dialogs/TextInput.js +31 -0
  249. package/build/Dialogs/TextInput.js.map +1 -0
  250. package/build/GenericApp.d.ts +209 -0
  251. package/build/GenericApp.js +842 -0
  252. package/build/GenericApp.js.map +1 -0
  253. package/build/LegacyConnection.d.ts +938 -0
  254. package/build/LegacyConnection.js +2849 -0
  255. package/build/LegacyConnection.js.map +1 -0
  256. package/build/Prompt.d.ts +5 -0
  257. package/build/Prompt.js +19 -0
  258. package/build/Prompt.js.map +1 -0
  259. package/build/Theme.d.ts +5 -0
  260. package/build/Theme.js +344 -0
  261. package/build/Theme.js.map +1 -0
  262. package/build/assets/devices/parseNames.d.ts +0 -0
  263. package/build/assets/devices/parseNames.js +35 -0
  264. package/build/assets/devices/parseNames.js.map +1 -0
  265. package/build/assets/devices.json +1 -0
  266. package/build/assets/lamp_ceiling.svg +9 -0
  267. package/build/assets/lamp_table.svg +8 -0
  268. package/build/assets/no_icon.svg +9 -0
  269. package/build/assets/rooms/parseNames.d.ts +0 -0
  270. package/build/assets/rooms/parseNames.js +35 -0
  271. package/build/assets/rooms/parseNames.js.map +1 -0
  272. package/build/assets/rooms.json +1 -0
  273. package/build/dictionary.d.ts +1 -0
  274. package/build/dictionary.js +25 -0
  275. package/build/dictionary.js.map +1 -0
  276. package/build/globals.d.ts +19 -0
  277. package/build/i18n/de.json +480 -0
  278. package/build/i18n/en.json +480 -0
  279. package/build/i18n/es.json +480 -0
  280. package/build/i18n/fr.json +480 -0
  281. package/build/i18n/it.json +475 -0
  282. package/build/i18n/nl.json +475 -0
  283. package/build/i18n/pl.json +475 -0
  284. package/build/i18n/pt.json +475 -0
  285. package/build/i18n/ru.json +475 -0
  286. package/build/i18n/uk.json +475 -0
  287. package/build/i18n/zh-cn.json +475 -0
  288. package/build/i18n.d.ts +84 -0
  289. package/build/i18n.js +224 -0
  290. package/build/i18n.js.map +1 -0
  291. package/build/icons/IconAdapter.d.ts +3 -0
  292. package/build/icons/IconAdapter.js +7 -0
  293. package/build/icons/IconAdapter.js.map +1 -0
  294. package/build/icons/IconAlias.d.ts +3 -0
  295. package/build/icons/IconAlias.js +7 -0
  296. package/build/icons/IconAlias.js.map +1 -0
  297. package/build/icons/IconButtonImage.d.ts +3 -0
  298. package/build/icons/IconButtonImage.js +9 -0
  299. package/build/icons/IconButtonImage.js.map +1 -0
  300. package/build/icons/IconChannel.d.ts +3 -0
  301. package/build/icons/IconChannel.js +10 -0
  302. package/build/icons/IconChannel.js.map +1 -0
  303. package/build/icons/IconClearFilter.d.ts +3 -0
  304. package/build/icons/IconClearFilter.js +8 -0
  305. package/build/icons/IconClearFilter.js.map +1 -0
  306. package/build/icons/IconClosed.d.ts +3 -0
  307. package/build/icons/IconClosed.js +7 -0
  308. package/build/icons/IconClosed.js.map +1 -0
  309. package/build/icons/IconCopy.d.ts +3 -0
  310. package/build/icons/IconCopy.js +6 -0
  311. package/build/icons/IconCopy.js.map +1 -0
  312. package/build/icons/IconDevice.d.ts +3 -0
  313. package/build/icons/IconDevice.js +16 -0
  314. package/build/icons/IconDevice.js.map +1 -0
  315. package/build/icons/IconDocument.d.ts +3 -0
  316. package/build/icons/IconDocument.js +7 -0
  317. package/build/icons/IconDocument.js.map +1 -0
  318. package/build/icons/IconDocumentReadOnly.d.ts +3 -0
  319. package/build/icons/IconDocumentReadOnly.js +8 -0
  320. package/build/icons/IconDocumentReadOnly.js.map +1 -0
  321. package/build/icons/IconExpert.d.ts +3 -0
  322. package/build/icons/IconExpert.js +7 -0
  323. package/build/icons/IconExpert.js.map +1 -0
  324. package/build/icons/IconFx.d.ts +3 -0
  325. package/build/icons/IconFx.js +6 -0
  326. package/build/icons/IconFx.js.map +1 -0
  327. package/build/icons/IconInstance.d.ts +3 -0
  328. package/build/icons/IconInstance.js +7 -0
  329. package/build/icons/IconInstance.js.map +1 -0
  330. package/build/icons/IconLogout.d.ts +3 -0
  331. package/build/icons/IconLogout.js +7 -0
  332. package/build/icons/IconLogout.js.map +1 -0
  333. package/build/icons/IconNoIcon.d.ts +3 -0
  334. package/build/icons/IconNoIcon.js +6 -0
  335. package/build/icons/IconNoIcon.js.map +1 -0
  336. package/build/icons/IconOpen.d.ts +3 -0
  337. package/build/icons/IconOpen.js +7 -0
  338. package/build/icons/IconOpen.js.map +1 -0
  339. package/build/icons/IconState.d.ts +3 -0
  340. package/build/icons/IconState.js +7 -0
  341. package/build/icons/IconState.js.map +1 -0
  342. package/build/icons/IconVacuum.d.ts +3 -0
  343. package/build/icons/IconVacuum.js +12 -0
  344. package/build/icons/IconVacuum.js.map +1 -0
  345. package/build/index.css +56 -0
  346. package/build/index.d.ts +87 -0
  347. package/build/index.js +85 -0
  348. package/build/index.js.map +1 -0
  349. package/build/modulefederation.admin.config.d.ts +13 -0
  350. package/build/modulefederation.admin.config.js +45 -0
  351. package/build/modulefederation.admin.config.js.map +1 -0
  352. package/build/types.d.ts +236 -0
  353. package/i18n/de.json +480 -0
  354. package/i18n/en.json +480 -0
  355. package/i18n/es.json +480 -0
  356. package/i18n/fr.json +480 -0
  357. package/i18n/it.json +475 -0
  358. package/i18n/nl.json +475 -0
  359. package/i18n/pl.json +475 -0
  360. package/i18n/pt.json +475 -0
  361. package/i18n/ru.json +475 -0
  362. package/i18n/uk.json +475 -0
  363. package/i18n/zh-cn.json +475 -0
  364. package/index.css +56 -0
  365. package/modulefederation.admin.config.d.ts +20 -0
  366. package/modulefederation.admin.config.js +54 -0
  367. package/package.json +86 -0
  368. package/tasksExample.js +91 -0
package/README.md ADDED
@@ -0,0 +1,1450 @@
1
+ # Help ReactJS classes for adapter config
2
+
3
+ You can find demo on https://github.com/ioBroker/adapter-react-demo
4
+
5
+ ## Getting started
6
+
7
+ If you want to create the configuration page with ReactJS:
8
+
9
+ 1. Create github repo for adapter.
10
+ 2. execute `npx create-react-app src` . It will take a while.
11
+ 3. `cd src`
12
+ 4. Modify package.json file in src directory:
13
+ - Change `name` from `src` to `ADAPTERNAME-admin` (Of course replace `ADAPTERNAME` with yours)
14
+ - Add to devDependencies:
15
+ ```json
16
+ "@iobroker/adapter-react-v5": "^7.4.10",
17
+ ```
18
+ Versions can be higher.
19
+ So your `src/package.json` should look like:
20
+
21
+ ```json
22
+ {
23
+ "name": "ADAPTERNAME-admin",
24
+ "version": "0.1.0",
25
+ "private": true,
26
+ "dependencies": {
27
+ "@iobroker/adapter-react-v5": "^7.4.10",
28
+ "@iobroker/build-tools": "^1.0.0",
29
+ "babel-eslint": "^10.1.0",
30
+ "react-scripts": "^5.0.1"
31
+ },
32
+ "scripts": {
33
+ "start": "react-scripts start",
34
+ "build": "react-scripts build",
35
+ "test": "react-scripts test",
36
+ "eject": "react-scripts eject"
37
+ },
38
+ "eslintConfig": {
39
+ "extends": "react-app"
40
+ },
41
+ "homepage": ".",
42
+ "browserslist": [">0.2%", "not dead", "not ie <= 11", "not op_mini all"]
43
+ }
44
+ ```
45
+
46
+ 5. Call in `src`: `npm install`
47
+ 6. Copy `tasks.js` into `src`: `cp node_modules/@iobroker/adapter-react-v5/tasks.js tasks.js`
48
+ 7. Add scripts to your `package.json` `scripts` section:
49
+
50
+ ```json
51
+ "scripts": {
52
+ "0-clean": "node tasks --0-clean",
53
+ "1-npm": "node tasks --1-npm",
54
+ "2-build": "node tasks --2-build",
55
+ "3-copy": "node tasks --3-copy",
56
+ "4-patch": "node tasks --4-patch",
57
+ "build": "node tasks"
58
+ }
59
+ ```
60
+
61
+ 7. Start your dummy application `npm run start` for developing or build with `npm run build` and
62
+ copy files in `build` directory to `www` or to `admin`. In the admin you must rename `index.html` to `index_m.html`.
63
+ 8. You can do that with `npm` tasks: `npm run build`
64
+
65
+ ## Development
66
+
67
+ 1. Add `socket.io` to `public/index.html`.
68
+ After
69
+
70
+ ```html
71
+ <link
72
+ rel="manifest"
73
+ href="%PUBLIC_URL%/manifest.json"
74
+ />
75
+ ```
76
+
77
+ insert
78
+
79
+ ```html
80
+ <script>
81
+ const script = document.createElement('script');
82
+ window.registerSocketOnLoad = function (cb) {
83
+ window.socketLoadedHandler = cb;
84
+ };
85
+ const parts = (window.location.search || '').replace(/^\?/, '').split('&');
86
+ const query = {};
87
+ parts.forEach(item => {
88
+ const [name, val] = item.split('=');
89
+ query[decodeURIComponent(name)] = val !== undefined ? decodeURIComponent(val) : true;
90
+ });
91
+ script.onload = function () {
92
+ typeof window.socketLoadedHandler === 'function' && window.socketLoadedHandler();
93
+ };
94
+ script.src =
95
+ window.location.port === '3000'
96
+ ? window.location.protocol +
97
+ '//' +
98
+ (query.host || window.location.hostname) +
99
+ ':' +
100
+ (query.port || 8081) +
101
+ '/lib/js/socket.io.js'
102
+ : '%PUBLIC_URL%/../../lib/js/socket.io.js';
103
+
104
+ document.head.appendChild(script);
105
+ </script>
106
+ ```
107
+
108
+ 3. Add to App.js constructor initialization for I18n:
109
+
110
+ ```jsx
111
+ class App extends GenericApp {
112
+ constructor(props) {
113
+ const extendedProps = { ...props };
114
+ extendedProps.encryptedFields = ['pass']; // this parameter will be encrypted and decrypted automatically
115
+ extendedProps.translations = {
116
+ en: require('./i18n/en'),
117
+ de: require('./i18n/de'),
118
+ ru: require('./i18n/ru'),
119
+ pt: require('./i18n/pt'),
120
+ nl: require('./i18n/nl'),
121
+ fr: require('./i18n/fr'),
122
+ it: require('./i18n/it'),
123
+ es: require('./i18n/es'),
124
+ pl: require('./i18n/pl'),
125
+ uk: require('./i18n/uk'),
126
+ 'zh-cn': require('./i18n/zh-cn'),
127
+ };
128
+ // get actual admin port
129
+ extendedProps.socket = { port: parseInt(window.location.port, 10) };
130
+
131
+ // Only if close, save buttons are not required at the bottom (e.g. if admin tab)
132
+ // extendedProps.bottomButtons = false;
133
+
134
+ // only for debug purposes
135
+ if (extendedProps.socket.port === 3000) {
136
+ extendedProps.socket.port = 8081;
137
+ }
138
+
139
+ // allow to manage GenericApp the sentry initialisation or do not set the sentryDSN if no sentry available
140
+ extendedProps.sentryDSN = 'https://yyy@sentry.iobroker.net/xx';
141
+
142
+ super(extendedProps);
143
+ }
144
+ // ...
145
+ }
146
+ ```
147
+
148
+ 4. Replace `index.js` with the following code to support themes:
149
+
150
+ ```jsx
151
+ import React from 'react';
152
+ import { createRoot } from 'react-dom/client';
153
+ import * as serviceWorker from './serviceWorker';
154
+
155
+ import './index.css';
156
+ import App from './App';
157
+ import { version } from '../package.json';
158
+
159
+ console.log(`iobroker.scenes@${version}`);
160
+
161
+ const container = document.getElementById('root');
162
+ const root = createRoot(container);
163
+ root.render(<App />);
164
+
165
+ // If you want your app to work offline and load faster, you can change
166
+ // unregister() to register() below. Note this comes with some pitfalls.
167
+ // Learn more about service workers: http://bit.ly/CRA-PWA
168
+ serviceWorker.unregister();
169
+ ```
170
+
171
+ 5. Add to App.js encoding and decoding of values:
172
+
173
+ ```jsx
174
+ class App extends GenericApp {
175
+ // ...
176
+ onPrepareLoad(settings) {
177
+ settings.pass = this.decode(settings.pass);
178
+ }
179
+ onPrepareSave(settings) {
180
+ settings.pass = this.encode(settings.pass);
181
+ }
182
+ }
183
+ ```
184
+
185
+ 6. The optional step is to validate the data to be saved:
186
+
187
+ ```jsx
188
+ onPrepareSave(settings) {
189
+ super.onPrepareSave(settings);
190
+ if (DATA_INVALID) {
191
+ return false; // configuration will not be saved
192
+ } else {
193
+ return true;
194
+ }
195
+ }
196
+ ```
197
+
198
+ ## Components
199
+
200
+ ### Connection.tsx
201
+
202
+ This is a non-React class to provide the communication for socket connection with the server.
203
+
204
+ ### GenericApp.tsx
205
+
206
+ ### i18n.ts
207
+
208
+ ### Theme.tsx
209
+
210
+ ### Dialogs
211
+
212
+ Some dialogs are predefined and could be used out of the box.
213
+
214
+ #### Confirm.tsx
215
+
216
+ <!-- TODO: Provide screenshot here -->
217
+
218
+ Usage:
219
+
220
+ ```jsx
221
+ import React from 'react';
222
+ import { I18n, Confirm as ConfirmDialog } from '@iobroker/adapter-react-v5';
223
+
224
+ class ExportImportDialog extends React.Component {
225
+ constructor(props) {
226
+ super(props);
227
+
228
+ this.state = {
229
+ confirmDialog: false,
230
+ };
231
+ }
232
+
233
+ renderConfirmDialog() {
234
+ if (!this.state.confirmDialog) {
235
+ return null;
236
+ }
237
+ return (
238
+ <ConfirmDialog
239
+ title={I18n.t('Scene will be overwritten.')}
240
+ text={I18n.t('All data will be lost. Confirm?')}
241
+ ok={I18n.t('Yes')}
242
+ cancel={I18n.t('Cancel')}
243
+ suppressQuestionMinutes={5}
244
+ dialogName="myConfirmDialogThatCouldBeSuppressed"
245
+ suppressText={I18n.t('Suppress question for next %s minutes', 5)}
246
+ onClose={isYes => {
247
+ this.setState({ confirmDialog: false });
248
+ }}
249
+ />
250
+ );
251
+ }
252
+ render() {
253
+ return (
254
+ <div>
255
+ <Button onClick={() => this.setState({ confirmDialog: true })}>Click</Button>
256
+ {this.renderConfirmDialog()}
257
+ </div>
258
+ );
259
+ }
260
+ }
261
+
262
+ export default ExportImportDialog;
263
+ ```
264
+
265
+ #### Error.tsx
266
+
267
+ <!-- TODO: Provide screenshot here -->
268
+
269
+ #### Message.tsx
270
+
271
+ <!-- TODO: Provide screenshot here -->
272
+
273
+ ```jsx
274
+ renderMessage() {
275
+ if (this.state.showMessage) {
276
+ return <Message
277
+ text={this.state.showMessage}
278
+ onClose={() => this.setState({showMessage: false})}
279
+ />;
280
+ } else {
281
+ return null;
282
+ }
283
+ }
284
+ ```
285
+
286
+ #### SelectID.tsx
287
+
288
+ ![Logo](img/selectID.png)
289
+
290
+ ```jsx
291
+ import { SelectID as DialogSelectID } from '@iobroker/adapter-react-v5';
292
+
293
+ class MyComponent extends Component {
294
+ constructor(props) {
295
+ super(props);
296
+ this.state = {
297
+ showSelectId: false,
298
+ };
299
+ }
300
+
301
+ renderSelectIdDialog() {
302
+ if (this.state.showSelectId) {
303
+ return (
304
+ <DialogSelectID
305
+ key="tableSelect"
306
+ imagePrefix="../.."
307
+ dialogName={this.props.adapterName}
308
+ themeType={this.props.themeType}
309
+ socket={this.props.socket}
310
+ statesOnly={true}
311
+ selected={this.state.selectIdValue}
312
+ onClose={() => this.setState({ showSelectId: false })}
313
+ onOk={(selected, name) => {
314
+ this.setState({ showSelectId: false, selectIdValue: selected });
315
+ }}
316
+ />
317
+ );
318
+ } else {
319
+ return null;
320
+ }
321
+ }
322
+ render() {
323
+ return renderSelectIdDialog();
324
+ }
325
+ }
326
+ ```
327
+
328
+ #### Cron
329
+
330
+ Include `"react-text-mask": "^5.4.3",` in package.json.
331
+
332
+ <!-- TODO: Provide screenshot here -->
333
+
334
+ ```jsx
335
+ function renderCron() {
336
+ if (!showCron) {
337
+ return null;
338
+ } else {
339
+ return (
340
+ <DialogCron
341
+ key="dialogCron1"
342
+ cron={this.state.cronValue || '* * * * *'}
343
+ onClose={() => this.setState({ showCron: false })}
344
+ onOk={cronValue => {
345
+ this.setState({ cronValue });
346
+ }}
347
+ />
348
+ );
349
+ }
350
+ }
351
+ ```
352
+
353
+ ### Components
354
+
355
+ #### Utils.tsx
356
+
357
+ ##### getObjectNameFromObj
358
+
359
+ `getObjectNameFromObj(obj, settings, options, isDesc)`
360
+
361
+ Get object name from a single object.
362
+
363
+ Usage: `Utils.getObjectNameFromObj(this.objects[id], null, {language: I18n.getLanguage()})`
364
+
365
+ ##### getObjectIcon
366
+
367
+ `getObjectIcon(id, obj)`
368
+
369
+ Get icon from the object.
370
+
371
+ Usage:
372
+
373
+ ```jsx
374
+ const icon = Utils.getObjectIcon(id, this.objects[id]);
375
+ return <img src={icon} />;
376
+ ```
377
+
378
+ ##### isUseBright
379
+
380
+ `isUseBright(color, defaultValue)`
381
+
382
+ Usage: `
383
+
384
+ #### Loader.tsx
385
+
386
+ ![Logo](img/loader.png)
387
+
388
+ ```jsx
389
+ render() {
390
+ if (!this.state.loaded) {
391
+ return <MuiThemeProvider theme={this.state.theme}>
392
+ <Loader theme={this.state.themeType}/>
393
+ </MuiThemeProvider>;
394
+ }
395
+ // render loaded data
396
+ }
397
+
398
+ ```
399
+
400
+ #### Logo.tsx
401
+
402
+ ![Logo](img/logo.png)
403
+
404
+ ```jsx
405
+ render() {
406
+ return <form className={this.props.classes.tab}>
407
+ <Logo
408
+ instance={this.props.instance}
409
+ common={this.props.common}
410
+ native={this.props.native}
411
+ onError={text => this.setState({errorText: text})}
412
+ onLoad={this.props.onLoad}
413
+ />
414
+ ...
415
+ </form>;
416
+ }
417
+ ```
418
+
419
+ #### Router.tsx
420
+
421
+ #### ObjectBrowser.js
422
+
423
+ It is better to use `Dialog/SelectID`, but if you want:
424
+
425
+ ![Logo](img/objectBrowser.png)
426
+
427
+ ```jsx
428
+ <ObjectBrowser
429
+ foldersFirst={this.props.foldersFirst}
430
+ imagePrefix={this.props.imagePrefix || this.props.prefix} // prefix is for back compatibility
431
+ defaultFilters={this.filters}
432
+ dialogName={this.dialogName}
433
+ showExpertButton={this.props.showExpertButton !== undefined ? this.props.showExpertButton : true}
434
+ style={{ width: '100%', height: '100%' }}
435
+ columns={this.props.columns || ['name', 'type', 'role', 'room', 'func', 'val']}
436
+ types={this.props.types || ['state']}
437
+ t={I18n.t}
438
+ lang={this.props.lang || I18n.getLanguage()}
439
+ socket={this.props.socket}
440
+ selected={this.state.selected}
441
+ multiSelect={this.props.multiSelect}
442
+ notEditable={this.props.notEditable === undefined ? true : this.props.notEditable}
443
+ name={this.state.name}
444
+ theme={this.props.theme}
445
+ themeName={this.props.themeName}
446
+ themeType={this.props.themeType}
447
+ customFilter={this.props.customFilter}
448
+ onFilterChanged={filterConfig => {
449
+ this.filters = filterConfig;
450
+ window.localStorage.setItem(this.dialogName, JSON.stringify(filterConfig));
451
+ }}
452
+ onSelect={(selected, name, isDouble) => {
453
+ if (JSON.stringify(selected) !== JSON.stringify(this.state.selected)) {
454
+ this.setState({ selected, name }, () => isDouble && this.handleOk());
455
+ } else if (isDouble) {
456
+ this.handleOk();
457
+ }
458
+ }}
459
+ />
460
+ ```
461
+
462
+ #### TreeTable.ts
463
+
464
+ ![Logo](img/tableTree.png)
465
+
466
+ ```jsx
467
+ // STYLES
468
+ const styles = {
469
+ tableDiv: {
470
+ width: '100%',
471
+ overflow: 'hidden',
472
+ height: 'calc(100% - 48px)',
473
+ },
474
+ };
475
+ class MyComponent extends Component {
476
+ constructor(props) {
477
+ super(props);
478
+
479
+ this.state = {
480
+ data: [
481
+ {
482
+ id: 'UniqueID1', // required
483
+ fieldIdInData: 'Name1',
484
+ myType: 'number',
485
+ },
486
+ {
487
+ id: 'UniqueID2', // required
488
+ fieldIdInData: 'Name12',
489
+ myType: 'string',
490
+ },
491
+ ],
492
+ };
493
+
494
+ this.columns = [
495
+ {
496
+ title: 'Name of field', // required, else it will be "field"
497
+ field: 'fieldIdInData', // required
498
+ editable: false, // or true [default - true]
499
+ cellStyle: {
500
+ // CSS style - // optional
501
+ maxWidth: '12rem',
502
+ overflow: 'hidden',
503
+ wordBreak: 'break-word',
504
+ },
505
+ lookup: {
506
+ // optional => edit will be automatically "SELECT"
507
+ value1: 'text1',
508
+ value2: 'text2',
509
+ },
510
+ },
511
+ {
512
+ title: 'Type', // required, else it will be "field"
513
+ field: 'myType', // required
514
+ editable: true, // or true [default - true]
515
+ lookup: {
516
+ // optional => edit will be automatically "SELECT"
517
+ number: 'Number',
518
+ string: 'String',
519
+ boolean: 'Boolean',
520
+ },
521
+ type: 'number/string/color/oid/icon/boolean', // oid=ObjectID,icon=base64-icon
522
+ editComponent: props => (
523
+ <div>
524
+ Prefix&#123; <br />
525
+ <textarea
526
+ rows={4}
527
+ style={{ width: '100%', resize: 'vertical' }}
528
+ value={props.value}
529
+ onChange={e => props.onChange(e.target.value)}
530
+ />
531
+ Suffix
532
+ </div>
533
+ ),
534
+ },
535
+ ];
536
+ }
537
+ // renderTable
538
+ render() {
539
+ return (
540
+ <div className={this.props.classes.tableDiv}>
541
+ <TreeTable
542
+ columns={this.columns}
543
+ data={this.state.data}
544
+ onUpdate={(newData, oldData) => {
545
+ const data = JSON.parse(JSON.stringify(this.state.data));
546
+
547
+ // Added new line
548
+ if (newData === true) {
549
+ // find unique ID
550
+ let i = 1;
551
+ let id = 'line_' + i;
552
+
553
+ // eslint-disable-next-line
554
+ while (this.state.data.find(item => item.id === id)) {
555
+ i++;
556
+ id = 'line_' + i;
557
+ }
558
+
559
+ data.push({
560
+ id,
561
+ name: I18n.t('New resource') + '_' + i,
562
+ color: '',
563
+ icon: '',
564
+ unit: '',
565
+ price: 0,
566
+ });
567
+ } else {
568
+ // existing line was modifed
569
+ const pos = this.state.data.indexOf(oldData);
570
+ if (pos !== -1) {
571
+ Object.keys(newData).forEach(attr => (data[pos][attr] = newData[attr]));
572
+ }
573
+ }
574
+
575
+ this.setState({ data });
576
+ }}
577
+ onDelete={oldData => {
578
+ console.log('Delete: ' + JSON.stringify(oldData));
579
+ const pos = this.state.data.indexOf(oldData);
580
+ if (pos !== -1) {
581
+ const data = JSON.parse(JSON.stringify(this.state.data));
582
+ data.splice(pos, 1);
583
+ this.setState({ data });
584
+ }
585
+ }}
586
+ />
587
+ </div>
588
+ );
589
+ }
590
+ }
591
+ ```
592
+
593
+ #### Toast
594
+
595
+ <!-- TODO: Provide screenshot here -->
596
+
597
+ Toast is not a part of `adapter-react` but it is an example how to use toast in application:
598
+
599
+ ```jsx
600
+ import { Component } from 'react';
601
+ import { Snackbar } from '@mui/material';
602
+
603
+ class MyComponent extends Component {
604
+ constructor(props) {
605
+ super(props);
606
+ this.state = {
607
+ // ....
608
+ toast: '',
609
+ };
610
+ }
611
+
612
+ // ...
613
+ renderToast() {
614
+ if (!this.state.toast) {
615
+ return null;
616
+ }
617
+ return (
618
+ <Snackbar
619
+ anchorOrigin={{
620
+ vertical: 'bottom',
621
+ horizontal: 'left',
622
+ }}
623
+ open={true}
624
+ autoHideDuration={6000}
625
+ onClose={() => this.setState({ toast: '' })}
626
+ ContentProps={{ 'aria-describedby': 'message-id' }}
627
+ message={<span id="message-id">{this.state.toast}</span>}
628
+ action={[
629
+ <IconButton
630
+ key="close"
631
+ aria-label="Close"
632
+ color="inherit"
633
+ className={this.props.classes.close}
634
+ onClick={() => this.setState({ toast: '' })}
635
+ >
636
+ <IconClose />
637
+ </IconButton>,
638
+ ]}
639
+ />
640
+ );
641
+ }
642
+
643
+ render() {
644
+ return <div>{this.renderToast()}</div>;
645
+ }
646
+ }
647
+ ```
648
+
649
+ ## List of adapters that use adapter-react
650
+
651
+ - Admin
652
+ - Backitup
653
+ - iot
654
+ - echarts
655
+ - text2command
656
+ - scenes
657
+ - javascript
658
+ - devices
659
+ - eventlist
660
+ - cameras
661
+ - web
662
+ - vis-2
663
+ - vis-2-widgets-xxx
664
+ - fullcalendar
665
+ - openweathermap
666
+
667
+ ## Usability
668
+
669
+ In dialogs, the OK button is first (on the left) and the cancel button is last (on the right)
670
+
671
+ ## Used icons
672
+
673
+ This project uses icons from [Flaticon](https://www.flaticon.com/).
674
+
675
+ ioBroker GmbH has a valid license for all the used icons.
676
+ The icons may not be reused in other projects without the proper flaticon license or flaticon subscription.
677
+
678
+ ## Migration instructions
679
+
680
+ You can find the migration instructions:
681
+
682
+ - [from adapter-react-v5@6.x to adapter-react-v5@7.x](MIGRATION_6_7.md)
683
+ - [from adapter-react-v5@5.x to adapter-react-v5@6.x](MIGRATION_5_6.md)
684
+ - [from adapter-react to adapter-react-v5@5.x](MIGRATION_4_5.md)
685
+
686
+ <!--
687
+ Placeholder for the next version (at the beginning of the line):
688
+ ### **WORK IN PROGRESS**
689
+ -->
690
+
691
+ ## Changelog
692
+ ### 8.0.1 (2025-10-23)
693
+
694
+ - (@GermanBluefox) Split packages from mono-repo
695
+
696
+ ### 7.2.3 (2024-10-05)
697
+
698
+ - (@GermanBluefox) Corrected error in the simple CRON dialog
699
+
700
+ ### 7.2.2 (2024-10-04)
701
+
702
+ - (@GermanBluefox) Small layout change for Icon Picker
703
+
704
+ ### 7.2.1 (2024-09-30)
705
+
706
+ - (@GermanBluefox) Allowed using an array of elements in dialogs
707
+ - (@GermanBluefox) Allowed to use `socket.iob` instead of `socket.io`
708
+
709
+ ### 7.1.4 (2024-09-15)
710
+
711
+ - (@GermanBluefox) Updated socket classes
712
+
713
+ ### 7.1.3 (2024-09-15)
714
+
715
+ - (@GermanBluefox) Updated socket classes
716
+ - (@GermanBluefox) Added additional confirmation dialog for CRONs for every minute execution
717
+
718
+ ### 7.1.1 (2024-09-13)
719
+
720
+ - (@GermanBluefox) Corrected TabContainer
721
+
722
+ ### 7.1.0 (2024-09-12)
723
+
724
+ - (@GermanBluefox) Optimized the icon picker
725
+ - (@GermanBluefox) Used common eslint-config
726
+
727
+ ### 7.0.2 (2024-09-10)
728
+
729
+ - (@GermanBluefox) Showed the context menu under cursor position in the object browser
730
+ - (@GermanBluefox) Added links to aliases in the object browser
731
+
732
+ ### 7.0.1 (2024-08-29)
733
+
734
+ - (@GermanBluefox) Updated the object browser
735
+ - (@GermanBluefox) Used MUI Library 6.0
736
+
737
+ ### 6.1.10 (2024-08-30)
738
+
739
+ - (@GermanBluefox) Updated the object browser
740
+
741
+ ### 6.1.9 (2024-08-14)
742
+
743
+ - (@GermanBluefox) Updated JSON schema
744
+
745
+ ### 6.1.8 (2024-08-03)
746
+
747
+ - (@GermanBluefox) Added translations
748
+
749
+ ### 6.1.6 (2024-07-23)
750
+
751
+ - (@GermanBluefox) Optimize package
752
+
753
+ ### 6.1.5 (2024-07-20)
754
+
755
+ - (@GermanBluefox) Added sources to package
756
+
757
+ ### 6.1.3 (2024-07-20)
758
+
759
+ - (@GermanBluefox) Better typing of legacy connection
760
+
761
+ ### 6.1.1 (2024-07-16)
762
+
763
+ - (@GermanBluefox) Added translations
764
+
765
+ ### 6.1.0 (2024-07-15)
766
+
767
+ - (@GermanBluefox) Replace by CRON to text the package to `cronstrue`
768
+
769
+ ### 6.0.19 (2024-07-14)
770
+
771
+ - (@GermanBluefox) added some packages for federation
772
+
773
+ ### 6.0.17 (2024-07-14)
774
+
775
+ - (@GermanBluefox) Allowed playing mp3 files in the file browser
776
+ - (@GermanBluefox) Corrected jump by object selection
777
+
778
+ ### 6.0.14 (2024-07-07)
779
+
780
+ - (@GermanBluefox) Corrected theme type selection
781
+
782
+ ### 6.0.13 (2024-06-30)
783
+
784
+ - (@GermanBluefox) Corrected color picker
785
+
786
+ ### 6.0.12 (2024-06-29)
787
+
788
+ - (@GermanBluefox) Added support for the overrides in the theme
789
+
790
+ ### 6.0.10 (2024-06-27)
791
+
792
+ - (@GermanBluefox) Added translation
793
+ - (@GermanBluefox) Mobile object browser improved
794
+
795
+ ### 6.0.9 (2024-06-26)
796
+
797
+ - (@GermanBluefox) Corrected Icons
798
+
799
+ ### 6.0.8 (2024-06-26)
800
+
801
+ - (@GermanBluefox) Corrected types of the select ID dialog
802
+ - (@GermanBluefox) Made the tooltips neutral to the pointer events
803
+
804
+ ### 6.0.6 (2024-06-24)
805
+
806
+ - (@GermanBluefox) Synchronised with admin
807
+ - (@GermanBluefox) Added translations for time scheduler
808
+
809
+ ### 6.0.4 (2024-06-21)
810
+
811
+ - (@GermanBluefox) Removed the usage of `withStyles` in favor of `sx` and `style` properties (see [Migration from v5 to v6](#migration-from-v5-to-v6)
812
+ - (@GermanBluefox) (BREAKING) Higher version of `@mui/material` (5.15.20) is used
813
+
814
+ ### 5.0.8 (2024-06-15)
815
+
816
+ - (@GermanBluefox) Added `modulefederation.admin.config.js` for module federation
817
+
818
+ ### 5.0.5 (2024-06-10)
819
+
820
+ - (@GermanBluefox) Sources were synchronized with admin
821
+
822
+ ### 5.0.4 (2024-06-07)
823
+
824
+ - (@GermanBluefox) Added better typing
825
+
826
+ ### 5.0.2 (2024-05-30)
827
+
828
+ - (@GermanBluefox) Added better typing
829
+ - (@GermanBluefox) Json-Config is now a separate package and must be installed additionally
830
+
831
+ ### 5.0.0 (2024-05-29)
832
+
833
+ - (@GermanBluefox) Types are now exported
834
+ - (@GermanBluefox) Translator renamed to Translate
835
+ - (@GermanBluefox) Breaking: Theme renamed to IobTheme because of the naming conflict
836
+
837
+ ### 4.13.24 (2024-05-25)
838
+
839
+ - (@GermanBluefox) Updated packages
840
+
841
+ - ### 4.13.22 (2024-05-23)
842
+ - (@GermanBluefox) Updated packages
843
+
844
+ ### 4.13.20 (2024-05-22)
845
+
846
+ - (@GermanBluefox) Better types added
847
+ - (@GermanBluefox) updated theme definitions
848
+ - (@GermanBluefox) corrected dates in cron dialog
849
+
850
+ ### 4.13.14 (2024-05-19)
851
+
852
+ - (@GermanBluefox) Updated packages
853
+
854
+ ### 4.13.13 (2024-05-09)
855
+
856
+ - (@GermanBluefox) Updated ioBroker types
857
+
858
+ ### 4.13.12 (2024-05-06)
859
+
860
+ - (@GermanBluefox) All files are migrated to Typescript
861
+
862
+ ### 4.13.11 (2024-04-23)
863
+
864
+ - (@GermanBluefox) Corrected the size of icons
865
+
866
+ ### 4.13.10 (2024-04-22)
867
+
868
+ - (@GermanBluefox) Migrated all icons to Typescript
869
+
870
+ ### 4.13.9 (2024-04-20)
871
+
872
+ - (@GermanBluefox) Updated socket-client package
873
+
874
+ ### 4.13.8 (2024-04-19)
875
+
876
+ - (@GermanBluefox) Corrected CRON selector
877
+
878
+ ### 4.13.7 (2024-04-19)
879
+
880
+ - (@GermanBluefox) Migrated ColorPicker to typescript
881
+
882
+ ### 4.13.6 (2024-04-11)
883
+
884
+ - (@GermanBluefox) Migrated TreeTable to typescript
885
+ - (@GermanBluefox) corrected the object subscription
886
+
887
+ ### 4.13.5 (2024-04-02)
888
+
889
+ - (@GermanBluefox) used new connection classes
890
+ - (@GermanBluefox) Improved the `SelectID` dialog
891
+
892
+ ### 4.13.3 (2024-04-01)
893
+
894
+ - (@GermanBluefox) used new connection classes
895
+
896
+ ### 4.12.3 (2024-03-30)
897
+
898
+ - (@GermanBluefox) Migrated legacy connection to typescript
899
+
900
+ ### 4.12.2 (2024-03-25)
901
+
902
+ - (@GermanBluefox) Added support for remote cloud
903
+
904
+ ### 4.11.6 (2024-03-19)
905
+
906
+ - (@GermanBluefox) Corrected rendering of LoaderMV
907
+
908
+ ### 4.11.4 (2024-03-18)
909
+
910
+ - (@GermanBluefox) Corrected types of IconPicker
911
+
912
+ ### 4.11.3 (2024-03-17)
913
+
914
+ - (@GermanBluefox) Made filters for the file selector dialog optional
915
+
916
+ ### 4.11.2 (2024-03-16)
917
+
918
+ - (@GermanBluefox) Migrated GenericApp to typescript
919
+
920
+ ### 4.10.4 (2024-03-16)
921
+
922
+ - (@GermanBluefox) Migrated some components to typescript
923
+
924
+ ### 4.10.1 (2024-03-11)
925
+
926
+ - (@GermanBluefox) Migrated some components to typescript
927
+
928
+ ### 4.9.11 (2024-03-08)
929
+
930
+ - (foxriver76) type GenericApp socket correctly
931
+
932
+ ### 4.9.10 (2024-02-21)
933
+
934
+ - (@GermanBluefox) translations
935
+ - (@GermanBluefox) updated JSON config
936
+
937
+ ### 4.9.9 (2024-02-16)
938
+
939
+ - (foxriver76) also check plugin state of instance to see if Sentry is explicitly disabled
940
+
941
+ ### 4.9.8 (2024-02-13)
942
+
943
+ - (@GermanBluefox) allowed hiding wizard in cron dialog
944
+
945
+ ### 4.9.7 (2024-02-03)
946
+
947
+ - (foxriver76) allow passing down the instance number do avoid determining from url
948
+
949
+ ### 4.9.5 (2024-01-01)
950
+
951
+ - (foxriver76) make `copyToClipboard` event parameter optional
952
+
953
+ ### 4.9.4 (2024-01-01)
954
+
955
+ - (foxriver76) try to fix `SelectID` scrolling
956
+
957
+ ### 4.9.2 (2023-12-30)
958
+
959
+ - (foxriver76) bump version of `@iobroker/json-config`
960
+
961
+ ### 4.9.1 (2023-12-22)
962
+
963
+ - (foxriver76) `@iobroker/json-config` moved to real dependencies
964
+
965
+ ### 4.9.0 (2023-12-22)
966
+
967
+ - (foxriver76) migrate to `@iobroker/json-config` module to have a single point of truth
968
+ - (@GermanBluefox) Allowed using of `filterFunc` as string
969
+
970
+ ### 4.8.1 (2023-12-14)
971
+
972
+ - (@GermanBluefox) Added Device manager to JSON Config
973
+
974
+ ### 4.7.15 (2023-12-12)
975
+
976
+ - (@GermanBluefox) Corrected parsing of a text
977
+
978
+ ### 4.7.13 (2023-12-10)
979
+
980
+ - (@GermanBluefox) Added possibility to define the root style and embedded property
981
+
982
+ ### 4.7.11 (2023-12-06)
983
+
984
+ - (@GermanBluefox) Extended color picker with "noInputField" option
985
+
986
+ ### 4.7.9 (2023-12-04)
987
+
988
+ - (@GermanBluefox) Corrected the icon picker
989
+
990
+ ### 4.7.8 (2023-12-04)
991
+
992
+ - (foxriver76) port to `@iobroker/types`
993
+
994
+ ### 4.7.6 (2023-11-29)
995
+
996
+ - (@GermanBluefox) Added translations
997
+
998
+ ### 4.7.5 (2023-11-28)
999
+
1000
+ - (@GermanBluefox) Corrected subscribe on objects in the legacy connection
1001
+
1002
+ ### 4.7.4 (2023-11-23)
1003
+
1004
+ - (@GermanBluefox) Updated packages
1005
+ - (@GermanBluefox) Made getStates method in legacy connection compatible with new one
1006
+
1007
+ ### 4.7.3 (2023-11-08)
1008
+
1009
+ - (@GermanBluefox) Updated packages
1010
+
1011
+ ### 4.7.2 (2023-11-03)
1012
+
1013
+ - (foxriver76) fixed problem with color picker, where editing TextField was buggy
1014
+ - (foxriver76) fixed light mode color of a path in FileBrowser
1015
+
1016
+ ### 4.7.0 (2023-10-31)
1017
+
1018
+ - (@GermanBluefox) Synced with admin
1019
+ - (@GermanBluefox) Added GIF to image files
1020
+
1021
+ ### 4.6.7 (2023-10-19)
1022
+
1023
+ - (@GermanBluefox) Added return value for `subscribeOnInstance` for Connection class
1024
+
1025
+ ### 4.6.6 (2023-10-13)
1026
+
1027
+ - (@GermanBluefox) Fixed the legacy connection
1028
+
1029
+ ### 4.6.5 (2023-10-12)
1030
+
1031
+ - (foxriver76) fixed object browser with date
1032
+
1033
+ ### 4.6.4 (2023-10-11)
1034
+
1035
+ - (@GermanBluefox) Updated the packages
1036
+
1037
+ ### 4.6.3 (2023-10-09)
1038
+
1039
+ - (@GermanBluefox) Just updated the packages
1040
+ - (@GermanBluefox) Synced with admin
1041
+
1042
+ ### 4.6.2 (2023-09-29)
1043
+
1044
+ - (@GermanBluefox) Experimental feature added: update states on re-subscribe
1045
+
1046
+ ### 4.5.5 (2023-09-27)
1047
+
1048
+ - (@GermanBluefox) Added export for IconNoIcon
1049
+
1050
+ ### 4.5.4 (2023-09-17)
1051
+
1052
+ - (@GermanBluefox) Added the restricting to folder property for select file dialog
1053
+
1054
+ ### 4.5.3 (2023-08-20)
1055
+
1056
+ - (foxriver76) fixed css classes of TableResize, see https://github.com/ioBroker/ioBroker.admin/issues/1860
1057
+
1058
+ ### 4.5.2 (2023-08-20)
1059
+
1060
+ - (foxriver76) added missing export of TableResize
1061
+
1062
+ ### 4.5.1 (2023-08-19)
1063
+
1064
+ - (foxriver76) fix dialog TextInput
1065
+
1066
+ ### 4.5.0 (2023-08-18)
1067
+
1068
+ - (@GermanBluefox) Synchronize components with admin
1069
+
1070
+ ### 4.4.8 (2023-08-17)
1071
+
1072
+ - (@GermanBluefox) Added translations
1073
+
1074
+ ### 4.4.7 (2023-08-10)
1075
+
1076
+ - (@GermanBluefox) Added `subscribeStateAsync` method to wait for answer
1077
+ - (@GermanBluefox) Added support for arrays for un/subscriptions
1078
+
1079
+ ### 4.4.5 (2023-08-01)
1080
+
1081
+ - (@GermanBluefox) Updated packages
1082
+
1083
+ ### 4.3.3 (2023-07-28)
1084
+
1085
+ - (@GermanBluefox) Added translations
1086
+
1087
+ ### 4.3.0 (2023-07-19)
1088
+
1089
+ - (@GermanBluefox) Updated packages
1090
+ - (@GermanBluefox) Added translations
1091
+ - (@GermanBluefox) Synced object browser
1092
+ - (@GermanBluefox) formatting
1093
+
1094
+ ### 4.2.1 (2023-07-17)
1095
+
1096
+ - (@GermanBluefox) Updated packages
1097
+ - (@GermanBluefox) Added translations
1098
+
1099
+ ### 4.2.0 (2023-07-07)
1100
+
1101
+ - (@GermanBluefox) Updated packages
1102
+ - (@GermanBluefox) Added new method `getObjectsById` to the socket communication
1103
+
1104
+ ### 4.1.2 (2023-06-20)
1105
+
1106
+ - (@GermanBluefox) Allowed setting theme name directly by theme toggle
1107
+
1108
+ ### 4.1.0 (2023-05-10)
1109
+
1110
+ - (@GermanBluefox) `craco-module-federation.js` was added. For node 16
1111
+
1112
+ ### 4.0.27 (2023-05-09)
1113
+
1114
+ - (@GermanBluefox) Allowed showing only specific root in SelectIDDialog
1115
+
1116
+ ### 4.0.26 (2023-05-08)
1117
+
1118
+ - (@GermanBluefox) Added IDs to the buttons in the dialog for GUI tests
1119
+
1120
+ ### 4.0.25 (2023-04-23)
1121
+
1122
+ - (@GermanBluefox) Extended `TextWithIcon` with defined color and icon
1123
+
1124
+ ### 4.0.24 (2023-04-03)
1125
+
1126
+ - (@GermanBluefox) Updated the file selector in tile mode
1127
+
1128
+ ### 4.0.23 (2023-03-27)
1129
+
1130
+ - (@GermanBluefox) Added translations
1131
+
1132
+ ### 4.0.22 (2023-03-22)
1133
+
1134
+ - (@GermanBluefox) Re-Activate legacy connection
1135
+
1136
+ ### 4.0.21 (2023-03-22)
1137
+
1138
+ - (@GermanBluefox) Added translations
1139
+
1140
+ ### 4.0.20 (2023-03-21)
1141
+
1142
+ - (@GermanBluefox) Color picker was improved
1143
+
1144
+ ### 4.0.19 (2023-03-20)
1145
+
1146
+ - (@GermanBluefox) Packages were updated
1147
+ - (@GermanBluefox) Added new translations
1148
+
1149
+ ### 4.0.18 (2023-03-16)
1150
+
1151
+ - (@GermanBluefox) Packages were updated
1152
+
1153
+ ### 4.0.17 (2023-03-15)
1154
+
1155
+ - (@GermanBluefox) Added translations
1156
+ - (@GermanBluefox) Added port controller to JSON config
1157
+
1158
+ ### 4.0.15 (2023-03-12)
1159
+
1160
+ - (@GermanBluefox) Updated the object browser and file browser
1161
+
1162
+ ### 4.0.14 (2023-03-03)
1163
+
1164
+ - (@GermanBluefox) added handler of alert messages
1165
+
1166
+ ### 4.0.13 (2023-02-15)
1167
+
1168
+ - (@GermanBluefox) Corrected the theme button
1169
+
1170
+ ### 4.0.12 (2023-02-15)
1171
+
1172
+ - (@GermanBluefox) made the fix for `echarts`
1173
+
1174
+ ### 4.0.11 (2023-02-14)
1175
+
1176
+ - (@GermanBluefox) Updated packages
1177
+ - (@GermanBluefox) The `chartReady` event was omitted
1178
+
1179
+ ### 4.0.10 (2023-02-10)
1180
+
1181
+ - (@GermanBluefox) Updated packages
1182
+ - (@GermanBluefox) made the fix for `material`
1183
+
1184
+ ### 4.0.9 (2023-02-02)
1185
+
1186
+ - (@GermanBluefox) Updated packages
1187
+
1188
+ ### 4.0.8 (2022-12-19)
1189
+
1190
+ - (@GermanBluefox) Extended socket with `log` command
1191
+
1192
+ ### 4.0.6 (2022-12-19)
1193
+
1194
+ - (@GermanBluefox) Corrected URL for the connection
1195
+
1196
+ ### 4.0.5 (2022-12-14)
1197
+
1198
+ - (@GermanBluefox) Added support of custom palette for color picker
1199
+
1200
+ ### 4.0.2 (2022-12-01)
1201
+
1202
+ - (@GermanBluefox) use `@iobroker/socket-client` instead of `Connection.tsx`
1203
+
1204
+ ### 3.5.3 (2022-11-30)
1205
+
1206
+ - (@GermanBluefox) Improved `renderTextWithA` function to support `<b>` and `<i>` tags
1207
+
1208
+ ### 3.5.2 (2022-11-30)
1209
+
1210
+ - (@GermanBluefox) updated json config component
1211
+
1212
+ ### 3.4.1 (2022-11-29)
1213
+
1214
+ - (@GermanBluefox) Added button text for message dialog
1215
+
1216
+ ### 3.4.0 (2022-11-29)
1217
+
1218
+ - (@GermanBluefox) Added file selector
1219
+
1220
+ ### 3.3.0 (2022-11-26)
1221
+
1222
+ - (@GermanBluefox) Added subscribe on files
1223
+
1224
+ ### 3.2.7 (2022-11-13)
1225
+
1226
+ - (@GermanBluefox) Added `fullWidth` property to `Dialog`
1227
+
1228
+ ### 3.2.6 (2022-11-08)
1229
+
1230
+ - (xXBJXx) Improved TreeTable component
1231
+
1232
+ ### 3.2.5 (2022-11-08)
1233
+
1234
+ - (@GermanBluefox) Added the role filter for the object browser
1235
+
1236
+ ### 3.2.4 (2022-11-03)
1237
+
1238
+ - (@GermanBluefox) Added support for alfa channel for `invertColor`
1239
+
1240
+ ### 3.2.3 (2022-10-26)
1241
+
1242
+ - (@GermanBluefox) Corrected expert mode for object browser
1243
+
1244
+ ### 3.2.2 (2022-10-25)
1245
+
1246
+ - (@GermanBluefox) Added support for prefixes for translations
1247
+
1248
+ ### 3.2.1 (2022-10-24)
1249
+
1250
+ - (@GermanBluefox) Corrected color inversion
1251
+
1252
+ ### 3.2.0 (2022-10-19)
1253
+
1254
+ - (@GermanBluefox) Added ukrainian translation
1255
+
1256
+ ### 3.1.35 (2022-10-17)
1257
+
1258
+ - (@GermanBluefox) small changes for material
1259
+
1260
+ ### 3.1.34 (2022-08-24)
1261
+
1262
+ - (@GermanBluefox) Implemented fallback to english by translations
1263
+
1264
+ ### 3.1.33 (2022-08-24)
1265
+
1266
+ - (@GermanBluefox) Added support for onchange flag
1267
+
1268
+ ### 3.1.30 (2022-08-23)
1269
+
1270
+ - (@GermanBluefox) Added method `getCompactSystemRepositories`
1271
+ - (@GermanBluefox) corrected error in `ObjectBrowser`
1272
+
1273
+ ### 3.1.27 (2022-08-01)
1274
+
1275
+ - (@GermanBluefox) Disable file editing in FileViewer
1276
+
1277
+ ### 3.1.26 (2022-08-01)
1278
+
1279
+ - (@GermanBluefox) Added translations
1280
+ - (@GermanBluefox) JSON schema was extended with missing definitions
1281
+
1282
+ ### 3.1.24 (2022-07-28)
1283
+
1284
+ - (@GermanBluefox) Updated file browser and object browser
1285
+
1286
+ ### 3.1.23 (2022-07-25)
1287
+
1288
+ - (@GermanBluefox) Extend custom filter for object selector
1289
+
1290
+ ### 3.1.22 (2022-07-22)
1291
+
1292
+ - (@GermanBluefox) Added i18n tools for development
1293
+
1294
+ ### 3.1.20 (2022-07-14)
1295
+
1296
+ - (@GermanBluefox) Allowed to show select dialog with the expert mode enabled
1297
+
1298
+ ### 3.1.19 (2022-07-08)
1299
+
1300
+ - (@GermanBluefox) Allowed extending translations for all languages together
1301
+
1302
+ ### 3.1.18 (2022-07-06)
1303
+
1304
+ - (@GermanBluefox) Added translation
1305
+
1306
+ ### 3.1.17 (2022-07-05)
1307
+
1308
+ - (@GermanBluefox) Deactivate JSON editor for JSONConfig because of space
1309
+
1310
+ ### 3.1.16 (2022-06-27)
1311
+
1312
+ - (@GermanBluefox) Update object browser
1313
+
1314
+ ### 3.1.15 (2022-06-27)
1315
+
1316
+ - (@GermanBluefox) Allowed using of spaces in name
1317
+
1318
+ ### 3.1.14 (2022-06-23)
1319
+
1320
+ - (@GermanBluefox) Added translations
1321
+
1322
+ ### 3.1.11 (2022-06-22)
1323
+
1324
+ - (@GermanBluefox) Added preparations for iobroker cloud
1325
+
1326
+ ### 3.1.10 (2022-06-22)
1327
+
1328
+ - (@GermanBluefox) Added translations
1329
+
1330
+ ### 3.1.9 (2022-06-20)
1331
+
1332
+ - (@GermanBluefox) Allowed working behind reverse proxy
1333
+
1334
+ ### 3.1.7 (2022-06-19)
1335
+
1336
+ - (@GermanBluefox) Added file select dialog
1337
+
1338
+ ### 3.1.3 (2022-06-13)
1339
+
1340
+ - (@GermanBluefox) Added table with resized headers
1341
+
1342
+ ### 3.1.2 (2022-06-09)
1343
+
1344
+ - (@GermanBluefox) Added new document icon (read only)
1345
+
1346
+ ### 3.1.1 (2022-06-09)
1347
+
1348
+ - (@GermanBluefox) Allowed working behind reverse proxy
1349
+
1350
+ ### 3.1.0 (2022-06-07)
1351
+
1352
+ - (@GermanBluefox) Some german texts were corrected
1353
+
1354
+ ### 3.0.17 (2022-06-03)
1355
+
1356
+ - (@GermanBluefox) Allowed calling getAdapterInstances not for admin too
1357
+
1358
+ ### 3.0.15 (2022-06-01)
1359
+
1360
+ - (@GermanBluefox) Updated JsonConfigComponent: password, table
1361
+
1362
+ ### 3.0.14 (2022-05-25)
1363
+
1364
+ - (@GermanBluefox) Added ConfigGeneric to import
1365
+
1366
+ ### 3.0.7 (2022-05-25)
1367
+
1368
+ - (@GermanBluefox) Made the module definitions
1369
+
1370
+ ### 3.0.6 (2022-05-25)
1371
+
1372
+ - (@GermanBluefox) Added JsonConfigComponent
1373
+
1374
+ ### 2.1.11 (2022-05-24)
1375
+
1376
+ - (@GermanBluefox) Update file browser. It supports now the file changed events.
1377
+
1378
+ ### 2.1.10 (2022-05-24)
1379
+
1380
+ - (@GermanBluefox) Corrected object browser
1381
+
1382
+ ### 2.1.9 (2022-05-16)
1383
+
1384
+ - (@GermanBluefox) Corrected expert mode in object browser
1385
+
1386
+ ### 2.1.7 (2022-05-09)
1387
+
1388
+ - (@GermanBluefox) Changes were synchronized with adapter-react-v5
1389
+ - (@GermanBluefox) Added `I18n.disableWarning` method
1390
+
1391
+ ### 2.1.6 (2022-03-28)
1392
+
1393
+ - (@GermanBluefox) Added `log` method to connection
1394
+ - (@GermanBluefox) Corrected translations
1395
+
1396
+ ### 2.1.1 (2022-03-27)
1397
+
1398
+ - (@GermanBluefox) Corrected error in TreeTable
1399
+
1400
+ ### 2.1.0 (2022-03-26)
1401
+
1402
+ - (@GermanBluefox) BREAKING_CHANGE: Corrected error with readFile(base64=false)
1403
+
1404
+ ### 2.0.0 (2022-03-26)
1405
+
1406
+ - (@GermanBluefox) Initial version
1407
+
1408
+ ### 0.1.0 (2022-03-23)
1409
+
1410
+ - (@GermanBluefox) Fixed theme errors
1411
+
1412
+ ### 0.0.4 (2022-03-22)
1413
+
1414
+ - (@GermanBluefox) Fixed eslint warnings
1415
+
1416
+ ### 0.0.3 (2022-03-19)
1417
+
1418
+ - (@GermanBluefox) beta version
1419
+
1420
+ ### 0.0.2 (2022-02-24)
1421
+
1422
+ - (@GermanBluefox) try to publish a first version
1423
+
1424
+ ### 0.0.1 (2022-02-24)
1425
+
1426
+ - initial commit
1427
+
1428
+ ## License
1429
+
1430
+ The MIT License (MIT)
1431
+
1432
+ Copyright (c) 2019-2025 @GermanBluefox <dogafox@gmail.com>
1433
+
1434
+ Permission is hereby granted, free of charge, to any person obtaining a copy
1435
+ of this software and associated documentation files (the "Software"), to deal
1436
+ in the Software without restriction, including without limitation the rights
1437
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1438
+ copies of the Software, and to permit persons to whom the Software is
1439
+ furnished to do so, subject to the following conditions:
1440
+
1441
+ The above copyright notice and this permission notice shall be included in all
1442
+ copies or substantial portions of the Software.
1443
+
1444
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1445
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1446
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1447
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1448
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1449
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1450
+ SOFTWARE.