@nextgis/ngw-map 1.12.1 → 1.13.5

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