@opengeoweb/webmap 14.1.0 → 14.2.1

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.
package/index.esm.js CHANGED
@@ -698,12 +698,10 @@ var toArray = function toArray(array) {
698
698
  if (array === null || typeof array === 'undefined') {
699
699
  return [];
700
700
  }
701
- if (array instanceof Array) {
701
+ if (Array.isArray(array)) {
702
702
  return array;
703
703
  }
704
- var newArray = [];
705
- newArray[0] = array;
706
- return newArray;
704
+ return [array];
707
705
  };
708
706
  /* Returns all dimensions with its current values as URL */
709
707
  var getMapDimURL = function getMapDimURL(layer, dimensionOverride) {
@@ -727,18 +725,18 @@ var getMapDimURL = function getMapDimURL(layer, dimensionOverride) {
727
725
  * @param params
728
726
  * @returns
729
727
  */
730
- var getUriWithParam = function getUriWithParam(baseUrl,
731
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
732
- params) {
733
- var Url = new URL(baseUrl);
734
- var urlParams = new URLSearchParams(Url.search);
735
- for (var key in params) {
736
- if (params[key] !== undefined) {
737
- urlParams.set(key, params[key]);
738
- }
739
- }
740
- Url.search = urlParams.toString();
741
- return Url.toString();
728
+ var getUriWithParam = function getUriWithParam(baseUrl, params) {
729
+ var url = new URL(baseUrl);
730
+ var urlParams = new URLSearchParams(url.search);
731
+ if (params) {
732
+ for (var key in params) {
733
+ if (params[key] !== undefined) {
734
+ urlParams.set(key, String(params[key]));
735
+ }
736
+ }
737
+ }
738
+ url.search = urlParams.toString();
739
+ return url.toString();
742
740
  };
743
741
  /**
744
742
  * Parses url and then it it allows for setting additional key value pairs in that URL (From https://stackoverflow.com/questions/5999118/how-can-i-add-or-update-a-query-string-parameter)
@@ -746,11 +744,9 @@ params) {
746
744
  * @param params
747
745
  * @returns
748
746
  */
749
- var getUriAddParam = function getUriAddParam(baseUrl,
750
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
751
- params) {
752
- var Url = new URL(baseUrl);
753
- var urlParams = new URLSearchParams(Url.search);
747
+ var getUriAddParam = function getUriAddParam(baseUrl, params) {
748
+ var url = new URL(baseUrl);
749
+ var urlParams = new URLSearchParams(url.search);
754
750
  // Create search params all lowercase so we can compare to the params passed in
755
751
  var lowerCaseUrlParams = new URLSearchParams();
756
752
  for (var _iterator = _createForOfIteratorHelperLoose(urlParams.keys()), _step; !(_step = _iterator()).done;) {
@@ -759,11 +755,11 @@ params) {
759
755
  }
760
756
  Object.keys(params).forEach(function (key) {
761
757
  if (params[key] !== undefined && !lowerCaseUrlParams.has(key.toLowerCase())) {
762
- urlParams.set(key, params[key]);
758
+ urlParams.set(key, String(params[key]));
763
759
  }
764
760
  });
765
- Url.search = urlParams.toString();
766
- return Url.toString();
761
+ url.search = urlParams.toString();
762
+ return url.toString();
767
763
  };
768
764
  /**
769
765
  * Helper function to figure out the styles from the WMS layer object from the WMS GetCapabilities document
@@ -772,11 +768,13 @@ params) {
772
768
  */
773
769
  var addStylesForLayer = function addStylesForLayer(layerObjectFromWMS) {
774
770
  /* Get the Style object */
775
- if (!(layerObjectFromWMS != null && layerObjectFromWMS.Style)) {
771
+ if (!(layerObjectFromWMS != null && layerObjectFromWMS.Style) || typeof layerObjectFromWMS.Style === 'object' && Object.keys(layerObjectFromWMS.Style).length === 0) {
776
772
  return [];
777
773
  }
778
774
  var layerStyles = toArray(layerObjectFromWMS.Style);
779
- /* Loop through the list of styles from the document, create a default object and try to fill in the object with the props from the WMS GetCapabilities document */
775
+ if (!layerStyles) {
776
+ return [];
777
+ }
780
778
  return layerStyles.map(function (layerStyle) {
781
779
  var style = {
782
780
  title: 'default',
@@ -784,23 +782,33 @@ var addStylesForLayer = function addStylesForLayer(layerObjectFromWMS) {
784
782
  legendURL: '',
785
783
  "abstract": 'No abstract available'
786
784
  };
785
+ var getValueOrDefault = function getValueOrDefault(obj, key, defaultValue) {
786
+ // Only return .value if obj[key] is an object with a 'value' property
787
+ var prop = obj && obj[key];
788
+ if (prop && typeof prop === 'object' && 'value' in prop && typeof prop.value === 'string') {
789
+ return prop.value;
790
+ }
791
+ return defaultValue;
792
+ };
787
793
  try {
788
- style.title = layerStyle.Title.value;
794
+ style.title = getValueOrDefault(layerStyle, 'Title', style.title);
789
795
  } catch (_e) {
790
796
  /* Do nothing */
791
797
  }
792
798
  try {
793
- style.name = layerStyle.Name.value;
799
+ style.name = layerStyle.Name && layerStyle.Name.value ? layerStyle.Name.value : style.name;
794
800
  } catch (_e) {
795
801
  /* Do nothing */
796
802
  }
797
803
  try {
798
- style.legendURL = layerStyle.LegendURL.OnlineResource.attr['xlink:href'];
804
+ var _layerStyle$LegendURL, _layerStyle$LegendURL2;
805
+ style.legendURL = (_layerStyle$LegendURL = (_layerStyle$LegendURL2 = layerStyle.LegendURL) == null || (_layerStyle$LegendURL2 = _layerStyle$LegendURL2.OnlineResource) == null ? void 0 : _layerStyle$LegendURL2.attr['xlink:href']) != null ? _layerStyle$LegendURL : '';
799
806
  } catch (_e) {
800
807
  /* Do nothing */
801
808
  }
802
809
  try {
803
- style["abstract"] = layerStyle.Abstract.value;
810
+ var _layerStyle$Abstract$, _layerStyle$Abstract;
811
+ style["abstract"] = (_layerStyle$Abstract$ = (_layerStyle$Abstract = layerStyle.Abstract) == null ? void 0 : _layerStyle$Abstract.value) != null ? _layerStyle$Abstract$ : style["abstract"];
804
812
  } catch (_e) {
805
813
  /* Do nothing */
806
814
  }
@@ -814,7 +822,10 @@ var addDimensionsForLayer = function addDimensionsForLayer(layerObjectFromWMS) {
814
822
  var layerDimensions = toArray(layerObjectFromWMS.Dimension);
815
823
  var layerDimensionsExtents = toArray(layerObjectFromWMS.Extent);
816
824
  var dimensionList = layerDimensions.map(function (layerDimension) {
817
- var dimensionName = layerDimension.attr && layerDimension.attr.name.toLowerCase();
825
+ var dimensionName = '';
826
+ if (layerDimension.attr && layerDimension.attr.name) {
827
+ dimensionName = layerDimension.attr.name.toLowerCase();
828
+ }
818
829
  /* Find corresponding Dimension Extent if given */
819
830
  var dimExtentIndex = layerDimensionsExtents.findIndex(function (layerDimensionsExtent) {
820
831
  var extentName = layerDimensionsExtent.attr && layerDimensionsExtent.attr.name && layerDimensionsExtent.attr.name.toLowerCase();
@@ -868,9 +879,7 @@ var addBoundingBoxForLayer = function addBoundingBoxForLayer(layerObjectFromWMS)
868
879
  function sortArrayOfObjectsByKey(array, key) {
869
880
  var spreadArray = [].concat(array);
870
881
  return spreadArray.sort(function (arrayA, arrayB) {
871
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
872
882
  var x = arrayA[key];
873
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
874
883
  var y = arrayB[key];
875
884
  if (x < y) {
876
885
  return -1;
@@ -941,7 +950,7 @@ var makeNodeLayerFromWMSGetCapabilityLayer = function makeNodeLayerFromWMSGetCap
941
950
  leaf: isleaf,
942
951
  path: path,
943
952
  keywords: toArray((_layer$KeywordList$Ke = layer == null || (_layer$KeywordList = layer.KeywordList) == null ? void 0 : _layer$KeywordList.Keyword) != null ? _layer$KeywordList$Ke : []).map(function (keyword) {
944
- return keyword.value;
953
+ return typeof keyword === 'object' && keyword !== null && 'value' in keyword ? keyword.value : String(keyword);
945
954
  }).filter(Boolean),
946
955
  "abstract": layer != null && layer.Abstract ? layer.Abstract.value : undefined,
947
956
  styles: styles,
@@ -1188,9 +1197,7 @@ var WMImage = /*#__PURE__*/function () {
1188
1197
  this.randomize = true;
1189
1198
  }
1190
1199
  this._load();
1191
- }
1192
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
1193
- ;
1200
+ };
1194
1201
  _proto._getImageWithHeaders = function _getImageWithHeaders(url, headers) {
1195
1202
  var _this3 = this;
1196
1203
  var fetchHeaders = new Headers();
@@ -1944,12 +1951,20 @@ function getNumberOfTimeSteps(starttime, stoptime, interval) {
1944
1951
  return steps;
1945
1952
  }
1946
1953
  // In case of equally distributed time steps
1947
- steps = parseInt(
1948
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
1949
- // @ts-ignore
1950
- (stoptime.getTime() - starttime.getTime()) / interval.getTime() + 0.5, 10) + 1;
1954
+ steps = Math.round((stoptime.getTime() - starttime.getTime()) / interval.getTime()) + 1;
1951
1955
  return steps;
1952
1956
  }
1957
+ // Utility function to fill missing elements in ISO time range duration array
1958
+ var fillMissingISOTimeRangeElements = function fillMissingISOTimeRangeElements(times, defaultInterval) {
1959
+ var result = [].concat(times);
1960
+ if (result[2] === undefined) {
1961
+ result[2] = defaultInterval;
1962
+ }
1963
+ if (result[1] === undefined) {
1964
+ return [result[0], result[0], defaultInterval];
1965
+ }
1966
+ return result;
1967
+ };
1953
1968
  // Takes "1999-01-01T00:00:00Z/2009-12-01T00:00:00Z/PT60S" as input
1954
1969
  var ParseISOTimeRangeDuration = /*#__PURE__*/function () {
1955
1970
  function ParseISOTimeRangeDuration(isoTimeRangeDuration, defaultInterval) {
@@ -1957,16 +1972,7 @@ var ParseISOTimeRangeDuration = /*#__PURE__*/function () {
1957
1972
  defaultInterval = 'PT1M';
1958
1973
  }
1959
1974
  this.initialized = false;
1960
- var times = isoTimeRangeDuration.split('/');
1961
- // Add safety checks for undefined elements
1962
- if (times[2] === undefined) {
1963
- times[2] = defaultInterval;
1964
- }
1965
- if (times[1] === undefined) {
1966
- // eslint-disable-next-line @typescript-eslint/prefer-destructuring
1967
- times[1] = times[0];
1968
- times[2] = defaultInterval;
1969
- }
1975
+ var times = fillMissingISOTimeRangeElements(isoTimeRangeDuration.split('/'), defaultInterval);
1970
1976
  // Convert the dates
1971
1977
  this.startTime = parseISO8601DateToDate(times[0]);
1972
1978
  this.stopTime = parseISO8601DateToDate(times[1]);
@@ -2523,7 +2529,7 @@ var WMXMLtoJSON = function WMXMLtoJSON(xmlDocument) {
2523
2529
  newJson = {
2524
2530
  attr: {}
2525
2531
  };
2526
- // eslint-disable-next-line no-empty
2532
+ // Convert to array if needed
2527
2533
  if (json[nodeName] instanceof Array) ; else {
2528
2534
  var obj = Object.assign({}, json[nodeName]);
2529
2535
  // eslint-disable-next-line no-param-reassign
@@ -4337,8 +4343,7 @@ var WMLayer = /*#__PURE__*/function () {
4337
4343
  _context.next = 10;
4338
4344
  break;
4339
4345
  }
4340
- // eslint-disable-next-line no-console
4341
- console.log('invalidateWMSGetCapabilities');
4346
+ debugLogger(DebugType.Log);
4342
4347
  _context.next = 10;
4343
4348
  return invalidateWMSGetCapabilities(this.service);
4344
4349
  case 10:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeoweb/webmap",
3
- "version": "14.1.0",
3
+ "version": "14.2.1",
4
4
  "description": "GeoWeb webmap library for the opengeoweb project",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -8,7 +8,7 @@
8
8
  "url": "git@gitlab.com:opengeoweb/opengeoweb.git"
9
9
  },
10
10
  "dependencies": {
11
- "@opengeoweb/shared": "14.1.0",
11
+ "@opengeoweb/shared": "14.2.1",
12
12
  "@tanstack/query-core": "^5.69.2",
13
13
  "lodash": "^4.17.21",
14
14
  "i18next": "^25.0.1",
@@ -1,6 +1,10 @@
1
+ export interface WMHeader {
2
+ name: string;
3
+ value: string;
4
+ }
1
5
  export interface WMImageOptions {
2
6
  randomizer?: boolean;
3
- headers: Headers[];
7
+ headers: WMHeader[];
4
8
  fakeMaxAge?: number;
5
9
  }
6
10
  export interface WMGeoReference {
@@ -25,7 +29,7 @@ export default class WMImage {
25
29
  srcToLoad: string;
26
30
  loadEventCallback?: (image: WMImage) => void;
27
31
  el: HTMLImageElement;
28
- headers: Headers[];
32
+ headers: WMHeader[];
29
33
  _imageTimeStampAtError: number;
30
34
  _numFailedAttempts: number;
31
35
  _loadStartTime: number;
@@ -18,7 +18,7 @@ export declare const isDefined: <T>(variable?: T) => variable is T;
18
18
  * @param array The variable to convert
19
19
  * @returns Always an array
20
20
  */
21
- export declare const toArray: (array: unknown | unknown[]) => any[];
21
+ export declare const toArray: <T>(array: T | T[] | null | undefined) => T[];
22
22
  export declare const getMapDimURL: (layer: WMLayer, dimensionOverride?: Dimension[]) => URLSearchParams;
23
23
  /**
24
24
  * Parses url and then it it allows for setting / changing key value pairs in that URL (From https://stackoverflow.com/questions/5999118/how-can-i-add-or-update-a-query-string-parameter)
@@ -26,14 +26,14 @@ export declare const getMapDimURL: (layer: WMLayer, dimensionOverride?: Dimensio
26
26
  * @param params
27
27
  * @returns
28
28
  */
29
- export declare const getUriWithParam: (baseUrl: string, params?: Record<string, any>) => string;
29
+ export declare const getUriWithParam: (baseUrl: string, params?: Record<string, unknown>) => string;
30
30
  /**
31
31
  * Parses url and then it it allows for setting additional key value pairs in that URL (From https://stackoverflow.com/questions/5999118/how-can-i-add-or-update-a-query-string-parameter)
32
32
  * @param baseUrl
33
33
  * @param params
34
34
  * @returns
35
35
  */
36
- export declare const getUriAddParam: (baseUrl: string, params: Record<string, any>) => string;
36
+ export declare const getUriAddParam: (baseUrl: string, params: Record<string, unknown>) => string;
37
37
  /**
38
38
  * Helper function to figure out the styles from the WMS layer object from the WMS GetCapabilities document
39
39
  * @param layerObjectFromWMS The layer object from the WMS GetCapabilities JSON document
@@ -49,7 +49,7 @@ export declare const addBoundingBoxForLayer: (layerObjectFromWMS: WMSLayerFromGe
49
49
  * @param key The key of the object to use for sorting
50
50
  * @returns Sorted array.
51
51
  */
52
- export declare function sortArrayOfObjectsByKey<ArrayOfObjects>(array: ArrayOfObjects[], key: string): ArrayOfObjects[];
52
+ export declare function sortArrayOfObjectsByKey<T>(array: T[], key: keyof T): T[];
53
53
  /**
54
54
  * Makes a LayerProps object from the WMSLayerFromGetCapabilities and nestedLayerPath
55
55
  * @param layer WMSLayerFromGetCapabilities