qwc2 2026.8.9 → 2026.8.13

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 (43) hide show
  1. package/actions/bookmark.js +0 -15
  2. package/actions/localConfig.js +0 -7
  3. package/components/BookmarkPanel.js +121 -124
  4. package/components/Icon.js +2 -0
  5. package/components/IdentifyViewer.js +4 -2
  6. package/components/StandardApp.js +0 -5
  7. package/components/map3d/Map3D.js +10 -8
  8. package/components/style/BookmarkPanel.css +2 -0
  9. package/components/style/Icon.css +4 -0
  10. package/components/widgets/InputContainer.js +2 -29
  11. package/components/widgets/style/InputContainer.css +2 -1
  12. package/package.json +1 -1
  13. package/plugins/Bookmark.js +25 -19
  14. package/plugins/BottomBar.js +2 -2
  15. package/plugins/Identify.js +4 -1
  16. package/plugins/MapFilter.js +48 -34
  17. package/plugins/VisibilityPreset.js +34 -23
  18. package/reducers/localConfig.js +2 -21
  19. package/static/translations/bg-BG.json +8 -6
  20. package/static/translations/ca-ES.json +8 -6
  21. package/static/translations/cs-CZ.json +8 -6
  22. package/static/translations/de-CH.json +8 -6
  23. package/static/translations/de-DE.json +8 -6
  24. package/static/translations/en-US.json +8 -6
  25. package/static/translations/es-ES.json +8 -6
  26. package/static/translations/fi-FI.json +8 -6
  27. package/static/translations/fr-FR.json +8 -6
  28. package/static/translations/hu-HU.json +8 -6
  29. package/static/translations/it-IT.json +8 -6
  30. package/static/translations/ja-JP.json +8 -6
  31. package/static/translations/nl-NL.json +8 -6
  32. package/static/translations/no-NO.json +8 -6
  33. package/static/translations/pl-PL.json +8 -6
  34. package/static/translations/pt-BR.json +8 -6
  35. package/static/translations/pt-PT.json +8 -6
  36. package/static/translations/ro-RO.json +8 -6
  37. package/static/translations/ru-RU.json +8 -6
  38. package/static/translations/sv-SE.json +8 -6
  39. package/static/translations/tr-TR.json +8 -6
  40. package/static/translations/tsconfig.json +8 -6
  41. package/static/translations/uk-UA.json +8 -6
  42. package/utils/LayerUtils.js +18 -5
  43. package/utils/PermaLinkUtils.js +254 -286
@@ -15,13 +15,13 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
15
15
  import React from 'react';
16
16
  import { connect } from 'react-redux';
17
17
  import PropTypes from 'prop-types';
18
- import { refreshBookmarks } from '../actions/bookmark';
18
+ import { setBookmarks } from '../actions/bookmark';
19
19
  import { zoomToExtent, zoomToPoint } from "../actions/map";
20
20
  import BookmarkPanel from '../components/BookmarkPanel';
21
21
  import SideBar from '../components/SideBar';
22
22
  import LocaleUtils from "../utils/LocaleUtils";
23
23
  import MapUtils from "../utils/MapUtils";
24
- import { createBookmark, removeBookmark, renameBookmark, resolveBookmark, updateBookmark } from '../utils/PermaLinkUtils';
24
+ import { BookmarksInterface } from '../utils/PermaLinkUtils';
25
25
 
26
26
  /**
27
27
  * Allows managing user bookmarks which are storing the current view, including the location and zoom level.
@@ -39,32 +39,30 @@ var Bookmark = /*#__PURE__*/function (_React$Component) {
39
39
  }
40
40
  _this = _callSuper(this, Bookmark, [].concat(args));
41
41
  _defineProperty(_this, "translations", {
42
- add: LocaleUtils.tr("bookmark.add"),
43
42
  addfailed: LocaleUtils.tr("bookmark.addfailed"),
44
43
  lastUpdate: LocaleUtils.tr("bookmark.lastUpdate"),
45
- manage: LocaleUtils.tr("bookmark.manage"),
46
- newbookmark: LocaleUtils.tr("bookmark.newbookmark"),
47
- nobookmarks: LocaleUtils.tr("bookmark.nobookmarks"),
48
- notloggedin: LocaleUtils.tr("bookmark.notloggedin"),
44
+ title: LocaleUtils.tr("appmenu.items.Bookmark"),
45
+ "new": LocaleUtils.tr("bookmark.newbookmark"),
46
+ noitems: LocaleUtils.tr("bookmark.nobookmarks"),
49
47
  open: LocaleUtils.tr("bookmark.open"),
50
48
  openTab: LocaleUtils.tr("bookmark.openTab"),
51
49
  update: LocaleUtils.tr("bookmark.update"),
52
50
  zoomToExtent: LocaleUtils.tr("bookmark.zoomToExtent"),
53
51
  removefailed: LocaleUtils.tr("bookmark.removefailed"),
54
- savefailed: LocaleUtils.tr("bookmark.savefailed")
52
+ savefailed: LocaleUtils.tr("bookmark.savefailed"),
53
+ togglePublic: LocaleUtils.tr("bookmark.togglePublic"),
54
+ "public": LocaleUtils.tr("bookmark.public"),
55
+ confirmOverwrite: LocaleUtils.tr("bookmark.confirmOverwrite"),
56
+ confirmDelete: LocaleUtils.tr("bookmark.confirmDelete")
55
57
  });
56
58
  _defineProperty(_this, "renderBody", function () {
57
59
  return /*#__PURE__*/React.createElement(BookmarkPanel, {
60
+ bookmarkIface: BookmarksInterface,
58
61
  bookmarks: _this.props.bookmarks,
59
- onAdd: createBookmark,
60
62
  onOpen: _this.onOpen,
61
- onRefresh: _this.props.refreshBookmarks,
62
- onRemove: removeBookmark,
63
- onRename: renameBookmark,
64
- onUpdate: updateBookmark,
65
63
  onZoomToExtent: _this.zoomToBookmarkExtent,
66
64
  openOnClick: _this.props.openOnClick,
67
- showZoomToExtent: _this.props.mapCrs && _this.props.mapScales,
65
+ setList: _this.props.setBookmarks,
68
66
  translations: _this.translations
69
67
  });
70
68
  });
@@ -77,7 +75,7 @@ var Bookmark = /*#__PURE__*/function (_React$Component) {
77
75
  }
78
76
  });
79
77
  _defineProperty(_this, "zoomToBookmarkExtent", function (key) {
80
- resolveBookmark(key, function (params) {
78
+ BookmarksInterface.resolve(key, function (params) {
81
79
  if ('c' in params && 's' in params) {
82
80
  var _params$crs;
83
81
  var scale = parseFloat(params.s);
@@ -99,9 +97,17 @@ var Bookmark = /*#__PURE__*/function (_React$Component) {
99
97
  }
100
98
  _inherits(Bookmark, _React$Component);
101
99
  return _createClass(Bookmark, [{
100
+ key: "componentDidMount",
101
+ value: function componentDidMount() {
102
+ var _this2 = this;
103
+ BookmarksInterface.getList(function (bookmarks) {
104
+ _this2.props.setBookmarks(bookmarks);
105
+ });
106
+ }
107
+ }, {
102
108
  key: "render",
103
109
  value: function render() {
104
- var _this2 = this;
110
+ var _this3 = this;
105
111
  return /*#__PURE__*/React.createElement(SideBar, {
106
112
  icon: "bookmark",
107
113
  id: "Bookmark",
@@ -110,7 +116,7 @@ var Bookmark = /*#__PURE__*/function (_React$Component) {
110
116
  width: "20em"
111
117
  }, function () {
112
118
  return {
113
- body: _this2.renderBody()
119
+ body: _this3.renderBody()
114
120
  };
115
121
  });
116
122
  }
@@ -123,7 +129,7 @@ _defineProperty(Bookmark, "propTypes", {
123
129
  mapScales: PropTypes.array,
124
130
  /** Whether to directly open the bookmark on click / middle click, instead of showing dedicated open buttons. */
125
131
  openOnClick: PropTypes.bool,
126
- refreshBookmarks: PropTypes.func,
132
+ setBookmarks: PropTypes.func,
127
133
  /** The side of the application on which to display the sidebar. */
128
134
  side: PropTypes.string,
129
135
  zoomToExtent: PropTypes.func,
@@ -141,7 +147,7 @@ var selector = function selector(state) {
141
147
  };
142
148
  };
143
149
  export default connect(selector, {
144
- refreshBookmarks: refreshBookmarks,
150
+ setBookmarks: setBookmarks,
145
151
  zoomToExtent: zoomToExtent,
146
152
  zoomToPoint: zoomToPoint
147
153
  })(Bookmark);
@@ -46,7 +46,7 @@ import NumberInput from '../components/widgets/NumberInput';
46
46
  import CoordinatesUtils from '../utils/CoordinatesUtils';
47
47
  import LocaleUtils from '../utils/LocaleUtils';
48
48
  import MapUtils from '../utils/MapUtils';
49
- import { resolveVisibilityPreset } from "../utils/PermaLinkUtils";
49
+ import { VisibilityPresetsInterface } from "../utils/PermaLinkUtils";
50
50
  import './style/BottomBar.css';
51
51
 
52
52
  /**
@@ -97,7 +97,7 @@ var BottomBar = /*#__PURE__*/function (_React$Component) {
97
97
  _defineProperty(_this, "openBookmarkOrPreset", function (prefixedKey) {
98
98
  if (prefixedKey.startsWith("vp:")) {
99
99
  var key = prefixedKey.slice("vp:".length);
100
- resolveVisibilityPreset(key, function (preset) {
100
+ VisibilityPresetsInterface.resolve(key, function (preset) {
101
101
  if (preset) {
102
102
  _this.props.setThemeLayersVisibilityPreset(preset);
103
103
  }
@@ -406,6 +406,7 @@ var Identify = /*#__PURE__*/function (_React$Component) {
406
406
  });
407
407
  _defineProperty(_this, "deserializeResults", function (identifyResults, resultDisplayMode) {
408
408
  var pendingRequests = 0;
409
+ var importErrors = {};
409
410
  Object.entries(identifyResults).forEach(function (_ref5) {
410
411
  var _ref6 = _slicedToArray(_ref5, 2),
411
412
  layerid = _ref6[0],
@@ -458,13 +459,15 @@ var Identify = /*#__PURE__*/function (_React$Component) {
458
459
  });
459
460
  }
460
461
  });
462
+ } else {
463
+ importErrors[layerid] = true;
461
464
  }
462
465
  }
463
466
  });
464
467
  _this.setState({
465
468
  identifyResults: identifyResults,
466
469
  pendingRequests: pendingRequests,
467
- importErrors: {},
470
+ importErrors: importErrors,
468
471
  currentResultDisplayMode: resultDisplayMode
469
472
  });
470
473
  });
@@ -41,7 +41,6 @@ import isEqual from 'lodash.isequal';
41
41
  import PropTypes from 'prop-types';
42
42
  import { v4 as uuidv4 } from 'uuid';
43
43
  import { LayerRole, setFilter } from '../actions/layers';
44
- import { setPermalinkParameters } from '../actions/localConfig';
45
44
  import { setCurrentTask } from '../actions/task';
46
45
  import Icon from '../components/Icon';
47
46
  import MapButton from '../components/MapButton';
@@ -58,6 +57,7 @@ import DataServiceExprUtils from '../utils/DataServiceExprUtils';
58
57
  import LayerUtils from '../utils/LayerUtils';
59
58
  import LocaleUtils from '../utils/LocaleUtils';
60
59
  import MiscUtils from '../utils/MiscUtils';
60
+ import { registerPermalinkDataStoreHook, unregisterPermalinkDataStoreHook } from '../utils/PermaLinkUtils';
61
61
  import './style/MapFilter.css';
62
62
 
63
63
  /**
@@ -228,37 +228,43 @@ var MapFilter = /*#__PURE__*/function (_React$Component) {
228
228
  });
229
229
  });
230
230
  }
231
- var permalinkState = Object.entries(_this.state.filters).reduce(function (res, _ref5) {
232
- var _ref6 = _slicedToArray(_ref5, 2),
233
- key = _ref6[0],
234
- value = _ref6[1];
235
- if (value.active) {
236
- return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, value.values));
237
- } else {
238
- return res;
239
- }
240
- }, {});
241
- if (_this.state.geomFilter.geom) {
242
- permalinkState.__geomfilter = _this.state.geomFilter.geom.coordinates;
243
- }
244
- permalinkState.__custom = Object.values(_this.state.customFilters).map(function (entry) {
245
- if (!entry.active) {
246
- return null;
247
- }
248
- var expr = null;
249
- try {
250
- expr = JSON.parse(entry.expr);
251
- } catch (_unused2) {
252
- return null;
231
+ });
232
+ _defineProperty(_this, "serializeMapFilter", function () {
233
+ return new Promise(function (resolve) {
234
+ var permalinkState = Object.entries(_this.state.filters).reduce(function (res, _ref5) {
235
+ var _ref6 = _slicedToArray(_ref5, 2),
236
+ key = _ref6[0],
237
+ value = _ref6[1];
238
+ if (value.active) {
239
+ return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, value.values));
240
+ } else {
241
+ return res;
242
+ }
243
+ }, {});
244
+ if (_this.state.geomFilter.geom) {
245
+ permalinkState.__geomfilter = _this.state.geomFilter.geom.coordinates;
253
246
  }
254
- return {
255
- title: entry.title,
256
- layer: entry.layer,
257
- expr: expr
258
- };
259
- }).filter(Boolean);
260
- _this.props.setPermalinkParameters({
261
- f: JSON.stringify(permalinkState)
247
+ permalinkState.__custom = Object.values(_this.state.customFilters).map(function (entry) {
248
+ if (!entry.active) {
249
+ return null;
250
+ }
251
+ var expr = null;
252
+ try {
253
+ expr = JSON.parse(entry.expr);
254
+ } catch (_unused2) {
255
+ return null;
256
+ }
257
+ return {
258
+ title: entry.title,
259
+ layer: entry.layer,
260
+ expr: expr
261
+ };
262
+ }).filter(Boolean);
263
+ resolve({
264
+ query: {
265
+ f: JSON.stringify(permalinkState)
266
+ }
267
+ });
262
268
  });
263
269
  });
264
270
  _defineProperty(_this, "buildTimeFilter", function (layer, filters, wmsName) {
@@ -672,6 +678,16 @@ var MapFilter = /*#__PURE__*/function (_React$Component) {
672
678
  }
673
679
  _inherits(MapFilter, _React$Component);
674
680
  return _createClass(MapFilter, [{
681
+ key: "componentDidMount",
682
+ value: function componentDidMount() {
683
+ registerPermalinkDataStoreHook("mapfilter", this.serializeMapFilter);
684
+ }
685
+ }, {
686
+ key: "componentWillUnmount",
687
+ value: function componentWillUnmount() {
688
+ unregisterPermalinkDataStoreHook("mapfilter");
689
+ }
690
+ }, {
675
691
  key: "componentDidUpdate",
676
692
  value: function componentDidUpdate(prevProps, prevState) {
677
693
  var _this2 = this;
@@ -829,7 +845,6 @@ _defineProperty(MapFilter, "propTypes", {
829
845
  position: PropTypes.number,
830
846
  setCurrentTask: PropTypes.func,
831
847
  setFilter: PropTypes.func,
832
- setPermalinkParameters: PropTypes.func,
833
848
  /** The side of the application on which to display the sidebar. */
834
849
  side: PropTypes.string,
835
850
  startupParams: PropTypes.object,
@@ -854,6 +869,5 @@ export default connect(function (state) {
854
869
  };
855
870
  }, {
856
871
  setFilter: setFilter,
857
- setCurrentTask: setCurrentTask,
858
- setPermalinkParameters: setPermalinkParameters
872
+ setCurrentTask: setCurrentTask
859
873
  })(MapFilter);
@@ -23,12 +23,12 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
23
23
  import React from 'react';
24
24
  import { connect } from 'react-redux';
25
25
  import PropTypes from "prop-types";
26
- import { refreshVisibilityPresets } from '../actions/bookmark';
26
+ import { setVisibilityPresets } from '../actions/bookmark';
27
27
  import { setThemeLayersVisibilityPreset } from '../actions/layers';
28
28
  import BookmarkPanel from '../components/BookmarkPanel';
29
29
  import SideBar from "../components/SideBar";
30
30
  import LocaleUtils from '../utils/LocaleUtils';
31
- import { storeVisibilityPreset, updateVisibilityPreset, renameVisibilityPreset, removeVisibilityPreset, resolveVisibilityPreset } from '../utils/PermaLinkUtils';
31
+ import { VisibilityPresetsInterface } from '../utils/PermaLinkUtils';
32
32
 
33
33
  /**
34
34
  * Allows managing custom user visibility presets, which are storing the currently selected layers without location or
@@ -48,16 +48,18 @@ var VisibilityPreset = /*#__PURE__*/function (_React$Component) {
48
48
  }
49
49
  _this = _callSuper(this, VisibilityPreset, [].concat(args));
50
50
  _defineProperty(_this, "translations", {
51
- add: LocaleUtils.tr("visibilitypreset.add"),
52
51
  addfailed: LocaleUtils.tr("visibilitypreset.addfailed"),
53
- manage: LocaleUtils.tr("visibilitypreset.manage"),
54
- newbookmark: LocaleUtils.tr("visibilitypreset.newpreset"),
55
- nobookmarks: LocaleUtils.tr("visibilitypreset.nopresets"),
56
- notloggedin: LocaleUtils.tr("visibilitypreset.notloggedin"),
52
+ title: LocaleUtils.tr("appmenu.items.VisibilityPresets"),
53
+ "new": LocaleUtils.tr("visibilitypreset.newpreset"),
54
+ noitems: LocaleUtils.tr("visibilitypreset.nopresets"),
57
55
  open: LocaleUtils.tr("visibilitypreset.open"),
58
56
  update: LocaleUtils.tr("visibilitypreset.update"),
59
57
  removefailed: LocaleUtils.tr("visibilitypreset.removefailed"),
60
- savefailed: LocaleUtils.tr("visibilitypreset.savefailed")
58
+ savefailed: LocaleUtils.tr("visibilitypreset.savefailed"),
59
+ togglePublic: LocaleUtils.tr("visibilitypreset.togglePublic"),
60
+ "public": LocaleUtils.tr("visibilitypreset.public"),
61
+ confirmOverwrite: LocaleUtils.tr("visibilitypreset.confirmOverwrite"),
62
+ confirmDelete: LocaleUtils.tr("visibilitypreset.confirmDelete")
61
63
  });
62
64
  _defineProperty(_this, "filterByActiveTheme", function (visibilityPresets, themeId) {
63
65
  if (themeId === null) return [];
@@ -69,33 +71,42 @@ var VisibilityPreset = /*#__PURE__*/function (_React$Component) {
69
71
  var _this$props$theme;
70
72
  var presets = _this.filterByActiveTheme(_this.props.visibilityPresets, (_this$props$theme = _this.props.theme) === null || _this$props$theme === void 0 ? void 0 : _this$props$theme.id);
71
73
  return /*#__PURE__*/React.createElement(BookmarkPanel, {
74
+ bookmarkIface: VisibilityPresetsInterface,
72
75
  bookmarks: presets,
73
- onAdd: storeVisibilityPreset,
74
76
  onOpen: _this.onOpen,
75
- onRefresh: _this.props.refreshVisibilityPresets,
76
- onRemove: removeVisibilityPreset,
77
- onRename: renameVisibilityPreset,
78
- onUpdate: updateVisibilityPreset,
79
77
  openOnClick: _this.props.openOnClick,
80
- showOpenTab: false,
78
+ setList: _this.props.setVisibilityPresets,
81
79
  translations: _this.translations
82
80
  });
83
81
  });
84
82
  _defineProperty(_this, "onOpen", function (key) {
85
83
  var newtab = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
86
- resolveVisibilityPreset(key, function (preset) {
87
- if (preset) {
88
- _this.props.setThemeLayersVisibilityPreset(preset);
89
- }
90
- });
84
+ if (newtab) {
85
+ var url = location.href.split("?")[0] + '?vp=' + key;
86
+ window.open(url, '_blank');
87
+ } else {
88
+ VisibilityPresetsInterface.resolve(key, function (preset) {
89
+ if (preset) {
90
+ _this.props.setThemeLayersVisibilityPreset(preset);
91
+ }
92
+ });
93
+ }
91
94
  });
92
95
  return _this;
93
96
  }
94
97
  _inherits(VisibilityPreset, _React$Component);
95
98
  return _createClass(VisibilityPreset, [{
99
+ key: "componentDidMount",
100
+ value: function componentDidMount() {
101
+ var _this2 = this;
102
+ VisibilityPresetsInterface.getList(function (presets) {
103
+ _this2.props.setVisibilityPresets(presets);
104
+ });
105
+ }
106
+ }, {
96
107
  key: "render",
97
108
  value: function render() {
98
- var _this2 = this;
109
+ var _this3 = this;
99
110
  return /*#__PURE__*/React.createElement(SideBar, {
100
111
  icon: "eye",
101
112
  id: "VisibilityPresets",
@@ -104,7 +115,7 @@ var VisibilityPreset = /*#__PURE__*/function (_React$Component) {
104
115
  width: "20em"
105
116
  }, function () {
106
117
  return {
107
- body: _this2.renderBody()
118
+ body: _this3.renderBody()
108
119
  };
109
120
  });
110
121
  }
@@ -114,8 +125,8 @@ _defineProperty(VisibilityPreset, "availableIn3D", true);
114
125
  _defineProperty(VisibilityPreset, "propTypes", {
115
126
  /** Whether to directly open the bookmark on click / middle click, instead of showing dedicated open buttons. */
116
127
  openOnClick: PropTypes.bool,
117
- refreshVisibilityPresets: PropTypes.func,
118
128
  setThemeLayersVisibilityPreset: PropTypes.func,
129
+ setVisibilityPresets: PropTypes.func,
119
130
  /** The side of the application on which to display the sidebar. */
120
131
  side: PropTypes.string,
121
132
  theme: PropTypes.object,
@@ -132,6 +143,6 @@ var selector = function selector(state) {
132
143
  };
133
144
  };
134
145
  export default connect(selector, {
135
- refreshVisibilityPresets: refreshVisibilityPresets,
146
+ setVisibilityPresets: setVisibilityPresets,
136
147
  setThemeLayersVisibilityPreset: setThemeLayersVisibilityPreset
137
148
  })(VisibilityPreset);
@@ -1,14 +1,10 @@
1
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
2
  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
3
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 _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
5
  function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
5
6
  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
6
- function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
7
- 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."); }
8
- 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; } }
9
7
  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; }
10
- 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; } }
11
- function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
12
8
  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; }
13
9
  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; }
14
10
  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; }
@@ -23,14 +19,13 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
23
19
  * LICENSE file in the root directory of this source tree.
24
20
  */
25
21
 
26
- import { LOCAL_CONFIG_LOADED, SET_STARTUP_PARAMETERS, SET_COLOR_SCHEME, SET_USER_INFO_FIELDS, SET_PERMALINK_PARAMETERS, REGISTER_CUSTOM_PLUGIN, UNREGISTER_CUSTOM_PLUGIN } from '../actions/localConfig';
22
+ import { LOCAL_CONFIG_LOADED, SET_STARTUP_PARAMETERS, SET_COLOR_SCHEME, SET_USER_INFO_FIELDS, REGISTER_CUSTOM_PLUGIN, UNREGISTER_CUSTOM_PLUGIN } from '../actions/localConfig';
27
23
  import ConfigUtils from '../utils/ConfigUtils';
28
24
  import { UrlParams } from '../utils/PermaLinkUtils';
29
25
  var defaultState = _objectSpread(_objectSpread({}, ConfigUtils.getDefaults()), {}, {
30
26
  customPlugins: [],
31
27
  startupParams: {},
32
28
  startupState: {},
33
- permalinkParams: {},
34
29
  colorScheme: 'default'
35
30
  });
36
31
  export default function localConfig() {
@@ -76,20 +71,6 @@ export default function localConfig() {
76
71
  user_infos: _objectSpread(_objectSpread({}, state.user_infos), action.fields)
77
72
  });
78
73
  }
79
- case SET_PERMALINK_PARAMETERS:
80
- {
81
- return _objectSpread(_objectSpread({}, state), {}, {
82
- permalinkParams: Object.entries(_objectSpread(_objectSpread({}, state.permalinkParams), action.params)).reduce(function (res, _ref) {
83
- var _ref2 = _slicedToArray(_ref, 2),
84
- key = _ref2[0],
85
- value = _ref2[1];
86
- if (value !== undefined) {
87
- res[key] = value;
88
- }
89
- return res;
90
- }, {})
91
- });
92
- }
93
74
  case REGISTER_CUSTOM_PLUGIN:
94
75
  {
95
76
  return _objectSpread(_objectSpread({}, state), {}, {
@@ -98,17 +98,18 @@
98
98
  "nobg": "Без фон"
99
99
  },
100
100
  "bookmark": {
101
- "add": "Създаване на нов маркер",
102
101
  "addfailed": "Неуспешно създаване на отметки",
102
+ "confirmDelete": "",
103
+ "confirmOverwrite": "",
103
104
  "lastUpdate": "Последно запазен",
104
- "manage": "Управление на отметките",
105
105
  "newbookmark": "",
106
106
  "nobookmarks": "Няма отметки",
107
- "notloggedin": "Трябва да сте влезли в системата, за да съхранявате отметки",
108
107
  "open": "Отваряне на отметки в текущия раздел",
109
108
  "openTab": "Отваряне на отметки в раздела",
109
+ "public": "",
110
110
  "removefailed": "Не успя да премахне отметките",
111
111
  "savefailed": "Неуспешно актуализиране на отметките",
112
+ "togglePublic": "",
112
113
  "update": "Актуализиране на отметките",
113
114
  "zoomToExtent": "Увеличаване на обхвата"
114
115
  },
@@ -919,15 +920,16 @@
919
920
  "visiblecolor": ""
920
921
  },
921
922
  "visibilitypreset": {
922
- "add": "",
923
923
  "addfailed": "",
924
- "manage": "",
924
+ "confirmDelete": "",
925
+ "confirmOverwrite": "",
925
926
  "newpreset": "",
926
927
  "nopresets": "",
927
- "notloggedin": "",
928
928
  "open": "",
929
+ "public": "",
929
930
  "removefailed": "",
930
931
  "savefailed": "",
932
+ "togglePublic": "",
931
933
  "update": ""
932
934
  },
933
935
  "window": {
@@ -98,17 +98,18 @@
98
98
  "nobg": "Sense fons"
99
99
  },
100
100
  "bookmark": {
101
- "add": "Afegir",
102
101
  "addfailed": "Error al crear",
102
+ "confirmDelete": "",
103
+ "confirmOverwrite": "",
103
104
  "lastUpdate": "Darrer canvi",
104
- "manage": "Gestionar",
105
105
  "newbookmark": "Nou marcador",
106
106
  "nobookmarks": "Cap marcador",
107
- "notloggedin": "No logat",
108
107
  "open": "Obrir",
109
108
  "openTab": "Obrir en una pestanya",
109
+ "public": "",
110
110
  "removefailed": "Error al eliminar",
111
111
  "savefailed": "Error al modificar",
112
+ "togglePublic": "",
112
113
  "update": "Updatejar",
113
114
  "zoomToExtent": "Fer zoom a l'extensió"
114
115
  },
@@ -919,15 +920,16 @@
919
920
  "visiblecolor": ""
920
921
  },
921
922
  "visibilitypreset": {
922
- "add": "",
923
923
  "addfailed": "",
924
- "manage": "",
924
+ "confirmDelete": "",
925
+ "confirmOverwrite": "",
925
926
  "newpreset": "",
926
927
  "nopresets": "",
927
- "notloggedin": "",
928
928
  "open": "",
929
+ "public": "",
929
930
  "removefailed": "",
930
931
  "savefailed": "",
932
+ "togglePublic": "",
931
933
  "update": ""
932
934
  },
933
935
  "window": {
@@ -98,17 +98,18 @@
98
98
  "nobg": "Bez podkladu"
99
99
  },
100
100
  "bookmark": {
101
- "add": "Vytvořit novou záložku",
102
101
  "addfailed": "Vytváření záložky selhalo",
102
+ "confirmDelete": "",
103
+ "confirmOverwrite": "",
103
104
  "lastUpdate": "Naposledy upraveno",
104
- "manage": "Správa záložek",
105
105
  "newbookmark": "",
106
106
  "nobookmarks": "Zatím žádné záložky",
107
- "notloggedin": "Pro vytvoření záložky se musíte přihlásit",
108
107
  "open": "Otevřít záložku",
109
108
  "openTab": "Otevřít záložku v novém okně",
109
+ "public": "",
110
110
  "removefailed": "Mazání záložky selhalo",
111
111
  "savefailed": "Ukládání záložky selhalo",
112
+ "togglePublic": "",
112
113
  "update": "Upravit",
113
114
  "zoomToExtent": ""
114
115
  },
@@ -919,15 +920,16 @@
919
920
  "visiblecolor": ""
920
921
  },
921
922
  "visibilitypreset": {
922
- "add": "",
923
923
  "addfailed": "",
924
- "manage": "",
924
+ "confirmDelete": "",
925
+ "confirmOverwrite": "",
925
926
  "newpreset": "",
926
927
  "nopresets": "",
927
- "notloggedin": "",
928
928
  "open": "",
929
+ "public": "",
929
930
  "removefailed": "",
930
931
  "savefailed": "",
932
+ "togglePublic": "",
931
933
  "update": ""
932
934
  },
933
935
  "window": {
@@ -98,17 +98,18 @@
98
98
  "nobg": "Kein Hintergrund"
99
99
  },
100
100
  "bookmark": {
101
- "add": "Neues Lesezeichen anlegen",
102
101
  "addfailed": "Lesezeichen konnte nicht angelegt werden",
102
+ "confirmDelete": "Lesezeichen löschen?",
103
+ "confirmOverwrite": "Lesezeichen überschreiben?",
103
104
  "lastUpdate": "Zuletzt gespeichert",
104
- "manage": "Lesezeichen",
105
105
  "newbookmark": "Neues Lesezeichen",
106
106
  "nobookmarks": "Keine Lesezeichen",
107
- "notloggedin": "Sie müssen angemeldet sein, um Lesezeichen zu verwenden",
108
107
  "open": "In aktuellem Fenster öffnen",
109
108
  "openTab": "In neuem Fenster öffnen",
109
+ "public": "Öffentliches Lesezeichen",
110
110
  "removefailed": "Lesezeichen konnte nicht entfernt werden",
111
111
  "savefailed": "Lesezeichen konnte nicht aktualisiert werden",
112
+ "togglePublic": "Lesezeichen öffentlich publizieren",
112
113
  "update": "Lesezeichen aktualisieren",
113
114
  "zoomToExtent": "Auf Ausschnitt zoomen"
114
115
  },
@@ -919,15 +920,16 @@
919
920
  "visiblecolor": "Sichtbar"
920
921
  },
921
922
  "visibilitypreset": {
922
- "add": "Sichtbarkeitsprofil anlegen",
923
923
  "addfailed": "Sichtbarkeitsprofil konnte nicht angelegt werden",
924
- "manage": "Sichtbarkeitsprofile",
924
+ "confirmDelete": "Sichtbarkeitsprofil löschen?",
925
+ "confirmOverwrite": "Sichtbarkeitsprofil überschreiben?",
925
926
  "newpreset": "Neues Sichtbarkeitsprofil",
926
927
  "nopresets": "Keine Sichtbarkeitsprofile angelegt",
927
- "notloggedin": "Sie müssen angemeldet sein, um Sichtbarkeitsprofile zu verwenden",
928
928
  "open": "In aktuellem Fenster öffnen",
929
+ "public": "Öffentliches Sichtbarkeitsprofil",
929
930
  "removefailed": "Sichtbarkeitsprofil konnte nicht entfernt werden",
930
931
  "savefailed": "Sichtbarkeitsprofil konnte nicht aktualisiert werden",
932
+ "togglePublic": "Sichtbarkeitsprofil öffentlich publizieren",
931
933
  "update": "Sichtbarkeitsprofil aktualisieren"
932
934
  },
933
935
  "window": {