@iobroker/adapter-react-v5 7.0.2 → 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (307) hide show
  1. package/Components/404.d.ts +3 -2
  2. package/Components/404.js +3 -2
  3. package/Components/ColorPicker.d.ts +22 -8
  4. package/Components/ColorPicker.js +34 -17
  5. package/Components/ComplexCron.js +24 -24
  6. package/Components/CopyToClipboard.d.ts +10 -1
  7. package/Components/CopyToClipboard.js +17 -8
  8. package/Components/CustomModal.d.ts +1 -1
  9. package/Components/CustomModal.js +8 -8
  10. package/Components/FileBrowser.d.ts +11 -11
  11. package/Components/FileBrowser.js +135 -152
  12. package/Components/FileViewer.js +34 -23
  13. package/Components/Icon.d.ts +16 -2
  14. package/Components/Icon.js +19 -8
  15. package/Components/IconPicker.js +10 -14
  16. package/Components/IconSelector.d.ts +1 -1
  17. package/Components/IconSelector.js +64 -74
  18. package/Components/Image.d.ts +8 -4
  19. package/Components/Image.js +13 -32
  20. package/Components/Loader.d.ts +2 -2
  21. package/Components/Loader.js +21 -18
  22. package/Components/Loaders/MV.d.ts +6 -1
  23. package/Components/Loaders/MV.js +23 -7
  24. package/Components/Loaders/PT.d.ts +7 -2
  25. package/Components/Loaders/PT.js +20 -7
  26. package/Components/Loaders/Vendor.d.ts +2 -2
  27. package/Components/Loaders/Vendor.js +15 -7
  28. package/Components/Logo.js +16 -18
  29. package/Components/MDUtils.d.ts +1 -1
  30. package/Components/MDUtils.js +8 -4
  31. package/Components/ObjectBrowser.d.ts +40 -39
  32. package/Components/ObjectBrowser.js +550 -435
  33. package/Components/Router.d.ts +1 -3
  34. package/Components/Router.js +3 -1
  35. package/Components/SaveCloseButtons.d.ts +3 -3
  36. package/Components/SaveCloseButtons.js +3 -3
  37. package/Components/Schedule.d.ts +15 -15
  38. package/Components/Schedule.js +177 -154
  39. package/Components/SelectWithIcon.d.ts +2 -2
  40. package/Components/SelectWithIcon.js +45 -34
  41. package/Components/SimpleCron/index.js +83 -43
  42. package/Components/TabContainer.js +2 -2
  43. package/Components/TabContent.js +1 -1
  44. package/Components/TabHeader.js +1 -1
  45. package/Components/TableResize.d.ts +2 -2
  46. package/Components/TableResize.js +5 -5
  47. package/Components/TextWithIcon.d.ts +1 -1
  48. package/Components/TextWithIcon.js +10 -8
  49. package/Components/ToggleThemeMenu.d.ts +2 -2
  50. package/Components/ToggleThemeMenu.js +3 -3
  51. package/Components/TreeTable.d.ts +18 -18
  52. package/Components/TreeTable.js +76 -72
  53. package/Components/UploadImage.d.ts +2 -2
  54. package/Components/UploadImage.js +25 -21
  55. package/Components/Utils.d.ts +42 -22
  56. package/Components/Utils.js +66 -65
  57. package/Components/withWidth.d.ts +2 -2
  58. package/Components/withWidth.js +10 -6
  59. package/Dialogs/ComplexCron.d.ts +2 -2
  60. package/Dialogs/ComplexCron.js +3 -3
  61. package/Dialogs/Confirm.d.ts +4 -4
  62. package/Dialogs/Confirm.js +18 -8
  63. package/Dialogs/Cron.d.ts +3 -3
  64. package/Dialogs/Cron.js +21 -17
  65. package/Dialogs/Error.d.ts +3 -3
  66. package/Dialogs/Error.js +6 -4
  67. package/Dialogs/Message.d.ts +3 -3
  68. package/Dialogs/Message.js +6 -4
  69. package/Dialogs/SelectFile.d.ts +4 -4
  70. package/Dialogs/SelectFile.js +6 -4
  71. package/Dialogs/SelectID.d.ts +12 -10
  72. package/Dialogs/SelectID.js +12 -8
  73. package/Dialogs/SimpleCron.d.ts +2 -2
  74. package/Dialogs/SimpleCron.js +2 -2
  75. package/Dialogs/TextInput.d.ts +2 -2
  76. package/Dialogs/TextInput.js +3 -3
  77. package/GenericApp.d.ts +19 -13
  78. package/GenericApp.js +128 -85
  79. package/LegacyConnection.d.ts +240 -248
  80. package/LegacyConnection.js +500 -525
  81. package/README.md +1234 -1170
  82. package/Theme.d.ts +1 -1
  83. package/Theme.js +9 -12
  84. package/assets/devices.json +1 -0
  85. package/assets/rooms.json +1 -0
  86. package/craco-module-federation.js +3 -12
  87. package/i18n/de.json +434 -434
  88. package/i18n/en.json +434 -434
  89. package/i18n/es.json +434 -434
  90. package/i18n/fr.json +434 -434
  91. package/i18n/it.json +434 -434
  92. package/i18n/nl.json +434 -434
  93. package/i18n/pl.json +434 -434
  94. package/i18n/pt.json +434 -434
  95. package/i18n/ru.json +434 -434
  96. package/i18n/uk.json +434 -434
  97. package/i18n/zh-cn.json +434 -434
  98. package/i18n.d.ts +26 -19
  99. package/i18n.js +28 -22
  100. package/icons/IconAdapter.js +2 -2
  101. package/icons/IconAlias.js +2 -2
  102. package/icons/IconChannel.js +2 -2
  103. package/icons/IconClearFilter.js +2 -2
  104. package/icons/IconClosed.js +2 -2
  105. package/icons/IconCopy.js +2 -2
  106. package/icons/IconDevice.js +2 -2
  107. package/icons/IconDocument.js +2 -2
  108. package/icons/IconDocumentReadOnly.js +2 -2
  109. package/icons/IconExpert.js +2 -2
  110. package/icons/IconFx.js +2 -2
  111. package/icons/IconInstance.js +2 -2
  112. package/icons/IconLogout.js +2 -2
  113. package/icons/IconNoIcon.js +2 -2
  114. package/icons/IconOpen.d.ts +2 -2
  115. package/icons/IconOpen.js +2 -2
  116. package/icons/IconProps.d.ts +4 -3
  117. package/icons/IconState.d.ts +2 -2
  118. package/icons/IconState.js +2 -2
  119. package/index.css +3 -2
  120. package/package.json +1 -1
  121. package/src/Components/404.tsx +32 -31
  122. package/src/Components/ColorPicker.tsx +142 -114
  123. package/src/Components/ComplexCron.tsx +174 -137
  124. package/src/Components/CopyToClipboard.tsx +22 -9
  125. package/src/Components/CustomModal.tsx +76 -69
  126. package/src/Components/FileBrowser.tsx +959 -852
  127. package/src/Components/FileViewer.tsx +146 -127
  128. package/src/Components/Icon.tsx +80 -52
  129. package/src/Components/IconPicker.tsx +83 -67
  130. package/src/Components/IconSelector.tsx +159 -141
  131. package/src/Components/Image.tsx +43 -26
  132. package/src/Components/Loader.tsx +56 -32
  133. package/src/Components/Logo.tsx +62 -52
  134. package/src/Components/MDUtils.tsx +10 -6
  135. package/src/Components/ObjectBrowser.tsx +3198 -2478
  136. package/src/Components/Router.tsx +11 -11
  137. package/src/Components/SaveCloseButtons.tsx +43 -39
  138. package/src/Components/Schedule.tsx +1091 -853
  139. package/src/Components/SelectWithIcon.tsx +135 -93
  140. package/src/Components/TabContainer.tsx +21 -19
  141. package/src/Components/TabContent.tsx +13 -12
  142. package/src/Components/TabHeader.tsx +10 -9
  143. package/src/Components/TableResize.tsx +52 -37
  144. package/src/Components/TextWithIcon.tsx +30 -19
  145. package/src/Components/ToggleThemeMenu.tsx +31 -13
  146. package/src/Components/TreeTable.tsx +468 -385
  147. package/src/Components/UploadImage.tsx +153 -121
  148. package/src/Components/Utils.tsx +135 -127
  149. package/src/Components/loader.css +40 -31
  150. package/src/Components/withWidth.tsx +23 -12
  151. package/src/Connection.tsx +1 -3
  152. package/src/Dialogs/ComplexCron.tsx +55 -61
  153. package/src/Dialogs/Confirm.tsx +88 -65
  154. package/src/Dialogs/Cron.tsx +122 -112
  155. package/src/Dialogs/Error.tsx +37 -42
  156. package/src/Dialogs/Message.tsx +39 -37
  157. package/src/Dialogs/SelectFile.tsx +95 -85
  158. package/src/Dialogs/SelectID.tsx +141 -129
  159. package/src/Dialogs/SimpleCron.tsx +44 -44
  160. package/src/Dialogs/TextInput.tsx +60 -68
  161. package/src/GenericApp.tsx +342 -242
  162. package/src/LegacyConnection.tsx +972 -842
  163. package/src/Prompt.tsx +3 -1
  164. package/src/Theme.tsx +19 -26
  165. package/src/icons/IconAdapter.tsx +16 -14
  166. package/src/icons/IconAlias.tsx +16 -14
  167. package/src/icons/IconChannel.tsx +55 -16
  168. package/src/icons/IconClearFilter.tsx +17 -15
  169. package/src/icons/IconClosed.tsx +16 -11
  170. package/src/icons/IconCopy.tsx +16 -11
  171. package/src/icons/IconDevice.tsx +121 -22
  172. package/src/icons/IconDocument.tsx +16 -11
  173. package/src/icons/IconDocumentReadOnly.tsx +21 -12
  174. package/src/icons/IconExpert.tsx +20 -12
  175. package/src/icons/IconFx.tsx +16 -14
  176. package/src/icons/IconInstance.tsx +16 -14
  177. package/src/icons/IconLogout.tsx +20 -18
  178. package/src/icons/IconNoIcon.tsx +16 -14
  179. package/src/icons/IconOpen.tsx +17 -12
  180. package/src/icons/IconProps.tsx +4 -3
  181. package/src/icons/IconState.tsx +34 -13
  182. package/src/index.css +3 -2
  183. package/tasks.js +91 -0
  184. package/types.d.ts +141 -0
  185. package/Components/Loaders/PT.css +0 -109
  186. package/Components/Loaders/Vendor.css +0 -13
  187. package/Components/loader.css +0 -222
  188. package/Components/types.d.ts +0 -82
  189. package/assets/devices/Alarm Systems.svg +0 -19
  190. package/assets/devices/Amplifier.svg +0 -22
  191. package/assets/devices/Awnings.svg +0 -5
  192. package/assets/devices/Battery Status.svg +0 -5
  193. package/assets/devices/Ceiling Spotlights.svg +0 -16
  194. package/assets/devices/Chandelier.svg +0 -7
  195. package/assets/devices/Climate.svg +0 -12
  196. package/assets/devices/Coffee Makers.svg +0 -6
  197. package/assets/devices/Cold Water.svg +0 -31
  198. package/assets/devices/Computer.svg +0 -21
  199. package/assets/devices/Consumption.svg +0 -8
  200. package/assets/devices/Curtains.svg +0 -43
  201. package/assets/devices/Dishwashers.svg +0 -12
  202. package/assets/devices/Doors.svg +0 -6
  203. package/assets/devices/Doorstep.svg +0 -35
  204. package/assets/devices/Dryer.svg +0 -14
  205. package/assets/devices/Fan.svg +0 -20
  206. package/assets/devices/Floor Lamps.svg +0 -5
  207. package/assets/devices/Garage Doors.svg +0 -9
  208. package/assets/devices/Gates.svg +0 -32
  209. package/assets/devices/Hairdryer.svg +0 -23
  210. package/assets/devices/Handle.svg +0 -6
  211. package/assets/devices/Hanging Lamps.svg +0 -9
  212. package/assets/devices/Heater.svg +0 -44
  213. package/assets/devices/Hoods.svg +0 -12
  214. package/assets/devices/Hot Water.svg +0 -10
  215. package/assets/devices/Humidity.svg +0 -41
  216. package/assets/devices/Iron.svg +0 -5
  217. package/assets/devices/Irrigation.svg +0 -23
  218. package/assets/devices/Led Strip.svg +0 -31
  219. package/assets/devices/Light.svg +0 -30
  220. package/assets/devices/Lightings.svg +0 -46
  221. package/assets/devices/Lock.svg +0 -19
  222. package/assets/devices/Louvre.svg +0 -7
  223. package/assets/devices/Mowing Machine.svg +0 -9
  224. package/assets/devices/Music.svg +0 -13
  225. package/assets/devices/Outdoor Blinds.svg +0 -7
  226. package/assets/devices/People.svg +0 -19
  227. package/assets/devices/Pool.svg +0 -8
  228. package/assets/devices/Power Consumption.svg +0 -13
  229. package/assets/devices/Printer.svg +0 -10
  230. package/assets/devices/Pump.svg +0 -10
  231. package/assets/devices/Receiver.svg +0 -19
  232. package/assets/devices/Sconces.svg +0 -10
  233. package/assets/devices/Security.svg +0 -34
  234. package/assets/devices/Shading.svg +0 -5
  235. package/assets/devices/Shutters.svg +0 -11
  236. package/assets/devices/SmokeDetector.svg +0 -13
  237. package/assets/devices/Sockets.svg +0 -13
  238. package/assets/devices/Speaker.svg +0 -35
  239. package/assets/devices/Stove.svg +0 -12
  240. package/assets/devices/Table Lamps.svg +0 -12
  241. package/assets/devices/Temperature Sensors.svg +0 -28
  242. package/assets/devices/Tv.svg +0 -8
  243. package/assets/devices/Vacuum Cleaner.svg +0 -16
  244. package/assets/devices/Ventilation.svg +0 -12
  245. package/assets/devices/Washing Machines.svg +0 -16
  246. package/assets/devices/Water Consumption.svg +0 -6
  247. package/assets/devices/Water Heater.svg +0 -8
  248. package/assets/devices/Water.svg +0 -40
  249. package/assets/devices/Weather.svg +0 -28
  250. package/assets/devices/Window.svg +0 -8
  251. package/assets/rooms/Anteroom.svg +0 -53
  252. package/assets/rooms/Attic.svg +0 -21
  253. package/assets/rooms/Balcony.svg +0 -13
  254. package/assets/rooms/Barn.svg +0 -6
  255. package/assets/rooms/Basement.svg +0 -5
  256. package/assets/rooms/Bathroom.svg +0 -38
  257. package/assets/rooms/Bedroom.svg +0 -5
  258. package/assets/rooms/Boiler Room.svg +0 -13
  259. package/assets/rooms/Carport.svg +0 -17
  260. package/assets/rooms/Cellar.svg +0 -89
  261. package/assets/rooms/Chamber.svg +0 -9
  262. package/assets/rooms/Corridor.svg +0 -53
  263. package/assets/rooms/Dining Area.svg +0 -37
  264. package/assets/rooms/Dining Room.svg +0 -37
  265. package/assets/rooms/Dining.svg +0 -37
  266. package/assets/rooms/Dressing Room.svg +0 -5
  267. package/assets/rooms/Driveway.svg +0 -15
  268. package/assets/rooms/Entrance.svg +0 -44
  269. package/assets/rooms/Equipment Room.svg +0 -15
  270. package/assets/rooms/Front Yard.svg +0 -64
  271. package/assets/rooms/Gallery.svg +0 -14
  272. package/assets/rooms/Garage.svg +0 -20
  273. package/assets/rooms/Garden.svg +0 -13
  274. package/assets/rooms/Ground Floor.svg +0 -95
  275. package/assets/rooms/Guest Bathroom.svg +0 -33
  276. package/assets/rooms/Guest Room.svg +0 -5
  277. package/assets/rooms/Gym.svg +0 -5
  278. package/assets/rooms/Hall.svg +0 -19
  279. package/assets/rooms/Home Theater.svg +0 -8
  280. package/assets/rooms/Kitchen.svg +0 -18
  281. package/assets/rooms/Laundry Room.svg +0 -12
  282. package/assets/rooms/Living Area.svg +0 -11
  283. package/assets/rooms/Living Room.svg +0 -10
  284. package/assets/rooms/Locker Room.svg +0 -17
  285. package/assets/rooms/Nursery.svg +0 -5
  286. package/assets/rooms/Office.svg +0 -8
  287. package/assets/rooms/Outdoors.svg +0 -7
  288. package/assets/rooms/Playroom.svg +0 -6
  289. package/assets/rooms/Pool.svg +0 -8
  290. package/assets/rooms/Rear Wall.svg +0 -30
  291. package/assets/rooms/Second Floor.svg +0 -95
  292. package/assets/rooms/Shed.svg +0 -16
  293. package/assets/rooms/Sleeping Area.svg +0 -22
  294. package/assets/rooms/Stairway.svg +0 -5
  295. package/assets/rooms/Stairwell.svg +0 -15
  296. package/assets/rooms/Storeroom.svg +0 -5
  297. package/assets/rooms/Summer House.svg +0 -27
  298. package/assets/rooms/Swimming Pool.svg +0 -21
  299. package/assets/rooms/Terrace.svg +0 -7
  300. package/assets/rooms/Toilet.svg +0 -10
  301. package/assets/rooms/Upstairs.svg +0 -6
  302. package/assets/rooms/Wardrobe.svg +0 -60
  303. package/assets/rooms/Washroom.svg +0 -20
  304. package/assets/rooms/Wc.svg +0 -10
  305. package/assets/rooms/Windscreen.svg +0 -60
  306. package/assets/rooms/Workshop.svg +0 -23
  307. package/assets/rooms/Workspace.svg +0 -8
@@ -2,17 +2,25 @@ import React from 'react';
2
2
 
3
3
  import type IconProps from './IconProps';
4
4
 
5
- const ExpertIcon = (props: IconProps) => <svg
6
- onClick={e => props.onClick && props.onClick(e)}
7
- viewBox="0 0 486 486"
8
- width={props.width || (props.fontSize === 'small' ? 16 : 20)}
9
- height={props.height || props.width || (props.fontSize === 'small' ? 16 : 20)}
10
- xmlns="http://www.w3.org/2000/svg"
11
- className={props.className}
12
- style={props.style}
13
- >
14
- <path fill="currentColor" d="m414.928297,149.715165 c-2.639376,-57.222555 -35.669446,-106.505345 -83.345894,-132.039151 c-3.758948,-2.049842 -7.636885,-3.932022 -11.590542,-5.641125 c-19.303146,-8.394083 -40.607459,-13.050853 -63.004303,-13.050853 c-84.113909,0 -152.791790,65.703174 -157.718988,148.605566 l0.043268,-0.010816 v0.281245 c0,3.061243 -0.146031,16.750306 -0.146031,16.750306 l-2.352723,5.224668 h15.744315 c5.916964,-19.384275 24.078904,-32.635245 45.513024,-32.635245 c26.231510,0 47.573684,21.915481 47.573684,48.146991 c0,26.226103 -21.342174,47.146409 -47.573684,47.146409 c-25.111939,0 -45.734774,-19.735831 -47.443879,-44.658471 h-18.789334 c-0.400232,0 -0.778832,0.638209 -1.162839,0.584122 l-19.762875,55.199753 c-2.774590,7.696379 2.926030,16.214860 11.103771,16.214860 h17.020735 l-0.129805,87.899899 c0,17.356066 14.073071,31.174935 31.429136,31.174935 h56.205745 v82.648189 c0,12.877778 12.937273,22.580734 25.815051,22.580734 h144.597825 c12.877778,0 23.429877,-9.702955 23.429877,-22.580734 v-166.037352 c0,-22.645636 5.976457,-44.761234 16.561008,-64.789128 c11.055093,-20.925714 17.523731,-44.620611 18.129489,-69.792045 c0.027042,-1.260193 0.037858,-2.552839 0.037858,-3.845485 c0,-2.466302 -0.070310,-4.938014 -0.183890,-7.377273 zm-155.393308,-11.731165 h-13.456494 v13.559257 c0,4.732489 -4.267352,8.567157 -8.999842,8.567157 c-4.727079,0 -8.999842,-3.834667 -8.999842,-8.567157 v-13.559257 h-12.185483 c-4.732489,0 -8.567157,-4.267352 -8.567157,-8.999842 c0,-4.727079 3.834667,-8.999842 8.567157,-8.999842 h12.185483 v-12.077311 c0,-4.732489 4.272762,-8.567157 8.999842,-8.567157 c4.732489,0 8.999842,3.834667 8.999842,8.567157 v12.077311 h13.456494 c4.727079,0 8.567157,4.272762 8.567157,8.999842 c0,4.732489 -3.840077,8.999842 -8.567157,8.999842 zm0,0" />
15
- <path fill="currentColor" d="m187.695312 285.875c3.9375-3.980469 6.414063-9.449219 6.414063-15.523438 0-12.128906-9.855469-21.980468-21.984375-21.980468-6.007812 0-11.472656 2.410156-15.457031 6.347656-4.023438 4.003906-6.523438 9.539062-6.523438 15.636719 0 12.125 9.855469 21.980469 21.980469 21.980469 6.078125 0 11.585938-2.476563 15.570312-6.460938zm0 0" />
16
- </svg>;
5
+ const ExpertIcon = (props: IconProps): React.JSX.Element => (
6
+ <svg
7
+ onClick={e => props.onClick && props.onClick(e)}
8
+ viewBox="0 0 486 486"
9
+ width={props.width || (props.fontSize === 'small' ? 16 : 20)}
10
+ height={props.height || props.width || (props.fontSize === 'small' ? 16 : 20)}
11
+ xmlns="http://www.w3.org/2000/svg"
12
+ className={props.className}
13
+ style={props.style}
14
+ >
15
+ <path
16
+ fill="currentColor"
17
+ d="m414.928297,149.715165 c-2.639376,-57.222555 -35.669446,-106.505345 -83.345894,-132.039151 c-3.758948,-2.049842 -7.636885,-3.932022 -11.590542,-5.641125 c-19.303146,-8.394083 -40.607459,-13.050853 -63.004303,-13.050853 c-84.113909,0 -152.791790,65.703174 -157.718988,148.605566 l0.043268,-0.010816 v0.281245 c0,3.061243 -0.146031,16.750306 -0.146031,16.750306 l-2.352723,5.224668 h15.744315 c5.916964,-19.384275 24.078904,-32.635245 45.513024,-32.635245 c26.231510,0 47.573684,21.915481 47.573684,48.146991 c0,26.226103 -21.342174,47.146409 -47.573684,47.146409 c-25.111939,0 -45.734774,-19.735831 -47.443879,-44.658471 h-18.789334 c-0.400232,0 -0.778832,0.638209 -1.162839,0.584122 l-19.762875,55.199753 c-2.774590,7.696379 2.926030,16.214860 11.103771,16.214860 h17.020735 l-0.129805,87.899899 c0,17.356066 14.073071,31.174935 31.429136,31.174935 h56.205745 v82.648189 c0,12.877778 12.937273,22.580734 25.815051,22.580734 h144.597825 c12.877778,0 23.429877,-9.702955 23.429877,-22.580734 v-166.037352 c0,-22.645636 5.976457,-44.761234 16.561008,-64.789128 c11.055093,-20.925714 17.523731,-44.620611 18.129489,-69.792045 c0.027042,-1.260193 0.037858,-2.552839 0.037858,-3.845485 c0,-2.466302 -0.070310,-4.938014 -0.183890,-7.377273 zm-155.393308,-11.731165 h-13.456494 v13.559257 c0,4.732489 -4.267352,8.567157 -8.999842,8.567157 c-4.727079,0 -8.999842,-3.834667 -8.999842,-8.567157 v-13.559257 h-12.185483 c-4.732489,0 -8.567157,-4.267352 -8.567157,-8.999842 c0,-4.727079 3.834667,-8.999842 8.567157,-8.999842 h12.185483 v-12.077311 c0,-4.732489 4.272762,-8.567157 8.999842,-8.567157 c4.732489,0 8.999842,3.834667 8.999842,8.567157 v12.077311 h13.456494 c4.727079,0 8.567157,4.272762 8.567157,8.999842 c0,4.732489 -3.840077,8.999842 -8.567157,8.999842 zm0,0"
18
+ />
19
+ <path
20
+ fill="currentColor"
21
+ d="m187.695312 285.875c3.9375-3.980469 6.414063-9.449219 6.414063-15.523438 0-12.128906-9.855469-21.980468-21.984375-21.980468-6.007812 0-11.472656 2.410156-15.457031 6.347656-4.023438 4.003906-6.523438 9.539062-6.523438 15.636719 0 12.125 9.855469 21.980469 21.980469 21.980469 6.078125 0 11.585938-2.476563 15.570312-6.460938zm0 0"
22
+ />
23
+ </svg>
24
+ );
17
25
 
18
26
  export default ExpertIcon;
@@ -1,18 +1,19 @@
1
1
  import React from 'react';
2
2
  import type IconProps from './IconProps';
3
3
 
4
- const IconFx = (props: IconProps) => <svg
5
- xmlns="http://www.w3.org/2000/svg"
6
- onClick={e => props.onClick && props.onClick(e)}
7
- viewBox="0 0 95 95"
8
- width={props.width || (props.fontSize === 'small' ? 16 : 20)}
9
- height={props.height || props.width || (props.fontSize === 'small' ? 16 : 20)}
10
- className={props.className}
11
- style={props.style}
12
- >
13
- <path
14
- fill="currentColor"
15
- d="M93.779,63.676c-0.981-1.082-2.24-1.653-3.639-1.653c-1.145,0-3.953,0.396-5.318,4.062
4
+ const IconFx = (props: IconProps): React.JSX.Element => (
5
+ <svg
6
+ xmlns="http://www.w3.org/2000/svg"
7
+ onClick={e => props.onClick && props.onClick(e)}
8
+ viewBox="0 0 95 95"
9
+ width={props.width || (props.fontSize === 'small' ? 16 : 20)}
10
+ height={props.height || props.width || (props.fontSize === 'small' ? 16 : 20)}
11
+ className={props.className}
12
+ style={props.style}
13
+ >
14
+ <path
15
+ fill="currentColor"
16
+ d="M93.779,63.676c-0.981-1.082-2.24-1.653-3.639-1.653c-1.145,0-3.953,0.396-5.318,4.062
16
17
  c-0.344,0.922-0.443,1.413-0.907,1.363c-0.786-0.078-3.845-3.346-4.845-8.145l-2.482-11.6c1.961-3.177,3.977-5.629,5.988-7.292
17
18
  c1.08-0.882,2.314-1.349,3.808-1.43c3.815-0.26,5.203-0.74,6.14-1.399c1.547-1.115,2.397-2.728,2.397-4.542
18
19
  c0-1.596-0.604-3.019-1.75-4.115c-1.106-1.059-2.581-1.618-4.26-1.618c-2.468,0-5.239,1.142-8.474,3.49
@@ -30,7 +31,8 @@ const IconFx = (props: IconProps) => <svg
30
31
  c1.357,1.146,3.034,1.728,4.981,1.728c2.414,0,4.884-0.921,7.344-2.737c2.053-1.519,4.697-4.526,8.074-9.189
31
32
  c2.17,6.24,5.248,10.252,6.714,11.927c2.313,2.644,6.049,4.22,9.993,4.22c3.348,0,5.244-1.402,6.916-2.641l0.148-0.109
32
33
  c2.926-2.164,3.54-4.545,3.54-6.166C95.174,65.965,94.691,64.679,93.779,63.676z"
33
- />
34
- </svg>;
34
+ />
35
+ </svg>
36
+ );
35
37
 
36
38
  export default IconFx;
@@ -2,19 +2,21 @@ import React from 'react';
2
2
  import type IconProps from './IconProps';
3
3
 
4
4
  // Icon copied from https://github.com/FortAwesome/Font-Awesome/blob/0d1f27efb836eb2ab994ba37221849ed64a73e5c/svgs/regular/
5
- const IconInstance = (props: IconProps) => <svg
6
- xmlns="http://www.w3.org/2000/svg"
7
- onClick={e => props.onClick && props.onClick(e)}
8
- viewBox="0 0 512 512"
9
- width={props.width || (props.fontSize === 'small' ? 16 : 20)}
10
- height={props.height || props.width || (props.fontSize === 'small' ? 16 : 20)}
11
- className={props.className}
12
- style={props.style}
13
- >
14
- <path
15
- fill="currentColor"
16
- d="M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z"
17
- />
18
- </svg>;
5
+ const IconInstance = (props: IconProps): React.JSX.Element => (
6
+ <svg
7
+ xmlns="http://www.w3.org/2000/svg"
8
+ onClick={e => props.onClick && props.onClick(e)}
9
+ viewBox="0 0 512 512"
10
+ width={props.width || (props.fontSize === 'small' ? 16 : 20)}
11
+ height={props.height || props.width || (props.fontSize === 'small' ? 16 : 20)}
12
+ className={props.className}
13
+ style={props.style}
14
+ >
15
+ <path
16
+ fill="currentColor"
17
+ d="M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z"
18
+ />
19
+ </svg>
20
+ );
19
21
 
20
22
  export default IconInstance;
@@ -1,22 +1,23 @@
1
1
  import React from 'react';
2
2
  import type IconProps from './IconProps';
3
3
 
4
- const IconLogout = (props: IconProps) => <svg
5
- xmlns="http://www.w3.org/2000/svg"
6
- onClick={e => props.onClick && props.onClick(e)}
7
- viewBox="0 0 512 512"
8
- width={props.width || (props.fontSize === 'small' ? 16 : 20)}
9
- height={props.height || props.width || (props.fontSize === 'small' ? 16 : 20)}
10
- className={props.className}
11
- style={props.style}
12
- >
13
- <path
14
- fill="currentColor"
15
- d="M510.371,226.513c-1.088-2.603-2.645-4.971-4.629-6.955l-63.979-63.979c-8.341-8.32-21.824-8.32-30.165,0 c-8.341,8.341-8.341,21.845,0,30.165l27.584,27.584H320.013c-11.797,0-21.333,9.557-21.333,21.333s9.536,21.333,21.333,21.333 h119.168l-27.584,27.584c-8.341,8.341-8.341,21.845,0,30.165c4.16,4.181,9.621,6.251,15.083,6.251s10.923-2.069,15.083-6.251 l63.979-63.979c1.984-1.963,3.541-4.331,4.629-6.955C512.525,237.606,512.525,231.718,510.371,226.513z"
16
- />
17
- <path
18
- fill="currentColor"
19
- d="M362.68,298.667c-11.797,0-21.333,9.557-21.333,21.333v106.667h-85.333V85.333c0-9.408-6.187-17.728-15.211-20.437
4
+ const IconLogout = (props: IconProps): React.JSX.Element => (
5
+ <svg
6
+ xmlns="http://www.w3.org/2000/svg"
7
+ onClick={e => props.onClick && props.onClick(e)}
8
+ viewBox="0 0 512 512"
9
+ width={props.width || (props.fontSize === 'small' ? 16 : 20)}
10
+ height={props.height || props.width || (props.fontSize === 'small' ? 16 : 20)}
11
+ className={props.className}
12
+ style={props.style}
13
+ >
14
+ <path
15
+ fill="currentColor"
16
+ d="M510.371,226.513c-1.088-2.603-2.645-4.971-4.629-6.955l-63.979-63.979c-8.341-8.32-21.824-8.32-30.165,0 c-8.341,8.341-8.341,21.845,0,30.165l27.584,27.584H320.013c-11.797,0-21.333,9.557-21.333,21.333s9.536,21.333,21.333,21.333 h119.168l-27.584,27.584c-8.341,8.341-8.341,21.845,0,30.165c4.16,4.181,9.621,6.251,15.083,6.251s10.923-2.069,15.083-6.251 l63.979-63.979c1.984-1.963,3.541-4.331,4.629-6.955C512.525,237.606,512.525,231.718,510.371,226.513z"
17
+ />
18
+ <path
19
+ fill="currentColor"
20
+ d="M362.68,298.667c-11.797,0-21.333,9.557-21.333,21.333v106.667h-85.333V85.333c0-9.408-6.187-17.728-15.211-20.437
20
21
  l-74.091-22.229h174.635v106.667c0,11.776,9.536,21.333,21.333,21.333s21.333-9.557,21.333-21.333v-128
21
22
  C384.013,9.557,374.477,0,362.68,0H21.347c-0.768,0-1.451,0.32-2.197,0.405c-1.003,0.107-1.92,0.277-2.88,0.512
22
23
  c-2.24,0.576-4.267,1.451-6.165,2.645c-0.469,0.299-1.045,0.32-1.493,0.661C8.44,4.352,8.376,4.587,8.205,4.715
@@ -24,7 +25,8 @@ const IconLogout = (props: IconProps) => <svg
24
25
  c-0.107,0.64,0.085,1.237,0.064,1.856c-0.021,0.427-0.299,0.811-0.299,1.237V448c0,10.176,7.189,18.923,17.152,20.907
25
26
  l213.333,42.667c1.387,0.299,2.795,0.427,4.181,0.427c4.885,0,9.685-1.685,13.525-4.843c4.928-4.053,7.808-10.091,7.808-16.491
26
27
  v-21.333H362.68c11.797,0,21.333-9.557,21.333-21.333V320C384.013,308.224,374.477,298.667,362.68,298.667z"
27
- />
28
- </svg>;
28
+ />
29
+ </svg>
30
+ );
29
31
 
30
32
  export default IconLogout;
@@ -1,19 +1,21 @@
1
1
  import React from 'react';
2
2
  import type IconProps from './IconProps';
3
3
 
4
- const IconNoIcon = (props: IconProps) => <svg
5
- xmlns="http://www.w3.org/2000/svg"
6
- onClick={e => props.onClick && props.onClick(e)}
7
- viewBox="0 0 512 512"
8
- width={props.width || (props.fontSize === 'small' ? 16 : 20)}
9
- height={props.height || props.width || (props.fontSize === 'small' ? 16 : 20)}
10
- className={props.className}
11
- style={props.style}
12
- >
13
- <path
14
- fill="#EE3333"
15
- d="M256,0C114.844,0,0,114.844,0,256s114.844,256,256,256s256-114.844,256-256S397.156,0,256,0z M256,448 c-105.865,0-192-86.135-192-192c0-40.406,12.25-78.604,35.542-111.198l267.656,267.656C334.604,435.75,296.406,448,256,448z M412.458,367.198L144.802,99.542C177.396,76.25,215.594,64,256,64c105.865,0,192,86.135,192,192 C448,296.406,435.75,334.604,412.458,367.198z"
16
- />
17
- </svg>;
4
+ const IconNoIcon = (props: IconProps): React.JSX.Element => (
5
+ <svg
6
+ xmlns="http://www.w3.org/2000/svg"
7
+ onClick={e => props.onClick && props.onClick(e)}
8
+ viewBox="0 0 512 512"
9
+ width={props.width || (props.fontSize === 'small' ? 16 : 20)}
10
+ height={props.height || props.width || (props.fontSize === 'small' ? 16 : 20)}
11
+ className={props.className}
12
+ style={props.style}
13
+ >
14
+ <path
15
+ fill="#EE3333"
16
+ d="M256,0C114.844,0,0,114.844,0,256s114.844,256,256,256s256-114.844,256-256S397.156,0,256,0z M256,448 c-105.865,0-192-86.135-192-192c0-40.406,12.25-78.604,35.542-111.198l267.656,267.656C334.604,435.75,296.406,448,256,448z M412.458,367.198L144.802,99.542C177.396,76.25,215.594,64,256,64c105.865,0,192,86.135,192,192 C448,296.406,435.75,334.604,412.458,367.198z"
17
+ />
18
+ </svg>
19
+ );
18
20
 
19
21
  export default IconNoIcon;
@@ -1,17 +1,22 @@
1
- import React from 'react';
1
+ import React, { type JSX } from 'react';
2
2
  import type IconProps from './IconProps';
3
3
 
4
4
  // Icon copied from https://github.com/FortAwesome/Font-Awesome/blob/0d1f27efb836eb2ab994ba37221849ed64a73e5c/svgs/regular/
5
- const IconOpen = (props: IconProps) => <svg
6
- xmlns="http://www.w3.org/2000/svg"
7
- onClick={e => props.onClick && props.onClick(e)}
8
- viewBox="0 0 650 512"
9
- width={props.width || (props.fontSize === 'small' ? 16 : 20)}
10
- height={props.height || props.width || (props.fontSize === 'small' ? 16 : 20)}
11
- className={props.className}
12
- style={props.style}
13
- >
14
- <path fill="currentColor" d="M572.694 292.093L500.27 416.248A63.997 63.997 0 0 1 444.989 448H45.025c-18.523 0-30.064-20.093-20.731-36.093l72.424-124.155A64 64 0 0 1 152 256h399.964c18.523 0 30.064 20.093 20.73 36.093zM152 224h328v-48c0-26.51-21.49-48-48-48H272l-64-64H48C21.49 64 0 85.49 0 112v278.046l69.077-118.418C86.214 242.25 117.989 224 152 224z" />
15
- </svg>;
5
+ const IconOpen = (props: IconProps): JSX.Element => (
6
+ <svg
7
+ xmlns="http://www.w3.org/2000/svg"
8
+ onClick={e => props.onClick && props.onClick(e)}
9
+ viewBox="0 0 650 512"
10
+ width={props.width || (props.fontSize === 'small' ? 16 : 20)}
11
+ height={props.height || props.width || (props.fontSize === 'small' ? 16 : 20)}
12
+ className={props.className}
13
+ style={props.style}
14
+ >
15
+ <path
16
+ fill="currentColor"
17
+ d="M572.694 292.093L500.27 416.248A63.997 63.997 0 0 1 444.989 448H45.025c-18.523 0-30.064-20.093-20.731-36.093l72.424-124.155A64 64 0 0 1 152 256h399.964c18.523 0 30.064 20.093 20.73 36.093zM152 224h328v-48c0-26.51-21.49-48-48-48H272l-64-64H48C21.49 64 0 85.49 0 112v278.046l69.077-118.418C86.214 242.25 117.989 224 152 224z"
18
+ />
19
+ </svg>
20
+ );
16
21
 
17
22
  export default IconOpen;
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import type { CSSProperties, MouseEvent } from 'react';
2
2
 
3
3
  export default interface IconProps {
4
4
  /** The width in pixels or percentage of the icon. */
@@ -6,10 +6,11 @@ export default interface IconProps {
6
6
  /** The height in pixels or percentage of the icon. */
7
7
  height?: number | string;
8
8
  /** Click handler. */
9
- onClick?: (e: React.MouseEvent) => void;
9
+ onClick?: (e: MouseEvent) => void;
10
10
  /** The class name for the SVG element. */
11
11
  className?: string;
12
12
  /** Styles for the SVG element. */
13
- style?: React.CSSProperties;
13
+ style?: CSSProperties;
14
+ /** The font size of the icon. */
14
15
  fontSize?: 'small';
15
16
  }
@@ -1,17 +1,38 @@
1
- import React from 'react';
1
+ import React, { type JSX } from 'react';
2
2
  import type IconProps from './IconProps';
3
3
 
4
- const IconState = (props: IconProps) => <svg
5
- xmlns="http://www.w3.org/2000/svg"
6
- onClick={e => props.onClick && props.onClick(e)}
7
- viewBox="0 0 320 320"
8
- width={props.width || (props.fontSize === 'small' ? 16 : 20)}
9
- height={props.height || props.width || (props.fontSize === 'small' ? 16 : 20)}
10
- className={props.className}
11
- style={props.style}
12
- >
13
- <rect fill="none" rx="32" height="272" width="267" y="25" x="25" strokeWidth="15" stroke="currentColor" />
14
- <ellipse fill="none" ry="54" rx="54" cy="160" cx="160" fillOpacity="null" strokeOpacity="null" strokeWidth="15" stroke="currentColor" />
15
- </svg>;
4
+ const IconState = (props: IconProps): JSX.Element => (
5
+ <svg
6
+ xmlns="http://www.w3.org/2000/svg"
7
+ onClick={e => props.onClick && props.onClick(e)}
8
+ viewBox="0 0 320 320"
9
+ width={props.width || (props.fontSize === 'small' ? 16 : 20)}
10
+ height={props.height || props.width || (props.fontSize === 'small' ? 16 : 20)}
11
+ className={props.className}
12
+ style={props.style}
13
+ >
14
+ <rect
15
+ fill="none"
16
+ rx="32"
17
+ height="272"
18
+ width="267"
19
+ y="25"
20
+ x="25"
21
+ strokeWidth="15"
22
+ stroke="currentColor"
23
+ />
24
+ <ellipse
25
+ fill="none"
26
+ ry="54"
27
+ rx="54"
28
+ cy="160"
29
+ cx="160"
30
+ fillOpacity="null"
31
+ strokeOpacity="null"
32
+ strokeWidth="15"
33
+ stroke="currentColor"
34
+ />
35
+ </svg>
36
+ );
16
37
 
17
38
  export default IconState;
package/src/index.css CHANGED
@@ -12,7 +12,8 @@ html {
12
12
  body {
13
13
  margin: 0;
14
14
  padding: 0;
15
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
15
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans',
16
+ 'Droid Sans', 'Helvetica Neue', sans-serif;
16
17
  -webkit-font-smoothing: antialiased;
17
18
  -moz-osx-font-smoothing: grayscale;
18
19
  width: 100%;
@@ -52,4 +53,4 @@ body {
52
53
  to {
53
54
  background-color: #58c458;
54
55
  }
55
- }
56
+ }
package/tasks.js ADDED
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Copyright 2024 bluefox <dogafox@gmail.com>
3
+ *
4
+ * MIT License
5
+ *
6
+ **/
7
+ 'use strict';
8
+
9
+ const fs = require('node:fs');
10
+ const { deleteFoldersRecursive, npmInstall, buildReact, copyFiles } = require('@iobroker/build-tools');
11
+
12
+ const SRC = 'src';
13
+
14
+ function copyAllFiles() {
15
+ deleteFoldersRecursive('admin', ['.png', '.json', 'i18n']);
16
+
17
+ copyFiles(
18
+ [
19
+ `${SRC}/build/*`,
20
+ `!${SRC}/build/index.html`,
21
+ `!${SRC}/build/static/js/main.*.chunk.js`,
22
+ `!${SRC}/build/static/media/*.svg`,
23
+ `!${SRC}/build/static/media/*.txt`,
24
+ `!${SRC}/build/i18n/*`,
25
+ `!${SRC}/build/i18n`,
26
+ ],
27
+ 'admin',
28
+ );
29
+
30
+ copyFiles(`${SRC}/build/index.html`, 'admin');
31
+
32
+ copyFiles(`${SRC}/build/static/js/main.*.chunk.js`, 'admin/static/js');
33
+ }
34
+
35
+ function clean() {
36
+ deleteFoldersRecursive('admin', ['.png', '.json', 'i18n']);
37
+ deleteFoldersRecursive(`${SRC}/build`);
38
+ }
39
+
40
+ function installNpmLocal() {
41
+ if (fs.existsSync(`${SRC}/node_modules`)) {
42
+ return Promise.resolve();
43
+ }
44
+ return npmInstall(`${__dirname.replace(/\\/g, '/')}/${SRC}/`);
45
+ }
46
+
47
+ function patchFiles() {
48
+ if (fs.existsSync(`${__dirname}/admin/index.html`)) {
49
+ let code = fs.readFileSync(`${__dirname}/admin/index.html`).toString('utf8');
50
+ code = code.replace(
51
+ /<script>var script=document\.createElement\("script"\).+?<\/script>/,
52
+ `<script type="text/javascript" src="./../../lib/js/socket.io.js"></script>`,
53
+ );
54
+
55
+ fs.writeFileSync(`${__dirname}/admin/index.html`, code);
56
+ }
57
+ if (fs.existsSync(`${__dirname}/${SRC}/build/index.html`)) {
58
+ let code = fs.readFileSync(`${__dirname}/${SRC}/build/index.html`).toString('utf8');
59
+ code = code.replace(
60
+ /<script>var script=document\.createElement\("script"\).+?<\/script>/,
61
+ `<script type="text/javascript" src="./../../lib/js/socket.io.js"></script>`,
62
+ );
63
+
64
+ fs.writeFileSync(`${SRC}/build/index.html`, code);
65
+ }
66
+ }
67
+
68
+ if (process.argv.find(arg => arg === '--0-clean')) {
69
+ clean();
70
+ } else if (process.argv.find(arg => arg === '--1-npm')) {
71
+ npmInstall(`${__dirname.replace(/\\/g, '/')}/${SRC}/`).catch(e => {
72
+ console.error(`Cannot install: ${e}`);
73
+ process.exit(1);
74
+ });
75
+ } else if (process.argv.find(arg => arg === '--2-build')) {
76
+ buildReact(SRC, { rootDir: __dirname }).catch(e => {
77
+ console.error(`Cannot build: ${e}`);
78
+ process.exit(1);
79
+ });
80
+ } else if (process.argv.find(arg => arg === '--3-copy')) {
81
+ copyAllFiles();
82
+ } else if (process.argv.find(arg => arg === '--4-patch')) {
83
+ patchFiles();
84
+ } else {
85
+ clean();
86
+
87
+ installNpmLocal()
88
+ .then(() => buildReact(SRC, { rootDir: __dirname }))
89
+ .then(() => copyAllFiles())
90
+ .then(() => patchFiles());
91
+ }
package/types.d.ts ADDED
@@ -0,0 +1,141 @@
1
+ import type { JSX, CSSProperties } from 'react';
2
+ import type { Theme as MuiTheme, Palette as MuiPalette } from '@mui/material/styles';
3
+ import type { AdminConnection, Connection } from '@iobroker/socket-client';
4
+ import type LegacyConnection from './LegacyConnection';
5
+
6
+ export type Translate = (key: string, ...args: (string | number | boolean)[]) => string;
7
+
8
+ /**
9
+ * Properties for the connection to the admin or web instance.
10
+ */
11
+ export interface ConnectionProps {
12
+ /** The socket name. */
13
+ name?: string;
14
+ /** State IDs to always automatically subscribe to. */
15
+ autoSubscribes?: string[];
16
+ /** Automatically subscribe to logging. */
17
+ autoSubscribeLog?: boolean;
18
+ /** The protocol to use for the socket.io connection. */
19
+ protocol?: string;
20
+ /** The host name to use for the socket.io connection. */
21
+ host?: string;
22
+ /** The port to use for the socket.io connection. */
23
+ port?: string | number;
24
+ /** The socket.io connection timeout. */
25
+ ioTimeout?: number;
26
+ /** Flag to indicate if all objects should be loaded or not. Default true (not loaded) */
27
+ doNotLoadAllObjects?: boolean;
28
+ /** Flag to indicate if AccessControlList for current user will be loaded or not. Default true (not loaded) */
29
+ doNotLoadACL?: boolean;
30
+ /** Progress callback. */
31
+ onProgress?: (progress: number) => void;
32
+ /** Ready callback. */
33
+ onReady?: (objects: Record<string, ioBroker.Object>) => void;
34
+ /** Log callback. */
35
+ onLog?: (text: string) => void;
36
+ /** Error callback. */
37
+ onError?: (error: any) => void;
38
+ /** Object change callback. */
39
+ onObjectChange?: ioBroker.ObjectChangeHandler;
40
+ /** Language callback */
41
+ onLanguage?: (lang: ioBroker.Languages) => void;
42
+ }
43
+
44
+ export interface OldObject {
45
+ _id: string;
46
+ type: string;
47
+ }
48
+
49
+ export type ObjectChangeHandler = (
50
+ id: string,
51
+ obj: ioBroker.Object | null | undefined,
52
+ oldObj: OldObject,
53
+ ) => void | Promise<void>;
54
+
55
+ export type ThemeName = 'dark' | 'light' | 'colored' | 'blue' | 'PT' | 'DX';
56
+ export type ThemeType = 'dark' | 'light';
57
+
58
+ export interface GenericAppProps {
59
+ /** Adapter instance number if known, else will be determined from url */
60
+ instance?: number;
61
+ /** The name of the adapter. */
62
+ adapterName?: string;
63
+ /** Should the bottom buttons be shown (default: true). */
64
+ bottomButtons?: boolean;
65
+ /** Additional translations. */
66
+ translations?: { [lang in ioBroker.Languages]?: Record<string, string> };
67
+ /** Fields that should be encrypted/decrypted. */
68
+ encryptedFields?: string[];
69
+ /** Socket.io configuration. */
70
+ socket?: ConnectionProps;
71
+ /** Desired connection object */
72
+ Connection?: LegacyConnection | Connection | AdminConnection;
73
+ /** sentry DNS */
74
+ sentryDSN?: string;
75
+ /** Callback if user changes the theme. Call it to trigger change */
76
+ onThemeChange?: (newThemeName: ThemeName) => void;
77
+ classes?: Record<string, string>;
78
+ }
79
+
80
+ export interface GenericAppSettings extends GenericAppProps {
81
+ /** Don't load all objects on start-up. */
82
+ doNotLoadAllObjects?: boolean;
83
+ }
84
+
85
+ interface Palette extends MuiPalette {
86
+ mode: ThemeType;
87
+ expert: string;
88
+ grey: {
89
+ main: string;
90
+ dark: string;
91
+ 50: string;
92
+ 100: string;
93
+ 200: string;
94
+ 300: string;
95
+ 400: string;
96
+ 500: string;
97
+ 600: string;
98
+ 700: string;
99
+ 800: string;
100
+ 900: string;
101
+ A100: string;
102
+ A200: string;
103
+ A400: string;
104
+ A700: string;
105
+ };
106
+ }
107
+
108
+ export interface IobTheme extends MuiTheme {
109
+ name: ThemeName;
110
+ palette: Palette;
111
+ toolbar: CSSProperties;
112
+ saveToolbar: {
113
+ background: string;
114
+ button: CSSProperties;
115
+ };
116
+ }
117
+
118
+ export type Width = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
119
+
120
+ export interface GenericAppState {
121
+ loaded: boolean;
122
+ themeType: ThemeType;
123
+ themeName: ThemeName;
124
+ theme: IobTheme;
125
+ expertMode: boolean;
126
+ selectedTab: string;
127
+ selectedTabNum: number | undefined;
128
+ native: Record<string, any>;
129
+ errorText: string | JSX.Element;
130
+ changed: boolean;
131
+ connected: boolean;
132
+ isConfigurationError: string;
133
+ toast: string | JSX.Element;
134
+ bottomButtons: boolean;
135
+ width: Width;
136
+ confirmClose: boolean;
137
+ _alert: boolean;
138
+ _alertType: 'info' | 'warning' | 'error' | 'success';
139
+ _alertMessage: string | JSX.Element;
140
+ common?: Record<string, any>;
141
+ }