qwc2 2025.12.18 → 2025.12.24

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 (71) hide show
  1. package/actions/display.js +6 -6
  2. package/actions/theme.js +4 -19
  3. package/components/AppMenu.js +1 -1
  4. package/components/AttributeForm.js +7 -7
  5. package/components/AttributeTableWidget.js +2 -2
  6. package/components/AutoEditForm.js +6 -3
  7. package/components/EditComboField.js +1 -4
  8. package/components/IdentifyViewer.js +33 -34
  9. package/components/ImportLayer.js +78 -79
  10. package/components/OverviewMapButton.js +147 -0
  11. package/components/PluginsContainer.js +2 -2
  12. package/components/ResizeableWindow.js +8 -1
  13. package/components/SearchBox.js +2 -2
  14. package/components/SideBar.js +1 -0
  15. package/components/StandardApp.js +1 -2
  16. package/components/ThemeLayersListWindow.js +10 -1
  17. package/components/{map3d/View3DSwitcher.js → ViewSwitcher.js} +74 -29
  18. package/components/map/OlMap.js +1 -1
  19. package/components/map3d/Map3D.js +50 -48
  20. package/components/map3d/MapControls3D.js +4 -1
  21. package/components/map3d/drawtool/EditTool3D.js +1 -1
  22. package/components/map3d/layers/WFSLayer3D.js +1 -1
  23. package/components/share/ShareQRCode.js +1 -1
  24. package/{plugins/map3d/style/OverviewMap3D.css → components/style/OverviewMapButton.css} +4 -4
  25. package/components/style/ViewSwitcher.css +36 -0
  26. package/components/widgets/ColorButton.js +2 -2
  27. package/components/widgets/CopyButton.js +1 -1
  28. package/components/widgets/LayerCatalogWidget.js +4 -4
  29. package/libs/openlayers.js +11 -11
  30. package/package.json +54 -55
  31. package/plugins/API.js +4 -4
  32. package/plugins/FeatureForm.js +2 -2
  33. package/plugins/FeatureSearch.js +12 -12
  34. package/plugins/GeometryDigitizer.js +12 -13
  35. package/plugins/Map.js +11 -4
  36. package/plugins/MapFilter.js +12 -12
  37. package/plugins/MapTip.js +1 -1
  38. package/plugins/ObliqueView.js +115 -51
  39. package/plugins/Print.js +79 -91
  40. package/plugins/Routing.js +1 -1
  41. package/plugins/Share.js +5 -5
  42. package/plugins/TimeManager.js +1 -2
  43. package/plugins/View3D.js +135 -123
  44. package/plugins/map/RedliningSupport.js +3 -3
  45. package/plugins/map3d/Draw3D.js +4 -4
  46. package/plugins/map3d/ExportObjects3D.js +1 -1
  47. package/plugins/map3d/HideObjects3D.js +7 -7
  48. package/plugins/map3d/Identify3D.js +1 -1
  49. package/plugins/map3d/LayerTree3D.js +1 -1
  50. package/plugins/map3d/MapExport3D.js +25 -25
  51. package/plugins/map3d/Measure3D.js +1 -1
  52. package/plugins/map3d/OverviewMap3D.js +27 -102
  53. package/plugins/map3d/TopBar3D.js +7 -7
  54. package/plugins/style/ObliqueView.css +27 -11
  55. package/reducers/display.js +2 -2
  56. package/reducers/layers.js +11 -11
  57. package/scripts/gen-plugin-docs.js +11 -4
  58. package/scripts/makeIconkit.js +2 -2
  59. package/scripts/themesConfig.js +5 -5
  60. package/scripts/updateTranslations.js +2 -2
  61. package/utils/CoordinatesUtils.js +1 -1
  62. package/utils/EditingUtils.js +6 -6
  63. package/utils/FeatureStyles.js +1 -1
  64. package/utils/LayerUtils.js +73 -74
  65. package/utils/MiscUtils.js +10 -3
  66. package/utils/PermaLinkUtils.js +68 -71
  67. package/utils/SearchProviders.js +2 -2
  68. package/utils/ServiceLayerUtils.js +12 -12
  69. package/utils/ThemeUtils.js +1 -1
  70. package/utils/VectorLayerUtils.js +3 -3
  71. package/components/map3d/style/View3DSwitcher.css +0 -19
@@ -5,7 +5,9 @@ function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Sym
5
5
  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
6
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
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 _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
8
+ function _regeneratorKeys(e) { var n = Object(e), r = []; for (var t in n) r.unshift(t); return function e() { for (; r.length;) if ((t = r.pop()) in n) return e.value = t, e.done = !1, e; return e.done = !0, e; }; }
9
+ function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
10
+ function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
9
11
  function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
10
12
  function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
11
13
  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; } } }; }
@@ -261,7 +263,7 @@ var ImportLayer = /*#__PURE__*/function (_React$Component) {
261
263
  try {
262
264
  data = JSON.parse(ev.target.result);
263
265
  _this.addGeoJSONLayer(file.name, data);
264
- } catch (e) {
266
+ } catch (_unused) {
265
267
  /* Pass */
266
268
  }
267
269
  } else if (file.name.toLowerCase().endsWith(".pdf")) {
@@ -284,51 +286,49 @@ var ImportLayer = /*#__PURE__*/function (_React$Component) {
284
286
  });
285
287
  });
286
288
  _defineProperty(_this, "addKMZLayer", /*#__PURE__*/function () {
287
- var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(file) {
288
- var _yield$import, _BrowserFileSystem, load, _yield$import2, ZipLoader, fileMap, fileName, decoder;
289
- return _regeneratorRuntime().wrap(function _callee$(_context) {
290
- while (1) switch (_context.prev = _context.next) {
289
+ var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(file) {
290
+ var _yield$import, load, _yield$import2, ZipLoader, fileMap, fileName, decoder, _t, _t2;
291
+ return _regenerator().w(function (_context) {
292
+ while (1) switch (_context.n) {
291
293
  case 0:
292
- _context.next = 2;
294
+ _context.n = 1;
293
295
  return import('@loaders.gl/core');
294
- case 2:
295
- _yield$import = _context.sent;
296
- _BrowserFileSystem = _yield$import._BrowserFileSystem;
296
+ case 1:
297
+ _yield$import = _context.v;
297
298
  load = _yield$import.load;
298
- _context.next = 7;
299
+ _context.n = 2;
299
300
  return import('@loaders.gl/zip');
300
- case 7:
301
- _yield$import2 = _context.sent;
301
+ case 2:
302
+ _yield$import2 = _context.v;
302
303
  ZipLoader = _yield$import2.ZipLoader;
303
- _context.next = 11;
304
+ _context.n = 3;
304
305
  return load(file, ZipLoader);
305
- case 11:
306
- fileMap = _context.sent;
307
- _context.t0 = _regeneratorRuntime().keys(fileMap);
308
- case 13:
309
- if ((_context.t1 = _context.t0()).done) {
310
- _context.next = 21;
306
+ case 3:
307
+ fileMap = _context.v;
308
+ _t = _regeneratorKeys(fileMap);
309
+ case 4:
310
+ if ((_t2 = _t()).done) {
311
+ _context.n = 6;
311
312
  break;
312
313
  }
313
- fileName = _context.t1.value;
314
+ fileName = _t2.value;
314
315
  if (!(fileName === "doc.kml")) {
315
- _context.next = 19;
316
+ _context.n = 5;
316
317
  break;
317
318
  }
318
319
  decoder = new TextDecoder();
319
320
  _this.addKMLLayer(file.name, decoder.decode(fileMap[fileName]));
320
- return _context.abrupt("break", 21);
321
- case 19:
322
- _context.next = 13;
321
+ return _context.a(3, 6);
322
+ case 5:
323
+ _context.n = 4;
323
324
  break;
324
- case 21:
325
+ case 6:
325
326
  _this.setState({
326
327
  file: null,
327
328
  addingLayer: false
328
329
  });
329
- case 22:
330
- case "end":
331
- return _context.stop();
330
+ case 7:
331
+ return _context.a(2);
332
332
  }
333
333
  }, _callee);
334
334
  }));
@@ -482,46 +482,46 @@ var ImportLayer = /*#__PURE__*/function (_React$Component) {
482
482
  reader.readAsDataURL(file);
483
483
  });
484
484
  _defineProperty(_this, "addSHPLayer", /*#__PURE__*/function () {
485
- var _ref6 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(file) {
486
- var _yield$import3, _BrowserFileSystem, load, _yield$import4, Proj4Projection, _yield$import5, ShapefileLoader, _yield$import6, ZipLoader, mimeTypes, projections, fileMap, EXTENSIONS, files, fileName, name, ext, fileList, blob, f, list, fileSystem, fetch, filename, data;
487
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
488
- while (1) switch (_context2.prev = _context2.next) {
485
+ var _ref6 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(file) {
486
+ var _yield$import3, _BrowserFileSystem, load, _yield$import4, Proj4Projection, _yield$import5, ShapefileLoader, _yield$import6, ZipLoader, mimeTypes, projections, fileMap, EXTENSIONS, files, fileName, name, ext, fileList, blob, f, list, fileSystem, fetch, filename, data, _t3, _t4, _t5, _t6;
487
+ return _regenerator().w(function (_context2) {
488
+ while (1) switch (_context2.p = _context2.n) {
489
489
  case 0:
490
- _context2.next = 2;
490
+ _context2.n = 1;
491
491
  return import('@loaders.gl/core');
492
- case 2:
493
- _yield$import3 = _context2.sent;
492
+ case 1:
493
+ _yield$import3 = _context2.v;
494
494
  _BrowserFileSystem = _yield$import3._BrowserFileSystem;
495
495
  load = _yield$import3.load;
496
- _context2.next = 7;
496
+ _context2.n = 2;
497
497
  return import('@math.gl/proj4');
498
- case 7:
499
- _yield$import4 = _context2.sent;
498
+ case 2:
499
+ _yield$import4 = _context2.v;
500
500
  Proj4Projection = _yield$import4.Proj4Projection;
501
- _context2.next = 11;
501
+ _context2.n = 3;
502
502
  return import('@loaders.gl/shapefile');
503
- case 11:
504
- _yield$import5 = _context2.sent;
503
+ case 3:
504
+ _yield$import5 = _context2.v;
505
505
  ShapefileLoader = _yield$import5.ShapefileLoader;
506
- _context2.next = 15;
506
+ _context2.n = 4;
507
507
  return import('@loaders.gl/zip');
508
- case 15:
509
- _yield$import6 = _context2.sent;
508
+ case 4:
509
+ _yield$import6 = _context2.v;
510
510
  ZipLoader = _yield$import6.ZipLoader;
511
511
  // Import SHP layer from ZIP. Zip must contain all the required files : shp, dbf, shx, prj, cpg
512
512
  mimeTypes = ['application/zip', 'application/zip-compressed', 'application/x-zip-compressed'];
513
513
  if (!mimeTypes.includes(file.type)) {
514
- _context2.next = 58;
514
+ _context2.n = 16;
515
515
  break;
516
516
  }
517
517
  projections = ConfigUtils.getConfigProp("projections") || [];
518
518
  if (projections) {
519
519
  Proj4Projection.defineProjectionAliases(projections);
520
520
  }
521
- _context2.next = 23;
521
+ _context2.n = 5;
522
522
  return load(file, ZipLoader);
523
- case 23:
524
- fileMap = _context2.sent;
523
+ case 5:
524
+ fileMap = _context2.v;
525
525
  EXTENSIONS = ['shp', 'shx', 'dbf', 'cpg', 'prj'];
526
526
  files = {}; // Iterate through all the files in ZIP to get a list of (SHP + sidecar files) by filename
527
527
  for (fileName in fileMap) {
@@ -538,15 +538,15 @@ var ImportLayer = /*#__PURE__*/function (_React$Component) {
538
538
  }
539
539
  }
540
540
  // Load each SHP with sidecar files as GeoJSON features
541
- _context2.t0 = _regeneratorRuntime().keys(files);
542
- case 28:
543
- if ((_context2.t1 = _context2.t0()).done) {
544
- _context2.next = 57;
541
+ _t3 = _regeneratorKeys(files);
542
+ case 6:
543
+ if ((_t4 = _t3()).done) {
544
+ _context2.n = 15;
545
545
  break;
546
546
  }
547
- f = _context2.t1.value;
547
+ f = _t4.value;
548
548
  if (!Object.hasOwn(files, f)) {
549
- _context2.next = 55;
549
+ _context2.n = 14;
550
550
  break;
551
551
  }
552
552
  list = files[f];
@@ -554,8 +554,8 @@ var ImportLayer = /*#__PURE__*/function (_React$Component) {
554
554
  fetch = fileSystem.fetch.bind(fileSystem.fetch);
555
555
  filename = "".concat(f, ".shp"); // Load SHP and reproject to mapCrs
556
556
  data = null;
557
- _context2.prev = 36;
558
- _context2.next = 39;
557
+ _context2.p = 7;
558
+ _context2.n = 8;
559
559
  return load(filename, ShapefileLoader, {
560
560
  fetch: fetch,
561
561
  shapefile: {
@@ -567,15 +567,15 @@ var ImportLayer = /*#__PURE__*/function (_React$Component) {
567
567
  _targetCrs: _this.props.mapCrs
568
568
  }
569
569
  });
570
- case 39:
571
- data = _context2.sent;
572
- _context2.next = 54;
570
+ case 8:
571
+ data = _context2.v;
572
+ _context2.n = 13;
573
573
  break;
574
- case 42:
575
- _context2.prev = 42;
576
- _context2.t2 = _context2["catch"](36);
577
- _context2.prev = 44;
578
- _context2.next = 47;
574
+ case 9:
575
+ _context2.p = 9;
576
+ _t5 = _context2.v;
577
+ _context2.p = 10;
578
+ _context2.n = 11;
579
579
  return load(filename, ShapefileLoader, {
580
580
  fetch: fetch,
581
581
  shapefile: {
@@ -587,17 +587,17 @@ var ImportLayer = /*#__PURE__*/function (_React$Component) {
587
587
  _targetCrs: _this.props.mapCrs
588
588
  }
589
589
  });
590
- case 47:
591
- data = _context2.sent;
590
+ case 11:
591
+ data = _context2.v;
592
592
  /* eslint-disable-next-line */
593
593
  alert(LocaleUtils.tr("importlayer.shpreprojectionerror"));
594
- _context2.next = 54;
594
+ _context2.n = 13;
595
595
  break;
596
- case 51:
597
- _context2.prev = 51;
598
- _context2.t3 = _context2["catch"](44);
596
+ case 12:
597
+ _context2.p = 12;
598
+ _t6 = _context2.v;
599
599
  data = null;
600
- case 54:
600
+ case 13:
601
601
  if (data) {
602
602
  data.crs = {
603
603
  type: "name",
@@ -608,19 +608,18 @@ var ImportLayer = /*#__PURE__*/function (_React$Component) {
608
608
  // Add data as GeoJSON layer
609
609
  _this.addGeoJSONLayer(f, data);
610
610
  }
611
- case 55:
612
- _context2.next = 28;
611
+ case 14:
612
+ _context2.n = 6;
613
613
  break;
614
- case 57:
614
+ case 15:
615
615
  _this.setState({
616
616
  file: null,
617
617
  addingLayer: false
618
618
  });
619
- case 58:
620
- case "end":
621
- return _context2.stop();
619
+ case 16:
620
+ return _context2.a(2);
622
621
  }
623
- }, _callee2, null, [[36, 42], [44, 51]]);
622
+ }, _callee2, null, [[10, 12], [7, 9]]);
624
623
  }));
625
624
  return function (_x2) {
626
625
  return _ref6.apply(this, arguments);
@@ -0,0 +1,147 @@
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 _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
5
+ 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); } }
6
+ function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
7
+ function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
8
+ function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); }
9
+ function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
10
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
11
+ function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
12
+ function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); }
13
+ function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
14
+ 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; }
15
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
16
+ 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); }
17
+ /**
18
+ * Copyright 2024 Sourcepole AG
19
+ * All rights reserved.
20
+ *
21
+ * This source code is licensed under the BSD-style license found in the
22
+ * LICENSE file in the root directory of this source tree.
23
+ */
24
+
25
+ import React from 'react';
26
+ import ol from 'openlayers';
27
+ import PropTypes from 'prop-types';
28
+ import viewconeIcon from '../resources/viewcone.svg';
29
+ import OlLayer from './map/OlLayer';
30
+ import './style/OverviewMapButton.css';
31
+ var OverviewMapButton = /*#__PURE__*/function (_React$Component) {
32
+ function OverviewMapButton(props) {
33
+ var _this;
34
+ _classCallCheck(this, OverviewMapButton);
35
+ _this = _callSuper(this, OverviewMapButton, [props]);
36
+ _defineProperty(_this, "state", {
37
+ collapsed: true
38
+ });
39
+ _defineProperty(_this, "initOverviewMap", function (el) {
40
+ if (el) {
41
+ _this.map = new ol.Map({
42
+ layers: [_this.viewConeLayer],
43
+ controls: [],
44
+ target: el
45
+ });
46
+ _this.setupView();
47
+ }
48
+ });
49
+ _defineProperty(_this, "setupView", function () {
50
+ var overviewView = new ol.View({
51
+ enableRotation: false,
52
+ projection: _this.props.projection
53
+ });
54
+ _this.map.setView(overviewView);
55
+ _this.updateViewCone();
56
+ });
57
+ _defineProperty(_this, "updateViewCone", function () {
58
+ if (_this.props.center) {
59
+ _this.map.getView().setCenter(_this.props.center);
60
+ _this.map.getView().setResolution(_this.props.resolution);
61
+ _this.viewConeFeature.getGeometry().setCoordinates(_this.props.center);
62
+ _this.viewConeFeature.set('rotation', _this.props.coneRotation, true);
63
+ _this.viewConeLayer.getSource().changed();
64
+ }
65
+ });
66
+ _this.map = null;
67
+ _this.viewConeFeature = new ol.Feature(new ol.geom.Point([0, 0]));
68
+ _this.viewConeLayer = new ol.layer.Vector({
69
+ source: new ol.source.Vector({
70
+ features: [_this.viewConeFeature]
71
+ }),
72
+ style: function style(feature) {
73
+ return new ol.style.Style({
74
+ fill: new ol.style.Fill({
75
+ color: 'white'
76
+ }),
77
+ stroke: new ol.style.Stroke({
78
+ color: 'red',
79
+ width: 2
80
+ }),
81
+ image: new ol.style.Icon({
82
+ anchor: [0.5, 1],
83
+ anchorXUnits: 'fraction',
84
+ anchorYUnits: 'fraction',
85
+ src: viewconeIcon,
86
+ rotation: feature.get('rotation'),
87
+ scale: 2
88
+ })
89
+ });
90
+ },
91
+ zIndex: 10000
92
+ });
93
+ return _this;
94
+ }
95
+ _inherits(OverviewMapButton, _React$Component);
96
+ return _createClass(OverviewMapButton, [{
97
+ key: "componentDidUpdate",
98
+ value: function componentDidUpdate(prevProps, prevState) {
99
+ if (this.props.projection !== prevProps.projection) {
100
+ this.setupView();
101
+ }
102
+ if (this.map && (this.props.center !== prevProps.center || this.props.resolution !== prevProps.resolution || this.props.coneRotation !== prevProps.coneRotation)) {
103
+ this.updateViewCone();
104
+ }
105
+ }
106
+ }, {
107
+ key: "render",
108
+ value: function render() {
109
+ var _this2 = this;
110
+ var style = {
111
+ display: this.state.collapsed ? 'none' : 'initial'
112
+ };
113
+ return [/*#__PURE__*/React.createElement("div", {
114
+ className: "overview-map",
115
+ key: "OverivewMap"
116
+ }, /*#__PURE__*/React.createElement("div", {
117
+ className: "ol-overviewmap-map",
118
+ ref: this.initOverviewMap,
119
+ style: style
120
+ }), /*#__PURE__*/React.createElement("button", {
121
+ onClick: function onClick() {
122
+ return _this2.setState(function (state) {
123
+ return {
124
+ collapsed: !state.collapsed
125
+ };
126
+ });
127
+ },
128
+ type: "button"
129
+ }, this.state.collapsed ? '«' : '»')), this.map && this.props.layer ? /*#__PURE__*/React.createElement(OlLayer, {
130
+ key: this.props.layer.name,
131
+ map: this.map,
132
+ options: _objectSpread(_objectSpread({}, this.props.layer), {}, {
133
+ visibility: true
134
+ }),
135
+ projection: this.props.projection
136
+ }) : null];
137
+ }
138
+ }]);
139
+ }(React.Component);
140
+ _defineProperty(OverviewMapButton, "propTypes", {
141
+ center: PropTypes.array,
142
+ coneRotation: PropTypes.number,
143
+ layer: PropTypes.object,
144
+ projection: PropTypes.string,
145
+ resolution: PropTypes.number
146
+ });
147
+ export { OverviewMapButton as default };
@@ -60,8 +60,8 @@ var PluginsContainer = /*#__PURE__*/function (_React$Component) {
60
60
  var device = ConfigUtils.isMobile() ? 'mobile' : 'desktop';
61
61
  var plugins = PluginStore.getPlugins();
62
62
  return _toConsumableArray(_this.props.pluginsConfig).sort(function (a, b) {
63
- var _ref, _a$order;
64
- return (_ref = (_a$order = a.order) !== null && _a$order !== void 0 ? _a$order : 0 - b.order) !== null && _ref !== void 0 ? _ref : 0;
63
+ var _a$order, _b$order;
64
+ return ((_a$order = a.order) !== null && _a$order !== void 0 ? _a$order : 0) - ((_b$order = b.order) !== null && _b$order !== void 0 ? _b$order : 0);
65
65
  }).map(function (pluginConf) {
66
66
  var _this$props$theme, _this$props$theme2, _pluginConf$key;
67
67
  var Plugin = plugins[pluginConf.name + "Plugin"];
@@ -244,7 +244,8 @@ var ResizeableWindow = /*#__PURE__*/function (_React$Component) {
244
244
  className: bodyclasses,
245
245
  onMouseDown: function onMouseDown() {
246
246
  return _this.props.raiseWindow(_this.id);
247
- }
247
+ },
248
+ onScroll: _this.preventScroll
248
249
  }, /*#__PURE__*/React.createElement("div", {
249
250
  className: "resizeable-window-drag-shield",
250
251
  ref: function ref(el) {
@@ -256,6 +257,12 @@ var ResizeableWindow = /*#__PURE__*/function (_React$Component) {
256
257
  node: _this.portalNode
257
258
  })) : _this.props.children)));
258
259
  });
260
+ _defineProperty(_this, "preventScroll", function (ev) {
261
+ if (!_this.props.scrollable) {
262
+ ev.target.scrollLeft = 0;
263
+ ev.target.scrollTop = 0;
264
+ }
265
+ });
259
266
  _defineProperty(_this, "setInitialSize", function (container) {
260
267
  if (!container) {
261
268
  return;
@@ -1090,8 +1090,8 @@ var SearchBox = /*#__PURE__*/function (_React$Component) {
1090
1090
  styleName: 'marker'
1091
1091
  };
1092
1092
  if (!_this.props.searchOptions.hideResultLabels) {
1093
- var _ref10, _item$label2;
1094
- var _label = ((_ref10 = (_item$label2 = item.label) !== null && _item$label2 !== void 0 ? _item$label2 : item.text) !== null && _ref10 !== void 0 ? _ref10 : '').replace(/<\/?\w+\s*\/?>/g, '');
1093
+ var _ref0, _item$label2;
1094
+ var _label = ((_ref0 = (_item$label2 = item.label) !== null && _item$label2 !== void 0 ? _item$label2 : item.text) !== null && _ref0 !== void 0 ? _ref0 : '').replace(/<\/?\w+\s*\/?>/g, '');
1095
1095
  marker.properties = {
1096
1096
  label: _label
1097
1097
  };
@@ -149,6 +149,7 @@ var SideBar = /*#__PURE__*/function (_React$Component) {
149
149
  }, /*#__PURE__*/React.createElement("div", {
150
150
  className: "".concat(classes, " ").concat(this.props.extraClasses),
151
151
  id: this.props.id,
152
+ inert: !visible,
152
153
  ref: this.setRef,
153
154
  style: style
154
155
  }, /*#__PURE__*/React.createElement("div", {
@@ -120,7 +120,6 @@ var AppContainerComponent = /*#__PURE__*/function (_React$Component) {
120
120
  if (theme) {
121
121
  var _params$bl;
122
122
  // Compute initial view
123
- var initialView = params.v;
124
123
  var initialExtent = null;
125
124
  if (params.c && params.s !== undefined) {
126
125
  var coords = params.c.split(/[;,]/g).map(function (x) {
@@ -163,7 +162,7 @@ var AppContainerComponent = /*#__PURE__*/function (_React$Component) {
163
162
  if (layerParams && ConfigUtils.getConfigProp("urlReverseLayerOrder")) {
164
163
  layerParams.reverse();
165
164
  }
166
- _this.props.setCurrentTheme(theme, themes, false, initialExtent, layerParams, (_params$bl = params.bl) !== null && _params$bl !== void 0 ? _params$bl : null, state.layers, _this.props.appConfig.themeLayerRestorer, _this.props.appConfig.externalLayerRestorer, initialView);
165
+ _this.props.setCurrentTheme(theme, themes, false, initialExtent, layerParams, (_params$bl = params.bl) !== null && _params$bl !== void 0 ? _params$bl : null, state.layers, _this.props.appConfig.themeLayerRestorer, _this.props.appConfig.externalLayerRestorer);
167
166
  } else if (!ConfigUtils.havePlugin("Portal")) {
168
167
  _this.props.showNotification("missingdefaulttheme", LocaleUtils.tr("app.missingdefaulttheme", params.t), NotificationType.WARN, true);
169
168
  }
@@ -32,6 +32,7 @@ import React from 'react';
32
32
  import { connect } from 'react-redux';
33
33
  import isEmpty from 'lodash.isempty';
34
34
  import PropTypes from 'prop-types';
35
+ import url from 'url';
35
36
  import { LayerRole, addLayer } from '../actions/layers';
36
37
  import { setCurrentTask } from '../actions/task';
37
38
  import { setThemeLayersList } from '../actions/theme';
@@ -61,9 +62,17 @@ var ThemeLayersListWindow = /*#__PURE__*/function (_React$Component) {
61
62
  }));
62
63
  });
63
64
  _defineProperty(_this, "addLayers", function (sublayers) {
65
+ var urlParts = url.parse(_this.props.theme.url, true);
66
+ // Resolve relative urls
67
+ if (!urlParts.host) {
68
+ var locationParts = url.parse(window.location.href);
69
+ urlParts.protocol = locationParts.protocol;
70
+ urlParts.host = locationParts.host;
71
+ }
72
+ var themeUrl = url.format(urlParts);
64
73
  _this.props.closeWindow("existinglayers");
65
74
  var existingSublayers = _this.props.layers.reduce(function (res, layer) {
66
- if (layer.type === 'wms' && layer.url === _this.props.theme.url) {
75
+ if (layer.type === 'wms' && layer.url === themeUrl) {
67
76
  return [].concat(_toConsumableArray(res), _toConsumableArray(LayerUtils.getSublayerNames(layer)), [layer.name]);
68
77
  }
69
78
  return res;