@iobroker/adapter-react-v5 0.0.2

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 (264) hide show
  1. package/Components/404.js +155 -0
  2. package/Components/404.js.map +1 -0
  3. package/Components/ColorPicker.js +313 -0
  4. package/Components/ColorPicker.js.map +1 -0
  5. package/Components/ComplexCron.js +606 -0
  6. package/Components/ComplexCron.js.map +1 -0
  7. package/Components/FileBrowser.js +2147 -0
  8. package/Components/FileBrowser.js.map +1 -0
  9. package/Components/FileViewer.js +245 -0
  10. package/Components/FileViewer.js.map +1 -0
  11. package/Components/Icon.js +234 -0
  12. package/Components/Icon.js.map +1 -0
  13. package/Components/IconPicker.js +188 -0
  14. package/Components/IconPicker.js.map +1 -0
  15. package/Components/IconSelector.js +337 -0
  16. package/Components/IconSelector.js.map +1 -0
  17. package/Components/Image.js +215 -0
  18. package/Components/Image.js.map +1 -0
  19. package/Components/Loader.js +134 -0
  20. package/Components/Loader.js.map +1 -0
  21. package/Components/Loaders/PT.css +109 -0
  22. package/Components/Loaders/PT.js +104 -0
  23. package/Components/Loaders/PT.js.map +1 -0
  24. package/Components/Loaders/Vendor.css +13 -0
  25. package/Components/Loaders/Vendor.js +108 -0
  26. package/Components/Loaders/Vendor.js.map +1 -0
  27. package/Components/Logo.js +230 -0
  28. package/Components/Logo.js.map +1 -0
  29. package/Components/MDUtils.js +141 -0
  30. package/Components/MDUtils.js.map +1 -0
  31. package/Components/ObjectBrowser.js +6119 -0
  32. package/Components/ObjectBrowser.js.map +1 -0
  33. package/Components/Router.js +152 -0
  34. package/Components/Router.js.map +1 -0
  35. package/Components/SaveCloseButtons.js +177 -0
  36. package/Components/SaveCloseButtons.js.map +1 -0
  37. package/Components/Schedule.js +1891 -0
  38. package/Components/Schedule.js.map +1 -0
  39. package/Components/SelectWithIcon.js +235 -0
  40. package/Components/SelectWithIcon.js.map +1 -0
  41. package/Components/SimpleCron/cron2text.js +563 -0
  42. package/Components/SimpleCron/cron2text.js.map +1 -0
  43. package/Components/SimpleCron/cronText.js +60 -0
  44. package/Components/SimpleCron/cronText.js.map +1 -0
  45. package/Components/SimpleCron/index.js +861 -0
  46. package/Components/SimpleCron/index.js.map +1 -0
  47. package/Components/SimpleCron/jquery.cron.locale.js +322 -0
  48. package/Components/SimpleCron/jquery.cron.locale.js.map +1 -0
  49. package/Components/TabContainer.js +108 -0
  50. package/Components/TabContainer.js.map +1 -0
  51. package/Components/TabContent.js +96 -0
  52. package/Components/TabContent.js.map +1 -0
  53. package/Components/TabHeader.js +72 -0
  54. package/Components/TabHeader.js.map +1 -0
  55. package/Components/TextWithIcon.js +148 -0
  56. package/Components/TextWithIcon.js.map +1 -0
  57. package/Components/ToggleThemeMenu.js +49 -0
  58. package/Components/ToggleThemeMenu.js.map +1 -0
  59. package/Components/TreeTable.js +1030 -0
  60. package/Components/TreeTable.js.map +1 -0
  61. package/Components/Utils.js +1763 -0
  62. package/Components/Utils.js.map +1 -0
  63. package/Components/copy-to-clipboard.js +183 -0
  64. package/Components/copy-to-clipboard.js.map +1 -0
  65. package/Components/loader.css +222 -0
  66. package/Components/types.d.ts +121 -0
  67. package/Connection.js +3334 -0
  68. package/Connection.js.map +1 -0
  69. package/Dialogs/ComplexCron.js +193 -0
  70. package/Dialogs/ComplexCron.js.map +1 -0
  71. package/Dialogs/Confirm.js +211 -0
  72. package/Dialogs/Confirm.js.map +1 -0
  73. package/Dialogs/Cron.js +254 -0
  74. package/Dialogs/Cron.js.map +1 -0
  75. package/Dialogs/Error.js +137 -0
  76. package/Dialogs/Error.js.map +1 -0
  77. package/Dialogs/Message.js +118 -0
  78. package/Dialogs/Message.js.map +1 -0
  79. package/Dialogs/SelectID.js +313 -0
  80. package/Dialogs/SelectID.js.map +1 -0
  81. package/Dialogs/SimpleCron.js +177 -0
  82. package/Dialogs/SimpleCron.js.map +1 -0
  83. package/Dialogs/TextInput.js +194 -0
  84. package/Dialogs/TextInput.js.map +1 -0
  85. package/GenericApp.js +1022 -0
  86. package/GenericApp.js.map +1 -0
  87. package/LICENSE +22 -0
  88. package/Prompt.js +21 -0
  89. package/Prompt.js.map +1 -0
  90. package/README.md +645 -0
  91. package/Theme.js +422 -0
  92. package/Theme.js.map +1 -0
  93. package/assets/devices/Alarm Systems.svg +19 -0
  94. package/assets/devices/Amplifier.svg +22 -0
  95. package/assets/devices/Awnings.svg +5 -0
  96. package/assets/devices/Battery Status.svg +5 -0
  97. package/assets/devices/Ceiling Spotlights.svg +16 -0
  98. package/assets/devices/Chandelier.svg +7 -0
  99. package/assets/devices/Climate.svg +12 -0
  100. package/assets/devices/Coffee Makers.svg +6 -0
  101. package/assets/devices/Cold Water.svg +31 -0
  102. package/assets/devices/Computer.svg +21 -0
  103. package/assets/devices/Consumption.svg +8 -0
  104. package/assets/devices/Curtains.svg +43 -0
  105. package/assets/devices/Dishwashers.svg +12 -0
  106. package/assets/devices/Doors.svg +6 -0
  107. package/assets/devices/Doorstep.svg +35 -0
  108. package/assets/devices/Dryer.svg +14 -0
  109. package/assets/devices/Fan.svg +20 -0
  110. package/assets/devices/Floor Lamps.svg +5 -0
  111. package/assets/devices/Garage Doors.svg +9 -0
  112. package/assets/devices/Gates.svg +32 -0
  113. package/assets/devices/Hairdryer.svg +23 -0
  114. package/assets/devices/Handle.svg +6 -0
  115. package/assets/devices/Hanging Lamps.svg +9 -0
  116. package/assets/devices/Heater.svg +44 -0
  117. package/assets/devices/Hoods.svg +12 -0
  118. package/assets/devices/Hot Water.svg +10 -0
  119. package/assets/devices/Humidity.svg +41 -0
  120. package/assets/devices/Iron.svg +5 -0
  121. package/assets/devices/Irrigation.svg +42 -0
  122. package/assets/devices/Led Strip.svg +31 -0
  123. package/assets/devices/Light.svg +30 -0
  124. package/assets/devices/Lightings.svg +46 -0
  125. package/assets/devices/Lock.svg +19 -0
  126. package/assets/devices/Louvre.svg +7 -0
  127. package/assets/devices/Mowing Machine.svg +9 -0
  128. package/assets/devices/Music.svg +13 -0
  129. package/assets/devices/Outdoor Blinds.svg +7 -0
  130. package/assets/devices/People.svg +19 -0
  131. package/assets/devices/Pool.svg +8 -0
  132. package/assets/devices/Power Consumption.svg +13 -0
  133. package/assets/devices/Printer.svg +10 -0
  134. package/assets/devices/Pump.svg +10 -0
  135. package/assets/devices/Receiver.svg +19 -0
  136. package/assets/devices/Sconces.svg +10 -0
  137. package/assets/devices/Security.svg +34 -0
  138. package/assets/devices/Shading.svg +5 -0
  139. package/assets/devices/Shutters.svg +11 -0
  140. package/assets/devices/SmokeDetector.svg +13 -0
  141. package/assets/devices/Sockets.svg +13 -0
  142. package/assets/devices/Speaker.svg +35 -0
  143. package/assets/devices/Stove.svg +12 -0
  144. package/assets/devices/Table Lamps.svg +12 -0
  145. package/assets/devices/Temperature Sensors.svg +28 -0
  146. package/assets/devices/Tv.svg +8 -0
  147. package/assets/devices/Vacuum Cleaner.svg +16 -0
  148. package/assets/devices/Ventilation.svg +12 -0
  149. package/assets/devices/Washing Machines.svg +16 -0
  150. package/assets/devices/Water Consumption.svg +6 -0
  151. package/assets/devices/Water Heater.svg +8 -0
  152. package/assets/devices/Water.svg +40 -0
  153. package/assets/devices/Weather.svg +28 -0
  154. package/assets/devices/Window.svg +8 -0
  155. package/assets/devices/list.json +994 -0
  156. package/assets/devices/names.txt +63 -0
  157. package/assets/devices/parseNames.js +34 -0
  158. package/assets/lamp_ceiling.svg +9 -0
  159. package/assets/lamp_table.svg +8 -0
  160. package/assets/no_icon.svg +9 -0
  161. package/assets/rooms/Anteroom.svg +53 -0
  162. package/assets/rooms/Attic.svg +21 -0
  163. package/assets/rooms/Balcony.svg +13 -0
  164. package/assets/rooms/Barn.svg +6 -0
  165. package/assets/rooms/Basement.svg +5 -0
  166. package/assets/rooms/Bathroom.svg +38 -0
  167. package/assets/rooms/Bedroom.svg +5 -0
  168. package/assets/rooms/Boiler Room.svg +13 -0
  169. package/assets/rooms/Carport.svg +17 -0
  170. package/assets/rooms/Cellar.svg +89 -0
  171. package/assets/rooms/Chamber.svg +9 -0
  172. package/assets/rooms/Corridor.svg +53 -0
  173. package/assets/rooms/Dining Area.svg +37 -0
  174. package/assets/rooms/Dining Room.svg +37 -0
  175. package/assets/rooms/Dining.svg +37 -0
  176. package/assets/rooms/Dressing Room.svg +5 -0
  177. package/assets/rooms/Driveway.svg +15 -0
  178. package/assets/rooms/Entrance.svg +44 -0
  179. package/assets/rooms/Equipment Room.svg +15 -0
  180. package/assets/rooms/Front Yard.svg +64 -0
  181. package/assets/rooms/Gallery.svg +14 -0
  182. package/assets/rooms/Garage.svg +20 -0
  183. package/assets/rooms/Garden.svg +13 -0
  184. package/assets/rooms/Ground Floor.svg +95 -0
  185. package/assets/rooms/Guest Bathroom.svg +33 -0
  186. package/assets/rooms/Guest Room.svg +5 -0
  187. package/assets/rooms/Gym.svg +5 -0
  188. package/assets/rooms/Hall.svg +19 -0
  189. package/assets/rooms/Home Theater.svg +8 -0
  190. package/assets/rooms/Kitchen.svg +18 -0
  191. package/assets/rooms/Laundry Room.svg +12 -0
  192. package/assets/rooms/Living Area.svg +11 -0
  193. package/assets/rooms/Living Room.svg +10 -0
  194. package/assets/rooms/Locker Room.svg +17 -0
  195. package/assets/rooms/Nursery.svg +5 -0
  196. package/assets/rooms/Office.svg +8 -0
  197. package/assets/rooms/Outdoors.svg +7 -0
  198. package/assets/rooms/Playroom.svg +6 -0
  199. package/assets/rooms/Pool.svg +8 -0
  200. package/assets/rooms/Rear Wall.svg +30 -0
  201. package/assets/rooms/Second Floor.svg +95 -0
  202. package/assets/rooms/Shed.svg +16 -0
  203. package/assets/rooms/Sleeping Area.svg +22 -0
  204. package/assets/rooms/Stairway.svg +5 -0
  205. package/assets/rooms/Stairwell.svg +15 -0
  206. package/assets/rooms/Storeroom.svg +5 -0
  207. package/assets/rooms/Summer House.svg +27 -0
  208. package/assets/rooms/Swimming Pool.svg +21 -0
  209. package/assets/rooms/Terrace.svg +7 -0
  210. package/assets/rooms/Toilet.svg +10 -0
  211. package/assets/rooms/Upstairs.svg +6 -0
  212. package/assets/rooms/Wardrobe.svg +60 -0
  213. package/assets/rooms/Washroom.svg +20 -0
  214. package/assets/rooms/Wc.svg +10 -0
  215. package/assets/rooms/Windscreen.svg +60 -0
  216. package/assets/rooms/Workshop.svg +23 -0
  217. package/assets/rooms/Workspace.svg +8 -0
  218. package/assets/rooms/list.json +946 -0
  219. package/assets/rooms/names.txt +60 -0
  220. package/assets/rooms/parseNames.js +34 -0
  221. package/gulpfile.js +113 -0
  222. package/i18n/de.json +280 -0
  223. package/i18n/en.json +280 -0
  224. package/i18n/es.json +267 -0
  225. package/i18n/fr.json +267 -0
  226. package/i18n/it.json +267 -0
  227. package/i18n/nl.json +267 -0
  228. package/i18n/pl.json +267 -0
  229. package/i18n/pt.json +267 -0
  230. package/i18n/ru.json +280 -0
  231. package/i18n/zh-cn.json +267 -0
  232. package/i18n.js +171 -0
  233. package/i18n.js.map +1 -0
  234. package/icons/IconAdapter.js +39 -0
  235. package/icons/IconAdapter.js.map +1 -0
  236. package/icons/IconAlias.js +39 -0
  237. package/icons/IconAlias.js.map +1 -0
  238. package/icons/IconChannel.js +80 -0
  239. package/icons/IconChannel.js.map +1 -0
  240. package/icons/IconClearFilter.js +41 -0
  241. package/icons/IconClearFilter.js.map +1 -0
  242. package/icons/IconClosed.js +39 -0
  243. package/icons/IconClosed.js.map +1 -0
  244. package/icons/IconCopy.js +48 -0
  245. package/icons/IconCopy.js.map +1 -0
  246. package/icons/IconDevice.js +147 -0
  247. package/icons/IconDevice.js.map +1 -0
  248. package/icons/IconDocument.js +39 -0
  249. package/icons/IconDocument.js.map +1 -0
  250. package/icons/IconExpert.js +50 -0
  251. package/icons/IconExpert.js.map +1 -0
  252. package/icons/IconFx.js +39 -0
  253. package/icons/IconFx.js.map +1 -0
  254. package/icons/IconInstance.js +39 -0
  255. package/icons/IconInstance.js.map +1 -0
  256. package/icons/IconLogout.js +50 -0
  257. package/icons/IconLogout.js.map +1 -0
  258. package/icons/IconOpen.js +39 -0
  259. package/icons/IconOpen.js.map +1 -0
  260. package/icons/IconState.js +58 -0
  261. package/icons/IconState.js.map +1 -0
  262. package/index.css +55 -0
  263. package/package.json +42 -0
  264. package/types.d.ts +84 -0
@@ -0,0 +1,1030 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var _react = _interopRequireDefault(require("react"));
11
+
12
+ var _propTypes = _interopRequireDefault(require("prop-types"));
13
+
14
+ var _withStyles = _interopRequireDefault(require("@mui/styles/withStyles"));
15
+
16
+ var _reactColorful = require("react-colorful");
17
+
18
+ var _Fab = _interopRequireDefault(require("@mui/material/Fab"));
19
+
20
+ var _Table = _interopRequireDefault(require("@mui/material/Table"));
21
+
22
+ var _TableBody = _interopRequireDefault(require("@mui/material/TableBody"));
23
+
24
+ var _TableCell = _interopRequireDefault(require("@mui/material/TableCell"));
25
+
26
+ var _TableHead = _interopRequireDefault(require("@mui/material/TableHead"));
27
+
28
+ var _TableRow = _interopRequireDefault(require("@mui/material/TableRow"));
29
+
30
+ var _TableSortLabel = _interopRequireDefault(require("@mui/material/TableSortLabel"));
31
+
32
+ var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
33
+
34
+ var _Select = _interopRequireDefault(require("@mui/material/Select"));
35
+
36
+ var _MenuItem = _interopRequireDefault(require("@mui/material/MenuItem"));
37
+
38
+ var _TextField = _interopRequireDefault(require("@mui/material/TextField"));
39
+
40
+ var _Checkbox = _interopRequireDefault(require("@mui/material/Checkbox"));
41
+
42
+ var _Dialog = _interopRequireDefault(require("@mui/material/Dialog"));
43
+
44
+ var _Edit = _interopRequireDefault(require("@mui/icons-material/Edit"));
45
+
46
+ var _Delete = _interopRequireDefault(require("@mui/icons-material/Delete"));
47
+
48
+ var _NavigateNext = _interopRequireDefault(require("@mui/icons-material/NavigateNext"));
49
+
50
+ var _ExpandMore = _interopRequireDefault(require("@mui/icons-material/ExpandMore"));
51
+
52
+ var _Check = _interopRequireDefault(require("@mui/icons-material/Check"));
53
+
54
+ var _Close = _interopRequireDefault(require("@mui/icons-material/Close"));
55
+
56
+ var _Add = _interopRequireDefault(require("@mui/icons-material/Add"));
57
+
58
+ var _ViewHeadline = _interopRequireDefault(require("@mui/icons-material/ViewHeadline"));
59
+
60
+ var _Colorize = _interopRequireDefault(require("@mui/icons-material/Colorize"));
61
+
62
+ var _SelectID = _interopRequireDefault(require("../Dialogs/SelectID"));
63
+
64
+ var _Utils = _interopRequireDefault(require("./Utils"));
65
+
66
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
67
+
68
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
69
+
70
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
71
+
72
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
73
+
74
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
75
+
76
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
77
+
78
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
79
+
80
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
81
+
82
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
83
+
84
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
85
+
86
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
87
+
88
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
89
+
90
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
91
+
92
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
93
+
94
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
95
+
96
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
97
+
98
+ function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
99
+
100
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
101
+
102
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
103
+
104
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
105
+
106
+ function getAttr(obj, attr, lookup) {
107
+ if (typeof attr === 'string') {
108
+ attr = attr.split('.');
109
+ }
110
+
111
+ if (!obj) {
112
+ return null;
113
+ }
114
+
115
+ if (attr.length === 1) {
116
+ if (lookup && lookup[obj[attr[0]]]) {
117
+ return lookup[obj[attr[0]]];
118
+ } else {
119
+ return obj[attr[0]];
120
+ }
121
+ } else {
122
+ var name = attr.shift();
123
+ return getAttr(obj[name], attr);
124
+ }
125
+ }
126
+
127
+ function setAttr(obj, attr, value) {
128
+ if (typeof attr === 'string') {
129
+ attr = attr.split('.');
130
+ }
131
+
132
+ if (attr.length === 1) {
133
+ return obj[attr[0]] = value;
134
+ } else {
135
+ var name = attr.shift();
136
+
137
+ if (obj[name] === null || obj[name] === undefined) {
138
+ obj[name] = {};
139
+ }
140
+
141
+ return setAttr(obj[name], attr, value);
142
+ }
143
+ }
144
+
145
+ var styles = function styles(theme) {
146
+ return {
147
+ tableContainer: {
148
+ width: '100%',
149
+ height: '100%',
150
+ overflow: 'auto'
151
+ },
152
+ table: {
153
+ width: '100%',
154
+ minWidth: 800,
155
+ maxWidth: 1920
156
+ },
157
+ cell: {
158
+ paddingTop: 0,
159
+ paddingBottom: 0,
160
+ paddingLeft: 4,
161
+ paddingRight: 4
162
+ },
163
+ rowMainWithChildren: {},
164
+ rowMainWithoutChildren: {},
165
+ rowNoEdit: {
166
+ opacity: 0.3
167
+ },
168
+ cellExpand: {
169
+ width: 30
170
+ },
171
+ cellButton: {
172
+ width: 30
173
+ },
174
+ cellHeader: {
175
+ fontWeight: 'bold',
176
+ background: theme.palette.mode === 'dark' ? '#888' : '#888',
177
+ color: theme.palette.mode === 'dark' ? '#EEE' : '#111',
178
+ height: 48,
179
+ wordBreak: 'break-word',
180
+ whiteSpace: 'pre'
181
+ },
182
+ width_name_nicknames: {
183
+ maxWidth: 150
184
+ },
185
+ width_ioType: {
186
+ maxWidth: 100
187
+ },
188
+ width_type: {
189
+ maxWidth: 100
190
+ },
191
+ width_displayTraits: {
192
+ maxWidth: 100
193
+ },
194
+ width_roomHint: {
195
+ maxWidth: 100
196
+ },
197
+ rowSecondary: {
198
+ fontStyle: 'italic'
199
+ },
200
+ cellSecondary: {
201
+ fontSize: 10
202
+ },
203
+ visuallyHidden: {
204
+ border: 0,
205
+ clip: 'rect(0 0 0 0)',
206
+ height: 1,
207
+ margin: -1,
208
+ overflow: 'hidden',
209
+ padding: 0,
210
+ position: 'absolute',
211
+ top: 20,
212
+ width: 1
213
+ },
214
+ fieldEditWithButton: {
215
+ width: "calc(100% - 33px)",
216
+ display: 'inline-block'
217
+ },
218
+ fieldEdit: {
219
+ width: "100%",
220
+ display: 'inline-block',
221
+ lineHeight: '50px',
222
+ verticalAlign: 'middle'
223
+ },
224
+ fieldButton: {
225
+ width: 30,
226
+ display: 'inline-block'
227
+ },
228
+ colorDialog: {
229
+ overflow: 'hidden',
230
+ padding: 15
231
+ },
232
+ subText: {
233
+ fontSize: 10,
234
+ fontStyle: 'italic'
235
+ },
236
+ glow: {
237
+ animation: 'glow 0.2s 2 alternate'
238
+ }
239
+ };
240
+ };
241
+
242
+ function descendingComparator(a, b, orderBy, lookup) {
243
+ var _a = getAttr(a, orderBy, lookup) || '';
244
+
245
+ var _b = getAttr(b, orderBy, lookup) || '';
246
+
247
+ if (_b < _a) {
248
+ return -1;
249
+ } else if (_b > _a) {
250
+ return 1;
251
+ } else {
252
+ return 0;
253
+ }
254
+ }
255
+
256
+ function getComparator(order, orderBy, lookup) {
257
+ return order === 'desc' ? function (a, b) {
258
+ return descendingComparator(a, b, orderBy, lookup);
259
+ } : function (a, b) {
260
+ return -descendingComparator(a, b, orderBy, lookup);
261
+ };
262
+ }
263
+
264
+ function stableSort(array, comparator) {
265
+ var stabilizedThis = array.map(function (el, index) {
266
+ return [el, index];
267
+ });
268
+ stabilizedThis.sort(function (a, b) {
269
+ var order = comparator(a[0], b[0]);
270
+
271
+ if (order) {
272
+ return order;
273
+ } else {
274
+ return a[1] - b[1];
275
+ }
276
+ });
277
+ return stabilizedThis.map(function (el) {
278
+ return el[0];
279
+ });
280
+ }
281
+
282
+ var TreeTable = /*#__PURE__*/function (_React$Component) {
283
+ _inherits(TreeTable, _React$Component);
284
+
285
+ var _super = _createSuper(TreeTable);
286
+
287
+ function TreeTable(props) {
288
+ var _this;
289
+
290
+ _classCallCheck(this, TreeTable);
291
+
292
+ _this = _super.call(this, props);
293
+ var opened = window.localStorage.getItem(_this.props.name || 'iob-table') || '[]';
294
+
295
+ try {
296
+ opened = JSON.parse(opened) || [];
297
+ } catch (e) {
298
+ opened = [];
299
+ }
300
+
301
+ if (!Array.isArray(opened)) {
302
+ opened = [];
303
+ }
304
+
305
+ _this.state = {
306
+ opened: opened,
307
+ editMode: false,
308
+ deleteMode: false,
309
+ editData: null,
310
+ order: 'asc',
311
+ update: null,
312
+ orderBy: _this.props.columns[0].field,
313
+ useTable: false,
314
+ showSelectColor: false,
315
+ glowOnChange: props.glowOnChange
316
+ };
317
+ return _this;
318
+ }
319
+
320
+ _createClass(TreeTable, [{
321
+ key: "renderCellEdit",
322
+ value: function renderCellEdit(item, col) {
323
+ var val = getAttr(item, col.field);
324
+
325
+ if (Array.isArray(val)) {
326
+ val = val[0];
327
+ }
328
+
329
+ if (col.lookup) {
330
+ return this.renderCellEditSelect(item, col, val);
331
+ }
332
+
333
+ if (col.editComponent) {
334
+ return this.renderCellEditCustom(item, col, val);
335
+ } else {
336
+ if (col.type === 'boolean' || !col.type && typeof val === 'boolean') {
337
+ return this.renderCellEditBoolean(item, col, val);
338
+ } else if (col.type === 'color') {
339
+ return this.renderCellEditColor(item, col, val);
340
+ } else if (col.type === 'oid') {
341
+ return this.renderCellEditObjectID(item, col, val);
342
+ } else {
343
+ return this.renderCellEditString(item, col, val);
344
+ }
345
+ }
346
+ }
347
+ }, {
348
+ key: "renderCellEditSelect",
349
+ value: function renderCellEditSelect(item, col, val) {
350
+ var _this2 = this;
351
+
352
+ return /*#__PURE__*/_react["default"].createElement(_Select["default"], {
353
+ variant: "standard",
354
+ onChange: function onChange(e) {
355
+ var editData = _this2.state.editData ? _objectSpread({}, _this2.state.editData) : {};
356
+
357
+ if (e.target.value === val) {
358
+ delete editData[col.field];
359
+ } else {
360
+ editData[col.field] = e.target.value;
361
+ }
362
+
363
+ _this2.setState({
364
+ editData: editData
365
+ });
366
+ },
367
+ value: this.state.editData && this.state.editData[col.field] || val
368
+ }, Object.keys(col.lookup).map(function (v) {
369
+ return /*#__PURE__*/_react["default"].createElement(_MenuItem["default"], {
370
+ value: v
371
+ }, col.lookup[v]);
372
+ }));
373
+ }
374
+ }, {
375
+ key: "renderCellEditString",
376
+ value: function renderCellEditString(item, col, val) {
377
+ var _this3 = this;
378
+
379
+ return /*#__PURE__*/_react["default"].createElement(_TextField["default"], {
380
+ variant: "standard",
381
+ className: this.props.classes.fieldEdit,
382
+ fullWidth: true,
383
+ value: this.state.editData && this.state.editData[col.field] !== undefined ? this.state.editData[col.field] : val,
384
+ onChange: function onChange(e) {
385
+ var editData = _this3.state.editData ? _objectSpread({}, _this3.state.editData) : {};
386
+
387
+ if (e.target.value === val) {
388
+ delete editData[col.field];
389
+ } else {
390
+ editData[col.field] = e.target.value;
391
+ }
392
+
393
+ _this3.setState({
394
+ editData: editData
395
+ });
396
+ }
397
+ });
398
+ }
399
+ }, {
400
+ key: "renderCellEditCustom",
401
+ value: function renderCellEditCustom(item, col, val) {
402
+ var _this4 = this;
403
+
404
+ var EditComponent = col.editComponent;
405
+ return /*#__PURE__*/_react["default"].createElement(EditComponent, {
406
+ value: val,
407
+ rowData: item,
408
+ onChange: function onChange(newVal) {
409
+ var editData = _this4.state.editData ? _objectSpread({}, _this4.state.editData) : {};
410
+
411
+ if (newVal === val) {
412
+ delete editData[col.field];
413
+ } else {
414
+ editData[col.field] = newVal;
415
+ }
416
+
417
+ _this4.setState({
418
+ editData: editData
419
+ });
420
+ }
421
+ });
422
+ }
423
+ }, {
424
+ key: "renderCellEditBoolean",
425
+ value: function renderCellEditBoolean(item, col, val) {
426
+ var _this5 = this;
427
+
428
+ return /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
429
+ checked: this.state.editData && this.state.editData[col.field] !== undefined ? !!this.state.editData[col.field] : !!val,
430
+ onChange: function onChange(e) {
431
+ var editData = _this5.state.editData ? _objectSpread({}, _this5.state.editData) : {};
432
+
433
+ if (e.target.checked === !!val) {
434
+ delete editData[col.field];
435
+ } else {
436
+ editData[col.field] = e.target.checked;
437
+ }
438
+
439
+ _this5.setState({
440
+ editData: editData
441
+ });
442
+ },
443
+ inputProps: {
444
+ 'aria-label': 'checkbox'
445
+ }
446
+ });
447
+ }
448
+ }, {
449
+ key: "renderSelectColorDialog",
450
+ value: function renderSelectColorDialog() {
451
+ var _this6 = this;
452
+
453
+ return /*#__PURE__*/_react["default"].createElement(_Dialog["default"], {
454
+ classes: {
455
+ root: this.props.classes.colorDialog,
456
+ paper: this.props.classes.colorDialog
457
+ },
458
+ onClose: function onClose() {
459
+ _this6.selectCallback = null;
460
+
461
+ _this6.setState({
462
+ showSelectColor: false
463
+ });
464
+ },
465
+ open: this.state.showSelectColor
466
+ }, /*#__PURE__*/_react["default"].createElement(_reactColorful.HexColorPicker, {
467
+ color: this.state.selectIdValue,
468
+ onChange: function onChange(color) {
469
+ _this6.setState({
470
+ selectIdValue: color
471
+ }, function () {
472
+ return _this6.selectCallback && _this6.selectCallback(color);
473
+ });
474
+ }
475
+ }));
476
+ }
477
+ }, {
478
+ key: "renderCellEditColor",
479
+ value: function renderCellEditColor(item, col, val) {
480
+ var _this7 = this;
481
+
482
+ var _val = this.state.editData && this.state.editData[col.field] !== undefined ? this.state.editData[col.field] : val;
483
+
484
+ return /*#__PURE__*/_react["default"].createElement("div", {
485
+ className: this.props.classes.fieldEdit
486
+ }, /*#__PURE__*/_react["default"].createElement(_TextField["default"], {
487
+ variant: "standard",
488
+ fullWidth: true,
489
+ className: this.props.classes.fieldEditWithButton,
490
+ value: _val,
491
+ inputProps: {
492
+ style: {
493
+ backgroundColor: _val,
494
+ color: _Utils["default"].isUseBright(_val, null) ? '#FFF' : '#000'
495
+ }
496
+ },
497
+ onChange: function onChange(e) {
498
+ var editData = _this7.state.editData ? _objectSpread({}, _this7.state.editData) : {};
499
+
500
+ if (e.target.value === val) {
501
+ delete editData[col.field];
502
+ } else {
503
+ editData[col.field] = e.target.value;
504
+ }
505
+
506
+ _this7.setState({
507
+ editData: editData
508
+ });
509
+ }
510
+ }), /*#__PURE__*/_react["default"].createElement(_IconButton["default"], {
511
+ className: this.props.classes.fieldButton,
512
+ contained: true,
513
+ onClick: function onClick() {
514
+ _this7.selectCallback = function (newColor) {
515
+ var editData = _this7.state.editData ? _objectSpread({}, _this7.state.editData) : {};
516
+
517
+ if (newColor === val) {
518
+ delete editData[col.field];
519
+ } else {
520
+ editData[col.field] = newColor;
521
+ }
522
+
523
+ _this7.setState({
524
+ editData: editData
525
+ });
526
+ };
527
+
528
+ _this7.setState({
529
+ showSelectColor: true,
530
+ selectIdValue: val
531
+ });
532
+ },
533
+ size: "large"
534
+ }, /*#__PURE__*/_react["default"].createElement(_Colorize["default"], null)));
535
+ }
536
+ }, {
537
+ key: "renderSelectIdDialog",
538
+ value: function renderSelectIdDialog() {
539
+ var _this8 = this;
540
+
541
+ if (this.state.showSelectId) {
542
+ return /*#__PURE__*/_react["default"].createElement(_SelectID["default"], {
543
+ key: "tableSelect",
544
+ imagePrefix: "../..",
545
+ dialogName: this.props.adapterName,
546
+ themeType: this.props.themeType,
547
+ socket: this.props.socket,
548
+ statesOnly: true,
549
+ selected: this.state.selectIdValue,
550
+ onClose: function onClose() {
551
+ return _this8.setState({
552
+ showSelectId: false
553
+ });
554
+ },
555
+ onOk: function onOk(selected, name) {
556
+ _this8.setState({
557
+ showSelectId: false,
558
+ selectIdValue: null
559
+ });
560
+
561
+ _this8.selectCallback && _this8.selectCallback(selected);
562
+ _this8.selectCallback = null;
563
+ }
564
+ });
565
+ } else {
566
+ return null;
567
+ }
568
+ }
569
+ }, {
570
+ key: "renderCellEditObjectID",
571
+ value: function renderCellEditObjectID(item, col, val) {
572
+ var _this9 = this;
573
+
574
+ return /*#__PURE__*/_react["default"].createElement("div", {
575
+ className: this.props.classes.fieldEdit
576
+ }, /*#__PURE__*/_react["default"].createElement(_TextField["default"], {
577
+ variant: "standard",
578
+ fullWidth: true,
579
+ className: this.props.classes.fieldEditWithButton,
580
+ value: this.state.editData && this.state.editData[col.field] !== undefined ? this.state.editData[col.field] : val,
581
+ onChange: function onChange(e) {
582
+ var editData = _this9.state.editData ? _objectSpread({}, _this9.state.editData) : {};
583
+
584
+ if (e.target.value === val) {
585
+ delete editData[col.field];
586
+ } else {
587
+ editData[col.field] = e.target.value;
588
+ }
589
+
590
+ _this9.setState({
591
+ editData: editData
592
+ });
593
+ }
594
+ }), /*#__PURE__*/_react["default"].createElement(_IconButton["default"], {
595
+ className: this.props.classes.fieldButton,
596
+ contained: true,
597
+ onClick: function onClick() {
598
+ _this9.selectCallback = function (selected) {
599
+ var editData = _this9.state.editData ? _objectSpread({}, _this9.state.editData) : {};
600
+
601
+ if (selected === val) {
602
+ delete editData[col.field];
603
+ } else {
604
+ editData[col.field] = selected;
605
+ }
606
+
607
+ _this9.setState({
608
+ editData: editData
609
+ });
610
+ };
611
+
612
+ _this9.setState({
613
+ showSelectId: true,
614
+ selectIdValue: val
615
+ });
616
+ },
617
+ size: "large"
618
+ }, /*#__PURE__*/_react["default"].createElement(_ViewHeadline["default"], null)));
619
+ }
620
+ }, {
621
+ key: "renderCellNonEdit",
622
+ value: function renderCellNonEdit(item, col) {
623
+ var val = getAttr(item, col.field, col.lookup);
624
+
625
+ if (Array.isArray(val)) {
626
+ val = val[0];
627
+ }
628
+
629
+ if (col.type === 'boolean') {
630
+ return /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
631
+ checked: !!val,
632
+ disabled: true,
633
+ inputProps: {
634
+ 'aria-label': 'checkbox'
635
+ }
636
+ });
637
+ } else {
638
+ return val;
639
+ }
640
+ }
641
+ }, {
642
+ key: "renderCell",
643
+ value: function renderCell(item, col, level, i) {
644
+ if (this.state.editMode === i && col.editable !== 'never' && col.editable !== false) {
645
+ return /*#__PURE__*/_react["default"].createElement(_TableCell["default"], {
646
+ key: col.field,
647
+ className: _Utils["default"].clsx(this.props.classes.cell, level && this.props.classes.cellSecondary),
648
+ style: col.cellStyle,
649
+ component: "th"
650
+ }, this.renderCellEdit(item, col));
651
+ } else {
652
+ return /*#__PURE__*/_react["default"].createElement(_TableCell["default"], {
653
+ key: col.field,
654
+ className: _Utils["default"].clsx(this.props.classes.cell, level && this.props.classes.cellSecondary),
655
+ style: col.cellStyle,
656
+ component: "th"
657
+ }, this.renderCellNonEdit(item, col));
658
+ }
659
+ }
660
+ }, {
661
+ key: "renderCellWithSubField",
662
+ value: function renderCellWithSubField(item, col) {
663
+ var main = getAttr(item, col.field, col.lookup);
664
+ var sub = getAttr(item, col.subField, col.subLookup);
665
+ return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("div", {
666
+ className: this.props.classes.mainText
667
+ }, main), /*#__PURE__*/_react["default"].createElement("div", {
668
+ className: this.props.classes.subText,
669
+ style: col.subStyle || {}
670
+ }, sub));
671
+ }
672
+ }, {
673
+ key: "renderLine",
674
+ value: function renderLine(item, level) {
675
+ var _this10 = this;
676
+
677
+ level = level || 0;
678
+ var i = this.props.data.indexOf(item);
679
+
680
+ if (!item) {
681
+ return null;
682
+ }
683
+
684
+ if (!level && item.parentId) {
685
+ return null;
686
+ } else if (level && !item.parentId) {
687
+ return null; // should never happens
688
+ } else {
689
+ // try to find children
690
+ var children = this.props.data.filter(function (it) {
691
+ return it.parentId === item.id;
692
+ });
693
+ var opened = this.state.opened.includes(item.id);
694
+ return [/*#__PURE__*/_react["default"].createElement(_TableRow["default"], {
695
+ key: item.id,
696
+ className: _Utils["default"].clsx('table-row-' + (item.id || '').toString().replace(/[.$]/g, '_'), this.state.update && this.state.update.includes(item.id) && this.props.classes.glow, this.props.classes.row, level && this.props.classes.rowSecondary, !level && children.length && this.props.classes.rowMainWithChildren, !level && !children.length && this.props.classes.rowMainWithoutChildren, this.state.editMode !== false && this.state.editMode !== i && this.props.classes.rowNoEdit, this.state.deleteMode !== false && this.state.deleteMode !== i && this.props.classes.rowNoEdit)
697
+ }, /*#__PURE__*/_react["default"].createElement(_TableCell["default"], {
698
+ className: _Utils["default"].clsx(this.props.classes.cell, this.props.classes.cellExpand, level && this.props.classes.cellSecondary)
699
+ }, children.length ? /*#__PURE__*/_react["default"].createElement(_IconButton["default"], {
700
+ onClick: function onClick() {
701
+ var opened = _toConsumableArray(_this10.state.opened);
702
+
703
+ var pos = opened.indexOf(item.id);
704
+
705
+ if (pos === -1) {
706
+ opened.push(item.id);
707
+ opened.sort();
708
+ } else {
709
+ opened.splice(pos, 1);
710
+ }
711
+
712
+ window.localStorage.setItem(_this10.props.name || 'iob-table', JSON.stringify(opened));
713
+
714
+ _this10.setState({
715
+ opened: opened
716
+ });
717
+ },
718
+ size: "large"
719
+ }, opened ? /*#__PURE__*/_react["default"].createElement(_ExpandMore["default"], null) : /*#__PURE__*/_react["default"].createElement(_NavigateNext["default"], null)) : null), /*#__PURE__*/_react["default"].createElement(_TableCell["default"], {
720
+ scope: "row",
721
+ className: _Utils["default"].clsx(this.props.classes.cell, level && this.props.classes.cellSecondary),
722
+ style: this.props.columns[0].cellStyle
723
+ }, this.props.columns[0].subField ? this.renderCellWithSubField(item, this.props.columns[0]) : getAttr(item, this.props.columns[0].field, this.props.columns[0].lookup)), this.props.columns.map(function (col, ii) {
724
+ return !ii && !col.hidden ? null : _this10.renderCell(item, col, level, i);
725
+ }), this.props.onUpdate ? /*#__PURE__*/_react["default"].createElement(_TableCell["default"], {
726
+ className: _Utils["default"].clsx(this.props.classes.cell, this.props.classes.cellButton)
727
+ }, this.state.editMode === i || this.state.deleteMode === i ? /*#__PURE__*/_react["default"].createElement(_IconButton["default"], {
728
+ disabled: this.state.editMode !== false && (!this.state.editData || !Object.keys(this.state.editData).length),
729
+ onClick: function onClick() {
730
+ if (_this10.state.editMode !== false) {
731
+ var newData = JSON.parse(JSON.stringify(item));
732
+ Object.keys(_this10.state.editData).forEach(function (attr) {
733
+ return setAttr(newData, attr, _this10.state.editData[attr]);
734
+ });
735
+
736
+ _this10.setState({
737
+ editMode: false
738
+ }, function () {
739
+ return _this10.props.onUpdate(newData, item);
740
+ });
741
+ } else {
742
+ _this10.setState({
743
+ deleteMode: false
744
+ }, function () {
745
+ return _this10.props.onDelete(item);
746
+ });
747
+ }
748
+ },
749
+ size: "large"
750
+ }, /*#__PURE__*/_react["default"].createElement(_Check["default"], null)) : /*#__PURE__*/_react["default"].createElement(_IconButton["default"], {
751
+ disabled: this.state.editMode !== false,
752
+ onClick: function onClick() {
753
+ return _this10.setState({
754
+ editMode: i,
755
+ editData: null
756
+ });
757
+ },
758
+ size: "large"
759
+ }, /*#__PURE__*/_react["default"].createElement(_Edit["default"], null))) : null, this.props.onUpdate || this.props.onDelete ? /*#__PURE__*/_react["default"].createElement(_TableCell["default"], {
760
+ className: _Utils["default"].clsx(this.props.classes.cell, this.props.classes.cellButton)
761
+ }, this.state.editMode === i || this.state.deleteMode === i ? /*#__PURE__*/_react["default"].createElement(_IconButton["default"], {
762
+ onClick: function onClick() {
763
+ return _this10.setState({
764
+ editMode: false,
765
+ deleteMode: false
766
+ });
767
+ },
768
+ size: "large"
769
+ }, /*#__PURE__*/_react["default"].createElement(_Close["default"], null)) : this.props.onDelete ? /*#__PURE__*/_react["default"].createElement(_IconButton["default"], {
770
+ disabled: this.state.deleteMode !== false,
771
+ onClick: function onClick() {
772
+ return _this10.setState({
773
+ deleteMode: i
774
+ });
775
+ },
776
+ size: "large"
777
+ }, /*#__PURE__*/_react["default"].createElement(_Delete["default"], null)) : null) : null), !level && this.state.opened.includes(item.id) ? children.map(function (item) {
778
+ return _this10.renderLine(item, level + 1);
779
+ }) : null];
780
+ }
781
+ }
782
+ }, {
783
+ key: "handleRequestSort",
784
+ value: function handleRequestSort(property) {
785
+ var isAsc = this.state.orderBy === property && this.state.order === 'asc';
786
+ this.setState({
787
+ order: isAsc ? 'desc' : 'asc',
788
+ orderBy: property
789
+ });
790
+ }
791
+ }, {
792
+ key: "renderHead",
793
+ value: function renderHead() {
794
+ var _this11 = this;
795
+
796
+ return /*#__PURE__*/_react["default"].createElement(_TableHead["default"], null, /*#__PURE__*/_react["default"].createElement(_TableRow["default"], {
797
+ key: "headerRow"
798
+ }, /*#__PURE__*/_react["default"].createElement(_TableCell["default"], {
799
+ component: "th",
800
+ className: _Utils["default"].clsx(this.props.classes.cell, this.props.classes.cellHeader, this.props.classes.cellExpand)
801
+ }), /*#__PURE__*/_react["default"].createElement(_TableCell["default"], {
802
+ component: "th",
803
+ className: _Utils["default"].clsx(this.props.classes.cell, this.props.classes.cellHeader, this.props.classes['width_' + this.props.columns[0].field.replace(/\./g, '_')]),
804
+ style: this.props.columns[0].headerStyle || this.props.columns[0].cellStyle,
805
+ sortDirection: this.state.orderBy === this.props.columns[0].field ? this.state.order : false
806
+ }, /*#__PURE__*/_react["default"].createElement(_TableSortLabel["default"], {
807
+ active: this.state.orderBy === this.props.columns[0].field,
808
+ direction: this.state.orderBy === this.props.columns[0].field ? this.state.order : 'asc',
809
+ onClick: function onClick() {
810
+ return _this11.handleRequestSort(_this11.props.columns[0].field);
811
+ }
812
+ }, this.props.columns[0].title || this.props.columns[0].field, this.state.orderBy === this.props.columns[0].field ? /*#__PURE__*/_react["default"].createElement("span", {
813
+ className: this.props.classes.visuallyHidden
814
+ }, this.state.order === 'desc' ? 'sorted descending' : 'sorted ascending') : null)), this.props.columns.map(function (col, i) {
815
+ return !i && !col.hidden ? null : /*#__PURE__*/_react["default"].createElement(_TableCell["default"], {
816
+ key: col.field,
817
+ className: _Utils["default"].clsx(_this11.props.classes.cell, _this11.props.classes.cellHeader, _this11.props.classes['width_' + col.field.replace(/\./g, '_')]),
818
+ style: col.headerStyle || col.cellStyle,
819
+ component: "th"
820
+ }, /*#__PURE__*/_react["default"].createElement(_TableSortLabel["default"], {
821
+ active: _this11.state.orderBy === col.field,
822
+ direction: _this11.state.orderBy === col.field ? _this11.state.order : 'asc',
823
+ onClick: function onClick() {
824
+ return _this11.handleRequestSort(col.field);
825
+ }
826
+ }, col.title || col.field, _this11.state.orderBy === col.field ? /*#__PURE__*/_react["default"].createElement("span", {
827
+ className: _this11.props.classes.visuallyHidden
828
+ }, _this11.state.order === 'desc' ? 'sorted descending' : 'sorted ascending') : null));
829
+ }), this.props.onUpdate ? /*#__PURE__*/_react["default"].createElement(_TableCell["default"], {
830
+ component: "th",
831
+ className: _Utils["default"].clsx(this.props.classes.cell, this.props.classes.cellHeader, this.props.classes.cellButton)
832
+ }, !this.props.noAdd ? /*#__PURE__*/_react["default"].createElement(_Fab["default"], {
833
+ color: "primary",
834
+ size: "small",
835
+ disabled: this.state.editMode !== false,
836
+ onClick: function onClick() {
837
+ return _this11.props.onUpdate(true);
838
+ }
839
+ }, /*#__PURE__*/_react["default"].createElement(_Add["default"], null)) : null) : null, this.props.onDelete || this.props.onUpdate ? /*#__PURE__*/_react["default"].createElement(_TableCell["default"], {
840
+ component: "th",
841
+ className: _Utils["default"].clsx(this.props.classes.cell, this.props.classes.cellHeader, this.props.classes.cellButton)
842
+ }) : null));
843
+ }
844
+ }, {
845
+ key: "render",
846
+ value: function render() {
847
+ var _this12 = this;
848
+
849
+ var lookup = this.props.columns.find(function (col) {
850
+ return col.field === _this12.state.orderBy;
851
+ }).lookup;
852
+ var table = stableSort(this.props.data, getComparator(this.state.order, this.state.orderBy, lookup));
853
+
854
+ if (this.state.update && this.state.update.length) {
855
+ this.updateTimeout && clearTimeout(this.updateTimeout);
856
+ this.updateTimeout = setTimeout(function () {
857
+ _this12.updateTimeout = null;
858
+
859
+ _this12.setState({
860
+ update: null
861
+ });
862
+ }, 500);
863
+ }
864
+
865
+ return /*#__PURE__*/_react["default"].createElement("div", {
866
+ className: _Utils["default"].clsx(this.props.classes.tableContainer, this.props.className)
867
+ }, /*#__PURE__*/_react["default"].createElement(_Table["default"], {
868
+ className: this.props.classes.table,
869
+ "aria-label": "simple table",
870
+ size: "small",
871
+ stickyHeader: true
872
+ }, this.renderHead(), /*#__PURE__*/_react["default"].createElement(_TableBody["default"], null, table.map(function (item) {
873
+ return _this12.renderLine(item);
874
+ }))), this.renderSelectIdDialog(), this.renderSelectColorDialog());
875
+ }
876
+ }], [{
877
+ key: "getDerivedStateFromProps",
878
+ value: function getDerivedStateFromProps(props, state) {
879
+ if (props.glowOnChange) {
880
+ var update = [];
881
+ var count = 0;
882
+
883
+ if (props.data && state.data) {
884
+ props.data.forEach(function (line) {
885
+ count++;
886
+ var oldLine = state.data.find(function (it) {
887
+ return it.id === line.id;
888
+ });
889
+
890
+ if (oldLine) {
891
+ if (JSON.stringify(oldLine) !== JSON.stringify(line)) {
892
+ update.push(line.id);
893
+ }
894
+ } else {
895
+ update.push(line.id);
896
+ }
897
+ });
898
+ }
899
+
900
+ if (update.length && update.length !== count) {
901
+ return {
902
+ data: props.data,
903
+ update: update
904
+ };
905
+ } else {
906
+ return {
907
+ data: props.data
908
+ };
909
+ }
910
+ } else {
911
+ return {
912
+ data: props.data
913
+ };
914
+ }
915
+ }
916
+ }]);
917
+
918
+ return TreeTable;
919
+ }(_react["default"].Component);
920
+ /*
921
+ const columns = [
922
+ {
923
+ title: 'Name of field', // required, else it will be "field"
924
+ field: 'fieldIdInData', // required
925
+ editable: false, // or true [default - true]
926
+ cellStyle: { // CSS style - // optional
927
+ maxWidth: '12rem',
928
+ overflow: 'hidden',
929
+ wordBreak: 'break-word'
930
+ },
931
+ lookup: { // optional => edit will be automatically "SELECT"
932
+ 'value1': 'text1',
933
+ 'value2': 'text2',
934
+ }
935
+ },
936
+ {
937
+ title: 'Type', // required, else it will be "field"
938
+ field: 'myType', // required
939
+ editable: true, // or true [default - true]
940
+ lookup: { // optional => edit will be automatically "SELECT"
941
+ 'number': 'Number',
942
+ 'string': 'String',
943
+ 'boolean': 'Boolean',
944
+ },
945
+ type: 'number/string/color/oid/icon/boolean', // oid=ObjectID,icon=base64-icon
946
+ editComponent: props =>
947
+ <div>Prefix&#123; <br/>
948
+ <textarea
949
+ rows={4}
950
+ style={{width: '100%', resize: 'vertical'}}
951
+ value={props.value}
952
+ onChange={e => props.onChange(e.target.value)}
953
+ />
954
+ Suffix
955
+ </div>,
956
+ },
957
+ ];
958
+ */
959
+
960
+ /* const data = [
961
+ {
962
+ id: 'UniqueID1' // required
963
+ fieldIdInData: 'Name1',
964
+ myType: 'number',
965
+ },
966
+ {
967
+ id: 'UniqueID2' // required
968
+ fieldIdInData: 'Name12',
969
+ myType: 'string',
970
+ },
971
+ ];
972
+ */
973
+
974
+ /*
975
+ // STYLES
976
+ const styles = theme => ({
977
+ tableDiv: {
978
+ width: '100%',
979
+ overflow: 'hidden',
980
+ height: 'calc(100% - 48px)',
981
+ },
982
+ });
983
+ // renderTable
984
+ renderTable() {
985
+ return <div className={this.props.classes.tableDiv}>
986
+ <TreeTable
987
+ columns={this.columns}
988
+ data={lines}
989
+ onUpdate={(newData, oldData) => console.log('Update: ' + JSON.stringify(newData))}
990
+ onDelete={oldData => console.log('Delete: ' + JSON.stringify(oldData))}
991
+ />
992
+ </div>;
993
+ }
994
+ */
995
+
996
+
997
+ TreeTable.propTypes = {
998
+ data: _propTypes["default"].array.isRequired,
999
+ className: _propTypes["default"].string,
1000
+ loading: _propTypes["default"].bool,
1001
+ name: _propTypes["default"].string,
1002
+ // name of table to save settings in localStorage
1003
+ columns: _propTypes["default"].arrayOf(_propTypes["default"].shape({
1004
+ cellStyle: _propTypes["default"].object,
1005
+ editComponent: _propTypes["default"].element,
1006
+ field: _propTypes["default"].string,
1007
+ headerStyle: _propTypes["default"].object,
1008
+ hidden: _propTypes["default"].bool,
1009
+ lookup: _propTypes["default"].object,
1010
+ editable: _propTypes["default"].bool,
1011
+ title: _propTypes["default"].string,
1012
+ type: _propTypes["default"].oneOf(['string', 'boolean', 'numeric', 'icon', // todo: not yet implemented
1013
+ 'oid', 'color'])
1014
+ })).isRequired,
1015
+ noSort: _propTypes["default"].bool,
1016
+ // todo
1017
+ onUpdate: _propTypes["default"].func,
1018
+ onDelete: _propTypes["default"].func,
1019
+ noAdd: _propTypes["default"].bool,
1020
+ // hide add button
1021
+ themeType: _propTypes["default"].string,
1022
+ glowOnChange: _propTypes["default"].bool,
1023
+ socket: _propTypes["default"].object // only if oid type is used
1024
+
1025
+ };
1026
+
1027
+ var _default = (0, _withStyles["default"])(styles)(TreeTable);
1028
+
1029
+ exports["default"] = _default;
1030
+ //# sourceMappingURL=TreeTable.js.map