qwc2 2025.10.9 → 2025.10.14

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 (241) hide show
  1. package/actions/display.js +30 -1
  2. package/actions/editing.js +22 -1
  3. package/actions/layerinfo.js +13 -1
  4. package/actions/layers.js +213 -3
  5. package/actions/localConfig.js +58 -1
  6. package/actions/locale.js +21 -1
  7. package/actions/locate.js +26 -1
  8. package/actions/logging.js +10 -1
  9. package/actions/map.js +105 -2
  10. package/actions/measurement.js +12 -1
  11. package/actions/processNotifications.js +37 -1
  12. package/actions/redlining.js +18 -1
  13. package/actions/redliningPick.js +12 -1
  14. package/actions/search.js +12 -1
  15. package/actions/serviceinfo.js +12 -1
  16. package/actions/task.js +55 -3
  17. package/actions/theme.js +339 -19
  18. package/actions/windows.js +164 -5
  19. package/components/AppMenu.js +435 -3
  20. package/components/AttributeForm.js +928 -32
  21. package/components/AttributeTableWidget.js +1105 -13
  22. package/components/AutoEditForm.js +189 -3
  23. package/components/CoordinateDisplayer.js +78 -2
  24. package/components/EditComboField.js +190 -6
  25. package/components/EditUploadField.js +315 -3
  26. package/components/ExportSelection.js +203 -2
  27. package/components/FullscreenSwitcher.js +90 -3
  28. package/components/Icon.js +81 -2
  29. package/components/IdentifyViewer.js +1161 -6
  30. package/components/ImportLayer.js +718 -20
  31. package/components/LayerInfoWindow.js +145 -2
  32. package/components/LinkFeatureForm.js +246 -5
  33. package/components/MapButton.js +88 -2
  34. package/components/MapSelection.js +287 -8
  35. package/components/MessageBar.js +68 -2
  36. package/components/NumericInputWindow.js +359 -2
  37. package/components/PickFeature.js +266 -2
  38. package/components/PluginsContainer.js +227 -8
  39. package/components/PrintSelection.js +620 -49
  40. package/components/ProcessNotifications.js +104 -2
  41. package/components/QtDesignerForm.js +1137 -18
  42. package/components/ResizeableWindow.js +591 -8
  43. package/components/SearchBox.js +1307 -20
  44. package/components/ServiceInfoWindow.js +107 -2
  45. package/components/SideBar.js +204 -4
  46. package/components/StandardApp.js +381 -20
  47. package/components/Swipeable.js +15 -1
  48. package/components/TaskBar.js +85 -2
  49. package/components/ThemeLayersListWindow.js +216 -4
  50. package/components/ThemeList.js +381 -7
  51. package/components/Toolbar.js +106 -2
  52. package/components/WindowManager.js +178 -2
  53. package/components/map/OlLayer.js +257 -6
  54. package/components/map/OlMap.js +405 -5
  55. package/components/map/layers/BingLayer.js +31 -2
  56. package/components/map/layers/GoogleLayer.js +222 -19
  57. package/components/map/layers/GraticuleLayer.js +21 -1
  58. package/components/map/layers/ImageLayer.js +15 -1
  59. package/components/map/layers/MVTLayer.js +52 -2
  60. package/components/map/layers/OSMLayer.js +24 -2
  61. package/components/map/layers/OverlayLayer.js +55 -3
  62. package/components/map/layers/VectorLayer.js +173 -8
  63. package/components/map/layers/WFSLayer.js +220 -6
  64. package/components/map/layers/WMSLayer.js +180 -6
  65. package/components/map/layers/WMTSLayer.js +67 -3
  66. package/components/map/layers/XYZLayer.js +24 -2
  67. package/components/map/layers/index.js +28 -1
  68. package/components/map3d/EditDataset3D.js +190 -3
  69. package/components/map3d/HeightProfile3D.js +402 -3
  70. package/components/map3d/ImportObjects3D.js +162 -2
  71. package/components/map3d/Map3D.js +1304 -38
  72. package/components/map3d/MapControls3D.js +392 -7
  73. package/components/map3d/SearchField3D.js +183 -11
  74. package/components/map3d/View3DSwitcher.js +98 -2
  75. package/components/map3d/drawtool/CreateTool3D.js +174 -4
  76. package/components/map3d/drawtool/EditTool3D.js +590 -6
  77. package/components/map3d/drawtool/NumericInput3D.js +336 -4
  78. package/components/map3d/layers/GeoTIFFLayer3D.js +15 -1
  79. package/components/map3d/layers/VectorLayer3D.js +53 -2
  80. package/components/map3d/layers/WFSLayer3D.js +109 -3
  81. package/components/map3d/layers/WMSLayer3D.js +70 -2
  82. package/components/map3d/layers/WMTSLayer3D.js +27 -3
  83. package/components/map3d/layers/index.js +14 -1
  84. package/components/map3d/utils/FirstPersonControls3D.js +423 -16
  85. package/components/map3d/utils/MiscUtils3D.js +221 -13
  86. package/components/map3d/utils/OrbitControls3D.js +176 -5
  87. package/components/map3d/utils/Tiles3DStyle.js +238 -9
  88. package/components/share/ShareLink.js +54 -2
  89. package/components/share/ShareQRCode.js +62 -2
  90. package/components/share/ShareSocials.js +125 -3
  91. package/components/timeline/FixedTimeline.js +236 -5
  92. package/components/timeline/InfiniteTimeline.js +347 -8
  93. package/components/timeline/TimelineFeaturesSlider.js +439 -5
  94. package/components/widgets/AccordeonWidget.js +96 -2
  95. package/components/widgets/ButtonBar.js +124 -2
  96. package/components/widgets/ColorButton.js +201 -3
  97. package/components/widgets/ComboBox.js +166 -2
  98. package/components/widgets/CopyButton.js +110 -2
  99. package/components/widgets/DateTimeInput.js +100 -3
  100. package/components/widgets/EditableSelect.js +230 -3
  101. package/components/widgets/FileSelector.js +128 -4
  102. package/components/widgets/Input.js +124 -2
  103. package/components/widgets/InputContainer.js +96 -2
  104. package/components/widgets/LayerCatalogWidget.js +219 -3
  105. package/components/widgets/MenuButton.js +157 -1
  106. package/components/widgets/ModalDialog.js +64 -2
  107. package/components/widgets/NavBar.js +119 -2
  108. package/components/widgets/NumberInput.js +226 -4
  109. package/components/widgets/PopupMenu.js +72 -1
  110. package/components/widgets/Primitives.js +6 -1
  111. package/components/widgets/ReCaptchaWidget.js +55 -1
  112. package/components/widgets/SearchWidget.js +255 -2
  113. package/components/widgets/Spinner.js +44 -2
  114. package/components/widgets/SuggestionInput.js +77 -2
  115. package/components/widgets/TextInput.js +308 -2
  116. package/components/widgets/ToggleSwitch.js +85 -2
  117. package/components/widgets/VectorLayerPicker.js +85 -3
  118. package/libs/openlayers.js +225 -5
  119. package/package.json +1 -1
  120. package/plugins/API.js +358 -15
  121. package/plugins/AttributeTable.js +109 -3
  122. package/plugins/Authentication.js +130 -5
  123. package/plugins/BackgroundSwitcher.js +218 -4
  124. package/plugins/Bookmark.js +289 -3
  125. package/plugins/BottomBar.js +298 -4
  126. package/plugins/CookiePopup.js +67 -3
  127. package/plugins/Cyclomedia.js +442 -5
  128. package/plugins/Editing.js +497 -9
  129. package/plugins/FeatureForm.js +366 -4
  130. package/plugins/FeatureSearch.js +458 -3
  131. package/plugins/GeometryDigitizer.js +664 -7
  132. package/plugins/HeightProfile.js +763 -15
  133. package/plugins/Help.js +102 -3
  134. package/plugins/HomeButton.js +80 -3
  135. package/plugins/Identify.js +543 -5
  136. package/plugins/LayerCatalog.js +215 -4
  137. package/plugins/LayerTree.js +1194 -6
  138. package/plugins/LocateButton.js +94 -3
  139. package/plugins/Map.js +320 -16
  140. package/plugins/MapCompare.js +94 -3
  141. package/plugins/MapCopyright.js +127 -5
  142. package/plugins/MapExport.js +613 -20
  143. package/plugins/MapFilter.js +868 -12
  144. package/plugins/MapInfoTooltip.js +277 -3
  145. package/plugins/MapLegend.js +253 -4
  146. package/plugins/MapTip.js +290 -4
  147. package/plugins/Measure.js +220 -4
  148. package/plugins/NewsPopup.js +137 -3
  149. package/plugins/OverviewMap.js +167 -7
  150. package/plugins/Panoramax.js +340 -2
  151. package/plugins/Portal.js +199 -4
  152. package/plugins/Print.js +1231 -15
  153. package/plugins/Redlining.js +750 -6
  154. package/plugins/Reports.js +332 -3
  155. package/plugins/Routing.js +1278 -15
  156. package/plugins/ScratchDrawing.js +173 -5
  157. package/plugins/Settings.js +241 -4
  158. package/plugins/Share.js +198 -3
  159. package/plugins/StartupMarker.js +84 -4
  160. package/plugins/TaskButton.js +88 -3
  161. package/plugins/ThemeSwitcher.js +164 -4
  162. package/plugins/TimeManager.js +971 -10
  163. package/plugins/TopBar.js +300 -7
  164. package/plugins/TourGuide.js +213 -2
  165. package/plugins/ValueTool.js +419 -4
  166. package/plugins/View3D.js +519 -14
  167. package/plugins/ZoomButtons.js +165 -3
  168. package/plugins/map/EditingSupport.js +199 -7
  169. package/plugins/map/LocateSupport.js +260 -4
  170. package/plugins/map/MeasurementSupport.js +216 -8
  171. package/plugins/map/RedliningPickSupport.js +201 -7
  172. package/plugins/map/RedliningSupport.js +726 -17
  173. package/plugins/map/SnapInteraction.js +101 -1
  174. package/plugins/map/SnapSupport.js +210 -2
  175. package/plugins/map/SnappingSupport.js +356 -17
  176. package/plugins/map3d/BackgroundSwitcher3D.js +44 -3
  177. package/plugins/map3d/BottomBar3D.js +118 -3
  178. package/plugins/map3d/Compare3D.js +422 -8
  179. package/plugins/map3d/Draw3D.js +353 -6
  180. package/plugins/map3d/ExportObjects3D.js +393 -18
  181. package/plugins/map3d/HideObjects3D.js +313 -12
  182. package/plugins/map3d/Identify3D.js +283 -12
  183. package/plugins/map3d/LayerTree3D.js +323 -3
  184. package/plugins/map3d/MapCopyright3D.js +128 -5
  185. package/plugins/map3d/MapExport3D.js +590 -10
  186. package/plugins/map3d/MapLight3D.js +553 -6
  187. package/plugins/map3d/Measure3D.js +571 -20
  188. package/plugins/map3d/OverviewMap3D.js +169 -3
  189. package/plugins/map3d/Settings3D.js +73 -3
  190. package/plugins/map3d/TopBar3D.js +207 -9
  191. package/plugins/redlining/RedliningBufferSupport.js +206 -3
  192. package/reducers/display.js +34 -2
  193. package/reducers/editing.js +68 -3
  194. package/reducers/index.js +9 -1
  195. package/reducers/layerinfo.js +26 -2
  196. package/reducers/layers.js +456 -9
  197. package/reducers/localConfig.js +122 -2
  198. package/reducers/locale.js +38 -2
  199. package/reducers/locate.js +40 -2
  200. package/reducers/map.js +176 -5
  201. package/reducers/measurement.js +42 -2
  202. package/reducers/processNotifications.js +49 -2
  203. package/reducers/redlining.js +50 -2
  204. package/reducers/redliningPick.js +27 -2
  205. package/reducers/search.js +20 -1
  206. package/reducers/serviceinfo.js +25 -2
  207. package/reducers/task.js +45 -2
  208. package/reducers/theme.js +51 -2
  209. package/reducers/windows.js +203 -2
  210. package/scripts/dist.sh +1 -1
  211. package/scripts/gen-plugin-docs.js +152 -2
  212. package/scripts/makeIconkit.js +85 -6
  213. package/scripts/themesConfig.js +742 -40
  214. package/scripts/updateTranslations.js +251 -10
  215. package/selectors/searchproviders.js +44 -2
  216. package/stores/StandardStore.js +42 -2
  217. package/utils/ConfigUtils.js +84 -3
  218. package/utils/CoordinatesUtils.js +234 -23
  219. package/utils/DxfUtils.js +237 -11
  220. package/utils/EditingInterface.js +421 -87
  221. package/utils/EditingUtils.js +357 -13
  222. package/utils/ElevationInterface.js +83 -22
  223. package/utils/FeatureStyles.js +429 -5
  224. package/utils/IdentifyUtils.js +443 -7
  225. package/utils/ImageEditor.js +79 -9
  226. package/utils/LayerUtils.js +1516 -50
  227. package/utils/LocaleUtils.js +117 -7
  228. package/utils/MapUtils.js +241 -59
  229. package/utils/MeasureUtils.js +323 -2
  230. package/utils/MiscUtils.js +189 -11
  231. package/utils/PermaLinkUtils.js +429 -6
  232. package/utils/PluginStore.js +27 -1
  233. package/utils/ResourceRegistry.js +15 -1
  234. package/utils/RoutingInterface.js +307 -7
  235. package/utils/SearchProviders.js +722 -19
  236. package/utils/ServiceLayerUtils.js +669 -14
  237. package/utils/Signal.js +32 -2
  238. package/utils/ThemeUtils.js +341 -7
  239. package/utils/VectorLayerUtils.js +589 -15
  240. package/utils/expr_grammar/grammar.js +2239 -2
  241. package/utils/expr_grammar/test.js +65 -3
@@ -1,26 +1,387 @@
1
- function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}function _createForOfIteratorHelper(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=_unsupportedIterableToArray(r))||e&&r&&"number"==typeof r.length){t&&(r=t);var _n=0,F=function F(){};return{s:F,n:function n(){return _n>=r.length?{done:!0}:{done:!1,value:r[_n++]}},e:function e(r){throw r},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,u=!1;return{s:function s(){t=t.call(r)},n:function n(){var r=t.next();return a=r.done,r},e:function e(r){u=!0,o=r},f:function f(){try{a||null==t["return"]||t["return"]()}finally{if(u)throw o}}}}function _toConsumableArray(r){return _arrayWithoutHoles(r)||_iterableToArray(r)||_unsupportedIterableToArray(r)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _iterableToArray(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)}function _arrayWithoutHoles(r){if(Array.isArray(r))return _arrayLikeToArray(r)}function _slicedToArray(r,e){return _arrayWithHoles(r)||_iterableToArrayLimit(r,e)||_unsupportedIterableToArray(r,e)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0}}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}function _iterableToArrayLimit(r,l){var t=null==r?null:"undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(null!=t){var e,n,i,u,a=[],f=!0,o=!1;try{if(i=(t=t.call(r)).next,0===l){if(Object(t)!==t)return;f=!1}else for(;!(f=(e=i.call(t)).done)&&(a.push(e.value),a.length!==l);f=!0);}catch(r){o=!0,n=r}finally{try{if(!f&&null!=t["return"]&&(u=t["return"](),Object(u)!==u))return}finally{if(o)throw n}}return a}}function _arrayWithHoles(r){if(Array.isArray(r))return r}function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){_defineProperty(e,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})}return e}function _classCallCheck(a,n){if(!(a instanceof n))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,r){for(var t=0;t<r.length;t++){var o=r[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,_toPropertyKey(o.key),o)}}function _createClass(e,r,t){return r&&_defineProperties(e.prototype,r),t&&_defineProperties(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function _callSuper(t,o,e){return o=_getPrototypeOf(o),_possibleConstructorReturn(t,_isNativeReflectConstruct()?Reflect.construct(o,e||[],_getPrototypeOf(t).constructor):o.apply(t,e))}function _possibleConstructorReturn(t,e){if(e&&("object"==_typeof(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized(t)}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _isNativeReflectConstruct(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(_isNativeReflectConstruct=function _isNativeReflectConstruct(){return!!t})()}function _getPrototypeOf(t){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},_getPrototypeOf(t)}function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&_setPrototypeOf(t,e)}function _setPrototypeOf(t,e){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},_setPrototypeOf(t,e)}function _defineProperty(e,r,t){return(r=_toPropertyKey(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function _toPropertyKey(t){var i=_toPrimitive(t,"string");return"symbol"==_typeof(i)?i:i+""}function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}/**
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
3
+ function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
4
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
5
+ function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
6
+ function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
7
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
8
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
9
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
10
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
11
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
12
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
13
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
15
+ function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
16
+ function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
17
+ function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
18
+ function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
19
+ function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); }
20
+ function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
21
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
22
+ function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
23
+ function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); }
24
+ function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
25
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
26
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
27
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
28
+ /**
2
29
  * Copyright 2016 GeoSolutions Sas
3
30
  * Copyright 2016-2024 Sourcepole AG
4
31
  * All rights reserved.
5
32
  *
6
33
  * This source code is licensed under the BSD-style license found in the
7
34
  * LICENSE file in the root directory of this source tree.
8
- */import React from"react";import{Provider,connect}from"react-redux";import axios from"axios";import deepmerge from"deepmerge";import{register as olProj4Register}from"ol/proj/proj4";import Proj4js from"proj4";import PropTypes from"prop-types";import{localConfigLoaded,setStartupParameters,setColorScheme}from"../actions/localConfig";import{changeLocale}from"../actions/locale";import{setCurrentTask}from"../actions/task";import{themesLoaded,setCurrentTheme}from"../actions/theme";import{NotificationType,showNotification,setBottombarHeight,setTopbarHeight}from"../actions/windows";import ReducerIndex from"../reducers/index";import{createStore}from"../stores/StandardStore";import ConfigUtils from"../utils/ConfigUtils";import CoordinatesUtils from"../utils/CoordinatesUtils";import LocaleUtils from"../utils/LocaleUtils";import MapUtils from"../utils/MapUtils";import MiscUtils from"../utils/MiscUtils";import{UrlParams,resolvePermaLink}from"../utils/PermaLinkUtils";import PluginStore from"../utils/PluginStore";import ThemeUtils from"../utils/ThemeUtils";import PluginsContainer from"./PluginsContainer";import"./style/App.css";import"./style/DefaultColorScheme.css";var CSRF_TOKEN=MiscUtils.getCsrfToken();if(CSRF_TOKEN){axios.interceptors.request.use(function(config){if(["POST","PUT","PATCH","DELETE"].includes(config.method.toUpperCase())){config.headers["X-CSRF-TOKEN"]=CSRF_TOKEN}return config},function(error){return Promise.reject(error)})}var AppContainerComponent=/*#__PURE__*/function(_React$Component){function AppContainerComponent(props){var _this;_classCallCheck(this,AppContainerComponent);_this=_callSuper(this,AppContainerComponent,[props]);_defineProperty(_this,"loadThemes",function(){_this.themesLoaded=true;var _this$props$startupCo=_this.props.startupConfig,state=_this$props$startupCo.state,permalinkInvalid=_this$props$startupCo.permalinkInvalid;var params=_objectSpread({},_this.props.startupConfig.params);// Clone as changed below
9
- // Warn if permalink key is invalid
10
- if(permalinkInvalid){_this.props.showNotification("missingtheme",LocaleUtils.tr("app.missingpermalink"),NotificationType.WARN,true)}// Load themes.json
11
- axios.get("themes.json",{params:{lang:_this.props.locale}}).then(function(response){var _this$props$appConfig,_this$props$appConfig2,_theme;var themes=ThemeUtils.applyTranslations(response.data.themes||{});(_this$props$appConfig=(_this$props$appConfig2=_this.props.appConfig).themePreprocessor)===null||_this$props$appConfig===void 0||_this$props$appConfig.call(_this$props$appConfig2,themes);_this.props.themesLoaded(themes);var theme=ThemeUtils.getThemeById(themes,params.t);if((!theme||theme.restricted)&&!ConfigUtils.getConfigProp("dontLoadDefaultTheme")&&(params.t||!ConfigUtils.havePlugin("Portal"))){if(params.t){_this.props.showNotification("missingtheme",LocaleUtils.tr("app.missingtheme",params.t),NotificationType.WARN,true);params.l=undefined}var userDefaultTheme=Object.fromEntries(_this.props.defaultUrlParams.split("&").map(function(x){return x.split("=")})).t;var defaultTheme=themes.defaultTheme;if(userDefaultTheme){var _ThemeUtils$getThemeB;theme=(_ThemeUtils$getThemeB=ThemeUtils.getThemeById(themes,userDefaultTheme))!==null&&_ThemeUtils$getThemeB!==void 0?_ThemeUtils$getThemeB:ThemeUtils.getThemeById(themes,defaultTheme)}else{theme=ThemeUtils.getThemeById(themes,defaultTheme)}}if(theme){var _params$bl;// Compute initial view
12
- var initialView=params.v;var initialExtent=null;if(params.c&&params.s!==undefined){var coords=params.c.split(/[;,]/g).map(function(x){return parseFloat(x)||0});var scales=theme.scales||themes.defaultScales;var zoom=MapUtils.computeZoom(scales,params.s);if(coords.length===2){var p=CoordinatesUtils.reproject(coords,params.crs||theme.mapCrs,theme.bbox.crs);var bounds=theme.bbox.bounds;// Only accept c if it is within the theme bounds
13
- if(bounds[0]<=p[0]&&p[0]<=bounds[2]&&bounds[1]<=p[1]&&p[1]<=bounds[3]){initialExtent={center:coords,zoom:zoom,crs:params.crs||theme.mapCrs}}else{initialExtent={center:[0.5*(bounds[0]+bounds[2]),0.5*(bounds[1]+bounds[3])],zoom:zoom,crs:theme.bbox.crs}}}}else if(params.e){var _bounds=params.e.split(/[;,]/g).map(function(x){return parseFloat(x)||0});if(CoordinatesUtils.isValidExtent(_bounds)){initialExtent={bounds:_bounds,crs:params.crs||theme.mapCrs}}}var layerParams=params.l!==undefined?params.l.split(",").filter(function(entry){return entry}):null;if(layerParams&&ConfigUtils.getConfigProp("urlReverseLayerOrder")){layerParams.reverse()}_this.props.setCurrentTheme(theme,themes,false,initialExtent,layerParams,(_params$bl=params.bl)!==null&&_params$bl!==void 0?_params$bl:null,state.layers,_this.props.appConfig.themeLayerRestorer,_this.props.appConfig.externalLayerRestorer,initialView)}else if(!ConfigUtils.havePlugin("Portal")){_this.props.showNotification("missingdefaulttheme",LocaleUtils.tr("app.missingdefaulttheme",params.t),NotificationType.WARN,true)}var task=ConfigUtils.getConfigProp("startupTask");if(task&&!((_theme=theme)!==null&&_theme!==void 0&&(_theme=_theme.config)!==null&&_theme!==void 0&&_theme.startupTask)){var mapClickAction=ConfigUtils.getPluginConfig(task.key).mapClickAction;_this.props.setCurrentTask(task.key,task.mode,mapClickAction)}})});_this.themesLoaded=false;// Set initial bottom/topbar height to zero in case not topbar/bottombar is enabled
14
- // The components will set the proper height if and when initialized
15
- props.setTopbarHeight(0);props.setBottombarHeight(0);return _this}_inherits(AppContainerComponent,_React$Component);return _createClass(AppContainerComponent,[{key:"componentDidMount",value:function componentDidMount(){this.componentDidUpdate({})}},{key:"componentDidUpdate",value:function componentDidUpdate(prevProps){// The map component needs to have finished loading before theme initialization can proceed
16
- if(this.props.haveMapSize&&!this.themesLoaded){this.loadThemes()}}},{key:"render",value:function render(){// Filter 2D plugins
17
- var device=ConfigUtils.isMobile()?"mobile":"desktop";var pluginsConf=this.props.localConfig.plugins[device];return/*#__PURE__*/React.createElement(PluginsContainer,{pluginsConfig:pluginsConf})}}])}(React.Component);_defineProperty(AppContainerComponent,"propTypes",{appConfig:PropTypes.object,customPlugins:PropTypes.array,defaultUrlParams:PropTypes.string,haveMapSize:PropTypes.bool,localConfig:PropTypes.object,locale:PropTypes.string,setBottombarHeight:PropTypes.func,setCurrentTask:PropTypes.func,setCurrentTheme:PropTypes.func,setTopbarHeight:PropTypes.func,showNotification:PropTypes.func,startupConfig:PropTypes.object,themesLoaded:PropTypes.func});var AppContainer=connect(function(state){var _state$localConfig$us;return{locale:state.locale.current,haveMapSize:state.map.size!==null,defaultUrlParams:((_state$localConfig$us=state.localConfig.user_infos)===null||_state$localConfig$us===void 0?void 0:_state$localConfig$us.default_url_params)||"",localConfig:state.localConfig}},{themesLoaded:themesLoaded,setCurrentTask:setCurrentTask,setCurrentTheme:setCurrentTheme,showNotification:showNotification,setTopbarHeight:setTopbarHeight,setBottombarHeight:setBottombarHeight})(AppContainerComponent);var StandardApp=/*#__PURE__*/function(_React$Component2){function StandardApp(props){var _this2;_classCallCheck(this,StandardApp);_this2=_callSuper(this,StandardApp,[props]);_defineProperty(_this2,"state",{startupConfig:null,haveConfig:false,haveLocale:false});_defineProperty(_this2,"computeVh",function(){// https://css-tricks.com/the-trick-to-viewport-units-on-mobile/
18
- document.documentElement.style.setProperty("--vh",window.innerHeight*0.01+"px")});_defineProperty(_this2,"init",function(){// Save initial params and clear URL
19
- var initialParams=UrlParams.getParams();UrlParams.clear();// Set builtin plugins
20
- PluginStore.setBuiltinPlugins(_this2.props.appConfig.pluginsDef.plugins);// Load config.json
21
- var configParams=Object.entries(initialParams).reduce(function(res,_ref){var _ref2=_slicedToArray(_ref,2),key=_ref2[0],value=_ref2[1];if(key.startsWith("config:")){res[key.slice(7)]=value}return res},{});ConfigUtils.loadConfiguration(configParams).then(function(config){var _window$QWC2PluginCon,_window$QWC2PluginCon2,_window$QWC2PluginCon3,_ref5,_this2$props$appConfi,_this2$props$appConfi2,_this2$props$appConfi3;// Merge common config into mobile/desktop config, merge config from appConfig
22
- var renameTaskButtons=function renameTaskButtons(res,entry){var _entry$cfg$task,_entry$cfg;var key=entry.name+(entry.name==="TaskButton"?"#"+((_entry$cfg$task=(_entry$cfg=entry.cfg)===null||_entry$cfg===void 0?void 0:_entry$cfg.task)!==null&&_entry$cfg$task!==void 0?_entry$cfg$task:""):"");return _objectSpread(_objectSpread({},res),{},_defineProperty({},key,entry))};var commonConfig=[].concat(_toConsumableArray(config.plugins.common||[]),_toConsumableArray(((_window$QWC2PluginCon=window.QWC2PluginConfig)===null||_window$QWC2PluginCon===void 0?void 0:_window$QWC2PluginCon.common)||[])).reduce(renameTaskButtons,{});var desktopConfig=[].concat(_toConsumableArray(config.plugins.desktop||[]),_toConsumableArray(((_window$QWC2PluginCon2=window.QWC2PluginConfig)===null||_window$QWC2PluginCon2===void 0?void 0:_window$QWC2PluginCon2.desktop)||[])).reduce(renameTaskButtons,{});var mobileConfig=[].concat(_toConsumableArray(config.plugins.mobile||[]),_toConsumableArray(((_window$QWC2PluginCon3=window.QWC2PluginConfig)===null||_window$QWC2PluginCon3===void 0?void 0:_window$QWC2PluginCon3.mobile)||[])).reduce(renameTaskButtons,{});var completePluginConfig=function completePluginConfig(pluginConfig){return Object.entries(pluginConfig).map(function(_ref3){var _plugin$WrappedCompon,_component$availableI;var _ref4=_slicedToArray(_ref3,2),key=_ref4[0],entry=_ref4[1];var plugin=_this2.props.appConfig.pluginsDef.plugins[entry.name+"Plugin"];var component=(_plugin$WrappedCompon=plugin===null||plugin===void 0?void 0:plugin.WrappedComponent)!==null&&_plugin$WrappedCompon!==void 0?_plugin$WrappedCompon:plugin;var availableIn3D=(_component$availableI=component===null||component===void 0?void 0:component.availableIn3D)!==null&&_component$availableI!==void 0?_component$availableI:false;return _objectSpread(_objectSpread({},entry),{},{key:key,availableIn3D:availableIn3D,cfg:_objectSpread(_objectSpread({},entry.cfg),_this2.props.appConfig.pluginsDef.cfg[entry.name+"Plugin"])})})};config.plugins.desktop=completePluginConfig(deepmerge(commonConfig,desktopConfig));config.plugins.mobile=completePluginConfig(deepmerge(commonConfig,mobileConfig));delete config.plugins.common;// Add projections from config
23
- var _iterator=_createForOfIteratorHelper(config.projections||[]),_step;try{for(_iterator.s();!(_step=_iterator.n()).done;){var proj=_step.value;if(Proj4js.defs(proj.code)===undefined){Proj4js.defs(proj.code,proj.proj)}CoordinatesUtils.setCrsLabels(_defineProperty({},proj.code,proj.label))}}catch(err){_iterator.e(err)}finally{_iterator.f()}olProj4Register(Proj4js);StandardApp.store.dispatch(localConfigLoaded(config));_this2.setState({haveConfig:true});// Load locale
24
- var lang=(_ref5=(_this2$props$appConfi=(_this2$props$appConfi2=(_this2$props$appConfi3=_this2.props.appConfig).getDefaultLocale)===null||_this2$props$appConfi2===void 0?void 0:_this2$props$appConfi2.call(_this2$props$appConfi3))!==null&&_this2$props$appConfi!==void 0?_this2$props$appConfi:initialParams.lang)!==null&&_ref5!==void 0?_ref5:navigator.language;LocaleUtils.loadLocale(lang,_this2.props.appConfig.defaultLocaleData).then(function(localeData){StandardApp.store.dispatch(changeLocale(localeData,_this2.props.appConfig.defaultLocaleData));_this2.setState({haveLocale:true})});// Set color scheme
25
- var storedColorScheme=ConfigUtils.havePlugin("Settings")?localStorage.getItem("qwc2-color-scheme"):null;var colorScheme=initialParams.style||storedColorScheme||ConfigUtils.getConfigProp("defaultColorScheme");StandardApp.store.dispatch(setColorScheme(colorScheme));// Resolve permalink and restore settings
26
- resolvePermaLink(initialParams,function(params,state,success){StandardApp.store.dispatch(setStartupParameters(params,state));_this2.setState({startupConfig:{params:params,state:state,permalinkInvalid:!success}})})})});var initialState=_this2.props.appConfig.initialState||{};StandardApp.store=createStore(ReducerIndex.reducers,initialState,_this2.props.appConfig.actionLogger);_this2.init();_this2.touchY=null;return _this2}_inherits(StandardApp,_React$Component2);return _createClass(StandardApp,[{key:"componentDidMount",value:function componentDidMount(){window.addEventListener("resize",this.computeVh);this.computeVh()}},{key:"componentWillUnmount",value:function componentWillUnmount(){window.removeEventListener("resize",this.computeVh)}},{key:"render",value:function render(){if(!this.state.startupConfig||!this.state.haveConfig||!this.state.haveLocale){return null}return/*#__PURE__*/React.createElement(Provider,{store:StandardApp.store},/*#__PURE__*/React.createElement(AppContainer,{appConfig:this.props.appConfig,startupConfig:this.state.startupConfig}))}}])}(React.Component);_defineProperty(StandardApp,"store",null);_defineProperty(StandardApp,"propTypes",{appConfig:PropTypes.object});export{StandardApp as default};
35
+ */
36
+ import React from 'react';
37
+ import { Provider, connect } from 'react-redux';
38
+ import axios from 'axios';
39
+ import deepmerge from 'deepmerge';
40
+ import { register as olProj4Register } from 'ol/proj/proj4';
41
+ import Proj4js from 'proj4';
42
+ import PropTypes from 'prop-types';
43
+ import { localConfigLoaded, setStartupParameters, setColorScheme } from '../actions/localConfig';
44
+ import { changeLocale } from '../actions/locale';
45
+ import { setCurrentTask } from '../actions/task';
46
+ import { themesLoaded, setCurrentTheme } from '../actions/theme';
47
+ import { NotificationType, showNotification, setBottombarHeight, setTopbarHeight } from '../actions/windows';
48
+ import ReducerIndex from '../reducers/index';
49
+ import { createStore } from '../stores/StandardStore';
50
+ import ConfigUtils from '../utils/ConfigUtils';
51
+ import CoordinatesUtils from '../utils/CoordinatesUtils';
52
+ import LocaleUtils from '../utils/LocaleUtils';
53
+ import MapUtils from '../utils/MapUtils';
54
+ import MiscUtils from '../utils/MiscUtils';
55
+ import { UrlParams, resolvePermaLink } from '../utils/PermaLinkUtils';
56
+ import PluginStore from '../utils/PluginStore';
57
+ import ThemeUtils from '../utils/ThemeUtils';
58
+ import PluginsContainer from './PluginsContainer';
59
+ import './style/App.css';
60
+ import './style/DefaultColorScheme.css';
61
+ var CSRF_TOKEN = MiscUtils.getCsrfToken();
62
+ if (CSRF_TOKEN) {
63
+ axios.interceptors.request.use(function (config) {
64
+ if (["POST", "PUT", "PATCH", "DELETE"].includes(config.method.toUpperCase())) {
65
+ config.headers["X-CSRF-TOKEN"] = CSRF_TOKEN;
66
+ }
67
+ return config;
68
+ }, function (error) {
69
+ return Promise.reject(error);
70
+ });
71
+ }
72
+ var AppContainerComponent = /*#__PURE__*/function (_React$Component) {
73
+ function AppContainerComponent(props) {
74
+ var _this;
75
+ _classCallCheck(this, AppContainerComponent);
76
+ _this = _callSuper(this, AppContainerComponent, [props]);
77
+ _defineProperty(_this, "loadThemes", function () {
78
+ _this.themesLoaded = true;
79
+ var _this$props$startupCo = _this.props.startupConfig,
80
+ state = _this$props$startupCo.state,
81
+ permalinkInvalid = _this$props$startupCo.permalinkInvalid;
82
+ var params = _objectSpread({}, _this.props.startupConfig.params); // Clone as changed below
83
+
84
+ // Warn if permalink key is invalid
85
+ if (permalinkInvalid) {
86
+ _this.props.showNotification("missingtheme", LocaleUtils.tr("app.missingpermalink"), NotificationType.WARN, true);
87
+ }
88
+
89
+ // Load themes.json
90
+ axios.get("themes.json", {
91
+ params: {
92
+ lang: _this.props.locale
93
+ }
94
+ }).then(function (response) {
95
+ var _this$props$appConfig, _this$props$appConfig2, _theme;
96
+ var themes = ThemeUtils.applyTranslations(response.data.themes || {});
97
+ (_this$props$appConfig = (_this$props$appConfig2 = _this.props.appConfig).themePreprocessor) === null || _this$props$appConfig === void 0 || _this$props$appConfig.call(_this$props$appConfig2, themes);
98
+ _this.props.themesLoaded(themes);
99
+ var theme = ThemeUtils.getThemeById(themes, params.t);
100
+ if ((!theme || theme.restricted) && !ConfigUtils.getConfigProp("dontLoadDefaultTheme") && (params.t || !ConfigUtils.havePlugin("Portal"))) {
101
+ if (params.t) {
102
+ _this.props.showNotification("missingtheme", LocaleUtils.tr("app.missingtheme", params.t), NotificationType.WARN, true);
103
+ params.l = undefined;
104
+ }
105
+ var userDefaultTheme = Object.fromEntries(_this.props.defaultUrlParams.split("&").map(function (x) {
106
+ return x.split("=");
107
+ })).t;
108
+ var defaultTheme = themes.defaultTheme;
109
+ if (userDefaultTheme) {
110
+ var _ThemeUtils$getThemeB;
111
+ theme = (_ThemeUtils$getThemeB = ThemeUtils.getThemeById(themes, userDefaultTheme)) !== null && _ThemeUtils$getThemeB !== void 0 ? _ThemeUtils$getThemeB : ThemeUtils.getThemeById(themes, defaultTheme);
112
+ } else {
113
+ theme = ThemeUtils.getThemeById(themes, defaultTheme);
114
+ }
115
+ }
116
+ if (theme) {
117
+ var _params$bl;
118
+ // Compute initial view
119
+ var initialView = params.v;
120
+ var initialExtent = null;
121
+ if (params.c && params.s !== undefined) {
122
+ var coords = params.c.split(/[;,]/g).map(function (x) {
123
+ return parseFloat(x) || 0;
124
+ });
125
+ var scales = theme.scales || themes.defaultScales;
126
+ var zoom = MapUtils.computeZoom(scales, params.s);
127
+ if (coords.length === 2) {
128
+ var p = CoordinatesUtils.reproject(coords, params.crs || theme.mapCrs, theme.bbox.crs);
129
+ var bounds = theme.bbox.bounds;
130
+ // Only accept c if it is within the theme bounds
131
+ if (bounds[0] <= p[0] && p[0] <= bounds[2] && bounds[1] <= p[1] && p[1] <= bounds[3]) {
132
+ initialExtent = {
133
+ center: coords,
134
+ zoom: zoom,
135
+ crs: params.crs || theme.mapCrs
136
+ };
137
+ } else {
138
+ initialExtent = {
139
+ center: [0.5 * (bounds[0] + bounds[2]), 0.5 * (bounds[1] + bounds[3])],
140
+ zoom: zoom,
141
+ crs: theme.bbox.crs
142
+ };
143
+ }
144
+ }
145
+ } else if (params.e) {
146
+ var _bounds = params.e.split(/[;,]/g).map(function (x) {
147
+ return parseFloat(x) || 0;
148
+ });
149
+ if (CoordinatesUtils.isValidExtent(_bounds)) {
150
+ initialExtent = {
151
+ bounds: _bounds,
152
+ crs: params.crs || theme.mapCrs
153
+ };
154
+ }
155
+ }
156
+ var layerParams = params.l !== undefined ? params.l.split(",").filter(function (entry) {
157
+ return entry;
158
+ }) : null;
159
+ if (layerParams && ConfigUtils.getConfigProp("urlReverseLayerOrder")) {
160
+ layerParams.reverse();
161
+ }
162
+ _this.props.setCurrentTheme(theme, themes, false, initialExtent, layerParams, (_params$bl = params.bl) !== null && _params$bl !== void 0 ? _params$bl : null, state.layers, _this.props.appConfig.themeLayerRestorer, _this.props.appConfig.externalLayerRestorer, initialView);
163
+ } else if (!ConfigUtils.havePlugin("Portal")) {
164
+ _this.props.showNotification("missingdefaulttheme", LocaleUtils.tr("app.missingdefaulttheme", params.t), NotificationType.WARN, true);
165
+ }
166
+ var task = ConfigUtils.getConfigProp("startupTask");
167
+ if (task && !((_theme = theme) !== null && _theme !== void 0 && (_theme = _theme.config) !== null && _theme !== void 0 && _theme.startupTask)) {
168
+ var mapClickAction = ConfigUtils.getPluginConfig(task.key).mapClickAction;
169
+ _this.props.setCurrentTask(task.key, task.mode, mapClickAction);
170
+ }
171
+ });
172
+ });
173
+ _this.themesLoaded = false;
174
+
175
+ // Set initial bottom/topbar height to zero in case not topbar/bottombar is enabled
176
+ // The components will set the proper height if and when initialized
177
+ props.setTopbarHeight(0);
178
+ props.setBottombarHeight(0);
179
+ return _this;
180
+ }
181
+ _inherits(AppContainerComponent, _React$Component);
182
+ return _createClass(AppContainerComponent, [{
183
+ key: "componentDidMount",
184
+ value: function componentDidMount() {
185
+ this.componentDidUpdate({});
186
+ }
187
+ }, {
188
+ key: "componentDidUpdate",
189
+ value: function componentDidUpdate(prevProps) {
190
+ // The map component needs to have finished loading before theme initialization can proceed
191
+ if (this.props.haveMapSize && !this.themesLoaded) {
192
+ this.loadThemes();
193
+ }
194
+ }
195
+ }, {
196
+ key: "render",
197
+ value: function render() {
198
+ // Filter 2D plugins
199
+ var device = ConfigUtils.isMobile() ? 'mobile' : 'desktop';
200
+ var pluginsConf = this.props.localConfig.plugins[device];
201
+ return /*#__PURE__*/React.createElement(PluginsContainer, {
202
+ pluginsConfig: pluginsConf
203
+ });
204
+ }
205
+ }]);
206
+ }(React.Component);
207
+ _defineProperty(AppContainerComponent, "propTypes", {
208
+ appConfig: PropTypes.object,
209
+ customPlugins: PropTypes.array,
210
+ defaultUrlParams: PropTypes.string,
211
+ haveMapSize: PropTypes.bool,
212
+ localConfig: PropTypes.object,
213
+ locale: PropTypes.string,
214
+ setBottombarHeight: PropTypes.func,
215
+ setCurrentTask: PropTypes.func,
216
+ setCurrentTheme: PropTypes.func,
217
+ setTopbarHeight: PropTypes.func,
218
+ showNotification: PropTypes.func,
219
+ startupConfig: PropTypes.object,
220
+ themesLoaded: PropTypes.func
221
+ });
222
+ var AppContainer = connect(function (state) {
223
+ var _state$localConfig$us;
224
+ return {
225
+ locale: state.locale.current,
226
+ haveMapSize: state.map.size !== null,
227
+ defaultUrlParams: ((_state$localConfig$us = state.localConfig.user_infos) === null || _state$localConfig$us === void 0 ? void 0 : _state$localConfig$us.default_url_params) || "",
228
+ localConfig: state.localConfig
229
+ };
230
+ }, {
231
+ themesLoaded: themesLoaded,
232
+ setCurrentTask: setCurrentTask,
233
+ setCurrentTheme: setCurrentTheme,
234
+ showNotification: showNotification,
235
+ setTopbarHeight: setTopbarHeight,
236
+ setBottombarHeight: setBottombarHeight
237
+ })(AppContainerComponent);
238
+ var StandardApp = /*#__PURE__*/function (_React$Component2) {
239
+ function StandardApp(props) {
240
+ var _this2;
241
+ _classCallCheck(this, StandardApp);
242
+ _this2 = _callSuper(this, StandardApp, [props]);
243
+ _defineProperty(_this2, "state", {
244
+ startupConfig: null,
245
+ haveConfig: false,
246
+ haveLocale: false
247
+ });
248
+ _defineProperty(_this2, "computeVh", function () {
249
+ // https://css-tricks.com/the-trick-to-viewport-units-on-mobile/
250
+ document.documentElement.style.setProperty('--vh', window.innerHeight * 0.01 + 'px');
251
+ });
252
+ _defineProperty(_this2, "init", function () {
253
+ // Save initial params and clear URL
254
+ var initialParams = UrlParams.getParams();
255
+ UrlParams.clear();
256
+
257
+ // Set builtin plugins
258
+ PluginStore.setBuiltinPlugins(_this2.props.appConfig.pluginsDef.plugins);
259
+
260
+ // Load config.json
261
+ var configParams = Object.entries(initialParams).reduce(function (res, _ref) {
262
+ var _ref2 = _slicedToArray(_ref, 2),
263
+ key = _ref2[0],
264
+ value = _ref2[1];
265
+ if (key.startsWith("config:")) {
266
+ res[key.slice(7)] = value;
267
+ }
268
+ return res;
269
+ }, {});
270
+ ConfigUtils.loadConfiguration(configParams).then(function (config) {
271
+ var _window$QWC2PluginCon, _window$QWC2PluginCon2, _window$QWC2PluginCon3, _ref5, _this2$props$appConfi, _this2$props$appConfi2, _this2$props$appConfi3;
272
+ // Merge common config into mobile/desktop config, merge config from appConfig
273
+ var renameTaskButtons = function renameTaskButtons(res, entry) {
274
+ var _entry$cfg$task, _entry$cfg;
275
+ var key = entry.name + (entry.name === "TaskButton" ? "#" + ((_entry$cfg$task = (_entry$cfg = entry.cfg) === null || _entry$cfg === void 0 ? void 0 : _entry$cfg.task) !== null && _entry$cfg$task !== void 0 ? _entry$cfg$task : "") : "");
276
+ return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, entry));
277
+ };
278
+ var commonConfig = [].concat(_toConsumableArray(config.plugins.common || []), _toConsumableArray(((_window$QWC2PluginCon = window.QWC2PluginConfig) === null || _window$QWC2PluginCon === void 0 ? void 0 : _window$QWC2PluginCon.common) || [])).reduce(renameTaskButtons, {});
279
+ var desktopConfig = [].concat(_toConsumableArray(config.plugins.desktop || []), _toConsumableArray(((_window$QWC2PluginCon2 = window.QWC2PluginConfig) === null || _window$QWC2PluginCon2 === void 0 ? void 0 : _window$QWC2PluginCon2.desktop) || [])).reduce(renameTaskButtons, {});
280
+ var mobileConfig = [].concat(_toConsumableArray(config.plugins.mobile || []), _toConsumableArray(((_window$QWC2PluginCon3 = window.QWC2PluginConfig) === null || _window$QWC2PluginCon3 === void 0 ? void 0 : _window$QWC2PluginCon3.mobile) || [])).reduce(renameTaskButtons, {});
281
+ var completePluginConfig = function completePluginConfig(pluginConfig) {
282
+ return Object.entries(pluginConfig).map(function (_ref3) {
283
+ var _plugin$WrappedCompon, _component$availableI;
284
+ var _ref4 = _slicedToArray(_ref3, 2),
285
+ key = _ref4[0],
286
+ entry = _ref4[1];
287
+ var plugin = _this2.props.appConfig.pluginsDef.plugins[entry.name + "Plugin"];
288
+ var component = (_plugin$WrappedCompon = plugin === null || plugin === void 0 ? void 0 : plugin.WrappedComponent) !== null && _plugin$WrappedCompon !== void 0 ? _plugin$WrappedCompon : plugin;
289
+ var availableIn3D = (_component$availableI = component === null || component === void 0 ? void 0 : component.availableIn3D) !== null && _component$availableI !== void 0 ? _component$availableI : false;
290
+ return _objectSpread(_objectSpread({}, entry), {}, {
291
+ key: key,
292
+ availableIn3D: availableIn3D,
293
+ cfg: _objectSpread(_objectSpread({}, entry.cfg), _this2.props.appConfig.pluginsDef.cfg[entry.name + "Plugin"])
294
+ });
295
+ });
296
+ };
297
+ config.plugins.desktop = completePluginConfig(deepmerge(commonConfig, desktopConfig));
298
+ config.plugins.mobile = completePluginConfig(deepmerge(commonConfig, mobileConfig));
299
+ delete config.plugins.common;
300
+
301
+ // Add projections from config
302
+ var _iterator = _createForOfIteratorHelper(config.projections || []),
303
+ _step;
304
+ try {
305
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
306
+ var proj = _step.value;
307
+ if (Proj4js.defs(proj.code) === undefined) {
308
+ Proj4js.defs(proj.code, proj.proj);
309
+ }
310
+ CoordinatesUtils.setCrsLabels(_defineProperty({}, proj.code, proj.label));
311
+ }
312
+ } catch (err) {
313
+ _iterator.e(err);
314
+ } finally {
315
+ _iterator.f();
316
+ }
317
+ olProj4Register(Proj4js);
318
+ StandardApp.store.dispatch(localConfigLoaded(config));
319
+ _this2.setState({
320
+ haveConfig: true
321
+ });
322
+
323
+ // Load locale
324
+ var lang = (_ref5 = (_this2$props$appConfi = (_this2$props$appConfi2 = (_this2$props$appConfi3 = _this2.props.appConfig).getDefaultLocale) === null || _this2$props$appConfi2 === void 0 ? void 0 : _this2$props$appConfi2.call(_this2$props$appConfi3)) !== null && _this2$props$appConfi !== void 0 ? _this2$props$appConfi : initialParams.lang) !== null && _ref5 !== void 0 ? _ref5 : navigator.language;
325
+ LocaleUtils.loadLocale(lang, _this2.props.appConfig.defaultLocaleData).then(function (localeData) {
326
+ StandardApp.store.dispatch(changeLocale(localeData, _this2.props.appConfig.defaultLocaleData));
327
+ _this2.setState({
328
+ haveLocale: true
329
+ });
330
+ });
331
+
332
+ // Set color scheme
333
+ var storedColorScheme = ConfigUtils.havePlugin("Settings") ? localStorage.getItem('qwc2-color-scheme') : null;
334
+ var colorScheme = initialParams.style || storedColorScheme || ConfigUtils.getConfigProp("defaultColorScheme");
335
+ StandardApp.store.dispatch(setColorScheme(colorScheme));
336
+
337
+ // Resolve permalink and restore settings
338
+ resolvePermaLink(initialParams, function (params, state, success) {
339
+ StandardApp.store.dispatch(setStartupParameters(params, state));
340
+ _this2.setState({
341
+ startupConfig: {
342
+ params: params,
343
+ state: state,
344
+ permalinkInvalid: !success
345
+ }
346
+ });
347
+ });
348
+ });
349
+ });
350
+ var initialState = _this2.props.appConfig.initialState || {};
351
+ StandardApp.store = createStore(ReducerIndex.reducers, initialState, _this2.props.appConfig.actionLogger);
352
+ _this2.init();
353
+ _this2.touchY = null;
354
+ return _this2;
355
+ }
356
+ _inherits(StandardApp, _React$Component2);
357
+ return _createClass(StandardApp, [{
358
+ key: "componentDidMount",
359
+ value: function componentDidMount() {
360
+ window.addEventListener('resize', this.computeVh);
361
+ this.computeVh();
362
+ }
363
+ }, {
364
+ key: "componentWillUnmount",
365
+ value: function componentWillUnmount() {
366
+ window.removeEventListener('resize', this.computeVh);
367
+ }
368
+ }, {
369
+ key: "render",
370
+ value: function render() {
371
+ if (!this.state.startupConfig || !this.state.haveConfig || !this.state.haveLocale) {
372
+ return null;
373
+ }
374
+ return /*#__PURE__*/React.createElement(Provider, {
375
+ store: StandardApp.store
376
+ }, /*#__PURE__*/React.createElement(AppContainer, {
377
+ appConfig: this.props.appConfig,
378
+ startupConfig: this.state.startupConfig
379
+ }));
380
+ }
381
+ }]);
382
+ }(React.Component);
383
+ _defineProperty(StandardApp, "store", null);
384
+ _defineProperty(StandardApp, "propTypes", {
385
+ appConfig: PropTypes.object
386
+ });
387
+ export { StandardApp as default };
@@ -1 +1,15 @@
1
- var _excluded=["children"];function _objectWithoutProperties(e,t){if(null==e)return{};var o,r,i=_objectWithoutPropertiesLoose(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r<n.length;r++)o=n[r],-1===t.indexOf(o)&&{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}function _objectWithoutPropertiesLoose(r,e){if(null==r)return{};var t={};for(var n in r)if({}.hasOwnProperty.call(r,n)){if(-1!==e.indexOf(n))continue;t[n]=r[n]}return t}import React from"react";import{useSwipeable}from"react-swipeable";import PropTypes from"prop-types";export var Swipeable=function Swipeable(_ref){var children=_ref.children,props=_objectWithoutProperties(_ref,_excluded);var handlers=useSwipeable(props);return/*#__PURE__*/React.createElement("div",handlers,children)};Swipeable.propTypes={children:PropTypes.oneOfType([PropTypes.node,PropTypes.func])};
1
+ var _excluded = ["children"];
2
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
3
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
4
+ import React from 'react';
5
+ import { useSwipeable } from 'react-swipeable';
6
+ import PropTypes from 'prop-types';
7
+ export var Swipeable = function Swipeable(_ref) {
8
+ var children = _ref.children,
9
+ props = _objectWithoutProperties(_ref, _excluded);
10
+ var handlers = useSwipeable(props);
11
+ return /*#__PURE__*/React.createElement("div", handlers, children);
12
+ };
13
+ Swipeable.propTypes = {
14
+ children: PropTypes.oneOfType([PropTypes.node, PropTypes.func])
15
+ };
@@ -1,7 +1,90 @@
1
- function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}function _classCallCheck(a,n){if(!(a instanceof n))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,r){for(var t=0;t<r.length;t++){var o=r[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,_toPropertyKey(o.key),o)}}function _createClass(e,r,t){return r&&_defineProperties(e.prototype,r),t&&_defineProperties(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function _callSuper(t,o,e){return o=_getPrototypeOf(o),_possibleConstructorReturn(t,_isNativeReflectConstruct()?Reflect.construct(o,e||[],_getPrototypeOf(t).constructor):o.apply(t,e))}function _possibleConstructorReturn(t,e){if(e&&("object"==_typeof(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized(t)}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _isNativeReflectConstruct(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(_isNativeReflectConstruct=function _isNativeReflectConstruct(){return!!t})()}function _getPrototypeOf(t){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},_getPrototypeOf(t)}function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&_setPrototypeOf(t,e)}function _setPrototypeOf(t,e){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},_setPrototypeOf(t,e)}function _defineProperty(e,r,t){return(r=_toPropertyKey(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function _toPropertyKey(t){var i=_toPrimitive(t,"string");return"symbol"==_typeof(i)?i:i+""}function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}/**
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
3
+ function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
4
+ function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
5
+ function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
6
+ function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); }
7
+ function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
8
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
9
+ function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
10
+ function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); }
11
+ function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
12
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
13
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
14
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
15
+ /**
2
16
  * Copyright 2016-2024 Sourcepole AG
3
17
  * All rights reserved.
4
18
  *
5
19
  * This source code is licensed under the BSD-style license found in the
6
20
  * LICENSE file in the root directory of this source tree.
7
- */import React from"react";import{connect}from"react-redux";import PropTypes from"prop-types";import{setCurrentTask,setCurrentTaskBlocked}from"../actions/task";import MessageBar from"./MessageBar";var TaskBar=/*#__PURE__*/function(_React$Component){function TaskBar(){var _this;_classCallCheck(this,TaskBar);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}_this=_callSuper(this,TaskBar,[].concat(args));_defineProperty(_this,"closeClicked",function(){if(_this.props.unblockOnClose){_this.props.setCurrentTaskBlocked(false)}_this.props.setCurrentTask(null)});return _this}_inherits(TaskBar,_React$Component);return _createClass(TaskBar,[{key:"componentDidUpdate",value:function componentDidUpdate(prevProps){var _this$props$currentTa,_prevProps$currentTas,_prevProps$currentTas2;var newVisible=((_this$props$currentTa=this.props.currentTask)===null||_this$props$currentTa===void 0?void 0:_this$props$currentTa.id)===this.props.task;var oldVisible=((_prevProps$currentTas=prevProps.currentTask)===null||_prevProps$currentTas===void 0?void 0:_prevProps$currentTas.id)===this.props.task;if(newVisible&&(!oldVisible||this.props.currentTask.mode!==((_prevProps$currentTas2=prevProps.currentTask)===null||_prevProps$currentTas2===void 0?void 0:_prevProps$currentTas2.mode))){this.props.onShow(this.props.currentTask.mode,this.props.currentTask.data)}else if(!newVisible&&oldVisible){this.props.onHide()}}},{key:"render",value:function render(){if(this.props.currentTask.id!==this.props.task){return null}return/*#__PURE__*/React.createElement(MessageBar,{onClose:this.closeClicked},this.props.children)}}])}(React.Component);_defineProperty(TaskBar,"propTypes",{children:PropTypes.oneOfType([PropTypes.node,PropTypes.func]),currentTask:PropTypes.object,onHide:PropTypes.func,onShow:PropTypes.func,setCurrentTask:PropTypes.func,setCurrentTaskBlocked:PropTypes.func,task:PropTypes.string.isRequired,unblockOnClose:PropTypes.bool});_defineProperty(TaskBar,"defaultProps",{onShow:function onShow(){},onHide:function onHide(){}});export default connect(function(state){return{currentTask:state.task}},{setCurrentTask:setCurrentTask,setCurrentTaskBlocked:setCurrentTaskBlocked})(TaskBar);
21
+ */
22
+
23
+ import React from 'react';
24
+ import { connect } from 'react-redux';
25
+ import PropTypes from 'prop-types';
26
+ import { setCurrentTask, setCurrentTaskBlocked } from '../actions/task';
27
+ import MessageBar from './MessageBar';
28
+ var TaskBar = /*#__PURE__*/function (_React$Component) {
29
+ function TaskBar() {
30
+ var _this;
31
+ _classCallCheck(this, TaskBar);
32
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
33
+ args[_key] = arguments[_key];
34
+ }
35
+ _this = _callSuper(this, TaskBar, [].concat(args));
36
+ _defineProperty(_this, "closeClicked", function () {
37
+ if (_this.props.unblockOnClose) {
38
+ _this.props.setCurrentTaskBlocked(false);
39
+ }
40
+ _this.props.setCurrentTask(null);
41
+ });
42
+ return _this;
43
+ }
44
+ _inherits(TaskBar, _React$Component);
45
+ return _createClass(TaskBar, [{
46
+ key: "componentDidUpdate",
47
+ value: function componentDidUpdate(prevProps) {
48
+ var _this$props$currentTa, _prevProps$currentTas, _prevProps$currentTas2;
49
+ var newVisible = ((_this$props$currentTa = this.props.currentTask) === null || _this$props$currentTa === void 0 ? void 0 : _this$props$currentTa.id) === this.props.task;
50
+ var oldVisible = ((_prevProps$currentTas = prevProps.currentTask) === null || _prevProps$currentTas === void 0 ? void 0 : _prevProps$currentTas.id) === this.props.task;
51
+ if (newVisible && (!oldVisible || this.props.currentTask.mode !== ((_prevProps$currentTas2 = prevProps.currentTask) === null || _prevProps$currentTas2 === void 0 ? void 0 : _prevProps$currentTas2.mode))) {
52
+ this.props.onShow(this.props.currentTask.mode, this.props.currentTask.data);
53
+ } else if (!newVisible && oldVisible) {
54
+ this.props.onHide();
55
+ }
56
+ }
57
+ }, {
58
+ key: "render",
59
+ value: function render() {
60
+ if (this.props.currentTask.id !== this.props.task) {
61
+ return null;
62
+ }
63
+ return /*#__PURE__*/React.createElement(MessageBar, {
64
+ onClose: this.closeClicked
65
+ }, this.props.children);
66
+ }
67
+ }]);
68
+ }(React.Component);
69
+ _defineProperty(TaskBar, "propTypes", {
70
+ children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),
71
+ currentTask: PropTypes.object,
72
+ onHide: PropTypes.func,
73
+ onShow: PropTypes.func,
74
+ setCurrentTask: PropTypes.func,
75
+ setCurrentTaskBlocked: PropTypes.func,
76
+ task: PropTypes.string.isRequired,
77
+ unblockOnClose: PropTypes.bool
78
+ });
79
+ _defineProperty(TaskBar, "defaultProps", {
80
+ onShow: function onShow() {},
81
+ onHide: function onHide() {}
82
+ });
83
+ export default connect(function (state) {
84
+ return {
85
+ currentTask: state.task
86
+ };
87
+ }, {
88
+ setCurrentTask: setCurrentTask,
89
+ setCurrentTaskBlocked: setCurrentTaskBlocked
90
+ })(TaskBar);