@nextgis/ngw-map 1.13.0 → 1.13.6

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.
@@ -1,4 +1,4 @@
1
- /** Bundle of @nextgis/ngw-map; version: 1.13.0; author: NextGIS */
1
+ /** Bundle of @nextgis/ngw-map; version: 1.13.6; author: NextGIS */
2
2
  var NgwMap = (function (exports) {
3
3
  'use strict';
4
4
 
@@ -2828,6 +2828,7 @@ var NgwMap = (function (exports) {
2828
2828
  };
2829
2829
  /** Shortcut for {@link WebMapLayers.addLayer} to create TileLayer adapter */
2830
2830
  WebMapLayers.prototype.addTileLayer = function (url, options) {
2831
+ if (options === void 0) { options = {}; }
2831
2832
  return this.addLayer('TILE', __assign(__assign({}, options), { url: url }));
2832
2833
  };
2833
2834
  WebMapLayers.prototype.addImageLayer = function (urlOrOptions, options) {
@@ -4046,31 +4047,31 @@ var NgwMap = (function (exports) {
4046
4047
  /**
4047
4048
  * Thrown when...
4048
4049
  */
4049
- var NgwError = /** @class */ (function (_super) {
4050
- __extends(NgwError, _super);
4051
- function NgwError(er) {
4050
+ var NetworkError = /** @class */ (function (_super) {
4051
+ __extends(NetworkError, _super);
4052
+ function NetworkError(url) {
4052
4053
  var _this = _super.call(this) || this;
4053
- _this.name = 'NgwError';
4054
- Object.assign(_this, er);
4055
- Object.setPrototypeOf(_this, NgwError.prototype);
4054
+ _this.name = 'NetworkError';
4055
+ Object.setPrototypeOf(_this, NetworkError.prototype);
4056
+ _this.message = "Unable to request ".concat(url, ".\n Possibly invalid NGW URL entered or CORS not configured to get request from ").concat(location.origin); // /control-panel/cors
4056
4057
  return _this;
4057
4058
  }
4058
- return NgwError;
4059
+ return NetworkError;
4059
4060
  }(Error));
4060
4061
 
4061
4062
  /**
4062
4063
  * Thrown when...
4063
4064
  */
4064
- var NetworkError = /** @class */ (function (_super) {
4065
- __extends(NetworkError, _super);
4066
- function NetworkError(url) {
4065
+ var NgwError = /** @class */ (function (_super) {
4066
+ __extends(NgwError, _super);
4067
+ function NgwError(er) {
4067
4068
  var _this = _super.call(this) || this;
4068
- _this.name = 'NetworkError';
4069
- Object.setPrototypeOf(_this, NetworkError.prototype);
4070
- _this.message = "Unable to request ".concat(url, ".\n Possibly invalid NGW URL entered or CORS not configured to get request from ").concat(location.origin); // /control-panel/cors
4069
+ _this.name = 'NgwError';
4070
+ Object.assign(_this, er);
4071
+ Object.setPrototypeOf(_this, NgwError.prototype);
4071
4072
  return _this;
4072
4073
  }
4073
- return NetworkError;
4074
+ return NgwError;
4074
4075
  }(Error));
4075
4076
 
4076
4077
  function isObject(val) {
@@ -4184,11 +4185,6 @@ var NgwMap = (function (exports) {
4184
4185
  xhr.abort();
4185
4186
  });
4186
4187
  }
4187
- if (options.signal) {
4188
- options.signal.addEventListener('abort', function () {
4189
- xhr.abort();
4190
- });
4191
- }
4192
4188
  xhr.send(data);
4193
4189
  };
4194
4190
  }
@@ -4639,6 +4635,7 @@ var NgwMap = (function (exports) {
4639
4635
  this.id = ID$1++;
4640
4636
  this.emitter = new events.exports.EventEmitter();
4641
4637
  this.routeStr = '/api/component/pyramid/route';
4638
+ this.activeRequests = [];
4642
4639
  var exist = findConnector(options);
4643
4640
  if (exist) {
4644
4641
  return exist;
@@ -4724,6 +4721,7 @@ var NgwMap = (function (exports) {
4724
4721
  * Disconnecting a user. Aborting all current requests
4725
4722
  */
4726
4723
  NgwConnector.prototype.logout = function () {
4724
+ this.abort();
4727
4725
  removeConnector(this);
4728
4726
  this.options.auth = undefined;
4729
4727
  this.user = undefined;
@@ -4776,6 +4774,17 @@ var NgwMap = (function (exports) {
4776
4774
  }
4777
4775
  }
4778
4776
  };
4777
+ /** Stop all api requests */
4778
+ NgwConnector.prototype.abort = function () {
4779
+ for (var _i = 0, _a = this.activeRequests; _i < _a.length; _i++) {
4780
+ var req = _a[_i];
4781
+ req.cancel();
4782
+ }
4783
+ this.activeRequests = [];
4784
+ };
4785
+ NgwConnector.prototype.getActiveApiRequests = function () {
4786
+ return __spreadArray([], this.activeRequests, true);
4787
+ };
4779
4788
  /**
4780
4789
  * Send request to NGW api router.
4781
4790
  * @param name - NGW route name from {@link https://docs.nextgis.com/docs_ngweb_dev/doc/developer/resource.html#routes | routes}
@@ -4990,14 +4999,20 @@ var NgwMap = (function (exports) {
4990
4999
  NgwConnector.prototype._loadData = function (url, options) {
4991
5000
  var _this = this;
4992
5001
  options.responseType = options.responseType || 'json';
4993
- return new CancelablePromise(function (resolve, reject, onCancel) {
5002
+ var request = new CancelablePromise(function (resolve, reject, onCancel) {
4994
5003
  if (_this.user) {
4995
5004
  options = options || {};
4996
5005
  // options.withCredentials = true;
4997
5006
  options.headers = __assign(__assign({}, _this.getAuthorizationHeaders()), options.headers);
4998
5007
  }
4999
5008
  loadData(url, resolve, options, reject, onCancel);
5000
- }).catch(function (httpError) {
5009
+ })
5010
+ .then(function (resp) {
5011
+ _this._cleanActiveRequests(request);
5012
+ return resp;
5013
+ })
5014
+ .catch(function (httpError) {
5015
+ _this._cleanActiveRequests(request);
5001
5016
  if (httpError instanceof CancelablePromise.CancelError) ;
5002
5017
  else {
5003
5018
  // @ts-ignore
@@ -5010,6 +5025,20 @@ var NgwMap = (function (exports) {
5010
5025
  }
5011
5026
  }
5012
5027
  });
5028
+ if (options.signal &&
5029
+ typeof options.signal.addEventListener === 'function') {
5030
+ options.signal.addEventListener('abort', function () {
5031
+ request.cancel();
5032
+ });
5033
+ }
5034
+ this.activeRequests.push(request);
5035
+ return request;
5036
+ };
5037
+ NgwConnector.prototype._cleanActiveRequests = function (request) {
5038
+ var activeRequestIndex = this.activeRequests.indexOf(request);
5039
+ if (activeRequestIndex !== -1) {
5040
+ this.activeRequests.splice(activeRequestIndex, 1);
5041
+ }
5013
5042
  };
5014
5043
  NgwConnector.prototype._handleHttpError = function (er) {
5015
5044
  if (er) {
@@ -5131,12 +5160,12 @@ var NgwMap = (function (exports) {
5131
5160
  function fetchNgwExtent(options) {
5132
5161
  return options.connector.getResource(options.resourceId).then(function (resource) {
5133
5162
  if (resource) {
5134
- return fetchNgwResourceExtent(resource, options.connector);
5163
+ return fetchNgwResourceExtent(resource, options.connector, options);
5135
5164
  }
5136
5165
  });
5137
5166
  }
5138
5167
  /** @deprecated use {@link fetchNgwExtent} instead */
5139
- function fetchNgwResourceExtent(item, connector) {
5168
+ function fetchNgwResourceExtent(item, connector, options) {
5140
5169
  if (item.webmap) {
5141
5170
  return CancelablePromise.resolve(getNgwWebmapExtent(item.webmap));
5142
5171
  }
@@ -5145,15 +5174,12 @@ var NgwMap = (function (exports) {
5145
5174
  if (resource.cls && resource.cls.indexOf('style') !== -1) {
5146
5175
  return connector.getResource(resource.parent.id).then(function (res) {
5147
5176
  if (res) {
5148
- return fetchNgwLayerExtent({
5149
- resourceId: res.resource.id,
5150
- connector: connector,
5151
- });
5177
+ return fetchNgwLayerExtent(__assign(__assign({}, options), { resourceId: res.resource.id, connector: connector }));
5152
5178
  }
5153
5179
  });
5154
5180
  }
5155
5181
  else {
5156
- return fetchNgwLayerExtent({ resourceId: resource.id, connector: connector });
5182
+ return fetchNgwLayerExtent(__assign(__assign({}, options), { resourceId: resource.id, connector: connector }));
5157
5183
  }
5158
5184
  }
5159
5185
  }
@@ -5324,7 +5350,7 @@ var NgwMap = (function (exports) {
5324
5350
  }
5325
5351
  function fetchNgwLayerItemsRequest(options) {
5326
5352
  var params = __assign({}, FEATURE_REQUEST_PARAMS);
5327
- var limit = options.limit, offset = options.offset, orderBy = options.orderBy, paramList = options.paramList, connector = options.connector, intersects = options.intersects, resourceId = options.resourceId;
5353
+ var limit = options.limit, cache = options.cache, signal = options.signal, offset = options.offset, orderBy = options.orderBy, paramList = options.paramList, connector = options.connector, intersects = options.intersects, resourceId = options.resourceId;
5328
5354
  if (limit) {
5329
5355
  if (limit !== Number.POSITIVE_INFINITY) {
5330
5356
  params.limit = limit;
@@ -5354,11 +5380,10 @@ var NgwMap = (function (exports) {
5354
5380
  params.paramList = paramList;
5355
5381
  }
5356
5382
  var reqParams = __assign({ id: resourceId }, params);
5357
- return connector.get('feature_layer.feature.collection', { cache: options.cache }, reqParams);
5383
+ return connector.get('feature_layer.feature.collection', { cache: cache, signal: signal }, reqParams);
5358
5384
  }
5359
5385
 
5360
5386
  function prepareNgwFieldsToPropertiesFilter(fields) {
5361
- console.log(fields);
5362
5387
  var f;
5363
5388
  var _loop_1 = function () {
5364
5389
  var field = fields[f];
@@ -7367,7 +7392,7 @@ var NgwMap = (function (exports) {
7367
7392
  });
7368
7393
  });
7369
7394
  };
7370
- NgwResource.prototype.getBounds = function () {
7395
+ NgwResource.prototype.getBounds = function (options) {
7371
7396
  return __awaiter(this, void 0, void 0, function () {
7372
7397
  var _a;
7373
7398
  return __generator(this, function (_b) {
@@ -7378,7 +7403,7 @@ var NgwMap = (function (exports) {
7378
7403
  }
7379
7404
  if (!this.item) return [3 /*break*/, 2];
7380
7405
  _a = this;
7381
- return [4 /*yield*/, fetchNgwResourceExtent(this.item, this.connector)];
7406
+ return [4 /*yield*/, fetchNgwResourceExtent(this.item, this.connector, options)];
7382
7407
  case 1:
7383
7408
  _a._extent = _b.sent();
7384
7409
  return [2 /*return*/, this._extent];
@@ -8020,7 +8045,7 @@ var NgwMap = (function (exports) {
8020
8045
  return featureParams;
8021
8046
  }
8022
8047
  function fetchIdentifyGeoJson(options) {
8023
- var connector = options.connector, identify = options.identify;
8048
+ var connector = options.connector, identify = options.identify, requestOptions = options.requestOptions;
8024
8049
  for (var l in identify) {
8025
8050
  var id = Number(l);
8026
8051
  if (!isNaN(id)) {
@@ -8036,7 +8061,7 @@ var NgwMap = (function (exports) {
8036
8061
  }
8037
8062
  var params = getIdentifyItems(identify);
8038
8063
  if (params && params.length) {
8039
- return fetchNgwLayerFeature(__assign({ connector: connector }, params[0]));
8064
+ return fetchNgwLayerFeature(__assign(__assign(__assign({}, requestOptions), { connector: connector }), params[0]));
8040
8065
  }
8041
8066
  return CancelablePromise.resolve(undefined);
8042
8067
  }
@@ -8049,21 +8074,25 @@ var NgwMap = (function (exports) {
8049
8074
  return CancelablePromise.resolve(undefined);
8050
8075
  }
8051
8076
  function featureLayerIdentify(options) {
8052
- var g = options.geom;
8053
- var geom = [];
8054
- if (Array.isArray(g)) {
8055
- geom = g;
8077
+ var geom = options.geom, signal = options.signal, cache = options.cache;
8078
+ var geom_ = [];
8079
+ if (Array.isArray(geom)) {
8080
+ geom_ = geom;
8056
8081
  }
8057
8082
  else {
8058
- var polygon = g.type === 'Feature' ? g.geometry : g.type === 'Polygon' ? g : false;
8083
+ var polygon = geom.type === 'Feature'
8084
+ ? geom.geometry
8085
+ : geom.type === 'Polygon'
8086
+ ? geom
8087
+ : false;
8059
8088
  if (polygon) {
8060
- geom = polygon.coordinates[0];
8089
+ geom_ = polygon.coordinates[0];
8061
8090
  }
8062
8091
  }
8063
- if (geom) {
8092
+ if (geom_) {
8064
8093
  // create wkt string
8065
8094
  var polygonStr = [];
8066
- for (var _i = 0, geom_1 = geom; _i < geom_1.length; _i++) {
8095
+ for (var _i = 0, geom_1 = geom_; _i < geom_1.length; _i++) {
8067
8096
  var _a = geom_1[_i], lng = _a[0], lat = _a[1];
8068
8097
  var _b = degrees2meters(lng, lat), x = _b[0], y = _b[1];
8069
8098
  polygonStr.push(x + ' ' + y);
@@ -8075,18 +8104,22 @@ var NgwMap = (function (exports) {
8075
8104
  srs: 3857,
8076
8105
  layers: layers,
8077
8106
  };
8078
- return options.connector.post('feature_layer.identify', { data: data });
8107
+ return options.connector.post('feature_layer.identify', {
8108
+ data: data,
8109
+ signal: signal,
8110
+ cache: cache,
8111
+ });
8079
8112
  }
8080
8113
  else {
8081
8114
  throw new Error('Not valid geometry format to make intersection');
8082
8115
  }
8083
8116
  }
8084
8117
  function sendIdentifyRequest(ev, options) {
8085
- var _a;
8086
8118
  deprecatedMapClick(ev);
8087
- var _b = ev.lngLat, lng = _b[0], lat = _b[1];
8088
- var geom = (_a = options.geom) !== null && _a !== void 0 ? _a : getCirclePolygonCoordinates(lng, lat, options.radius);
8089
- return featureLayerIdentify(__assign(__assign({}, options), { geom: geom }));
8119
+ var _a = ev.lngLat, lng = _a[0], lat = _a[1];
8120
+ var geom = options.geom, radius = options.radius, signal = options.signal, cache = options.cache;
8121
+ var geom_ = geom !== null && geom !== void 0 ? geom : getCirclePolygonCoordinates(lng, lat, radius);
8122
+ return featureLayerIdentify(__assign(__assign({}, options), { geom: geom_, signal: signal, cache: cache }));
8090
8123
  }
8091
8124
  function createIdentifyItem(opt) {
8092
8125
  return new IdentifyItem(opt);