@iobroker/adapter-react-v5 3.1.34 → 3.2.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 (244) hide show
  1. package/Components/404.js +0 -23
  2. package/Components/404.js.map +1 -1
  3. package/Components/ColorPicker.js +6 -37
  4. package/Components/ColorPicker.js.map +1 -1
  5. package/Components/ComplexCron.js +10 -84
  6. package/Components/ComplexCron.js.map +1 -1
  7. package/Components/CustomModal.js +29 -54
  8. package/Components/CustomModal.js.map +1 -1
  9. package/Components/FileBrowser.js +15 -265
  10. package/Components/FileBrowser.js.map +1 -1
  11. package/Components/FileViewer.js +7 -68
  12. package/Components/FileViewer.js.map +1 -1
  13. package/Components/Icon.d.ts +1 -1
  14. package/Components/Icon.js +2 -42
  15. package/Components/Icon.js.map +1 -1
  16. package/Components/IconPicker.js +6 -28
  17. package/Components/IconPicker.js.map +1 -1
  18. package/Components/IconSelector.js +3 -55
  19. package/Components/IconSelector.js.map +1 -1
  20. package/Components/Image.js +1 -38
  21. package/Components/Image.js.map +1 -1
  22. package/Components/JsonConfigComponent/ChipInput.js +66 -197
  23. package/Components/JsonConfigComponent/ChipInput.js.map +1 -1
  24. package/Components/JsonConfigComponent/ConfigAlive.js +0 -31
  25. package/Components/JsonConfigComponent/ConfigAlive.js.map +1 -1
  26. package/Components/JsonConfigComponent/ConfigAutocomplete.js +6 -39
  27. package/Components/JsonConfigComponent/ConfigAutocomplete.js.map +1 -1
  28. package/Components/JsonConfigComponent/ConfigAutocompleteSendTo.js +6 -52
  29. package/Components/JsonConfigComponent/ConfigAutocompleteSendTo.js.map +1 -1
  30. package/Components/JsonConfigComponent/ConfigCRON.js +5 -39
  31. package/Components/JsonConfigComponent/ConfigCRON.js.map +1 -1
  32. package/Components/JsonConfigComponent/ConfigCertificateSelect.js +4 -42
  33. package/Components/JsonConfigComponent/ConfigCertificateSelect.js.map +1 -1
  34. package/Components/JsonConfigComponent/ConfigCheckbox.js +0 -28
  35. package/Components/JsonConfigComponent/ConfigCheckbox.js.map +1 -1
  36. package/Components/JsonConfigComponent/ConfigChip.js +4 -33
  37. package/Components/JsonConfigComponent/ConfigChip.js.map +1 -1
  38. package/Components/JsonConfigComponent/ConfigColor.js +0 -34
  39. package/Components/JsonConfigComponent/ConfigColor.js.map +1 -1
  40. package/Components/JsonConfigComponent/ConfigCoordinates.js +0 -33
  41. package/Components/JsonConfigComponent/ConfigCoordinates.js.map +1 -1
  42. package/Components/JsonConfigComponent/ConfigCustom.js +14 -73
  43. package/Components/JsonConfigComponent/ConfigCustom.js.map +1 -1
  44. package/Components/JsonConfigComponent/ConfigDatePicker.js +0 -25
  45. package/Components/JsonConfigComponent/ConfigDatePicker.js.map +1 -1
  46. package/Components/JsonConfigComponent/ConfigFile.js +0 -46
  47. package/Components/JsonConfigComponent/ConfigFile.js.map +1 -1
  48. package/Components/JsonConfigComponent/ConfigFileSelector.js +7 -126
  49. package/Components/JsonConfigComponent/ConfigFileSelector.js.map +1 -1
  50. package/Components/JsonConfigComponent/ConfigFunc.js +0 -34
  51. package/Components/JsonConfigComponent/ConfigFunc.js.map +1 -1
  52. package/Components/JsonConfigComponent/ConfigGeneric.js +15 -110
  53. package/Components/JsonConfigComponent/ConfigGeneric.js.map +1 -1
  54. package/Components/JsonConfigComponent/ConfigIP.js +2 -35
  55. package/Components/JsonConfigComponent/ConfigIP.js.map +1 -1
  56. package/Components/JsonConfigComponent/ConfigImageUpload.js +4 -44
  57. package/Components/JsonConfigComponent/ConfigImageUpload.js.map +1 -1
  58. package/Components/JsonConfigComponent/ConfigInstanceSelect.js +1 -59
  59. package/Components/JsonConfigComponent/ConfigInstanceSelect.js.map +1 -1
  60. package/Components/JsonConfigComponent/ConfigJsonEditor.js +7 -40
  61. package/Components/JsonConfigComponent/ConfigJsonEditor.js.map +1 -1
  62. package/Components/JsonConfigComponent/ConfigLanguage.js +2 -42
  63. package/Components/JsonConfigComponent/ConfigLanguage.js.map +1 -1
  64. package/Components/JsonConfigComponent/ConfigNumber.js +2 -45
  65. package/Components/JsonConfigComponent/ConfigNumber.js.map +1 -1
  66. package/Components/JsonConfigComponent/ConfigObjectId.js +6 -40
  67. package/Components/JsonConfigComponent/ConfigObjectId.js.map +1 -1
  68. package/Components/JsonConfigComponent/ConfigPanel.js +7 -91
  69. package/Components/JsonConfigComponent/ConfigPanel.js.map +1 -1
  70. package/Components/JsonConfigComponent/ConfigPassword.js +0 -42
  71. package/Components/JsonConfigComponent/ConfigPassword.js.map +1 -1
  72. package/Components/JsonConfigComponent/ConfigPattern.js +0 -25
  73. package/Components/JsonConfigComponent/ConfigPattern.js.map +1 -1
  74. package/Components/JsonConfigComponent/ConfigRoom.js +0 -34
  75. package/Components/JsonConfigComponent/ConfigRoom.js.map +1 -1
  76. package/Components/JsonConfigComponent/ConfigSelect.js +4 -34
  77. package/Components/JsonConfigComponent/ConfigSelect.js.map +1 -1
  78. package/Components/JsonConfigComponent/ConfigSelectSendTo.js +11 -67
  79. package/Components/JsonConfigComponent/ConfigSelectSendTo.js.map +1 -1
  80. package/Components/JsonConfigComponent/ConfigSendto.js +8 -91
  81. package/Components/JsonConfigComponent/ConfigSendto.js.map +1 -1
  82. package/Components/JsonConfigComponent/ConfigSetState.js +0 -55
  83. package/Components/JsonConfigComponent/ConfigSetState.js.map +1 -1
  84. package/Components/JsonConfigComponent/ConfigSlider.js +0 -28
  85. package/Components/JsonConfigComponent/ConfigSlider.js.map +1 -1
  86. package/Components/JsonConfigComponent/ConfigStaticDivider.js +0 -21
  87. package/Components/JsonConfigComponent/ConfigStaticDivider.js.map +1 -1
  88. package/Components/JsonConfigComponent/ConfigStaticHeader.js +0 -24
  89. package/Components/JsonConfigComponent/ConfigStaticHeader.js.map +1 -1
  90. package/Components/JsonConfigComponent/ConfigStaticImage.js +0 -23
  91. package/Components/JsonConfigComponent/ConfigStaticImage.js.map +1 -1
  92. package/Components/JsonConfigComponent/ConfigStaticText.js +0 -31
  93. package/Components/JsonConfigComponent/ConfigStaticText.js.map +1 -1
  94. package/Components/JsonConfigComponent/ConfigTable.js +13 -105
  95. package/Components/JsonConfigComponent/ConfigTable.js.map +1 -1
  96. package/Components/JsonConfigComponent/ConfigTabs.js +2 -35
  97. package/Components/JsonConfigComponent/ConfigTabs.js.map +1 -1
  98. package/Components/JsonConfigComponent/ConfigText.js +0 -34
  99. package/Components/JsonConfigComponent/ConfigText.js.map +1 -1
  100. package/Components/JsonConfigComponent/ConfigTextSendTo.js +0 -37
  101. package/Components/JsonConfigComponent/ConfigTextSendTo.js.map +1 -1
  102. package/Components/JsonConfigComponent/ConfigTimePicker.js +0 -25
  103. package/Components/JsonConfigComponent/ConfigTimePicker.js.map +1 -1
  104. package/Components/JsonConfigComponent/ConfigTopic.js +0 -29
  105. package/Components/JsonConfigComponent/ConfigTopic.js.map +1 -1
  106. package/Components/JsonConfigComponent/ConfigUser.js +2 -40
  107. package/Components/JsonConfigComponent/ConfigUser.js.map +1 -1
  108. package/Components/JsonConfigComponent/index.js +5 -81
  109. package/Components/JsonConfigComponent/index.js.map +1 -1
  110. package/Components/Loader.js +2 -20
  111. package/Components/Loader.js.map +1 -1
  112. package/Components/Loaders/PT.js +2 -20
  113. package/Components/Loaders/PT.js.map +1 -1
  114. package/Components/Loaders/Vendor.js +2 -21
  115. package/Components/Loaders/Vendor.js.map +1 -1
  116. package/Components/Logo.js +6 -39
  117. package/Components/Logo.js.map +1 -1
  118. package/Components/MDUtils.js +3 -27
  119. package/Components/MDUtils.js.map +1 -1
  120. package/Components/ObjectBrowser.d.ts +1 -1
  121. package/Components/ObjectBrowser.js +181 -788
  122. package/Components/ObjectBrowser.js.map +1 -1
  123. package/Components/Router.js +7 -31
  124. package/Components/Router.js.map +1 -1
  125. package/Components/SaveCloseButtons.js +2 -32
  126. package/Components/SaveCloseButtons.js.map +1 -1
  127. package/Components/Schedule.js +29 -251
  128. package/Components/Schedule.js.map +1 -1
  129. package/Components/SelectWithIcon.d.ts +1 -1
  130. package/Components/SelectWithIcon.js +0 -48
  131. package/Components/SelectWithIcon.js.map +1 -1
  132. package/Components/SimpleCron/cron2text.js +45 -91
  133. package/Components/SimpleCron/cron2text.js.map +1 -1
  134. package/Components/SimpleCron/cronText.js +0 -6
  135. package/Components/SimpleCron/cronText.js.map +1 -1
  136. package/Components/SimpleCron/index.js +19 -102
  137. package/Components/SimpleCron/index.js.map +1 -1
  138. package/Components/SimpleCron/jquery.cron.locale.js +44 -24
  139. package/Components/SimpleCron/jquery.cron.locale.js.map +1 -1
  140. package/Components/TabContainer.js +2 -23
  141. package/Components/TabContainer.js.map +1 -1
  142. package/Components/TabContent.js +2 -22
  143. package/Components/TabContent.js.map +1 -1
  144. package/Components/TabHeader.js +1 -17
  145. package/Components/TabHeader.js.map +1 -1
  146. package/Components/TableResize.js +6 -51
  147. package/Components/TableResize.js.map +1 -1
  148. package/Components/TextWithIcon.js +0 -20
  149. package/Components/TextWithIcon.js.map +1 -1
  150. package/Components/ToggleThemeMenu.js +5 -13
  151. package/Components/ToggleThemeMenu.js.map +1 -1
  152. package/Components/TreeTable.js +4 -121
  153. package/Components/TreeTable.js.map +1 -1
  154. package/Components/UploadImage.js +17 -60
  155. package/Components/UploadImage.js.map +1 -1
  156. package/Components/Utils.js +87 -263
  157. package/Components/Utils.js.map +1 -1
  158. package/Components/copy-to-clipboard.js +16 -38
  159. package/Components/copy-to-clipboard.js.map +1 -1
  160. package/Components/withWidth.js +2 -10
  161. package/Components/withWidth.js.map +1 -1
  162. package/Connection.d.ts +1 -0
  163. package/Connection.js +156 -527
  164. package/Connection.js.map +1 -1
  165. package/Dialogs/ComplexCron.js +0 -34
  166. package/Dialogs/ComplexCron.js.map +1 -1
  167. package/Dialogs/Confirm.js +1 -39
  168. package/Dialogs/Confirm.js.map +1 -1
  169. package/Dialogs/Cron.js +1 -37
  170. package/Dialogs/Cron.js.map +1 -1
  171. package/Dialogs/Error.d.ts +1 -1
  172. package/Dialogs/Error.js +2 -29
  173. package/Dialogs/Error.js.map +1 -1
  174. package/Dialogs/FileSelect.js +2 -36
  175. package/Dialogs/FileSelect.js.map +1 -1
  176. package/Dialogs/Message.js +2 -27
  177. package/Dialogs/Message.js.map +1 -1
  178. package/Dialogs/SelectID.d.ts +1 -1
  179. package/Dialogs/SelectID.js +3 -40
  180. package/Dialogs/SelectID.js.map +1 -1
  181. package/Dialogs/SimpleCron.js +1 -33
  182. package/Dialogs/SimpleCron.js.map +1 -1
  183. package/Dialogs/TextInput.js +2 -34
  184. package/Dialogs/TextInput.js.map +1 -1
  185. package/GenericApp.js +55 -150
  186. package/GenericApp.js.map +1 -1
  187. package/Prompt.js +0 -2
  188. package/Prompt.js.map +1 -1
  189. package/README.md +11 -4
  190. package/Theme.js +7 -22
  191. package/Theme.js.map +1 -1
  192. package/i18n/uk.json +326 -0
  193. package/i18n.d.ts +2 -0
  194. package/i18n.js +9 -29
  195. package/i18n.js.map +1 -1
  196. package/icons/IconAdapter.d.ts +2 -2
  197. package/icons/IconAdapter.js +2 -6
  198. package/icons/IconAdapter.js.map +1 -1
  199. package/icons/IconAlias.d.ts +2 -2
  200. package/icons/IconAlias.js +2 -6
  201. package/icons/IconAlias.js.map +1 -1
  202. package/icons/IconChannel.d.ts +2 -2
  203. package/icons/IconChannel.js +2 -6
  204. package/icons/IconChannel.js.map +1 -1
  205. package/icons/IconClearFilter.d.ts +2 -2
  206. package/icons/IconClearFilter.js +0 -5
  207. package/icons/IconClearFilter.js.map +1 -1
  208. package/icons/IconClosed.d.ts +2 -2
  209. package/icons/IconClosed.js +0 -5
  210. package/icons/IconClosed.js.map +1 -1
  211. package/icons/IconCopy.d.ts +2 -2
  212. package/icons/IconCopy.js +0 -5
  213. package/icons/IconCopy.js.map +1 -1
  214. package/icons/IconDevice.d.ts +2 -2
  215. package/icons/IconDevice.js +0 -5
  216. package/icons/IconDevice.js.map +1 -1
  217. package/icons/IconDocument.d.ts +2 -2
  218. package/icons/IconDocument.js +0 -5
  219. package/icons/IconDocument.js.map +1 -1
  220. package/icons/IconDocumentReadOnly.d.ts +2 -2
  221. package/icons/IconDocumentReadOnly.js +0 -5
  222. package/icons/IconDocumentReadOnly.js.map +1 -1
  223. package/icons/IconExpert.d.ts +2 -2
  224. package/icons/IconExpert.js +0 -5
  225. package/icons/IconExpert.js.map +1 -1
  226. package/icons/IconFx.d.ts +2 -2
  227. package/icons/IconFx.js +0 -5
  228. package/icons/IconFx.js.map +1 -1
  229. package/icons/IconInstance.d.ts +2 -2
  230. package/icons/IconInstance.js +0 -5
  231. package/icons/IconInstance.js.map +1 -1
  232. package/icons/IconLogout.d.ts +2 -2
  233. package/icons/IconLogout.js +0 -5
  234. package/icons/IconLogout.js.map +1 -1
  235. package/icons/IconNoIcon.d.ts +2 -2
  236. package/icons/IconNoIcon.js +0 -5
  237. package/icons/IconNoIcon.js.map +1 -1
  238. package/icons/IconOpen.d.ts +2 -2
  239. package/icons/IconOpen.js +0 -5
  240. package/icons/IconOpen.js.map +1 -1
  241. package/icons/IconState.d.ts +2 -2
  242. package/icons/IconState.js +0 -6
  243. package/icons/IconState.js.map +1 -1
  244. package/package.json +15 -15
@@ -1,70 +1,39 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  var _typeof = require("@babel/runtime/helpers/typeof");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports["default"] = exports.EXTENSIONS = void 0;
11
-
12
9
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
-
14
10
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
-
16
11
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
17
-
18
12
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
-
20
13
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
-
22
14
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
-
24
15
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
-
26
16
  var _react = _interopRequireWildcard(require("react"));
27
-
28
17
  var _styles = require("@mui/styles");
29
-
30
18
  var _propTypes = _interopRequireDefault(require("prop-types"));
31
-
32
19
  var _TextField = _interopRequireDefault(require("@mui/material/TextField"));
33
-
34
20
  var _Button = _interopRequireDefault(require("@mui/material/Button"));
35
-
36
21
  var _Dialog = _interopRequireDefault(require("@mui/material/Dialog"));
37
-
38
22
  var _DialogActions = _interopRequireDefault(require("@mui/material/DialogActions"));
39
-
40
23
  var _DialogContent = _interopRequireDefault(require("@mui/material/DialogContent"));
41
-
42
24
  var _DialogTitle = _interopRequireDefault(require("@mui/material/DialogTitle"));
43
-
44
25
  var _material = require("@mui/material");
45
-
46
26
  var _IconNoIcon = _interopRequireDefault(require("../icons/IconNoIcon"));
47
-
48
27
  var _withWidth = _interopRequireDefault(require("./withWidth"));
49
-
50
28
  var _Utils = _interopRequireDefault(require("./Utils"));
51
-
52
29
  var _fa = require("react-icons/fa");
53
-
54
30
  var _Brightness = _interopRequireDefault(require("@mui/icons-material/Brightness6"));
55
-
56
31
  var _Close = _interopRequireDefault(require("@mui/icons-material/Close"));
57
-
58
32
  var _Save = _interopRequireDefault(require("@mui/icons-material/Save"));
59
-
60
33
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
61
-
62
34
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
63
-
64
35
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
65
-
66
36
  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; } }
67
-
68
37
  var styles = function styles(theme) {
69
38
  return {
70
39
  dialog: {
@@ -91,7 +60,6 @@ var styles = function styles(theme) {
91
60
  }
92
61
  };
93
62
  };
94
-
95
63
  var EXTENSIONS = {
96
64
  images: ['png', 'jpg', 'svg', 'jpeg', 'bmp'],
97
65
  code: ['js', 'json', 'json5', 'md'],
@@ -100,18 +68,16 @@ var EXTENSIONS = {
100
68
  video: ['mp4', 'mov', 'avi']
101
69
  };
102
70
  exports.EXTENSIONS = EXTENSIONS;
103
-
104
71
  function bufferToBase64(buffer) {
105
72
  var binary = '';
106
73
  var bytes = new Uint8Array(buffer);
107
74
  var len = bytes.byteLength;
108
-
109
75
  for (var i = 0; i < len && i < 50; i++) {
110
76
  binary += String.fromCharCode(bytes[i]);
111
77
  }
112
-
113
78
  return window.btoa(binary);
114
79
  }
80
+
115
81
  /**
116
82
  * @typedef {object} FileViewerProps
117
83
  * @property {import('../types').Translator} t Translation function
@@ -122,19 +88,14 @@ function bufferToBase64(buffer) {
122
88
  *
123
89
  * @extends {React.Component<FileViewerProps>}
124
90
  */
125
-
126
-
127
91
  var FileViewer = /*#__PURE__*/function (_Component) {
128
92
  (0, _inherits2["default"])(FileViewer, _Component);
129
-
130
93
  var _super = _createSuper(FileViewer);
131
-
132
94
  /**
133
95
  * @param {Readonly<FileViewerProps>} props
134
96
  */
135
97
  function FileViewer(props) {
136
98
  var _this;
137
-
138
99
  (0, _classCallCheck2["default"])(this, FileViewer);
139
100
  _this = _super.call(this, props);
140
101
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onFileChanged", function (id, fileName, size) {
@@ -142,7 +103,6 @@ var FileViewer = /*#__PURE__*/function (_Component) {
142
103
  _this.timeout && clearTimeout(_this.timeout);
143
104
  _this.timeout = setTimeout(function () {
144
105
  _this.timeout = null;
145
-
146
106
  if (size === null) {
147
107
  window.alert('Show file was deleted!');
148
108
  } else if (_this.state.text !== null || _this.state.code !== null) {
@@ -157,29 +117,24 @@ var FileViewer = /*#__PURE__*/function (_Component) {
157
117
  });
158
118
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "writeFile64", function () {
159
119
  var parts = _this.props.href.split('/');
160
-
161
120
  var data = _this.state.editingValue;
162
121
  parts.splice(0, 2);
163
122
  var adapter = parts[0];
164
- var name = parts.splice(1).join('/'); // File viewer in adapter-react does not support write
165
-
123
+ var name = parts.splice(1).join('/');
124
+ // File viewer in adapter-react does not support write
166
125
  /*
167
126
  this.props.socket.writeFile64(adapter, name, Buffer.from(data).toString('base64'))
168
127
  .then(_ => this.props.onClose())
169
128
  .catch(e => window.alert('Cannot write file: ' + e));
170
129
  */
171
130
  });
172
-
173
131
  var ext = _Utils["default"].getFileExtension(_this.props.href);
174
-
175
132
  _this.state = {
176
133
  text: null,
177
134
  code: null,
178
135
  ext: ext,
179
136
  // File viewer in adapter-react does not support write
180
- editing:
181
- /* !!this.props.formatEditFile || */
182
- false,
137
+ editing: /* !!this.props.formatEditFile || */false,
183
138
  editingValue: null,
184
139
  copyPossible: EXTENSIONS.code.includes(ext) || EXTENSIONS.txt.includes(ext),
185
140
  forceUpdate: Date.now(),
@@ -188,12 +143,10 @@ var FileViewer = /*#__PURE__*/function (_Component) {
188
143
  };
189
144
  return _this;
190
145
  }
191
-
192
146
  (0, _createClass2["default"])(FileViewer, [{
193
147
  key: "readFile",
194
148
  value: function readFile() {
195
149
  var _this2 = this;
196
-
197
150
  if (this.props.href) {
198
151
  var parts = this.props.href.split('/');
199
152
  parts.splice(0, 2);
@@ -203,20 +156,17 @@ var FileViewer = /*#__PURE__*/function (_Component) {
203
156
  if (data.file !== undefined) {
204
157
  data = data.file;
205
158
  }
206
-
207
159
  var newState = {
208
160
  copyPossible: _this2.state.copyPossible
209
- }; // try to detect valid extension
210
-
161
+ };
162
+ // try to detect valid extension
211
163
  if (data.type === 'Buffer') {
212
164
  var ext = _Utils["default"].detectMimeType(bufferToBase64(data.data));
213
-
214
165
  if (ext) {
215
166
  newState.ext = ext;
216
167
  newState.copyPossible = EXTENSIONS.code.includes(ext) || EXTENSIONS.txt.includes(ext);
217
168
  }
218
169
  }
219
-
220
170
  if (newState.copyPossible) {
221
171
  if (EXTENSIONS.txt.includes(_this2.state.ext)) {
222
172
  newState.text = data;
@@ -226,7 +176,6 @@ var FileViewer = /*#__PURE__*/function (_Component) {
226
176
  newState.editingValue = data;
227
177
  }
228
178
  }
229
-
230
179
  _this2.setState(newState);
231
180
  })["catch"](function (e) {
232
181
  return window.alert('Cannot read file: ' + e);
@@ -257,7 +206,6 @@ var FileViewer = /*#__PURE__*/function (_Component) {
257
206
  key: "getContent",
258
207
  value: function getContent() {
259
208
  var _this3 = this;
260
-
261
209
  if (EXTENSIONS.images.includes(this.state.ext)) {
262
210
  if (this.state.imgError) {
263
211
  return /*#__PURE__*/_react["default"].createElement(_IconNoIcon["default"], {
@@ -267,7 +215,6 @@ var FileViewer = /*#__PURE__*/function (_Component) {
267
215
  return /*#__PURE__*/_react["default"].createElement("img", {
268
216
  onError: function onError(e) {
269
217
  e.target.onerror = null;
270
-
271
218
  _this3.setState({
272
219
  imgError: true
273
220
  });
@@ -299,7 +246,6 @@ var FileViewer = /*#__PURE__*/function (_Component) {
299
246
  key: "render",
300
247
  value: function render() {
301
248
  var _this4 = this;
302
-
303
249
  return /*#__PURE__*/_react["default"].createElement(_Dialog["default"], {
304
250
  classes: {
305
251
  scrollPaper: this.props.classes.dialog,
@@ -350,19 +296,14 @@ var FileViewer = /*#__PURE__*/function (_Component) {
350
296
  switch (ext) {
351
297
  case 'json':
352
298
  return 'json';
353
-
354
299
  case 'json5':
355
300
  return 'json5';
356
-
357
301
  case 'js':
358
302
  return 'javascript';
359
-
360
303
  case 'html':
361
304
  return 'html';
362
-
363
305
  case 'txt':
364
306
  return 'html';
365
-
366
307
  default:
367
308
  return 'json';
368
309
  }
@@ -370,7 +311,6 @@ var FileViewer = /*#__PURE__*/function (_Component) {
370
311
  }]);
371
312
  return FileViewer;
372
313
  }(_react.Component);
373
-
374
314
  FileViewer.propTypes = {
375
315
  t: _propTypes["default"].func,
376
316
  lang: _propTypes["default"].string,
@@ -379,10 +319,9 @@ FileViewer.propTypes = {
379
319
  href: _propTypes["default"].string.isRequired,
380
320
  supportSubscribes: _propTypes["default"].bool
381
321
  };
382
- /** @type {typeof FileViewer} */
383
322
 
323
+ /** @type {typeof FileViewer} */
384
324
  var _export = (0, _withWidth["default"])()((0, _styles.withStyles)(styles)(FileViewer));
385
-
386
325
  var _default = _export;
387
326
  exports["default"] = _default;
388
327
  //# sourceMappingURL=FileViewer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileViewer.js","names":["styles","theme","dialog","height","paper","content","textAlign","textarea","width","img","objectFit","dialogTitle","justifyContent","display","EXTENSIONS","images","code","txt","audio","video","bufferToBase64","buffer","binary","bytes","Uint8Array","len","byteLength","i","String","fromCharCode","window","btoa","FileViewer","props","id","fileName","size","state","changed","timeout","clearTimeout","setTimeout","alert","text","readFile","setState","forceUpdate","Date","now","parts","href","split","data","editingValue","splice","adapter","name","join","ext","Utils","getFileExtension","editing","copyPossible","includes","imgError","socket","then","file","undefined","newState","type","detectMimeType","e","supportSubscribes","subscribeFiles","onFileChanged","clsx","classes","getClassBackgroundImage","target","onerror","newValue","readOnly","scrollPaper","onClose","t","setStateBackgroundImage","getContent","copyToClipboard","writeFile64","Component","propTypes","PropTypes","func","lang","string","expertMode","bool","isRequired","_export","withWidth","withStyles"],"sources":["FileViewer.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { withStyles } from '@mui/styles';\nimport PropTypes from 'prop-types';\n\n// File viewer in adapter-react does not support write\n// import { Buffer } from 'buffer';\n\nimport TextField from '@mui/material/TextField';\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport { IconButton } from '@mui/material';\n\nimport IconNoIcon from '../icons/IconNoIcon';\nimport withWidth from './withWidth';\nimport Utils from './Utils';\n\n// Icons\nimport { FaCopy as CopyIcon } from 'react-icons/fa';\nimport Brightness5Icon from '@mui/icons-material/Brightness6';\nimport CloseIcon from '@mui/icons-material/Close';\nimport SaveIcon from '@mui/icons-material/Save';\n\nconst styles = theme => ({\n dialog: {\n height: '100%',\n },\n paper: {\n height: 'calc(100% - 64px)',\n },\n content: {\n textAlign: 'center',\n },\n textarea: {\n width: '100%',\n height: '100%',\n },\n img: {\n width: 'auto',\n height: 'calc(100% - 5px)',\n objectFit: 'contain',\n },\n dialogTitle: {\n justifyContent: 'space-between',\n display: 'flex'\n }\n});\n\nexport const EXTENSIONS = {\n images: ['png', 'jpg', 'svg', 'jpeg', 'bmp'],\n code: ['js', 'json', 'json5', 'md'],\n txt: ['log', 'txt', 'html', 'css', 'xml'],\n audio: ['mp3', 'wav', 'ogg', 'acc'],\n video: ['mp4', 'mov', 'avi'],\n};\n\nfunction bufferToBase64(buffer) {\n let binary = '';\n let bytes = new Uint8Array(buffer);\n let len = bytes.byteLength;\n for (let i = 0; i < len && i < 50; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return window.btoa(binary);\n}\n\n/**\n * @typedef {object} FileViewerProps\n * @property {import('../types').Translator} t Translation function\n * @property {ioBroker.Languages} [lang] The selected language.\n * @property {boolean} [expertMode] Is expert mode enabled? (default: false)\n * @property {() => void} onClose Callback when the viewer is closed.\n * @property {string} href The URL to the file to be displayed.\n *\n * @extends {React.Component<FileViewerProps>}\n */\nclass FileViewer extends Component {\n /**\n * @param {Readonly<FileViewerProps>} props\n */\n constructor(props) {\n super(props);\n const ext = Utils.getFileExtension(this.props.href);\n\n this.state = {\n text: null,\n code: null,\n ext,\n // File viewer in adapter-react does not support write\n editing: /* !!this.props.formatEditFile || */ false,\n editingValue: null,\n copyPossible: EXTENSIONS.code.includes(ext) || EXTENSIONS.txt.includes(ext),\n forceUpdate: Date.now(),\n changed: false,\n imgError: false,\n };\n }\n\n readFile() {\n if (this.props.href) {\n const parts = this.props.href.split('/');\n parts.splice(0, 2);\n const adapter = parts[0];\n const name = parts.splice(1).join('/');\n\n this.props.socket.readFile(adapter, name)\n .then(data => {\n if (data.file !== undefined) {\n data = data.file;\n }\n\n const newState = {copyPossible: this.state.copyPossible};\n // try to detect valid extension\n if (data.type === 'Buffer') {\n const ext = Utils.detectMimeType(bufferToBase64(data.data));\n if (ext) {\n newState.ext = ext;\n newState.copyPossible = EXTENSIONS.code.includes(ext) || EXTENSIONS.txt.includes(ext);\n }\n }\n\n if (newState.copyPossible) {\n if (EXTENSIONS.txt.includes(this.state.ext)) {\n newState.text = data;\n newState.editingValue = data;\n } else if (EXTENSIONS.code.includes(this.state.ext)) {\n newState.code = data;\n newState.editingValue = data;\n }\n }\n\n this.setState(newState);\n })\n .catch(e => window.alert('Cannot read file: ' + e));\n }\n }\n\n componentDidMount() {\n this.readFile();\n\n const parts = this.props.href.split('/');\n parts.splice(0, 2);\n const adapter = parts[0];\n const name = parts.splice(1).join('/');\n\n this.props.supportSubscribes && this.props.socket.subscribeFiles(adapter, name, this.onFileChanged);\n }\n\n componentWillUnmount() {\n this.timeout && clearTimeout(this.timeout);\n const parts = this.props.href.split('/');\n parts.splice(0, 2);\n const adapter = parts[0];\n const name = parts.splice(1).join('/');\n this.props.supportSubscribes && this.props.socket.subscribeFiles(adapter, name, this.onFileChanged);\n }\n\n onFileChanged = (id, fileName, size) => {\n if (!this.state.changed) {\n this.timeout && clearTimeout(this.timeout);\n this.timeout = setTimeout(() => {\n this.timeout = null;\n if (size === null) {\n window.alert('Show file was deleted!');\n } else if (this.state.text !== null || this.state.code !== null) {\n this.readFile();\n } else {\n this.setState({ forceUpdate: Date.now() });\n }\n }, 300);\n }\n };\n\n writeFile64 = () => {\n const parts = this.props.href.split('/');\n const data = this.state.editingValue;\n parts.splice(0, 2);\n const adapter = parts[0];\n const name = parts.splice(1).join('/');\n // File viewer in adapter-react does not support write\n /*\n this.props.socket.writeFile64(adapter, name, Buffer.from(data).toString('base64'))\n .then(_ => this.props.onClose())\n .catch(e => window.alert('Cannot write file: ' + e));\n */\n }\n\n static getEditFile(ext) {\n switch (ext) {\n case 'json':\n return 'json';\n case 'json5':\n return 'json5';\n case 'js':\n return 'javascript';\n case 'html':\n return 'html';\n case 'txt':\n return 'html';\n default:\n return 'json';\n }\n }\n\n getContent() {\n if (EXTENSIONS.images.includes(this.state.ext)) {\n if (this.state.imgError) {\n return <IconNoIcon className={Utils.clsx(this.props.classes.img, this.props.getClassBackgroundImage())} />;\n } else {\n return <img\n onError={e => {\n e.target.onerror = null;\n this.setState({ imgError: true });\n }}\n className={Utils.clsx(this.props.classes.img, this.props.getClassBackgroundImage())}\n src={this.props.href + '?ts=' + this.state.forceUpdate}\n alt={this.props.href}\n />;\n }\n } else if (this.state.code !== null || this.state.text !== null || this.state.editing) {\n return <TextField\n variant=\"standard\"\n className={ this.props.classes.textarea }\n multiline\n value={ this.state.editingValue || this.state.code || this.state.text }\n onChange={newValue => this.setState({ editingValue: newValue, changed: true })}\n InputProps={{ readOnly: !this.state.editing }}\n />;\n }\n }\n\n render() {\n return <Dialog\n classes={{ scrollPaper: this.props.classes.dialog, paper: this.props.classes.paper }}\n scroll=\"paper\"\n open={!!this.props.href}\n onClose={() => this.props.onClose()}\n fullWidth={true}\n maxWidth=\"xl\"\n aria-labelledby=\"form-dialog-title\"\n >\n <div className={this.props.classes.dialogTitle}>\n <DialogTitle id=\"form-dialog-title\">{this.props.t(this.state.editing ? 'Edit' : 'View') + ': ' + this.props.href}</DialogTitle>\n {EXTENSIONS.images.includes(this.state.ext) && <div>\n <IconButton size=\"large\"\n color={'inherit'}\n onClick={this.props.setStateBackgroundImage}\n >\n <Brightness5Icon />\n </IconButton>\n </div>\n }\n </div>\n <DialogContent className={this.props.classes.content}>\n {this.getContent()}\n </DialogContent>\n <DialogActions>\n {this.state.copyPossible ?\n <Button\n color=\"grey\"\n onClick={e => Utils.copyToClipboard(this.state.text || this.state.code, e)}\n startIcon={<CopyIcon />}\n >\n {this.props.t('Copy content')}\n </Button> : null}\n {this.state.editing ?\n <Button\n color=\"grey\"\n disabled={this.state.editingValue === this.state.code || this.state.editingValue === this.state.text}\n variant=\"contained\"\n onClick={this.writeFile64}\n startIcon={<SaveIcon />}\n >\n {this.props.t('Save')}\n </Button> : null}\n <Button\n variant=\"contained\"\n onClick={() => this.props.onClose()}\n color=\"primary\"\n startIcon={<CloseIcon />}\n >\n {this.props.t('Close')}\n </Button>\n </DialogActions>\n </Dialog>;\n }\n}\n\nFileViewer.propTypes = {\n t: PropTypes.func,\n lang: PropTypes.string,\n expertMode: PropTypes.bool,\n onClose: PropTypes.func,\n href: PropTypes.string.isRequired,\n supportSubscribes: PropTypes.bool,\n};\n\n/** @type {typeof FileViewer} */\nconst _export = withWidth()(withStyles(styles)(FileViewer));\nexport default _export;\n"],"mappings":"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"}
1
+ {"version":3,"file":"FileViewer.js","names":["styles","theme","dialog","height","paper","content","textAlign","textarea","width","img","objectFit","dialogTitle","justifyContent","display","EXTENSIONS","images","code","txt","audio","video","bufferToBase64","buffer","binary","bytes","Uint8Array","len","byteLength","i","String","fromCharCode","window","btoa","FileViewer","props","id","fileName","size","state","changed","timeout","clearTimeout","setTimeout","alert","text","readFile","setState","forceUpdate","Date","now","parts","href","split","data","editingValue","splice","adapter","name","join","ext","Utils","getFileExtension","editing","copyPossible","includes","imgError","socket","then","file","undefined","newState","type","detectMimeType","e","supportSubscribes","subscribeFiles","onFileChanged","clsx","classes","getClassBackgroundImage","target","onerror","newValue","readOnly","scrollPaper","onClose","t","setStateBackgroundImage","getContent","copyToClipboard","writeFile64","Component","propTypes","PropTypes","func","lang","string","expertMode","bool","isRequired","_export","withWidth","withStyles"],"sources":["FileViewer.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { withStyles } from '@mui/styles';\nimport PropTypes from 'prop-types';\n\n// File viewer in adapter-react does not support write\n// import { Buffer } from 'buffer';\n\nimport TextField from '@mui/material/TextField';\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport { IconButton } from '@mui/material';\n\nimport IconNoIcon from '../icons/IconNoIcon';\nimport withWidth from './withWidth';\nimport Utils from './Utils';\n\n// Icons\nimport { FaCopy as CopyIcon } from 'react-icons/fa';\nimport Brightness5Icon from '@mui/icons-material/Brightness6';\nimport CloseIcon from '@mui/icons-material/Close';\nimport SaveIcon from '@mui/icons-material/Save';\n\nconst styles = theme => ({\n dialog: {\n height: '100%',\n },\n paper: {\n height: 'calc(100% - 64px)',\n },\n content: {\n textAlign: 'center',\n },\n textarea: {\n width: '100%',\n height: '100%',\n },\n img: {\n width: 'auto',\n height: 'calc(100% - 5px)',\n objectFit: 'contain',\n },\n dialogTitle: {\n justifyContent: 'space-between',\n display: 'flex'\n }\n});\n\nexport const EXTENSIONS = {\n images: ['png', 'jpg', 'svg', 'jpeg', 'bmp'],\n code: ['js', 'json', 'json5', 'md'],\n txt: ['log', 'txt', 'html', 'css', 'xml'],\n audio: ['mp3', 'wav', 'ogg', 'acc'],\n video: ['mp4', 'mov', 'avi'],\n};\n\nfunction bufferToBase64(buffer) {\n let binary = '';\n let bytes = new Uint8Array(buffer);\n let len = bytes.byteLength;\n for (let i = 0; i < len && i < 50; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return window.btoa(binary);\n}\n\n/**\n * @typedef {object} FileViewerProps\n * @property {import('../types').Translator} t Translation function\n * @property {ioBroker.Languages} [lang] The selected language.\n * @property {boolean} [expertMode] Is expert mode enabled? (default: false)\n * @property {() => void} onClose Callback when the viewer is closed.\n * @property {string} href The URL to the file to be displayed.\n *\n * @extends {React.Component<FileViewerProps>}\n */\nclass FileViewer extends Component {\n /**\n * @param {Readonly<FileViewerProps>} props\n */\n constructor(props) {\n super(props);\n const ext = Utils.getFileExtension(this.props.href);\n\n this.state = {\n text: null,\n code: null,\n ext,\n // File viewer in adapter-react does not support write\n editing: /* !!this.props.formatEditFile || */ false,\n editingValue: null,\n copyPossible: EXTENSIONS.code.includes(ext) || EXTENSIONS.txt.includes(ext),\n forceUpdate: Date.now(),\n changed: false,\n imgError: false,\n };\n }\n\n readFile() {\n if (this.props.href) {\n const parts = this.props.href.split('/');\n parts.splice(0, 2);\n const adapter = parts[0];\n const name = parts.splice(1).join('/');\n\n this.props.socket.readFile(adapter, name)\n .then(data => {\n if (data.file !== undefined) {\n data = data.file;\n }\n\n const newState = {copyPossible: this.state.copyPossible};\n // try to detect valid extension\n if (data.type === 'Buffer') {\n const ext = Utils.detectMimeType(bufferToBase64(data.data));\n if (ext) {\n newState.ext = ext;\n newState.copyPossible = EXTENSIONS.code.includes(ext) || EXTENSIONS.txt.includes(ext);\n }\n }\n\n if (newState.copyPossible) {\n if (EXTENSIONS.txt.includes(this.state.ext)) {\n newState.text = data;\n newState.editingValue = data;\n } else if (EXTENSIONS.code.includes(this.state.ext)) {\n newState.code = data;\n newState.editingValue = data;\n }\n }\n\n this.setState(newState);\n })\n .catch(e => window.alert('Cannot read file: ' + e));\n }\n }\n\n componentDidMount() {\n this.readFile();\n\n const parts = this.props.href.split('/');\n parts.splice(0, 2);\n const adapter = parts[0];\n const name = parts.splice(1).join('/');\n\n this.props.supportSubscribes && this.props.socket.subscribeFiles(adapter, name, this.onFileChanged);\n }\n\n componentWillUnmount() {\n this.timeout && clearTimeout(this.timeout);\n const parts = this.props.href.split('/');\n parts.splice(0, 2);\n const adapter = parts[0];\n const name = parts.splice(1).join('/');\n this.props.supportSubscribes && this.props.socket.subscribeFiles(adapter, name, this.onFileChanged);\n }\n\n onFileChanged = (id, fileName, size) => {\n if (!this.state.changed) {\n this.timeout && clearTimeout(this.timeout);\n this.timeout = setTimeout(() => {\n this.timeout = null;\n if (size === null) {\n window.alert('Show file was deleted!');\n } else if (this.state.text !== null || this.state.code !== null) {\n this.readFile();\n } else {\n this.setState({ forceUpdate: Date.now() });\n }\n }, 300);\n }\n };\n\n writeFile64 = () => {\n const parts = this.props.href.split('/');\n const data = this.state.editingValue;\n parts.splice(0, 2);\n const adapter = parts[0];\n const name = parts.splice(1).join('/');\n // File viewer in adapter-react does not support write\n /*\n this.props.socket.writeFile64(adapter, name, Buffer.from(data).toString('base64'))\n .then(_ => this.props.onClose())\n .catch(e => window.alert('Cannot write file: ' + e));\n */\n }\n\n static getEditFile(ext) {\n switch (ext) {\n case 'json':\n return 'json';\n case 'json5':\n return 'json5';\n case 'js':\n return 'javascript';\n case 'html':\n return 'html';\n case 'txt':\n return 'html';\n default:\n return 'json';\n }\n }\n\n getContent() {\n if (EXTENSIONS.images.includes(this.state.ext)) {\n if (this.state.imgError) {\n return <IconNoIcon className={Utils.clsx(this.props.classes.img, this.props.getClassBackgroundImage())} />;\n } else {\n return <img\n onError={e => {\n e.target.onerror = null;\n this.setState({ imgError: true });\n }}\n className={Utils.clsx(this.props.classes.img, this.props.getClassBackgroundImage())}\n src={this.props.href + '?ts=' + this.state.forceUpdate}\n alt={this.props.href}\n />;\n }\n } else if (this.state.code !== null || this.state.text !== null || this.state.editing) {\n return <TextField\n variant=\"standard\"\n className={ this.props.classes.textarea }\n multiline\n value={ this.state.editingValue || this.state.code || this.state.text }\n onChange={newValue => this.setState({ editingValue: newValue, changed: true })}\n InputProps={{ readOnly: !this.state.editing }}\n />;\n }\n }\n\n render() {\n return <Dialog\n classes={{ scrollPaper: this.props.classes.dialog, paper: this.props.classes.paper }}\n scroll=\"paper\"\n open={!!this.props.href}\n onClose={() => this.props.onClose()}\n fullWidth={true}\n maxWidth=\"xl\"\n aria-labelledby=\"form-dialog-title\"\n >\n <div className={this.props.classes.dialogTitle}>\n <DialogTitle id=\"form-dialog-title\">{this.props.t(this.state.editing ? 'Edit' : 'View') + ': ' + this.props.href}</DialogTitle>\n {EXTENSIONS.images.includes(this.state.ext) && <div>\n <IconButton size=\"large\"\n color={'inherit'}\n onClick={this.props.setStateBackgroundImage}\n >\n <Brightness5Icon />\n </IconButton>\n </div>\n }\n </div>\n <DialogContent className={this.props.classes.content}>\n {this.getContent()}\n </DialogContent>\n <DialogActions>\n {this.state.copyPossible ?\n <Button\n color=\"grey\"\n onClick={e => Utils.copyToClipboard(this.state.text || this.state.code, e)}\n startIcon={<CopyIcon />}\n >\n {this.props.t('Copy content')}\n </Button> : null}\n {this.state.editing ?\n <Button\n color=\"grey\"\n disabled={this.state.editingValue === this.state.code || this.state.editingValue === this.state.text}\n variant=\"contained\"\n onClick={this.writeFile64}\n startIcon={<SaveIcon />}\n >\n {this.props.t('Save')}\n </Button> : null}\n <Button\n variant=\"contained\"\n onClick={() => this.props.onClose()}\n color=\"primary\"\n startIcon={<CloseIcon />}\n >\n {this.props.t('Close')}\n </Button>\n </DialogActions>\n </Dialog>;\n }\n}\n\nFileViewer.propTypes = {\n t: PropTypes.func,\n lang: PropTypes.string,\n expertMode: PropTypes.bool,\n onClose: PropTypes.func,\n href: PropTypes.string.isRequired,\n supportSubscribes: PropTypes.bool,\n};\n\n/** @type {typeof FileViewer} */\nconst _export = withWidth()(withStyles(styles)(FileViewer));\nexport default _export;\n"],"mappings":"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"}
@@ -10,7 +10,7 @@ declare namespace Icon {
10
10
  namespace propTypes {
11
11
  const color: PropTypes.Requireable<string>;
12
12
  const title: PropTypes.Requireable<string>;
13
- const src: PropTypes.Validator<string | object>;
13
+ const src: PropTypes.Validator<NonNullable<NonNullable<string | object>>>;
14
14
  const className: PropTypes.Requireable<string>;
15
15
  const imagePrefix: PropTypes.Requireable<string>;
16
16
  const style: PropTypes.Requireable<object>;
@@ -1,63 +1,40 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports["default"] = void 0;
9
8
  exports.getSelectIdIcon = getSelectIdIcon;
10
9
  exports.getSystemIcon = getSystemIcon;
11
-
12
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
-
14
11
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
-
16
12
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
-
18
13
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
-
20
14
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
-
22
15
  var _react = _interopRequireDefault(require("react"));
23
-
24
16
  var _propTypes = _interopRequireDefault(require("prop-types"));
25
-
26
17
  var _reactInlinesvg = _interopRequireDefault(require("react-inlinesvg"));
27
-
28
18
  var _SettingsApplications = _interopRequireDefault(require("@mui/icons-material/SettingsApplications"));
29
-
30
19
  var _Photo = _interopRequireDefault(require("@mui/icons-material/Photo"));
31
-
32
20
  var _SupervisedUserCircle = _interopRequireDefault(require("@mui/icons-material/SupervisedUserCircle"));
33
-
34
21
  var _PersonOutlined = _interopRequireDefault(require("@mui/icons-material/PersonOutlined"));
35
-
36
22
  var _Router = _interopRequireDefault(require("@mui/icons-material/Router"));
37
-
38
23
  var _Wifi = _interopRequireDefault(require("@mui/icons-material/Wifi"));
39
-
40
24
  var _Info = _interopRequireDefault(require("@mui/icons-material/Info"));
41
-
42
25
  var _Description = _interopRequireDefault(require("@mui/icons-material/Description"));
43
-
44
26
  var _IconAlias = _interopRequireDefault(require("../icons/IconAlias"));
45
-
46
27
  var _Utils = _interopRequireDefault(require("./Utils"));
47
-
48
28
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
49
-
50
29
  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; } }
51
-
52
30
  function getSystemIcon(obj) {
53
31
  var icon;
54
32
  var id = obj === null || obj === void 0 ? void 0 : obj._id;
55
-
56
33
  if (!id) {
57
34
  return null;
58
- } // system or design have special icons
59
-
35
+ }
60
36
 
37
+ // system or design have special icons
61
38
  if (id.startsWith('_design/') || id === 'system') {
62
39
  icon = /*#__PURE__*/_react["default"].createElement(_SettingsApplications["default"], {
63
40
  className: "iconOwn"
@@ -99,45 +76,35 @@ function getSystemIcon(obj) {
99
76
  className: "iconOwn"
100
77
  });
101
78
  }
102
-
103
79
  return icon || null;
104
80
  }
105
-
106
81
  function getSelectIdIcon(obj, imagePrefix) {
107
82
  imagePrefix = imagePrefix || '.'; //http://localhost:8081';
108
-
109
83
  var src = '';
110
84
  var common = obj === null || obj === void 0 ? void 0 : obj.common;
111
-
112
85
  if (common) {
113
86
  var cIcon = common.icon;
114
-
115
87
  if (cIcon) {
116
88
  if (!cIcon.startsWith('data:image/')) {
117
89
  if (cIcon.includes('.')) {
118
90
  var instance;
119
-
120
91
  if (obj.type === 'instance' || obj.type === 'adapter') {
121
92
  src = imagePrefix + '/adapter/' + common.name + '/' + cIcon;
122
93
  } else if (obj._id && obj._id.startsWith('system.adapter.')) {
123
94
  instance = obj._id.split('.', 3);
124
-
125
95
  if (cIcon[0] === '/') {
126
96
  instance[2] += cIcon;
127
97
  } else {
128
98
  instance[2] += '/' + cIcon;
129
99
  }
130
-
131
100
  src = imagePrefix + '/adapter/' + instance[2];
132
101
  } else {
133
102
  instance = obj._id.split('.', 2);
134
-
135
103
  if (cIcon[0] === '/') {
136
104
  instance[0] += cIcon;
137
105
  } else {
138
106
  instance[0] += '/' + cIcon;
139
107
  }
140
-
141
108
  src = imagePrefix + '/adapter/' + instance[0];
142
109
  }
143
110
  } else {
@@ -149,20 +116,15 @@ function getSelectIdIcon(obj, imagePrefix) {
149
116
  }
150
117
  }
151
118
  }
152
-
153
119
  return src || null;
154
120
  }
155
-
156
121
  var Icon = /*#__PURE__*/function (_React$Component) {
157
122
  (0, _inherits2["default"])(Icon, _React$Component);
158
-
159
123
  var _super = _createSuper(Icon);
160
-
161
124
  function Icon() {
162
125
  (0, _classCallCheck2["default"])(this, Icon);
163
126
  return _super.apply(this, arguments);
164
127
  }
165
-
166
128
  (0, _createClass2["default"])(Icon, [{
167
129
  key: "render",
168
130
  value: function render() {
@@ -180,7 +142,6 @@ var Icon = /*#__PURE__*/function (_React$Component) {
180
142
  } else {
181
143
  if (this.props.src.startsWith('data:image/svg')) {
182
144
  var _this$props$style, _this$props$style2, _this$props$style3;
183
-
184
145
  return /*#__PURE__*/_react["default"].createElement(_reactInlinesvg["default"], {
185
146
  title: this.props.title || undefined,
186
147
  src: this.props.src,
@@ -209,7 +170,6 @@ var Icon = /*#__PURE__*/function (_React$Component) {
209
170
  }]);
210
171
  return Icon;
211
172
  }(_react["default"].Component);
212
-
213
173
  Icon.propTypes = {
214
174
  color: _propTypes["default"].string,
215
175
  title: _propTypes["default"].string,
@@ -1 +1 @@
1
- {"version":3,"file":"Icon.js","names":["getSystemIcon","obj","icon","id","_id","startsWith","endsWith","type","getSelectIdIcon","imagePrefix","src","common","cIcon","includes","instance","name","split","Icon","props","length","title","undefined","Object","assign","height","marginTop","styleUTF8","style","Utils","clsx","className","width","React","Component","propTypes","color","PropTypes","string","oneOfType","object","isRequired"],"sources":["Icon.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport SVG from 'react-inlinesvg';\n\nimport IconSystem from '@mui/icons-material/SettingsApplications';\nimport IconPhoto from '@mui/icons-material/Photo';\nimport IconGroup from '@mui/icons-material/SupervisedUserCircle';\nimport IconUser from '@mui/icons-material/PersonOutlined';\nimport IconHost from '@mui/icons-material/Router';\nimport IconConnection from '@mui/icons-material/Wifi';\nimport IconInfo from '@mui/icons-material/Info';\nimport IconMeta from '@mui/icons-material/Description';\nimport IconAlias from '../icons/IconAlias';\n\nimport Utils from './Utils';\n\nexport function getSystemIcon(obj) {\n let icon;\n const id = obj?._id;\n\n if (!id) {\n return null;\n }\n\n // system or design have special icons\n if (id.startsWith('_design/') || (id === 'system')) {\n icon = <IconSystem className=\"iconOwn\" />;\n } else if (id === '0_userdata' || id === '0_userdata.0') {\n icon = <IconPhoto className=\"iconOwn\" />;\n } else if (id === 'alias' || id === 'alias.0') {\n icon = <IconAlias className=\"iconOwn\" />;\n } else if (id === 'system.adapter') {\n icon = <IconSystem className=\"iconOwn\" />;\n } else if (id === 'system.group') {\n icon = <IconGroup className=\"iconOwn\" />;\n } else if (id === 'system.user') {\n icon = <IconUser className=\"iconOwn\" />;\n } else if (id === 'system.host') {\n icon = <IconHost className=\"iconOwn\" />;\n } else if (id.endsWith('.connection') || id.endsWith('.connected')) {\n icon = <IconConnection className=\"iconOwn\" />;\n } else if (id.endsWith('.info')) {\n icon = <IconInfo className=\"iconOwn\" />;\n } else if (obj?.type === 'meta') {\n icon = <IconMeta className=\"iconOwn\" />;\n }\n\n return icon || null;\n}\n\nexport function getSelectIdIcon(obj, imagePrefix) {\n imagePrefix = imagePrefix || '.';//http://localhost:8081';\n let src = '';\n const common = obj?.common;\n\n if (common) {\n const cIcon = common.icon;\n if (cIcon) {\n if (!cIcon.startsWith('data:image/')) {\n if (cIcon.includes('.')) {\n let instance;\n if (obj.type === 'instance' || obj.type === 'adapter') {\n src = imagePrefix + '/adapter/' + common.name + '/' + cIcon;\n } else if (obj._id && obj._id.startsWith('system.adapter.')) {\n instance = obj._id.split('.', 3);\n if (cIcon[0] === '/') {\n instance[2] += cIcon;\n } else {\n instance[2] += '/' + cIcon;\n }\n src = imagePrefix + '/adapter/' + instance[2];\n } else {\n instance = obj._id.split('.', 2);\n if (cIcon[0] === '/') {\n instance[0] += cIcon;\n } else {\n instance[0] += '/' + cIcon;\n }\n src = imagePrefix + '/adapter/' + instance[0];\n }\n } else {\n return null;\n }\n } else {\n // base 64 image\n src = cIcon;\n }\n }\n }\n\n return src || null;\n}\n\nclass Icon extends React.Component {\n render() {\n if (this.props.src) {\n if (typeof this.props.src === 'string') {\n if (this.props.src.length < 3) {\n return <span title={this.props.title || undefined} style={Object.assign({height: 27, marginTop: -8}, this.props.styleUTF8 || this.props.style)} className={ Utils.clsx(this.props.className, 'iconOwn') }>{this.props.src}</span>; // utf-8 char\n } else {\n if (this.props.src.startsWith('data:image/svg')) {\n return <SVG title={this.props.title || undefined} src={this.props.src} className={ Utils.clsx(this.props.className, 'iconOwn') } width={this.props.style?.width || 28} height={this.props.style?.height || this.props.style?.width || 28} style={this.props.style || {}}/>;\n } else {\n return <img title={this.props.title || undefined} style={this.props.style || {}} className={ Utils.clsx(this.props.className, 'iconOwn') } src={ this.props.src } alt=\"\" />;\n }\n }\n } else {\n return this.props.src;\n }\n } else {\n return null;\n }\n }\n}\n\nIcon.propTypes = {\n color: PropTypes.string,\n title: PropTypes.string,\n src: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired,\n className: PropTypes.string,\n imagePrefix: PropTypes.string,\n style: PropTypes.object,\n styleUTF8: PropTypes.object,\n};\n\nexport default Icon;"],"mappings":"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"}
1
+ {"version":3,"file":"Icon.js","names":["getSystemIcon","obj","icon","id","_id","startsWith","endsWith","type","getSelectIdIcon","imagePrefix","src","common","cIcon","includes","instance","name","split","Icon","props","length","title","undefined","Object","assign","height","marginTop","styleUTF8","style","Utils","clsx","className","width","React","Component","propTypes","color","PropTypes","string","oneOfType","object","isRequired"],"sources":["Icon.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport SVG from 'react-inlinesvg';\n\nimport IconSystem from '@mui/icons-material/SettingsApplications';\nimport IconPhoto from '@mui/icons-material/Photo';\nimport IconGroup from '@mui/icons-material/SupervisedUserCircle';\nimport IconUser from '@mui/icons-material/PersonOutlined';\nimport IconHost from '@mui/icons-material/Router';\nimport IconConnection from '@mui/icons-material/Wifi';\nimport IconInfo from '@mui/icons-material/Info';\nimport IconMeta from '@mui/icons-material/Description';\nimport IconAlias from '../icons/IconAlias';\n\nimport Utils from './Utils';\n\nexport function getSystemIcon(obj) {\n let icon;\n const id = obj?._id;\n\n if (!id) {\n return null;\n }\n\n // system or design have special icons\n if (id.startsWith('_design/') || (id === 'system')) {\n icon = <IconSystem className=\"iconOwn\" />;\n } else if (id === '0_userdata' || id === '0_userdata.0') {\n icon = <IconPhoto className=\"iconOwn\" />;\n } else if (id === 'alias' || id === 'alias.0') {\n icon = <IconAlias className=\"iconOwn\" />;\n } else if (id === 'system.adapter') {\n icon = <IconSystem className=\"iconOwn\" />;\n } else if (id === 'system.group') {\n icon = <IconGroup className=\"iconOwn\" />;\n } else if (id === 'system.user') {\n icon = <IconUser className=\"iconOwn\" />;\n } else if (id === 'system.host') {\n icon = <IconHost className=\"iconOwn\" />;\n } else if (id.endsWith('.connection') || id.endsWith('.connected')) {\n icon = <IconConnection className=\"iconOwn\" />;\n } else if (id.endsWith('.info')) {\n icon = <IconInfo className=\"iconOwn\" />;\n } else if (obj?.type === 'meta') {\n icon = <IconMeta className=\"iconOwn\" />;\n }\n\n return icon || null;\n}\n\nexport function getSelectIdIcon(obj, imagePrefix) {\n imagePrefix = imagePrefix || '.';//http://localhost:8081';\n let src = '';\n const common = obj?.common;\n\n if (common) {\n const cIcon = common.icon;\n if (cIcon) {\n if (!cIcon.startsWith('data:image/')) {\n if (cIcon.includes('.')) {\n let instance;\n if (obj.type === 'instance' || obj.type === 'adapter') {\n src = imagePrefix + '/adapter/' + common.name + '/' + cIcon;\n } else if (obj._id && obj._id.startsWith('system.adapter.')) {\n instance = obj._id.split('.', 3);\n if (cIcon[0] === '/') {\n instance[2] += cIcon;\n } else {\n instance[2] += '/' + cIcon;\n }\n src = imagePrefix + '/adapter/' + instance[2];\n } else {\n instance = obj._id.split('.', 2);\n if (cIcon[0] === '/') {\n instance[0] += cIcon;\n } else {\n instance[0] += '/' + cIcon;\n }\n src = imagePrefix + '/adapter/' + instance[0];\n }\n } else {\n return null;\n }\n } else {\n // base 64 image\n src = cIcon;\n }\n }\n }\n\n return src || null;\n}\n\nclass Icon extends React.Component {\n render() {\n if (this.props.src) {\n if (typeof this.props.src === 'string') {\n if (this.props.src.length < 3) {\n return <span title={this.props.title || undefined} style={Object.assign({height: 27, marginTop: -8}, this.props.styleUTF8 || this.props.style)} className={ Utils.clsx(this.props.className, 'iconOwn') }>{this.props.src}</span>; // utf-8 char\n } else {\n if (this.props.src.startsWith('data:image/svg')) {\n return <SVG title={this.props.title || undefined} src={this.props.src} className={ Utils.clsx(this.props.className, 'iconOwn') } width={this.props.style?.width || 28} height={this.props.style?.height || this.props.style?.width || 28} style={this.props.style || {}}/>;\n } else {\n return <img title={this.props.title || undefined} style={this.props.style || {}} className={ Utils.clsx(this.props.className, 'iconOwn') } src={ this.props.src } alt=\"\" />;\n }\n }\n } else {\n return this.props.src;\n }\n } else {\n return null;\n }\n }\n}\n\nIcon.propTypes = {\n color: PropTypes.string,\n title: PropTypes.string,\n src: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired,\n className: PropTypes.string,\n imagePrefix: PropTypes.string,\n style: PropTypes.object,\n styleUTF8: PropTypes.object,\n};\n\nexport default Icon;"],"mappings":"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"}