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,14 +1,179 @@
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 _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 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 _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 _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; } }
4
+ 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; }
5
+ 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; }
6
+ 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; }
7
+ 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; }
8
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
9
+ 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); }
10
+ /**
2
11
  * Copyright 2015 GeoSolutions Sas
3
12
  * Copyright 2016-2024 Sourcepole AG
4
13
  * All rights reserved.
5
14
  *
6
15
  * This source code is licensed under the BSD-style license found in the
7
16
  * LICENSE file in the root directory of this source tree.
8
- */import ol from"openlayers";import FeatureStyles from"../../../utils/FeatureStyles";export function createFeatures(options,mapCrs){var format=new ol.format.GeoJSON;return(options.features||[]).reduce(function(collection,feature){var featureObject=format.readFeatures(_objectSpread(_objectSpread({},feature),{},{type:"Feature"}));featureObject.forEach(function(f){var _ref,_feature$crs;var featureCrs=(_ref=(_feature$crs=feature.crs)!==null&&_feature$crs!==void 0?_feature$crs:options.projection)!==null&&_ref!==void 0?_ref:mapCrs;if(featureCrs.type==="name"){featureCrs=featureCrs.properties.name}if(featureCrs!==mapCrs){var _f$getGeometry;(_f$getGeometry=f.getGeometry())===null||_f$getGeometry===void 0||_f$getGeometry.transform(featureCrs,mapCrs)}var featureStyleName=feature.styleName||options.styleName;var featureStyleOptions=_objectSpread(_objectSpread({},options.styleOptions),feature.styleOptions);f.set("styleName",featureStyleName);f.set("styleOptions",featureStyleOptions);if(feature.circleParams){f.set("circleParams",feature.circleParams)}if(feature.shape){f.set("shape",feature.shape)}if(feature.measurements){f.set("measurements",feature.measurements)}if(featureStyleName){f.setStyle(FeatureStyles[featureStyleName](f,featureStyleOptions))}});return collection.concat(featureObject)},[])}export function updateFeatures(source,newOptions,oldOptions,mapCrs){var format=new ol.format.GeoJSON;var oldFeaturesMap=(oldOptions.features||[]).reduce(function(res,f){res[f.id]=f;return res},{});var newIds=new Set(newOptions.features.map(function(f){return f.id}));var removed=Object.keys(oldFeaturesMap).filter(function(id){return!newIds.has(id)});// Remove removed features
9
- var _iterator=_createForOfIteratorHelper(removed),_step;try{for(_iterator.s();!(_step=_iterator.n()).done;){var id=_step.value;var feature=source.getFeatureById(id);if(feature){source.removeFeature(feature)}}// Add / update features
10
- }catch(err){_iterator.e(err)}finally{_iterator.f()}var newFeatureObjects=[];var _iterator2=_createForOfIteratorHelper(newOptions.features),_step2;try{var _loop=function _loop(){var feature=_step2.value;if(oldFeaturesMap[feature.id]&&oldFeaturesMap[feature.id]===feature){// Unchanged, continue
11
- return 1;// continue
12
- }if(oldFeaturesMap[feature.id]&&oldFeaturesMap[feature.id]!==feature){// Changed, remove
13
- var oldFeature=source.getFeatureById(feature.id);if(oldFeature){source.removeFeature(oldFeature)}}// Add new
14
- var featureObject=format.readFeatures(_objectSpread(_objectSpread({},feature),{},{type:"Feature"}));featureObject.forEach(function(f){var _ref2,_feature$crs2;var featureCrs=(_ref2=(_feature$crs2=feature.crs)!==null&&_feature$crs2!==void 0?_feature$crs2:newOptions.projection)!==null&&_ref2!==void 0?_ref2:mapCrs;if(featureCrs.type==="name"){featureCrs=featureCrs.properties.name}if(featureCrs!==mapCrs){var _f$getGeometry2;(_f$getGeometry2=f.getGeometry())===null||_f$getGeometry2===void 0||_f$getGeometry2.transform(featureCrs,mapCrs)}var featureStyleName=feature.styleName||newOptions.styleName;var featureStyleOptions=_objectSpread(_objectSpread({},newOptions.styleOptions),feature.styleOptions);f.set("styleName",featureStyleName);f.set("styleOptions",featureStyleOptions);f.set("circleParams",feature.circleParams);f.set("shape",feature.shape);f.set("measurements",feature.measurements);if(featureStyleName){f.setStyle(FeatureStyles[featureStyleName](f,featureStyleOptions))}});newFeatureObjects=newFeatureObjects.concat(featureObject)};for(_iterator2.s();!(_step2=_iterator2.n()).done;){if(_loop())continue}}catch(err){_iterator2.e(err)}finally{_iterator2.f()}if(newFeatureObjects){source.addFeatures(newFeatureObjects)}}export function featureStyleFunction(options){return function(feature){var styleName=options.styleName||"default";var styleOptions=options.styleOptions||{};return FeatureStyles[styleName](feature,styleOptions)}}export default{create:function create(options,map){var source=new ol.source.Vector;var mapCrs=map.getView().getProjection().getCode();var features=createFeatures(options,mapCrs);source.addFeatures(features);var vectorLayer=new ol.layer.Vector({source:source,style:options.styleFunction||featureStyleFunction(options)});return vectorLayer},update:function update(layer,newOptions,oldOptions,map){var mapCrs=map.getView().getProjection().getCode();if(newOptions.styleName!==oldOptions.styleName||newOptions.styleOptions!==oldOptions.styleOptions){layer.setStyle(featureStyleFunction(newOptions))}else if(newOptions.styleFunction!==oldOptions.styleFunction){layer.setStyle(newOptions.styleFunction)}if(newOptions.features!==oldOptions.features){updateFeatures(layer.getSource(),newOptions,oldOptions,mapCrs)}else if((oldOptions.rev||0)!==(newOptions.rev||0)){layer.getSource().changed()}},render:function render(){return null}};
17
+ */
18
+
19
+ import ol from 'openlayers';
20
+ import FeatureStyles from '../../../utils/FeatureStyles';
21
+ export function createFeatures(options, mapCrs) {
22
+ var format = new ol.format.GeoJSON();
23
+ return (options.features || []).reduce(function (collection, feature) {
24
+ var featureObject = format.readFeatures(_objectSpread(_objectSpread({}, feature), {}, {
25
+ type: "Feature"
26
+ }));
27
+ featureObject.forEach(function (f) {
28
+ var _ref, _feature$crs;
29
+ var featureCrs = (_ref = (_feature$crs = feature.crs) !== null && _feature$crs !== void 0 ? _feature$crs : options.projection) !== null && _ref !== void 0 ? _ref : mapCrs;
30
+ if (featureCrs.type === "name") {
31
+ featureCrs = featureCrs.properties.name;
32
+ }
33
+ if (featureCrs !== mapCrs) {
34
+ var _f$getGeometry;
35
+ (_f$getGeometry = f.getGeometry()) === null || _f$getGeometry === void 0 || _f$getGeometry.transform(featureCrs, mapCrs);
36
+ }
37
+ var featureStyleName = feature.styleName || options.styleName;
38
+ var featureStyleOptions = _objectSpread(_objectSpread({}, options.styleOptions), feature.styleOptions);
39
+ f.set('styleName', featureStyleName);
40
+ f.set('styleOptions', featureStyleOptions);
41
+ if (feature.circleParams) {
42
+ f.set('circleParams', feature.circleParams);
43
+ }
44
+ if (feature.shape) {
45
+ f.set('shape', feature.shape);
46
+ }
47
+ if (feature.measurements) {
48
+ f.set('measurements', feature.measurements);
49
+ }
50
+ if (featureStyleName) {
51
+ f.setStyle(FeatureStyles[featureStyleName](f, featureStyleOptions));
52
+ }
53
+ });
54
+ return collection.concat(featureObject);
55
+ }, []);
56
+ }
57
+ export function updateFeatures(source, newOptions, oldOptions, mapCrs) {
58
+ var format = new ol.format.GeoJSON();
59
+ var oldFeaturesMap = (oldOptions.features || []).reduce(function (res, f) {
60
+ res[f.id] = f;
61
+ return res;
62
+ }, {});
63
+ var newIds = new Set(newOptions.features.map(function (f) {
64
+ return f.id;
65
+ }));
66
+ var removed = Object.keys(oldFeaturesMap).filter(function (id) {
67
+ return !newIds.has(id);
68
+ });
69
+
70
+ // Remove removed features
71
+ var _iterator = _createForOfIteratorHelper(removed),
72
+ _step;
73
+ try {
74
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
75
+ var id = _step.value;
76
+ var feature = source.getFeatureById(id);
77
+ if (feature) {
78
+ source.removeFeature(feature);
79
+ }
80
+ }
81
+
82
+ // Add / update features
83
+ } catch (err) {
84
+ _iterator.e(err);
85
+ } finally {
86
+ _iterator.f();
87
+ }
88
+ var newFeatureObjects = [];
89
+ var _iterator2 = _createForOfIteratorHelper(newOptions.features),
90
+ _step2;
91
+ try {
92
+ var _loop = function _loop() {
93
+ var feature = _step2.value;
94
+ if (oldFeaturesMap[feature.id] && oldFeaturesMap[feature.id] === feature) {
95
+ // Unchanged, continue
96
+ return 1; // continue
97
+ }
98
+ if (oldFeaturesMap[feature.id] && oldFeaturesMap[feature.id] !== feature) {
99
+ // Changed, remove
100
+ var oldFeature = source.getFeatureById(feature.id);
101
+ if (oldFeature) {
102
+ source.removeFeature(oldFeature);
103
+ }
104
+ }
105
+ // Add new
106
+ var featureObject = format.readFeatures(_objectSpread(_objectSpread({}, feature), {}, {
107
+ type: "Feature"
108
+ }));
109
+ featureObject.forEach(function (f) {
110
+ var _ref2, _feature$crs2;
111
+ var featureCrs = (_ref2 = (_feature$crs2 = feature.crs) !== null && _feature$crs2 !== void 0 ? _feature$crs2 : newOptions.projection) !== null && _ref2 !== void 0 ? _ref2 : mapCrs;
112
+ if (featureCrs.type === "name") {
113
+ featureCrs = featureCrs.properties.name;
114
+ }
115
+ if (featureCrs !== mapCrs) {
116
+ var _f$getGeometry2;
117
+ (_f$getGeometry2 = f.getGeometry()) === null || _f$getGeometry2 === void 0 || _f$getGeometry2.transform(featureCrs, mapCrs);
118
+ }
119
+ var featureStyleName = feature.styleName || newOptions.styleName;
120
+ var featureStyleOptions = _objectSpread(_objectSpread({}, newOptions.styleOptions), feature.styleOptions);
121
+ f.set('styleName', featureStyleName);
122
+ f.set('styleOptions', featureStyleOptions);
123
+ f.set('circleParams', feature.circleParams);
124
+ f.set('shape', feature.shape);
125
+ f.set('measurements', feature.measurements);
126
+ if (featureStyleName) {
127
+ f.setStyle(FeatureStyles[featureStyleName](f, featureStyleOptions));
128
+ }
129
+ });
130
+ newFeatureObjects = newFeatureObjects.concat(featureObject);
131
+ };
132
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
133
+ if (_loop()) continue;
134
+ }
135
+ } catch (err) {
136
+ _iterator2.e(err);
137
+ } finally {
138
+ _iterator2.f();
139
+ }
140
+ if (newFeatureObjects) {
141
+ source.addFeatures(newFeatureObjects);
142
+ }
143
+ }
144
+ export function featureStyleFunction(options) {
145
+ return function (feature) {
146
+ var styleName = options.styleName || 'default';
147
+ var styleOptions = options.styleOptions || {};
148
+ return FeatureStyles[styleName](feature, styleOptions);
149
+ };
150
+ }
151
+ export default {
152
+ create: function create(options, map) {
153
+ var source = new ol.source.Vector();
154
+ var mapCrs = map.getView().getProjection().getCode();
155
+ var features = createFeatures(options, mapCrs);
156
+ source.addFeatures(features);
157
+ var vectorLayer = new ol.layer.Vector({
158
+ source: source,
159
+ style: options.styleFunction || featureStyleFunction(options)
160
+ });
161
+ return vectorLayer;
162
+ },
163
+ update: function update(layer, newOptions, oldOptions, map) {
164
+ var mapCrs = map.getView().getProjection().getCode();
165
+ if (newOptions.styleName !== oldOptions.styleName || newOptions.styleOptions !== oldOptions.styleOptions) {
166
+ layer.setStyle(featureStyleFunction(newOptions));
167
+ } else if (newOptions.styleFunction !== oldOptions.styleFunction) {
168
+ layer.setStyle(newOptions.styleFunction);
169
+ }
170
+ if (newOptions.features !== oldOptions.features) {
171
+ updateFeatures(layer.getSource(), newOptions, oldOptions, mapCrs);
172
+ } else if ((oldOptions.rev || 0) !== (newOptions.rev || 0)) {
173
+ layer.getSource().changed();
174
+ }
175
+ },
176
+ render: function render() {
177
+ return null;
178
+ }
179
+ };
@@ -1,11 +1,225 @@
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 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 _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)}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}/**
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 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; }
3
+ 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; }
4
+ 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; }
5
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
6
+ 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); }
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
+ /**
2
14
  * Copyright 2018-2024 Sourcepole AG
3
15
  * All rights reserved.
4
16
  *
5
17
  * This source code is licensed under the BSD-style license found in the
6
18
  * LICENSE file in the root directory of this source tree.
7
- */import ol from"openlayers";import url from"url";import CoordinatesUtils from"../../../utils/CoordinatesUtils";import FeatureStyles from"../../../utils/FeatureStyles";export function wfsToOpenlayersOptions(options){var formatMap={"gml3":function gml3(proj){return new ol.format.WFS({gmlFormat:new ol.format.GML3({dataProjection:proj}),version:options.version})},"gml32":function gml32(proj){return new ol.format.WFS({gmlFormat:new ol.format.GML32({dataProjection:proj}),version:options.version})},"application/gml+xml; version=3.2":function application_gmlXml_version32(proj){return new ol.format.WFS({gmlFormat:new ol.format.GML32({dataProjection:proj}),version:options.version})},"gml2":function gml2(proj){return new ol.format.WFS({gmlFormat:new ol.format.GML2({dataProjection:proj}),version:options.version})},"text/xml; subtype=gml/3.0":function text_xml_subtypeGml_30(proj){return new ol.format.WFS({gmlFormat:new ol.format.GML3({dataProjection:proj}),version:options.version})},"text/xml; subtype=gml/3.1":function text_xml_subtypeGml_31(proj){return new ol.format.WFS({gmlFormat:new ol.format.GML3({dataProjection:proj}),version:options.version})},"text/xml; subtype=gml/3.1.0":function text_xml_subtypeGml_310(proj){return new ol.format.WFS({gmlFormat:new ol.format.GML3({dataProjection:proj}),version:options.version})},"text/xml; subtype=gml/3.1.1":function text_xml_subtypeGml_311(proj){return new ol.format.WFS({gmlFormat:new ol.format.GML3({dataProjection:proj}),version:options.version})},"text/xml; subtype=gml/3.2":function text_xml_subtypeGml_32(proj){return new ol.format.WFS({gmlFormat:new ol.format.GML32({dataProjection:proj}),version:options.version})},"text/xml; subtype=gml/3.2.0":function text_xml_subtypeGml_320(proj){return new ol.format.WFS({gmlFormat:new ol.format.GML32({dataProjection:proj}),version:options.version})},"text/xml; subtype=gml/3.2.1":function text_xml_subtypeGml_321(proj){return new ol.format.WFS({gmlFormat:new ol.format.GML32({dataProjection:proj}),version:options.version})},"text/xml; subtype=gml/2.1.2":function text_xml_subtypeGml_212(proj){return new ol.format.WFS({gmlFormat:new ol.format.GML2({dataProjection:proj}),version:options.version})},"kml":function kml(proj){return new ol.format.KML({defaultDataProjection:proj})},"application/vnd.google-earth.kml+xml":function application_vndGoogleEarthKmlXml(proj){return new ol.format.KML({dataProjection:proj})},"geojson":function geojson(proj){return new ol.format.GeoJSON({dataProjection:proj})},"json":function json(proj){return new ol.format.GeoJSON({dataProjection:proj})},"application/json":function application_json(proj){return new ol.format.GeoJSON({dataProjection:proj})}};var olformat=null;var format=null;var _loop=function _loop(){var key=_Object$keys[_i];var fmt=options.formats.find(function(entry){return entry.toLowerCase()===key});if(fmt){olformat=formatMap[key](options.projection);format=fmt;return 1;// break
8
- }};for(var _i=0,_Object$keys=Object.keys(formatMap);_i<_Object$keys.length;_i++){if(_loop())break}if(!format){// eslint-disable-next-line
9
- console.warn("No supported WFS format found");return null}var typeName=options.version<"2.0.0"?"typeName":"typeNames";return{formatName:format,format:olformat,url:options.url?function(extent){var bbox=extent.join(",");var srsName=options.projection;if(options.version>="1.1.0"){// http://augusttown.blogspot.com/2010/08/mysterious-bbox-parameter-in-web.html
10
- // Invert WGS axis orentation
11
- var axisOrientation=CoordinatesUtils.getAxisOrder(options.projection);var requestExtent=axisOrientation==="neu"?[extent[1],extent[0],extent[3],extent[2]]:extent;bbox=requestExtent.join(",")+","+CoordinatesUtils.toOgcUrnCrs(options.projection);srsName=CoordinatesUtils.toOgcUrnCrs(options.projection)}var urlParts=url.parse(options.url,true);var urlParams=Object.entries(urlParts.query).reduce(function(res,_ref){var _ref2=_slicedToArray(_ref,2),key=_ref2[0],val=_ref2[1];return _objectSpread(_objectSpread({},res),{},_defineProperty({},key.toUpperCase(),val))},{});delete urlParts.search;urlParts.query=_objectSpread(_objectSpread({},urlParams),{},_defineProperty(_defineProperty(_defineProperty(_defineProperty({SERVICE:"WFS",VERSION:options.version,REQUEST:"GetFeature"},typeName,options.name),"outputFormat",format),"srsName",srsName),"bbox",bbox));return url.format(urlParts)}:undefined,strategy:ol.loadingstrategy.bbox}}export default{create:function create(options){var vectorSource=new ol.source.Vector(_objectSpread(_objectSpread({},wfsToOpenlayersOptions(options)),{},{loader:options.loader?function(extent,resolution,projection,success,failure){options.loader(vectorSource,extent,resolution,projection,success,failure)}:undefined}));return new ol.layer.Vector({source:vectorSource,style:function style(feature){return FeatureStyles["default"](feature,{fillColor:options.color,strokeColor:feature.getGeometry().getType().endsWith("LineString")?options.color:"#000",strokeWidth:1,strokeDash:[],circleRadius:5})}})},update:function update(/* layer, newOptions, oldOptions */){}};
19
+ */
20
+
21
+ import ol from 'openlayers';
22
+ import url from 'url';
23
+ import CoordinatesUtils from '../../../utils/CoordinatesUtils';
24
+ import FeatureStyles from '../../../utils/FeatureStyles';
25
+ export function wfsToOpenlayersOptions(options) {
26
+ var formatMap = {
27
+ "gml3": function gml3(proj) {
28
+ return new ol.format.WFS({
29
+ gmlFormat: new ol.format.GML3({
30
+ dataProjection: proj
31
+ }),
32
+ version: options.version
33
+ });
34
+ },
35
+ "gml32": function gml32(proj) {
36
+ return new ol.format.WFS({
37
+ gmlFormat: new ol.format.GML32({
38
+ dataProjection: proj
39
+ }),
40
+ version: options.version
41
+ });
42
+ },
43
+ "application/gml+xml; version=3.2": function application_gmlXml_version32(proj) {
44
+ return new ol.format.WFS({
45
+ gmlFormat: new ol.format.GML32({
46
+ dataProjection: proj
47
+ }),
48
+ version: options.version
49
+ });
50
+ },
51
+ "gml2": function gml2(proj) {
52
+ return new ol.format.WFS({
53
+ gmlFormat: new ol.format.GML2({
54
+ dataProjection: proj
55
+ }),
56
+ version: options.version
57
+ });
58
+ },
59
+ "text/xml; subtype=gml/3.0": function text_xml_subtypeGml_30(proj) {
60
+ return new ol.format.WFS({
61
+ gmlFormat: new ol.format.GML3({
62
+ dataProjection: proj
63
+ }),
64
+ version: options.version
65
+ });
66
+ },
67
+ "text/xml; subtype=gml/3.1": function text_xml_subtypeGml_31(proj) {
68
+ return new ol.format.WFS({
69
+ gmlFormat: new ol.format.GML3({
70
+ dataProjection: proj
71
+ }),
72
+ version: options.version
73
+ });
74
+ },
75
+ "text/xml; subtype=gml/3.1.0": function text_xml_subtypeGml_310(proj) {
76
+ return new ol.format.WFS({
77
+ gmlFormat: new ol.format.GML3({
78
+ dataProjection: proj
79
+ }),
80
+ version: options.version
81
+ });
82
+ },
83
+ "text/xml; subtype=gml/3.1.1": function text_xml_subtypeGml_311(proj) {
84
+ return new ol.format.WFS({
85
+ gmlFormat: new ol.format.GML3({
86
+ dataProjection: proj
87
+ }),
88
+ version: options.version
89
+ });
90
+ },
91
+ "text/xml; subtype=gml/3.2": function text_xml_subtypeGml_32(proj) {
92
+ return new ol.format.WFS({
93
+ gmlFormat: new ol.format.GML32({
94
+ dataProjection: proj
95
+ }),
96
+ version: options.version
97
+ });
98
+ },
99
+ "text/xml; subtype=gml/3.2.0": function text_xml_subtypeGml_320(proj) {
100
+ return new ol.format.WFS({
101
+ gmlFormat: new ol.format.GML32({
102
+ dataProjection: proj
103
+ }),
104
+ version: options.version
105
+ });
106
+ },
107
+ "text/xml; subtype=gml/3.2.1": function text_xml_subtypeGml_321(proj) {
108
+ return new ol.format.WFS({
109
+ gmlFormat: new ol.format.GML32({
110
+ dataProjection: proj
111
+ }),
112
+ version: options.version
113
+ });
114
+ },
115
+ "text/xml; subtype=gml/2.1.2": function text_xml_subtypeGml_212(proj) {
116
+ return new ol.format.WFS({
117
+ gmlFormat: new ol.format.GML2({
118
+ dataProjection: proj
119
+ }),
120
+ version: options.version
121
+ });
122
+ },
123
+ "kml": function kml(proj) {
124
+ return new ol.format.KML({
125
+ defaultDataProjection: proj
126
+ });
127
+ },
128
+ "application/vnd.google-earth.kml+xml": function application_vndGoogleEarthKmlXml(proj) {
129
+ return new ol.format.KML({
130
+ dataProjection: proj
131
+ });
132
+ },
133
+ "geojson": function geojson(proj) {
134
+ return new ol.format.GeoJSON({
135
+ dataProjection: proj
136
+ });
137
+ },
138
+ "json": function json(proj) {
139
+ return new ol.format.GeoJSON({
140
+ dataProjection: proj
141
+ });
142
+ },
143
+ "application/json": function application_json(proj) {
144
+ return new ol.format.GeoJSON({
145
+ dataProjection: proj
146
+ });
147
+ }
148
+ };
149
+ var olformat = null;
150
+ var format = null;
151
+ var _loop = function _loop() {
152
+ var key = _Object$keys[_i];
153
+ var fmt = options.formats.find(function (entry) {
154
+ return entry.toLowerCase() === key;
155
+ });
156
+ if (fmt) {
157
+ olformat = formatMap[key](options.projection);
158
+ format = fmt;
159
+ return 1; // break
160
+ }
161
+ };
162
+ for (var _i = 0, _Object$keys = Object.keys(formatMap); _i < _Object$keys.length; _i++) {
163
+ if (_loop()) break;
164
+ }
165
+ if (!format) {
166
+ // eslint-disable-next-line
167
+ console.warn("No supported WFS format found");
168
+ return null;
169
+ }
170
+ var typeName = options.version < "2.0.0" ? "typeName" : "typeNames";
171
+ return {
172
+ formatName: format,
173
+ format: olformat,
174
+ url: options.url ? function (extent) {
175
+ var bbox = extent.join(',');
176
+ var srsName = options.projection;
177
+ if (options.version >= "1.1.0") {
178
+ // http://augusttown.blogspot.com/2010/08/mysterious-bbox-parameter-in-web.html
179
+ // Invert WGS axis orentation
180
+ var axisOrientation = CoordinatesUtils.getAxisOrder(options.projection);
181
+ var requestExtent = axisOrientation === 'neu' ? [extent[1], extent[0], extent[3], extent[2]] : extent;
182
+ bbox = requestExtent.join(',') + "," + CoordinatesUtils.toOgcUrnCrs(options.projection);
183
+ srsName = CoordinatesUtils.toOgcUrnCrs(options.projection);
184
+ }
185
+ var urlParts = url.parse(options.url, true);
186
+ var urlParams = Object.entries(urlParts.query).reduce(function (res, _ref) {
187
+ var _ref2 = _slicedToArray(_ref, 2),
188
+ key = _ref2[0],
189
+ val = _ref2[1];
190
+ return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key.toUpperCase(), val));
191
+ }, {});
192
+ delete urlParts.search;
193
+ urlParts.query = _objectSpread(_objectSpread({}, urlParams), {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty({
194
+ SERVICE: 'WFS',
195
+ VERSION: options.version,
196
+ REQUEST: 'GetFeature'
197
+ }, typeName, options.name), "outputFormat", format), "srsName", srsName), "bbox", bbox));
198
+ return url.format(urlParts);
199
+ } : undefined,
200
+ strategy: ol.loadingstrategy.bbox
201
+ };
202
+ }
203
+ export default {
204
+ create: function create(options) {
205
+ var vectorSource = new ol.source.Vector(_objectSpread(_objectSpread({}, wfsToOpenlayersOptions(options)), {}, {
206
+ loader: options.loader ? function (extent, resolution, projection, success, failure) {
207
+ options.loader(vectorSource, extent, resolution, projection, success, failure);
208
+ } : undefined
209
+ }));
210
+ return new ol.layer.Vector({
211
+ source: vectorSource,
212
+ style: function style(feature) {
213
+ return FeatureStyles["default"](feature, {
214
+ fillColor: options.color,
215
+ strokeColor: feature.getGeometry().getType().endsWith("LineString") ? options.color : "#000",
216
+ strokeWidth: 1,
217
+ strokeDash: [],
218
+ circleRadius: 5
219
+ });
220
+ }
221
+ });
222
+ },
223
+ update: function update(/* layer, newOptions, oldOptions */
224
+ ) {}
225
+ };