qwc2 2025.10.13 → 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
package/utils/Signal.js CHANGED
@@ -1,2 +1,32 @@
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 _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 _classCallCheck(a,n){if(!(a instanceof n))throw new TypeError("Cannot call a class as a function")}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)}var Signal=/*#__PURE__*/_createClass(function Signal(){var _this=this;_classCallCheck(this,Signal);_defineProperty(this,"connect",function(callback){_this.callbacks.push(callback)});_defineProperty(this,"disconnect",function(callback){_this.callbacks=_this.callbacks.filter(function(cb){return cb!==callback})});_defineProperty(this,"notify",function(data){var newcallbacks=[];_this.callbacks.forEach(function(callback){// If a callback returns true, don't re-execute it
2
- var result=callback(data);if(!result){newcallbacks.push(callback)}});_this.callbacks=newcallbacks});this.callbacks=[]});export{Signal as default};
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 _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); } }
3
+ function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
4
+ function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
5
+ 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; }
6
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
7
+ 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); }
8
+ var Signal = /*#__PURE__*/_createClass(function Signal() {
9
+ var _this = this;
10
+ _classCallCheck(this, Signal);
11
+ _defineProperty(this, "connect", function (callback) {
12
+ _this.callbacks.push(callback);
13
+ });
14
+ _defineProperty(this, "disconnect", function (callback) {
15
+ _this.callbacks = _this.callbacks.filter(function (cb) {
16
+ return cb !== callback;
17
+ });
18
+ });
19
+ _defineProperty(this, "notify", function (data) {
20
+ var newcallbacks = [];
21
+ _this.callbacks.forEach(function (callback) {
22
+ // If a callback returns true, don't re-execute it
23
+ var result = callback(data);
24
+ if (!result) {
25
+ newcallbacks.push(callback);
26
+ }
27
+ });
28
+ _this.callbacks = newcallbacks;
29
+ });
30
+ this.callbacks = [];
31
+ });
32
+ export { Signal as default };
@@ -1,12 +1,346 @@
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 _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 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 _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 _n2=0,F=function F(){};return{s:F,n:function n(){return _n2>=r.length?{done:!0}:{done:!1,value:r[_n2++]}},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}/**
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 _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
3
+ 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."); }
4
+ function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
5
+ function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
6
+ 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; }
7
+ 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; }
8
+ 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; }
9
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
10
+ 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); }
11
+ 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 _n2 = 0, F = function F() {}; return { s: F, n: function n() { return _n2 >= r.length ? { done: !0 } : { done: !1, value: r[_n2++] }; }, 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; } } }; }
12
+ 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; } }
13
+ 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; }
14
+ /**
2
15
  * Copyright 2018-2024 Sourcepole AG
3
16
  * All rights reserved.
4
17
  *
5
18
  * This source code is licensed under the BSD-style license found in the
6
19
  * LICENSE file in the root directory of this source tree.
7
- */import{remove as removeDiacritics}from"diacritics";import isEmpty from"lodash.isempty";import url from"url";import{v4 as uuidv4}from"uuid";import{LayerRole}from"../actions/layers";import{SearchResultType}from"../utils/SearchProviders";import ConfigUtils from"./ConfigUtils";import LayerUtils from"./LayerUtils";var ThemeUtils={getThemeById:function getThemeById(themes,id){for(var i=0,n=themes.items.length;i<n;++i){if(themes.items[i].id===id){return themes.items[i]}}for(var _i=0,_n=themes.subdirs.length;_i<_n;++_i){var theme=this.getThemeById(themes.subdirs[_i],id);if(theme){return theme}}return null},createThemeBackgroundLayers:function createThemeBackgroundLayers(backgroundLayers,themes,visibleLayer,externalLayers){var bgLayers=[];var visibleIdx=-1;var defaultVisibleIdx=-1;var _iterator=_createForOfIteratorHelper(backgroundLayers),_step;try{var _loop=function _loop(){var entry=_step.value;if(!entry.name){return 1;// continue
8
- }var bgLayer=themes.backgroundLayers.find(function(lyr){return lyr.name===entry.name});if(bgLayer){if(entry.visibility===true){defaultVisibleIdx=bgLayers.length}if(bgLayer.name===visibleLayer){visibleIdx=bgLayers.length}bgLayer=_objectSpread(_objectSpread({},bgLayer),{},{role:LayerRole.BACKGROUND,thumbnail:bgLayer.thumbnail||"img/mapthumbs/default.jpg",visibility:false,opacity:bgLayer.opacity!==undefined?bgLayer.opacity:255});if(bgLayer.resource){bgLayer.id=uuidv4();bgLayer.type="placeholder";var params=LayerUtils.splitLayerUrlParam(bgLayer.resource);params.id=bgLayer.id;var key=params.type+":"+params.url;(externalLayers[key]=externalLayers[key]||[]).push(params);delete bgLayer.resource}else if(bgLayer.type==="wms"){bgLayer.version=bgLayer.params.VERSION||bgLayer.version||themes.defaultWMSVersion||"1.3.0"}else if(bgLayer.type==="group"){bgLayer.items=bgLayer.items.map(function(item){if(item.ref){var sublayer=themes.backgroundLayers.find(function(l){return l.name===item.ref});if(sublayer){item=_objectSpread(_objectSpread(_objectSpread({},item),sublayer),LayerUtils.buildWMSLayerParams(sublayer));if(item.type==="wms"){item.version=item.params.VERSION||item.version||themes.defaultWMSVersion||"1.3.0"}delete item.ref}else{item=null}}return item}).filter(function(x){return x})}bgLayers.push(bgLayer)}else{// eslint-disable-next-line
9
- console.warn("Could not find background layer "+entry.name)}};for(_iterator.s();!(_step=_iterator.n()).done;){if(_loop())continue}}catch(err){_iterator.e(err)}finally{_iterator.f()}if(visibleIdx>=0){bgLayers[visibleIdx].visibility=true}else if(defaultVisibleIdx>=0&&visibleLayer!==""){bgLayers[defaultVisibleIdx].visibility=true}return bgLayers},createThemeLayer:function createThemeLayer(theme,themes){var role=arguments.length>2&&arguments[2]!==undefined?arguments[2]:LayerRole.THEME;var subLayers=arguments.length>3&&arguments[3]!==undefined?arguments[3]:null;var urlParts=url.parse(theme.url,true);// Resolve relative urls
10
- if(!urlParts.host){var locationParts=url.parse(window.location.href);urlParts.protocol=locationParts.protocol;urlParts.host=locationParts.host}var sublayerNames=LayerUtils.getSublayerNames({sublayers:subLayers!==null&&subLayers!==void 0?subLayers:theme.sublayers});var baseParams=urlParts.query;var layer={type:"wms",id:theme.id,url:url.format(urlParts),version:theme.version||themes.defaultWMSVersion||"1.3.0",visibility:true,expanded:theme.expanded,name:theme.name,title:theme.title,bbox:theme.bbox,sublayers:subLayers!==null&&subLayers!==void 0?subLayers:theme.sublayers,tiled:theme.tiled,tileSize:theme.tileSize,ratio:!theme.tiled?1:undefined,serverType:"qgis",format:theme.format,rev:+new Date,role:role,attribution:theme.attribution,legendUrl:ThemeUtils.inheritBaseUrlParams(theme.legendUrl,theme.url,baseParams),printUrl:ThemeUtils.inheritBaseUrlParams(theme.printUrl,theme.url,baseParams),featureInfoUrl:ThemeUtils.inheritBaseUrlParams(theme.featureInfoUrl,theme.url,baseParams),infoFormats:theme.infoFormats,mapFormats:theme.availableFormats,layerTreeHiddenSublayers:theme.layerTreeHiddenSublayers,predefinedFilters:(theme.predefinedFilters||[]).filter(function(entry){return Object.keys(entry.filter).find(function(name){return sublayerNames.includes(name)})}),externalLayerMap:_objectSpread(_objectSpread({},theme.externalLayerMap),(theme.externalLayers||[]).reduce(function(res,cur){res[cur.internalLayer]=_objectSpread({},themes.externalLayers.find(function(entry){return entry.name===cur.name}));LayerUtils.completeExternalLayer(res[cur.internalLayer],LayerUtils.searchSubLayer(theme,"name",cur.internalLayer));return res},{})),translations:theme.translations};layer=LayerUtils.recomputeLayerBBox(layer);// Drawing order only makes sense if layer reordering is disabled
11
- if(ConfigUtils.getConfigProp("allowReorderingLayers",theme)!==true){layer.drawingOrder=theme.drawingOrder}return layer},inheritBaseUrlParams:function inheritBaseUrlParams(capabilityUrl,baseUrl,baseParams){if(!capabilityUrl){return baseUrl}if(capabilityUrl.split("?")[0]===baseUrl.split("?")[0]){var parts=url.parse(capabilityUrl,true);parts.query=_objectSpread(_objectSpread({},baseParams),parts.query);return url.format(parts)}return capabilityUrl},searchThemes:function searchThemes(themes,searchtext){var filter=new RegExp(removeDiacritics(searchtext).replace(/[-[\]/{}()*+?.\\^$|]/g,"\\$&"),"i");var matches=[];var _searchThemeGroup=function searchThemeGroup(themeGroup){(themeGroup.subdirs||[]).forEach(function(subdir){return _searchThemeGroup(subdir,filter)});matches.push.apply(matches,_toConsumableArray((themeGroup.items||[]).filter(function(item){return removeDiacritics(item.title).match(filter)||removeDiacritics(item.keywords||"").match(filter)||removeDiacritics(item["abstract"]||"").match(filter)})))};_searchThemeGroup(themes,filter);return isEmpty(matches)?[]:[{id:"themes",titlemsgid:"search.themes",type:SearchResultType.THEME,items:matches.map(function(theme){return{id:theme.id,text:theme.title,theme:theme,layer:ThemeUtils.createThemeLayer(theme,themes),thumbnail:ConfigUtils.getAssetsPath()+"/"+theme.thumbnail}})}]},searchThemeLayers:function searchThemeLayers(themes,searchtext){var filter=new RegExp(removeDiacritics(searchtext).replace(/[-[\]/{}()*+?.\\^$|]/g,"\\$&"),"i");var matches=[];var _searchLayer=function searchLayer(theme,layer){var path=arguments.length>2&&arguments[2]!==undefined?arguments[2]:[];(layer.sublayers||[]).forEach(function(sublayer,idx){var subpath=[].concat(_toConsumableArray(path),[idx]);if(removeDiacritics(sublayer.name).match(filter)||removeDiacritics(sublayer.title).match(filter)){// Clone theme, ensuring path to layer is visible
12
- var newtheme=_objectSpread({},theme);var cur=newtheme;var _loop2=function _loop2(i){var isMutuallyExclusive=cur.mutuallyExclusive;cur.sublayers=cur.sublayers.map(function(entry,j){return _objectSpread(_objectSpread({},entry),{},{visibility:j===subpath[i]||entry.visibility&&!isMutuallyExclusive})});cur=cur.sublayers[subpath[i]]};for(var i=0;i<subpath.length;++i){_loop2(i)}matches.push({theme:newtheme,layer:ThemeUtils.createThemeLayer(newtheme,themes,LayerRole.USERLAYER,[cur])})}_searchLayer(theme,sublayer,subpath)})};var _searchThemeGroup2=function searchThemeGroup(themeGroup){(themeGroup.subdirs||[]).forEach(function(subdir){return _searchThemeGroup2(subdir,filter)});(themeGroup.items||[]).forEach(function(item){return _searchLayer(item,item)})};_searchThemeGroup2(themes,filter);return isEmpty(matches)?[]:[{id:"themelayers",titlemsgid:"search.themelayers",type:SearchResultType.THEMELAYER,items:matches.map(function(result){return{id:result.layer.id+":"+result.layer.sublayers[0].name,text:result.layer.title+": "+result.layer.sublayers[0].title,layer:result.layer,theme:result.theme}})}]},getThemeNames:function getThemeNames(themes){var names=(themes.items||[]).reduce(function(res,theme){return _objectSpread(_objectSpread({},res),{},_defineProperty({},theme.id,theme.title))},{});(themes.subdirs||[]).forEach(function(group){Object.assign(names,ThemeUtils.getThemeNames(group))});return names},themeFlagsAllowed:function themeFlagsAllowed(theme,flagWhitelist,flagBlacklist){var themeFlags=(theme===null||theme===void 0?void 0:theme.flags)||[];if(flagBlacklist&&flagBlacklist.find(function(flag){return themeFlags.includes(flag)})!==undefined){return false}if(flagWhitelist&&flagWhitelist.find(function(flag){return themeFlags.includes(flag)})===undefined){return false}return true},allowedItems:function allowedItems(items,theme){var filter=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;return(items||[]).map(function(item){if(item.subitems){var subitems=ThemeUtils.allowedItems(item.subitems,theme,filter).filter(Boolean);if(!isEmpty(subitems)){return _objectSpread(_objectSpread({},item),{},{subitems:subitems})}else{return null}}else{if(filter&&!filter(item)){return null}if(theme){if(!ThemeUtils.themeFlagsAllowed(theme,item.themeFlagWhitelist,item.themeFlagBlacklist)){return null}if(item.themeBlacklist&&(item.themeBlacklist.includes(theme.title)||item.themeBlacklist.includes(theme.name))){return null}if(item.themeWhitelist&&!(item.themeWhitelist.includes(theme.title)||item.themeWhitelist.includes(theme.name))){return null}if(item.requireAuth&&!ConfigUtils.getConfigProp("username")){return null}}return item}}).filter(Boolean)},applyTranslations:function applyTranslations(group){return _objectSpread(_objectSpread({},group),{},{subdirs:group.subdirs?group.subdirs.map(ThemeUtils.applyTranslations):null,items:group.items?group.items.map(function(item){var _item$translations$th,_item$translations;return _objectSpread(_objectSpread({},LayerUtils.applyTranslations(item,item.translations)),{},{title:(_item$translations$th=(_item$translations=item.translations)===null||_item$translations===void 0||(_item$translations=_item$translations.theme)===null||_item$translations===void 0?void 0:_item$translations.title)!==null&&_item$translations$th!==void 0?_item$translations$th:item.title})}):null})}};export default ThemeUtils;
20
+ */
21
+
22
+ import { remove as removeDiacritics } from 'diacritics';
23
+ import isEmpty from 'lodash.isempty';
24
+ import url from 'url';
25
+ import { v4 as uuidv4 } from 'uuid';
26
+ import { LayerRole } from '../actions/layers';
27
+ import { SearchResultType } from '../utils/SearchProviders';
28
+ import ConfigUtils from './ConfigUtils';
29
+ import LayerUtils from './LayerUtils';
30
+ var ThemeUtils = {
31
+ getThemeById: function getThemeById(themes, id) {
32
+ for (var i = 0, n = themes.items.length; i < n; ++i) {
33
+ if (themes.items[i].id === id) {
34
+ return themes.items[i];
35
+ }
36
+ }
37
+ for (var _i = 0, _n = themes.subdirs.length; _i < _n; ++_i) {
38
+ var theme = this.getThemeById(themes.subdirs[_i], id);
39
+ if (theme) {
40
+ return theme;
41
+ }
42
+ }
43
+ return null;
44
+ },
45
+ createThemeBackgroundLayers: function createThemeBackgroundLayers(backgroundLayers, themes, visibleLayer, externalLayers) {
46
+ var bgLayers = [];
47
+ var visibleIdx = -1;
48
+ var defaultVisibleIdx = -1;
49
+ var _iterator = _createForOfIteratorHelper(backgroundLayers),
50
+ _step;
51
+ try {
52
+ var _loop = function _loop() {
53
+ var entry = _step.value;
54
+ if (!entry.name) {
55
+ return 1; // continue
56
+ }
57
+ var bgLayer = themes.backgroundLayers.find(function (lyr) {
58
+ return lyr.name === entry.name;
59
+ });
60
+ if (bgLayer) {
61
+ if (entry.visibility === true) {
62
+ defaultVisibleIdx = bgLayers.length;
63
+ }
64
+ if (bgLayer.name === visibleLayer) {
65
+ visibleIdx = bgLayers.length;
66
+ }
67
+ bgLayer = _objectSpread(_objectSpread({}, bgLayer), {}, {
68
+ role: LayerRole.BACKGROUND,
69
+ thumbnail: bgLayer.thumbnail || "img/mapthumbs/default.jpg",
70
+ visibility: false,
71
+ opacity: bgLayer.opacity !== undefined ? bgLayer.opacity : 255
72
+ });
73
+ if (bgLayer.resource) {
74
+ bgLayer.id = uuidv4();
75
+ bgLayer.type = "placeholder";
76
+ var params = LayerUtils.splitLayerUrlParam(bgLayer.resource);
77
+ params.id = bgLayer.id;
78
+ var key = params.type + ":" + params.url;
79
+ (externalLayers[key] = externalLayers[key] || []).push(params);
80
+ delete bgLayer.resource;
81
+ } else if (bgLayer.type === "wms") {
82
+ bgLayer.version = bgLayer.params.VERSION || bgLayer.version || themes.defaultWMSVersion || "1.3.0";
83
+ } else if (bgLayer.type === "group") {
84
+ bgLayer.items = bgLayer.items.map(function (item) {
85
+ if (item.ref) {
86
+ var sublayer = themes.backgroundLayers.find(function (l) {
87
+ return l.name === item.ref;
88
+ });
89
+ if (sublayer) {
90
+ item = _objectSpread(_objectSpread(_objectSpread({}, item), sublayer), LayerUtils.buildWMSLayerParams(sublayer));
91
+ if (item.type === "wms") {
92
+ item.version = item.params.VERSION || item.version || themes.defaultWMSVersion || "1.3.0";
93
+ }
94
+ delete item.ref;
95
+ } else {
96
+ item = null;
97
+ }
98
+ }
99
+ return item;
100
+ }).filter(function (x) {
101
+ return x;
102
+ });
103
+ }
104
+ bgLayers.push(bgLayer);
105
+ } else {
106
+ // eslint-disable-next-line
107
+ console.warn("Could not find background layer " + entry.name);
108
+ }
109
+ };
110
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
111
+ if (_loop()) continue;
112
+ }
113
+ } catch (err) {
114
+ _iterator.e(err);
115
+ } finally {
116
+ _iterator.f();
117
+ }
118
+ if (visibleIdx >= 0) {
119
+ bgLayers[visibleIdx].visibility = true;
120
+ } else if (defaultVisibleIdx >= 0 && visibleLayer !== "") {
121
+ bgLayers[defaultVisibleIdx].visibility = true;
122
+ }
123
+ return bgLayers;
124
+ },
125
+ createThemeLayer: function createThemeLayer(theme, themes) {
126
+ var role = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : LayerRole.THEME;
127
+ var subLayers = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
128
+ var urlParts = url.parse(theme.url, true);
129
+ // Resolve relative urls
130
+ if (!urlParts.host) {
131
+ var locationParts = url.parse(window.location.href);
132
+ urlParts.protocol = locationParts.protocol;
133
+ urlParts.host = locationParts.host;
134
+ }
135
+ var sublayerNames = LayerUtils.getSublayerNames({
136
+ sublayers: subLayers !== null && subLayers !== void 0 ? subLayers : theme.sublayers
137
+ });
138
+ var baseParams = urlParts.query;
139
+ var layer = {
140
+ type: "wms",
141
+ id: theme.id,
142
+ url: url.format(urlParts),
143
+ version: theme.version || themes.defaultWMSVersion || "1.3.0",
144
+ visibility: true,
145
+ expanded: theme.expanded,
146
+ name: theme.name,
147
+ title: theme.title,
148
+ bbox: theme.bbox,
149
+ sublayers: subLayers !== null && subLayers !== void 0 ? subLayers : theme.sublayers,
150
+ tiled: theme.tiled,
151
+ tileSize: theme.tileSize,
152
+ ratio: !theme.tiled ? 1 : undefined,
153
+ serverType: 'qgis',
154
+ format: theme.format,
155
+ rev: +new Date(),
156
+ role: role,
157
+ attribution: theme.attribution,
158
+ legendUrl: ThemeUtils.inheritBaseUrlParams(theme.legendUrl, theme.url, baseParams),
159
+ printUrl: ThemeUtils.inheritBaseUrlParams(theme.printUrl, theme.url, baseParams),
160
+ featureInfoUrl: ThemeUtils.inheritBaseUrlParams(theme.featureInfoUrl, theme.url, baseParams),
161
+ infoFormats: theme.infoFormats,
162
+ mapFormats: theme.availableFormats,
163
+ layerTreeHiddenSublayers: theme.layerTreeHiddenSublayers,
164
+ predefinedFilters: (theme.predefinedFilters || []).filter(function (entry) {
165
+ return Object.keys(entry.filter).find(function (name) {
166
+ return sublayerNames.includes(name);
167
+ });
168
+ }),
169
+ externalLayerMap: _objectSpread(_objectSpread({}, theme.externalLayerMap), (theme.externalLayers || []).reduce(function (res, cur) {
170
+ res[cur.internalLayer] = _objectSpread({}, themes.externalLayers.find(function (entry) {
171
+ return entry.name === cur.name;
172
+ }));
173
+ LayerUtils.completeExternalLayer(res[cur.internalLayer], LayerUtils.searchSubLayer(theme, 'name', cur.internalLayer));
174
+ return res;
175
+ }, {})),
176
+ translations: theme.translations
177
+ };
178
+ layer = LayerUtils.recomputeLayerBBox(layer);
179
+ // Drawing order only makes sense if layer reordering is disabled
180
+ if (ConfigUtils.getConfigProp("allowReorderingLayers", theme) !== true) {
181
+ layer.drawingOrder = theme.drawingOrder;
182
+ }
183
+ return layer;
184
+ },
185
+ inheritBaseUrlParams: function inheritBaseUrlParams(capabilityUrl, baseUrl, baseParams) {
186
+ if (!capabilityUrl) {
187
+ return baseUrl;
188
+ }
189
+ if (capabilityUrl.split("?")[0] === baseUrl.split("?")[0]) {
190
+ var parts = url.parse(capabilityUrl, true);
191
+ parts.query = _objectSpread(_objectSpread({}, baseParams), parts.query);
192
+ return url.format(parts);
193
+ }
194
+ return capabilityUrl;
195
+ },
196
+ searchThemes: function searchThemes(themes, searchtext) {
197
+ var filter = new RegExp(removeDiacritics(searchtext).replace(/[-[\]/{}()*+?.\\^$|]/g, "\\$&"), "i");
198
+ var matches = [];
199
+ var _searchThemeGroup = function searchThemeGroup(themeGroup) {
200
+ (themeGroup.subdirs || []).forEach(function (subdir) {
201
+ return _searchThemeGroup(subdir, filter);
202
+ });
203
+ matches.push.apply(matches, _toConsumableArray((themeGroup.items || []).filter(function (item) {
204
+ return removeDiacritics(item.title).match(filter) || removeDiacritics(item.keywords || "").match(filter) || removeDiacritics(item["abstract"] || "").match(filter);
205
+ })));
206
+ };
207
+ _searchThemeGroup(themes, filter);
208
+ return isEmpty(matches) ? [] : [{
209
+ id: "themes",
210
+ titlemsgid: "search.themes",
211
+ type: SearchResultType.THEME,
212
+ items: matches.map(function (theme) {
213
+ return {
214
+ id: theme.id,
215
+ text: theme.title,
216
+ theme: theme,
217
+ layer: ThemeUtils.createThemeLayer(theme, themes),
218
+ thumbnail: ConfigUtils.getAssetsPath() + "/" + theme.thumbnail
219
+ };
220
+ })
221
+ }];
222
+ },
223
+ searchThemeLayers: function searchThemeLayers(themes, searchtext) {
224
+ var filter = new RegExp(removeDiacritics(searchtext).replace(/[-[\]/{}()*+?.\\^$|]/g, "\\$&"), "i");
225
+ var matches = [];
226
+ var _searchLayer = function searchLayer(theme, layer) {
227
+ var path = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
228
+ (layer.sublayers || []).forEach(function (sublayer, idx) {
229
+ var subpath = [].concat(_toConsumableArray(path), [idx]);
230
+ if (removeDiacritics(sublayer.name).match(filter) || removeDiacritics(sublayer.title).match(filter)) {
231
+ // Clone theme, ensuring path to layer is visible
232
+ var newtheme = _objectSpread({}, theme);
233
+ var cur = newtheme;
234
+ var _loop2 = function _loop2(i) {
235
+ var isMutuallyExclusive = cur.mutuallyExclusive;
236
+ cur.sublayers = cur.sublayers.map(function (entry, j) {
237
+ return _objectSpread(_objectSpread({}, entry), {}, {
238
+ visibility: j === subpath[i] || entry.visibility && !isMutuallyExclusive
239
+ });
240
+ });
241
+ cur = cur.sublayers[subpath[i]];
242
+ };
243
+ for (var i = 0; i < subpath.length; ++i) {
244
+ _loop2(i);
245
+ }
246
+ matches.push({
247
+ theme: newtheme,
248
+ layer: ThemeUtils.createThemeLayer(newtheme, themes, LayerRole.USERLAYER, [cur])
249
+ });
250
+ }
251
+ _searchLayer(theme, sublayer, subpath);
252
+ });
253
+ };
254
+ var _searchThemeGroup2 = function searchThemeGroup(themeGroup) {
255
+ (themeGroup.subdirs || []).forEach(function (subdir) {
256
+ return _searchThemeGroup2(subdir, filter);
257
+ });
258
+ (themeGroup.items || []).forEach(function (item) {
259
+ return _searchLayer(item, item);
260
+ });
261
+ };
262
+ _searchThemeGroup2(themes, filter);
263
+ return isEmpty(matches) ? [] : [{
264
+ id: "themelayers",
265
+ titlemsgid: "search.themelayers",
266
+ type: SearchResultType.THEMELAYER,
267
+ items: matches.map(function (result) {
268
+ return {
269
+ id: result.layer.id + ":" + result.layer.sublayers[0].name,
270
+ text: result.layer.title + ": " + result.layer.sublayers[0].title,
271
+ layer: result.layer,
272
+ theme: result.theme
273
+ };
274
+ })
275
+ }];
276
+ },
277
+ getThemeNames: function getThemeNames(themes) {
278
+ var names = (themes.items || []).reduce(function (res, theme) {
279
+ return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, theme.id, theme.title));
280
+ }, {});
281
+ (themes.subdirs || []).forEach(function (group) {
282
+ Object.assign(names, ThemeUtils.getThemeNames(group));
283
+ });
284
+ return names;
285
+ },
286
+ themeFlagsAllowed: function themeFlagsAllowed(theme, flagWhitelist, flagBlacklist) {
287
+ var themeFlags = (theme === null || theme === void 0 ? void 0 : theme.flags) || [];
288
+ if (flagBlacklist && flagBlacklist.find(function (flag) {
289
+ return themeFlags.includes(flag);
290
+ }) !== undefined) {
291
+ return false;
292
+ }
293
+ if (flagWhitelist && flagWhitelist.find(function (flag) {
294
+ return themeFlags.includes(flag);
295
+ }) === undefined) {
296
+ return false;
297
+ }
298
+ return true;
299
+ },
300
+ allowedItems: function allowedItems(items, theme) {
301
+ var filter = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
302
+ return (items || []).map(function (item) {
303
+ if (item.subitems) {
304
+ var subitems = ThemeUtils.allowedItems(item.subitems, theme, filter).filter(Boolean);
305
+ if (!isEmpty(subitems)) {
306
+ return _objectSpread(_objectSpread({}, item), {}, {
307
+ subitems: subitems
308
+ });
309
+ } else {
310
+ return null;
311
+ }
312
+ } else {
313
+ if (filter && !filter(item)) {
314
+ return null;
315
+ }
316
+ if (theme) {
317
+ if (!ThemeUtils.themeFlagsAllowed(theme, item.themeFlagWhitelist, item.themeFlagBlacklist)) {
318
+ return null;
319
+ }
320
+ if (item.themeBlacklist && (item.themeBlacklist.includes(theme.title) || item.themeBlacklist.includes(theme.name))) {
321
+ return null;
322
+ }
323
+ if (item.themeWhitelist && !(item.themeWhitelist.includes(theme.title) || item.themeWhitelist.includes(theme.name))) {
324
+ return null;
325
+ }
326
+ if (item.requireAuth && !ConfigUtils.getConfigProp("username")) {
327
+ return null;
328
+ }
329
+ }
330
+ return item;
331
+ }
332
+ }).filter(Boolean);
333
+ },
334
+ applyTranslations: function applyTranslations(group) {
335
+ return _objectSpread(_objectSpread({}, group), {}, {
336
+ subdirs: group.subdirs ? group.subdirs.map(ThemeUtils.applyTranslations) : null,
337
+ items: group.items ? group.items.map(function (item) {
338
+ var _item$translations$th, _item$translations;
339
+ return _objectSpread(_objectSpread({}, LayerUtils.applyTranslations(item, item.translations)), {}, {
340
+ title: (_item$translations$th = (_item$translations = item.translations) === null || _item$translations === void 0 || (_item$translations = _item$translations.theme) === null || _item$translations === void 0 ? void 0 : _item$translations.title) !== null && _item$translations$th !== void 0 ? _item$translations$th : item.title
341
+ });
342
+ }) : null
343
+ });
344
+ }
345
+ };
346
+ export default ThemeUtils;