@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,152 @@
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
+ 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
+ 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); }
21
+
22
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
23
+
24
+ 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); }; }
25
+
26
+ 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); }
27
+
28
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
29
+
30
+ 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; } }
31
+
32
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
33
+
34
+ /**
35
+ * @template P Type of the properties object.
36
+ * @template S Type of the internal state object.
37
+ * @extends {React.Component<P, S>}
38
+ */
39
+ var Router = /*#__PURE__*/function (_React$Component) {
40
+ _inherits(Router, _React$Component);
41
+
42
+ var _super = _createSuper(Router);
43
+
44
+ /**
45
+ * @param {P} props The React properties of this component.
46
+ */
47
+ function Router(props) {
48
+ var _this;
49
+
50
+ _classCallCheck(this, Router);
51
+
52
+ _this = _super.call(this, props);
53
+ _this.onHashChangedBound = _this.onHashChanged.bind(_assertThisInitialized(_this));
54
+ return _this;
55
+ }
56
+
57
+ _createClass(Router, [{
58
+ key: "componentDidMount",
59
+ value: function componentDidMount() {
60
+ window.addEventListener('hashchange', this.onHashChangedBound);
61
+ }
62
+ }, {
63
+ key: "componentWillUnmount",
64
+ value: function componentWillUnmount() {
65
+ window.removeEventListener('hashchange', this.onHashChangedBound);
66
+ }
67
+ }, {
68
+ key: "onHashChanged",
69
+ value: function onHashChanged() {// override this function
70
+ }
71
+ /**
72
+ * Gets the location object.
73
+ * @returns {{ tab: string; dialog: string; id: string; arg: string; }}
74
+ */
75
+
76
+ }], [{
77
+ key: "getLocation",
78
+ value: function getLocation() {
79
+ var hash = window.location.hash;
80
+ hash = hash.replace(/^#/, '');
81
+ var parts = hash.split('/').map(function (item) {
82
+ try {
83
+ return item ? decodeURIComponent(item) : '';
84
+ } catch (e) {
85
+ console.error('Router: Cannot decode ' + item);
86
+ return item || '';
87
+ }
88
+ }); // #tabName/dialogName/deviceId
89
+
90
+ return {
91
+ tab: parts[0] || '',
92
+ dialog: parts[1] || '',
93
+ id: parts[2] || '',
94
+ arg: parts[3] || ''
95
+ };
96
+ }
97
+ /**
98
+ * Navigate to a new location. Any parameters that are not set will be taken from the current location.
99
+ * @param {string | undefined} [tab]
100
+ * @param {string | undefined} [dialog]
101
+ * @param {string | undefined} [id]
102
+ * @param {string | undefined} [arg]
103
+ */
104
+
105
+ }, {
106
+ key: "doNavigate",
107
+ value: function doNavigate(tab, dialog, id, arg) {
108
+ var hash = '';
109
+ var location = Router.getLocation();
110
+
111
+ if (arg !== undefined && !id) {
112
+ id = location.id;
113
+ }
114
+
115
+ if (id && !dialog) {
116
+ dialog = location.dialog;
117
+ }
118
+
119
+ if (dialog && !tab) {
120
+ tab = location.tab;
121
+ } else if (tab === null) {
122
+ tab = location.tab;
123
+ }
124
+
125
+ if (tab) {
126
+ hash = '#' + tab;
127
+
128
+ if (dialog) {
129
+ hash += '/' + dialog;
130
+
131
+ if (id) {
132
+ hash += '/' + id;
133
+
134
+ if (arg !== undefined) {
135
+ hash += '/' + arg;
136
+ }
137
+ }
138
+ }
139
+ }
140
+
141
+ if (window.location.hash !== hash) {
142
+ window.location.hash = hash;
143
+ }
144
+ }
145
+ }]);
146
+
147
+ return Router;
148
+ }(_react["default"].Component);
149
+
150
+ var _default = Router;
151
+ exports["default"] = _default;
152
+ //# sourceMappingURL=Router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["Router.js"],"names":["Router","props","onHashChangedBound","onHashChanged","bind","window","addEventListener","removeEventListener","hash","location","replace","parts","split","map","item","decodeURIComponent","e","console","error","tab","dialog","id","arg","getLocation","undefined","React","Component"],"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';\n\n/**\n * @template P Type of the properties object.\n * @template S Type of the internal state object.\n * @extends {React.Component<P, S>}\n */\nclass Router extends React.Component {\n /**\n * @param {P} props The React properties of this component.\n */\n constructor(props) {\n super(props);\n this.onHashChangedBound = this.onHashChanged.bind(this);\n }\n\n componentDidMount() {\n window.addEventListener('hashchange', this.onHashChangedBound);\n }\n\n componentWillUnmount() {\n window.removeEventListener('hashchange', this.onHashChangedBound);\n }\n\n onHashChanged() {\n // override this function\n }\n\n /**\n * Gets the location object.\n * @returns {{ tab: string; dialog: string; id: string; arg: string; }}\n */\n static getLocation() {\n let hash = window.location.hash;\n hash = hash.replace(/^#/, '');\n const parts = hash.split('/').map(item => {\n try {\n return item ? decodeURIComponent(item) : ''\n } catch (e) {\n console.error('Router: Cannot decode ' + item);\n return item || '';\n }\n });\n // #tabName/dialogName/deviceId\n return {\n tab: parts[0] || '',\n dialog: parts[1] || '',\n id: parts[2] || '',\n arg: parts[3] || ''\n };\n }\n\n /**\n * Navigate to a new location. Any parameters that are not set will be taken from the current location.\n * @param {string | undefined} [tab]\n * @param {string | undefined} [dialog]\n * @param {string | undefined} [id]\n * @param {string | undefined} [arg]\n */\n static doNavigate(tab, dialog, id, arg) {\n let hash = '';\n const location = Router.getLocation();\n if (arg !== undefined && !id) {\n id = location.id;\n }\n if (id && !dialog) {\n dialog = location.dialog;\n }\n if (dialog && !tab) {\n tab = location.tab;\n } else\n if (tab === null) {\n tab = location.tab;\n }\n\n if (tab) {\n hash = '#' + tab;\n if (dialog) {\n hash += '/' + dialog;\n\n if (id) {\n hash += '/' + id;\n if (arg !== undefined) {\n hash += '/' + arg;\n }\n }\n }\n }\n if (window.location.hash !== hash) {\n window.location.hash = hash;\n }\n }\n}\n\nexport default Router;"],"file":"Router.js"}
@@ -0,0 +1,177 @@
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 _Toolbar = _interopRequireDefault(require("@mui/material/Toolbar"));
19
+
20
+ var _i18n = _interopRequireDefault(require("../i18n"));
21
+
22
+ var _Save = _interopRequireDefault(require("@mui/icons-material/Save"));
23
+
24
+ var _Close = _interopRequireDefault(require("@mui/icons-material/Close"));
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
+ buttonIcon: {
51
+ marginRight: 8
52
+ }
53
+ };
54
+ };
55
+ /**
56
+ * @typedef {object} LogoProps
57
+ * @property {boolean} noTextOnButtons Are the buttons without text
58
+ * @property {any} theme Theme object (from this.state.theme)
59
+ * @property {boolean} isIFrame bottom position 0 or 38 for iFrame
60
+ * @property {function} onSave on Save handler
61
+ * @property {function} onClose on Close handler
62
+ *
63
+ * @extends {React.Component<LogoProps>}
64
+ */
65
+
66
+
67
+ var SaveCloseButtons = /*#__PURE__*/function (_React$Component) {
68
+ _inherits(SaveCloseButtons, _React$Component);
69
+
70
+ var _super = _createSuper(SaveCloseButtons);
71
+
72
+ function SaveCloseButtons(props) {
73
+ var _this;
74
+
75
+ _classCallCheck(this, SaveCloseButtons);
76
+
77
+ _this = _super.call(this, props);
78
+
79
+ try {
80
+ _this.isIFrame = !props.newReact && window.self !== window.top;
81
+ } catch (e) {
82
+ _this.isIFrame = !props.newReact;
83
+ }
84
+
85
+ return _this;
86
+ }
87
+
88
+ _createClass(SaveCloseButtons, [{
89
+ key: "render",
90
+ value: function render() {
91
+ var _this2 = this;
92
+
93
+ var noTextOnButtons = this.props.noTextOnButtons;
94
+ var buttonStyle = {
95
+ borderRadius: this.props.theme.saveToolbar.button.borderRadius || 3,
96
+ height: this.props.theme.saveToolbar.button.height || 32
97
+ };
98
+ var style = {
99
+ bottom: this.isIFrame ? 38 : 0,
100
+ left: this.props.paddingLeft || 0,
101
+ right: 0,
102
+ position: 'absolute',
103
+ background: this.props.theme.saveToolbar.background
104
+ };
105
+
106
+ if (this.props.dense) {
107
+ style.minHeight = 48;
108
+ }
109
+
110
+ if (this.props.error) {
111
+ buttonStyle.border = '1px solid red';
112
+ }
113
+
114
+ return /*#__PURE__*/_react["default"].createElement(_Toolbar["default"], {
115
+ position: "absolute",
116
+ style: style
117
+ }, /*#__PURE__*/_react["default"].createElement(_Fab["default"], {
118
+ variant: "extended",
119
+ "aria-label": "Save",
120
+ disabled: !this.props.changed || this.props.error,
121
+ onClick: function onClick() {
122
+ return _this2.props.onSave(false);
123
+ },
124
+ style: buttonStyle
125
+ }, /*#__PURE__*/_react["default"].createElement(_Save["default"], {
126
+ className: !noTextOnButtons ? this.props.classes.buttonIcon : ''
127
+ }), !noTextOnButtons && _i18n["default"].t('ra_Save')), /*#__PURE__*/_react["default"].createElement(_Fab["default"], {
128
+ variant: "extended",
129
+ "aria-label": "Save and close",
130
+ disabled: !this.props.changed || this.props.error,
131
+ onClick: function onClick() {
132
+ return _this2.props.onSave(true);
133
+ },
134
+ style: Object.assign({}, buttonStyle, {
135
+ marginLeft: 10
136
+ })
137
+ }, /*#__PURE__*/_react["default"].createElement(_Save["default"], {
138
+ className: !noTextOnButtons ? this.props.classes.buttonIcon : ''
139
+ }), !noTextOnButtons ? _i18n["default"].t('ra_Save and close') : '+', noTextOnButtons && /*#__PURE__*/_react["default"].createElement(_Close["default"], null)), /*#__PURE__*/_react["default"].createElement("div", {
140
+ style: {
141
+ flexGrow: 1
142
+ }
143
+ }), /*#__PURE__*/_react["default"].createElement(_Fab["default"], {
144
+ variant: "extended",
145
+ "aria-label": "Close",
146
+ onClick: function onClick() {
147
+ return _this2.props.onClose();
148
+ },
149
+ style: buttonStyle
150
+ }, /*#__PURE__*/_react["default"].createElement(_Close["default"], {
151
+ className: !noTextOnButtons ? this.props.classes.buttonIcon : ''
152
+ }), !noTextOnButtons && _i18n["default"].t('ra_Close')));
153
+ }
154
+ }]);
155
+
156
+ return SaveCloseButtons;
157
+ }(_react["default"].Component);
158
+
159
+ SaveCloseButtons.propTypes = {
160
+ dense: _propTypes["default"].bool,
161
+ paddingLeft: _propTypes["default"].number,
162
+ noTextOnButtons: _propTypes["default"].bool,
163
+ theme: _propTypes["default"].object,
164
+ isIFrame: _propTypes["default"].bool,
165
+ changed: _propTypes["default"].bool.isRequired,
166
+ error: _propTypes["default"].bool,
167
+ onSave: _propTypes["default"].func.isRequired,
168
+ onClose: _propTypes["default"].func.isRequired,
169
+ newReact: _propTypes["default"].bool
170
+ };
171
+ /** @type {typeof SaveCloseButtons} */
172
+
173
+ var _export = (0, _withStyles["default"])(styles)(SaveCloseButtons);
174
+
175
+ var _default = _export;
176
+ exports["default"] = _default;
177
+ //# sourceMappingURL=SaveCloseButtons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["SaveCloseButtons.js"],"names":["styles","theme","buttonIcon","marginRight","SaveCloseButtons","props","isIFrame","newReact","window","self","top","e","noTextOnButtons","buttonStyle","borderRadius","saveToolbar","button","height","style","bottom","left","paddingLeft","right","position","background","dense","minHeight","error","border","changed","onSave","classes","I18n","t","Object","assign","marginLeft","flexGrow","onClose","React","Component","propTypes","PropTypes","bool","number","object","isRequired","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 Toolbar from '@mui/material/Toolbar';\n\nimport I18n from '../i18n';\n\nimport IconSave from '@mui/icons-material/Save';\nimport IconClose from '@mui/icons-material/Close';\n\nconst styles = theme => ({\n buttonIcon: {\n marginRight: 8\n },\n});\n\n/**\n * @typedef {object} LogoProps\n * @property {boolean} noTextOnButtons Are the buttons without text\n * @property {any} theme Theme object (from this.state.theme)\n * @property {boolean} isIFrame bottom position 0 or 38 for iFrame\n * @property {function} onSave on Save handler\n * @property {function} onClose on Close handler\n *\n * @extends {React.Component<LogoProps>}\n */\nclass SaveCloseButtons extends React.Component {\n constructor(props) {\n super(props);\n try {\n this.isIFrame = !props.newReact && window.self !== window.top;\n } catch (e) {\n this.isIFrame = !props.newReact;\n }\n }\n\n render() {\n const noTextOnButtons = this.props.noTextOnButtons;\n const buttonStyle = {\n borderRadius: this.props.theme.saveToolbar.button.borderRadius || 3,\n height: this.props.theme.saveToolbar.button.height || 32,\n };\n\n const style = {\n bottom: this.isIFrame ? 38 : 0,\n left: this.props.paddingLeft || 0,\n right: 0,\n position: 'absolute',\n background: this.props.theme.saveToolbar.background\n };\n if (this.props.dense) {\n style.minHeight = 48;\n }\n\n if (this.props.error) {\n buttonStyle.border = '1px solid red';\n }\n\n return <Toolbar position=\"absolute\" style={style}>\n <Fab\n variant=\"extended\"\n aria-label=\"Save\"\n disabled={!this.props.changed || this.props.error}\n onClick={() => this.props.onSave(false)}\n style={buttonStyle}\n >\n <IconSave className={!noTextOnButtons ? this.props.classes.buttonIcon : ''}/>{!noTextOnButtons && I18n.t('ra_Save')}\n </Fab>\n <Fab\n variant=\"extended\"\n aria-label=\"Save and close\"\n disabled={!this.props.changed || this.props.error}\n onClick={() => this.props.onSave(true)}\n style={Object.assign({}, buttonStyle, {marginLeft: 10})}>\n <IconSave className={!noTextOnButtons ? this.props.classes.buttonIcon : ''}/>\n {!noTextOnButtons ? I18n.t('ra_Save and close') : '+'}\n {noTextOnButtons && <IconClose/>}\n </Fab>\n <div style={{flexGrow: 1}}/>\n <Fab variant=\"extended\" aria-label=\"Close\" onClick={() => this.props.onClose()} style={buttonStyle}>\n <IconClose className={!noTextOnButtons ? this.props.classes.buttonIcon : ''}/>{!noTextOnButtons && I18n.t('ra_Close')}\n </Fab>\n </Toolbar>;\n }\n}\n\nSaveCloseButtons.propTypes = {\n dense: PropTypes.bool,\n paddingLeft: PropTypes.number,\n noTextOnButtons: PropTypes.bool,\n theme: PropTypes.object,\n isIFrame: PropTypes.bool,\n changed: PropTypes.bool.isRequired,\n error: PropTypes.bool,\n onSave: PropTypes.func.isRequired,\n onClose: PropTypes.func.isRequired,\n newReact: PropTypes.bool,\n};\n\n/** @type {typeof SaveCloseButtons} */\nconst _export = withStyles(styles)(SaveCloseButtons);\nexport default _export;"],"file":"SaveCloseButtons.js"}