@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,230 @@
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 _withStyles = _interopRequireDefault(require("@mui/styles/withStyles"));
13
+
14
+ var _Fab = _interopRequireDefault(require("@mui/material/Fab"));
15
+
16
+ var _propTypes = _interopRequireDefault(require("prop-types"));
17
+
18
+ var _i18n = _interopRequireDefault(require("../i18n"));
19
+
20
+ var _Help = _interopRequireDefault(require("@mui/icons-material/Help"));
21
+
22
+ var _VerticalAlignTop = _interopRequireDefault(require("@mui/icons-material/VerticalAlignTop"));
23
+
24
+ var _VerticalAlignBottom = _interopRequireDefault(require("@mui/icons-material/VerticalAlignBottom"));
25
+
26
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
27
+
28
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
29
+
30
+ 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); } }
31
+
32
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
33
+
34
+ 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); }
35
+
36
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
37
+
38
+ 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); }; }
39
+
40
+ 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); }
41
+
42
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
43
+
44
+ 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; } }
45
+
46
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
47
+
48
+ var styles = function styles(theme) {
49
+ return {
50
+ buttons: {
51
+ marginRight: 5,
52
+ marginTop: 5,
53
+ "float": 'right'
54
+ },
55
+ logo: {
56
+ padding: 8,
57
+ width: 64
58
+ }
59
+ };
60
+ };
61
+ /**
62
+ * @typedef {object} LogoProps
63
+ * @property {any} common Adapter common configuration from io-package.json
64
+ * @property {any} native Adapter native data from io-package.json
65
+ * @property {number} instance Adapter instance number.
66
+ * @property {(contents: any) => void} [onLoad]
67
+ * @property {(error: string) => void} [onError]
68
+ * @property {{ buttons: string, logo: string }} classes The styling class names.
69
+ *
70
+ * @extends {React.Component<LogoProps>}
71
+ */
72
+
73
+
74
+ var Logo = /*#__PURE__*/function (_React$Component) {
75
+ _inherits(Logo, _React$Component);
76
+
77
+ var _super = _createSuper(Logo);
78
+
79
+ function Logo() {
80
+ _classCallCheck(this, Logo);
81
+
82
+ return _super.apply(this, arguments);
83
+ }
84
+
85
+ _createClass(Logo, [{
86
+ key: "handleFileSelect",
87
+ value: function handleFileSelect(evt) {
88
+ var _this = this;
89
+
90
+ var f = evt.target.files[0];
91
+
92
+ if (f) {
93
+ var r = new window.FileReader();
94
+
95
+ r.onload = function (e) {
96
+ var contents = e.target.result;
97
+
98
+ try {
99
+ var json = JSON.parse(contents);
100
+
101
+ if (json["native"] && json.common) {
102
+ if (json.common.name !== _this.props.common.name) {
103
+ _this.props.onError(_i18n["default"].t('ra_otherConfig', json.common.name));
104
+ } else {
105
+ _this.props.onLoad(json["native"]);
106
+ }
107
+ } else {
108
+ _this.props.onError(_i18n["default"].t('ra_invalidConfig'));
109
+ }
110
+ } catch (e) {
111
+ _this.props.onError(e.toString());
112
+ }
113
+ };
114
+
115
+ r.readAsText(f);
116
+ } else {
117
+ alert('Failed to open JSON File');
118
+ }
119
+ }
120
+ }, {
121
+ key: "download",
122
+ value: function download() {
123
+ var result = {
124
+ _id: 'system.adapter.' + this.props.common.name + '.' + this.props.instance,
125
+ common: JSON.parse(JSON.stringify(this.props.common)),
126
+ "native": this.props["native"]
127
+ }; // remove unimportant information
128
+
129
+ if (result.common.news) {
130
+ delete result.common.news;
131
+ }
132
+
133
+ if (result.common.titleLang) {
134
+ delete result.common.titleLang;
135
+ }
136
+
137
+ if (result.common.desc) {
138
+ delete result.common.desc;
139
+ } //window.open('data:application/iobroker; content-disposition=attachment; filename=' + result._id + '.json,' + JSON.stringify(result, null, 2));
140
+
141
+
142
+ Logo.generateFile(result._id + '.json', result);
143
+ }
144
+ }, {
145
+ key: "upload",
146
+ value: function upload() {
147
+ var _this2 = this;
148
+
149
+ var input = window.document.createElement('input');
150
+ input.setAttribute('type', 'file');
151
+ input.setAttribute('id', 'files');
152
+ input.setAttribute('opacity', 0);
153
+ input.addEventListener('change', function (e) {
154
+ return _this2.handleFileSelect(e, function () {});
155
+ }, false);
156
+ input.click();
157
+ }
158
+ }, {
159
+ key: "render",
160
+ value: function render() {
161
+ var _this3 = this;
162
+
163
+ return /*#__PURE__*/_react["default"].createElement("div", {
164
+ className: this.props.className,
165
+ style: this.props.style
166
+ }, this.props.common.icon ? /*#__PURE__*/_react["default"].createElement("img", {
167
+ src: this.props.common.icon,
168
+ className: this.props.classes.logo,
169
+ alt: "logo"
170
+ }) : null, this.props.common.readme ? /*#__PURE__*/_react["default"].createElement(_Fab["default"], {
171
+ size: "small",
172
+ color: "primary",
173
+ "aria-label": "Help",
174
+ className: this.props.classes.buttons,
175
+ onClick: function onClick() {
176
+ var win = window.open(_this3.props.common.readme, '_blank');
177
+ win.focus();
178
+ }
179
+ }, /*#__PURE__*/_react["default"].createElement(_Help["default"], null)) : null, /*#__PURE__*/_react["default"].createElement(_Fab["default"], {
180
+ size: "small",
181
+ color: "primary",
182
+ "aria-label": "Load config",
183
+ className: this.props.classes.buttons,
184
+ title: _i18n["default"].t('ra_Load configuration from file'),
185
+ onClick: function onClick() {
186
+ return _this3.upload();
187
+ }
188
+ }, /*#__PURE__*/_react["default"].createElement(_VerticalAlignTop["default"], null)), /*#__PURE__*/_react["default"].createElement(_Fab["default"], {
189
+ size: "small",
190
+ color: "primary",
191
+ "aria-label": "Save config",
192
+ className: this.props.classes.buttons,
193
+ title: _i18n["default"].t('ra_Save configuration to file'),
194
+ onClick: function onClick() {
195
+ return _this3.download();
196
+ }
197
+ }, /*#__PURE__*/_react["default"].createElement(_VerticalAlignBottom["default"], null)));
198
+ }
199
+ }], [{
200
+ key: "generateFile",
201
+ value: function generateFile(filename, obj) {
202
+ var el = window.document.createElement('a');
203
+ el.setAttribute('href', 'data:application/json;charset=utf-8,' + encodeURIComponent(JSON.stringify(obj, null, 2)));
204
+ el.setAttribute('download', filename);
205
+ el.style.display = 'none';
206
+ window.document.body.appendChild(el);
207
+ el.click();
208
+ window.document.body.removeChild(el);
209
+ }
210
+ }]);
211
+
212
+ return Logo;
213
+ }(_react["default"].Component);
214
+
215
+ Logo.propTypes = {
216
+ common: _propTypes["default"].object.isRequired,
217
+ className: _propTypes["default"].string,
218
+ style: _propTypes["default"].object,
219
+ "native": _propTypes["default"].object.isRequired,
220
+ instance: _propTypes["default"].number.isRequired,
221
+ onError: _propTypes["default"].func,
222
+ onLoad: _propTypes["default"].func
223
+ };
224
+ /** @type {typeof Logo} */
225
+
226
+ var _export = (0, _withStyles["default"])(styles)(Logo);
227
+
228
+ var _default = _export;
229
+ exports["default"] = _default;
230
+ //# sourceMappingURL=Logo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["Logo.js"],"names":["styles","theme","buttons","marginRight","marginTop","logo","padding","width","Logo","evt","f","target","files","r","window","FileReader","onload","e","contents","result","json","JSON","parse","common","name","props","onError","I18n","t","onLoad","toString","readAsText","alert","_id","instance","stringify","news","titleLang","desc","generateFile","input","document","createElement","setAttribute","addEventListener","handleFileSelect","click","className","style","icon","classes","readme","win","open","focus","upload","download","filename","obj","el","encodeURIComponent","display","body","appendChild","removeChild","React","Component","propTypes","PropTypes","object","isRequired","string","number","func","_export"],"mappings":"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","sourcesContent":["// please do not delete React, as without it other projects could not be compiled: ReferenceError: React is not defined\nimport React from 'react';\nimport withStyles from '@mui/styles/withStyles';\nimport Fab from '@mui/material/Fab';\nimport PropTypes from 'prop-types';\n\nimport I18n from '../i18n';\n\nimport IconHelp from '@mui/icons-material/Help'\nimport IconUpload from '@mui/icons-material/VerticalAlignTop'\nimport IconDownload from '@mui/icons-material/VerticalAlignBottom'\n\nconst styles = theme => ({\n buttons: {\n marginRight: 5,\n marginTop: 5,\n float: 'right'\n },\n logo: {\n padding: 8,\n width: 64\n }\n});\n\n/**\n * @typedef {object} LogoProps\n * @property {any} common Adapter common configuration from io-package.json\n * @property {any} native Adapter native data from io-package.json\n * @property {number} instance Adapter instance number.\n * @property {(contents: any) => void} [onLoad]\n * @property {(error: string) => void} [onError]\n * @property {{ buttons: string, logo: string }} classes The styling class names.\n *\n * @extends {React.Component<LogoProps>}\n */\nclass Logo extends React.Component {\n\n static generateFile(filename, obj) {\n const el = window.document.createElement('a');\n el.setAttribute('href', 'data:application/json;charset=utf-8,' + encodeURIComponent(JSON.stringify(obj, null, 2)));\n el.setAttribute('download', filename);\n\n el.style.display = 'none';\n window.document.body.appendChild(el);\n\n el.click();\n\n window.document.body.removeChild(el);\n }\n\n handleFileSelect(evt) {\n const f = evt.target.files[0];\n if (f) {\n const r = new window.FileReader();\n r.onload = e => {\n const contents = e.target.result;\n try {\n const json = JSON.parse(contents);\n if (json.native && json.common) {\n if (json.common.name !== this.props.common.name) {\n this.props.onError(I18n.t('ra_otherConfig', json.common.name));\n } else {\n this.props.onLoad(json.native);\n }\n } else {\n this.props.onError(I18n.t('ra_invalidConfig'));\n }\n } catch (e) {\n this.props.onError(e.toString());\n }\n };\n r.readAsText(f);\n } else {\n alert('Failed to open JSON File');\n }\n }\n\n download() {\n const result = {\n _id: 'system.adapter.' + this.props.common.name + '.' + this.props.instance,\n common: JSON.parse(JSON.stringify(this.props.common)),\n native: this.props.native\n };\n // remove unimportant information\n if (result.common.news) {\n delete result.common.news;\n }\n if (result.common.titleLang) {\n delete result.common.titleLang;\n }\n if (result.common.desc) {\n delete result.common.desc;\n }\n\n //window.open('data:application/iobroker; content-disposition=attachment; filename=' + result._id + '.json,' + JSON.stringify(result, null, 2));\n Logo.generateFile(result._id + '.json', result);\n }\n\n upload() {\n const input = window.document.createElement('input');\n input.setAttribute('type', 'file');\n input.setAttribute('id', 'files');\n input.setAttribute('opacity', 0);\n input.addEventListener('change', e => this.handleFileSelect(e, () => {}), false);\n (input.click)();\n }\n\n render() {\n return <div className={this.props.className} style={this.props.style}>\n {this.props.common.icon ? <img src={this.props.common.icon} className={this.props.classes.logo} alt=\"logo\"/> : null}\n {this.props.common.readme ?\n <Fab size=\"small\" color=\"primary\" aria-label=\"Help\" className={this.props.classes.buttons} onClick={() => {\n const win = window.open(this.props.common.readme, '_blank');\n win.focus();\n }}><IconHelp /></Fab> : null}\n <Fab size=\"small\" color=\"primary\" aria-label=\"Load config\" className={this.props.classes.buttons} title={I18n.t('ra_Load configuration from file')} onClick={() => this.upload()}><IconUpload /></Fab>\n <Fab size=\"small\" color=\"primary\" aria-label=\"Save config\" className={this.props.classes.buttons} title={I18n.t('ra_Save configuration to file')} onClick={() => this.download()}><IconDownload /></Fab>\n </div>;\n }\n}\n\nLogo.propTypes = {\n common: PropTypes.object.isRequired,\n className: PropTypes.string,\n style: PropTypes.object,\n native: PropTypes.object.isRequired,\n instance: PropTypes.number.isRequired,\n onError: PropTypes.func,\n onLoad: PropTypes.func,\n};\n\n/** @type {typeof Logo} */\nconst _export = withStyles(styles)(Logo);\nexport default _export;"],"file":"Logo.js"}
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _copyToClipboard = _interopRequireDefault(require("./copy-to-clipboard"));
11
+
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
13
+
14
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
15
+
16
+ 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); } }
17
+
18
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
19
+
20
+ var MDUtils = /*#__PURE__*/function () {
21
+ function MDUtils() {
22
+ _classCallCheck(this, MDUtils);
23
+ }
24
+
25
+ _createClass(MDUtils, null, [{
26
+ key: "text2link",
27
+ value: function text2link(text) {
28
+ var m = text.match(/\d+\.\)\s/);
29
+
30
+ if (m) {
31
+ text = text.replace(m[0], m[0].replace(/\s/, '&nbsp;'));
32
+ }
33
+
34
+ return text.replace(/[^a-zA-Zа-яА-Я0-9]/g, '').trim().replace(/\s/g, '').toLowerCase();
35
+ }
36
+ }, {
37
+ key: "openLink",
38
+ value: function openLink(url, target) {
39
+ if (target === 'this') {
40
+ window.location = url;
41
+ } else {
42
+ window.open(url, target || '_blank');
43
+ }
44
+ }
45
+ }, {
46
+ key: "getTitle",
47
+ value: function getTitle(text) {
48
+ var _MDUtils$extractHeade = MDUtils.extractHeader(text),
49
+ body = _MDUtils$extractHeade.body,
50
+ header = _MDUtils$extractHeade.header;
51
+
52
+ if (!header.title) {
53
+ // remove {docsify-bla}
54
+ body = body.replace(/{[^}]*}/g, '');
55
+ body = body.trim();
56
+ var lines = body.replace(/\r/g, '').split('\n');
57
+
58
+ for (var i = 0; i < lines.length; i++) {
59
+ if (lines[i].startsWith('# ')) {
60
+ return lines[i].substring(2).trim();
61
+ }
62
+ }
63
+
64
+ return '';
65
+ } else {
66
+ return header.title;
67
+ }
68
+ }
69
+ }, {
70
+ key: "extractHeader",
71
+ value: function extractHeader(text) {
72
+ var attrs = {};
73
+
74
+ if (text.substring(0, 3) === '---') {
75
+ var pos = text.substring(3).indexOf('\n---');
76
+
77
+ if (pos !== -1) {
78
+ var _header = text.substring(3, pos + 3);
79
+
80
+ var lines = _header.replace(/\r/g, '').split('\n');
81
+
82
+ lines.forEach(function (line) {
83
+ if (!line.trim()) {
84
+ return;
85
+ }
86
+
87
+ var pos = line.indexOf(':');
88
+
89
+ if (pos !== -1) {
90
+ var attr = line.substring(0, pos).trim();
91
+ attrs[attr] = line.substring(pos + 1).trim();
92
+ attrs[attr] = attrs[attr].replace(/^['"]|['"]$/g, '');
93
+
94
+ if (attrs[attr] === 'true') {
95
+ attrs[attr] = true;
96
+ } else if (attrs[attr] === 'false') {
97
+ attrs[attr] = false;
98
+ } else if (parseFloat(attrs[attr]).toString() === attrs[attr]) {
99
+ attrs[attr] = parseFloat(attrs[attr]);
100
+ }
101
+ } else {
102
+ attrs[line.trim()] = true;
103
+ }
104
+ });
105
+ text = text.substring(pos + 7);
106
+ }
107
+ }
108
+
109
+ return {
110
+ header: attrs,
111
+ body: text
112
+ };
113
+ }
114
+ }, {
115
+ key: "removeDocsify",
116
+ value: function removeDocsify(text) {
117
+ var m = text.match(/{docsify-[^}]*}/g);
118
+
119
+ if (m) {
120
+ m.forEach(function (doc) {
121
+ return text = text.replace(doc, '');
122
+ });
123
+ }
124
+
125
+ return text;
126
+ }
127
+ }, {
128
+ key: "onCopy",
129
+ value: function onCopy(e, text) {
130
+ (0, _copyToClipboard["default"])(text);
131
+ e && e.stopPropagation();
132
+ e && e.preventDefault();
133
+ }
134
+ }]);
135
+
136
+ return MDUtils;
137
+ }();
138
+
139
+ var _default = MDUtils;
140
+ exports["default"] = _default;
141
+ //# sourceMappingURL=MDUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["MDUtils.js"],"names":["MDUtils","text","m","match","replace","trim","toLowerCase","url","target","window","location","open","extractHeader","body","header","title","lines","split","i","length","startsWith","substring","attrs","pos","indexOf","_header","forEach","line","attr","parseFloat","toString","doc","e","stopPropagation","preventDefault"],"mappings":"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","sourcesContent":["/**\n * Copyright 2018-2021 bluefox <dogafox@gmail.com>\n *\n * MIT License\n *\n **/\nimport React from 'react';\nimport copy from './copy-to-clipboard';\n\nclass MDUtils {\n static text2link(text) {\n const m = text.match(/\\d+\\.\\)\\s/);\n if (m) {\n text = text.replace(m[0], m[0].replace(/\\s/, '&nbsp;'));\n }\n\n return text.replace(/[^a-zA-Zа-яА-Я0-9]/g, '').trim().replace(/\\s/g, '').toLowerCase();\n }\n\n static openLink(url, target) {\n if (target === 'this') {\n window.location = url;\n } else {\n window.open(url, target || '_blank');\n }\n }\n\n static getTitle(text) {\n let {body, header} = MDUtils.extractHeader(text);\n if (!header.title) {\n // remove {docsify-bla}\n body = body.replace(/{[^}]*}/g, '');\n body = body.trim();\n const lines = body.replace(/\\r/g, '').split('\\n');\n for (let i = 0; i < lines.length; i++) {\n if (lines[i].startsWith('# ')) {\n return lines[i].substring(2).trim();\n }\n }\n return '';\n } else {\n return header.title;\n }\n }\n\n static extractHeader(text) {\n const attrs = {};\n if (text.substring(0, 3) === '---') {\n const pos = text.substring(3).indexOf('\\n---');\n if (pos !== -1) {\n const _header = text.substring(3, pos + 3);\n const lines = _header.replace(/\\r/g, '').split('\\n');\n lines.forEach(line => {\n if (!line.trim()) {\n return;\n }\n const pos = line.indexOf(':');\n if (pos !== -1) {\n const attr = line.substring(0, pos).trim();\n attrs[attr] = line.substring(pos + 1).trim();\n attrs[attr] = attrs[attr].replace(/^['\"]|['\"]$/g, '');\n if (attrs[attr] === 'true') {\n attrs[attr] = true;\n } else if (attrs[attr] === 'false') {\n attrs[attr] = false;\n } else if (parseFloat(attrs[attr]).toString() === attrs[attr]) {\n attrs[attr] = parseFloat(attrs[attr]);\n }\n } else {\n attrs[line.trim()] = true;\n }\n });\n text = text.substring(pos + 7);\n }\n }\n return {header: attrs, body: text};\n }\n\n static removeDocsify(text) {\n const m = text.match(/{docsify-[^}]*}/g);\n if (m) {\n m.forEach(doc => text = text.replace(doc, ''));\n }\n return text;\n }\n\n static onCopy(e, text) {\n copy(text);\n e && e.stopPropagation();\n e && e.preventDefault();\n }\n}\n\nexport default MDUtils;"],"file":"MDUtils.js"}