@nextgis/ngw-map 2.4.0 → 3.0.0-alpha.0

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/lib/index.d.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  /// <reference types="node" />
2
2
  import { EventEmitter } from 'events';
3
- import CancelablePromise from '@nextgis/cancelable-promise';
4
3
  import { getIcon } from '@nextgis/icons';
5
4
  import { MapOptions, RuntimeParams, WebMapEvents, WebMap, MapControls, ControlPosition, LayerAdapter, LayerDef, FitOptions, MapClickEvent } from '@nextgis/webmap';
6
5
  export * from '@nextgis/webmap';
@@ -176,16 +175,16 @@ declare class NgwMap<M = unknown, L = unknown, C extends object = any, O extends
176
175
  * Pans and zooms the map to the initial position specified in the options
177
176
  */
178
177
  fit(): void;
179
- fetchNgwLayerItem<G extends Geometry = Geometry, P extends FeatureProperties = FeatureProperties>(options: Omit<FetchNgwItemOptions<P>, 'connector'>): CancelablePromise<FeatureItem>;
180
- fetchNgwLayerItems<F extends FeatureProperties = FeatureProperties, G extends Geometry = Geometry>(options: Omit<FetchNgwItemsOptions<F>, 'connector'>): CancelablePromise<FeatureItem<F, G>[]>;
181
- fetchNgwLayerFeature<G extends Geometry = Geometry, P extends FeatureProperties = FeatureProperties>(options: Omit<FetchNgwItemOptions<P>, 'connector'>): CancelablePromise<Feature<G, P>>;
182
- fetchNgwLayerFeatures<G extends Geometry | null = Geometry, P extends FeatureProperties = FeatureProperties>(options: Omit<FetchNgwItemsOptions<P>, 'connector'>): CancelablePromise<FeatureCollection<G, P>>;
183
- fetchIdentifyItem<G extends Geometry = Geometry, P extends FeatureProperties = FeatureProperties>(identify: NgwIdentify, requestOptions?: NgwFeatureRequestOptions): CancelablePromise<NgwFeatureItemResponse<P, G> | undefined>;
184
- fetchIdentifyGeoJson(identify: NgwIdentify, multiple?: boolean): CancelablePromise<Feature | undefined>;
178
+ fetchNgwLayerItem<G extends Geometry = Geometry, P extends FeatureProperties = FeatureProperties>(options: Omit<FetchNgwItemOptions<P>, 'connector'>): Promise<FeatureItem>;
179
+ fetchNgwLayerItems<F extends FeatureProperties = FeatureProperties, G extends Geometry = Geometry>(options: Omit<FetchNgwItemsOptions<F>, 'connector'>): Promise<FeatureItem<F, G>[]>;
180
+ fetchNgwLayerFeature<G extends Geometry = Geometry, P extends FeatureProperties = FeatureProperties>(options: Omit<FetchNgwItemOptions<P>, 'connector'>): Promise<Feature<G, P>>;
181
+ fetchNgwLayerFeatures<G extends Geometry | null = Geometry, P extends FeatureProperties = FeatureProperties>(options: Omit<FetchNgwItemsOptions<P>, 'connector'>): Promise<FeatureCollection<G, P>>;
182
+ fetchIdentifyItem<G extends Geometry = Geometry, P extends FeatureProperties = FeatureProperties>(identify: NgwIdentify, requestOptions?: NgwFeatureRequestOptions): Promise<NgwFeatureItemResponse<P, G> | undefined>;
183
+ fetchIdentifyGeoJson(identify: NgwIdentify, multiple?: boolean): Promise<Feature | undefined>;
185
184
  /**
186
185
  * @deprecated use {@link fetchIdentifyGeoJson} instead
187
186
  */
188
- getIdentifyGeoJson(identify: NgwIdentify, multiple?: boolean): CancelablePromise<Feature | undefined>;
187
+ getIdentifyGeoJson(identify: NgwIdentify, multiple?: boolean): Promise<Feature | undefined>;
189
188
  getNgwLayers(): Promise<NgwLayers>;
190
189
  getNgwLayerByResourceId(id: number): Promise<LayerAdapter | undefined>;
191
190
  /**
@@ -208,19 +207,19 @@ declare class NgwMap<M = unknown, L = unknown, C extends object = any, O extends
208
207
  /**
209
208
  * @deprecated use {@link fetchNgwLayerItem} instead
210
209
  */
211
- getNgwLayerItem<G extends Geometry = Geometry, P extends FeatureProperties = FeatureProperties>(options: Omit<FetchNgwItemOptions<P>, 'connector'>): CancelablePromise<FeatureItem>;
210
+ getNgwLayerItem<G extends Geometry = Geometry, P extends FeatureProperties = FeatureProperties>(options: Omit<FetchNgwItemOptions<P>, 'connector'>): Promise<FeatureItem>;
212
211
  /**
213
212
  * @deprecated use {@link fetchNgwLayerItems} instead
214
213
  */
215
- getNgwLayerItems<F extends FeatureProperties = FeatureProperties, G extends Geometry = Geometry>(options: Omit<FetchNgwItemsOptions<F>, 'connector'>): CancelablePromise<FeatureItem<F, G>[]>;
214
+ getNgwLayerItems<F extends FeatureProperties = FeatureProperties, G extends Geometry = Geometry>(options: Omit<FetchNgwItemsOptions<F>, 'connector'>): Promise<FeatureItem<F, G>[]>;
216
215
  /**
217
216
  * @deprecated use {@link fetchNgwLayerFeature} instead
218
217
  */
219
- getNgwLayerFeature<G extends Geometry = Geometry, P extends FeatureProperties = FeatureProperties>(options: Omit<FetchNgwItemOptions<P>, 'connector'>): CancelablePromise<Feature<G, P>>;
218
+ getNgwLayerFeature<G extends Geometry = Geometry, P extends FeatureProperties = FeatureProperties>(options: Omit<FetchNgwItemOptions<P>, 'connector'>): Promise<Feature<G, P>>;
220
219
  /**
221
220
  * @deprecated use {@link fetchNgwLayerFeatures} instead
222
221
  */
223
- getNgwLayerFeatures<G extends Geometry | null = Geometry, P extends JsonMap = JsonMap>(options: FetchNgwItemsOptions<P>): CancelablePromise<FeatureCollection<G, P>>;
222
+ getNgwLayerFeatures<G extends Geometry | null = Geometry, P extends JsonMap = JsonMap>(options: FetchNgwItemsOptions<P>): Promise<FeatureCollection<G, P>>;
224
223
  /** @deprecated use {@link cancelPromises} instead */
225
224
  cancelPromise(...args: PromiseGroup[]): void;
226
225
  cancelPromises(...args: PromiseGroup[]): void;
@@ -1,10 +1,9 @@
1
- /** Bundle of @nextgis/ngw-map; version: 2.4.0; author: NextGIS */
1
+ /** Bundle of @nextgis/ngw-map; version: 3.0.0-alpha.0; author: NextGIS */
2
2
  'use strict';
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  var events = require('events');
7
- var CancelablePromise = require('@nextgis/cancelable-promise');
8
7
  var icons = require('@nextgis/icons');
9
8
  var ngwKit = require('@nextgis/ngw-kit');
10
9
  var utils = require('@nextgis/utils');
@@ -235,26 +234,35 @@ class NgwMap extends webmap.WebMap {
235
234
  });
236
235
  }
237
236
  fetchIdentifyItem(identify, requestOptions) {
237
+ const abortController = new AbortController();
238
+ const abortSignal = abortController.signal;
239
+ if (requestOptions == null ? void 0 : requestOptions.signal) {
240
+ requestOptions.signal.addEventListener("abort", abortController.abort);
241
+ }
242
+ requestOptions = requestOptions || {};
243
+ requestOptions.signal = abortSignal;
238
244
  const promise = ngwKit.fetchIdentifyItem({
239
245
  identify,
240
246
  connector: this.connector,
241
247
  requestOptions
242
248
  // multiple,
243
249
  });
244
- this._addPromise("identify", promise);
250
+ this._addPromise("identify", promise, abortController);
245
251
  return promise;
246
252
  }
247
253
  fetchIdentifyGeoJson(identify, multiple = false) {
254
+ const abortController = new AbortController();
248
255
  const promise = ngwKit.fetchIdentifyGeoJson({
249
256
  identify,
250
257
  connector: this.connector,
251
- multiple
258
+ multiple,
259
+ requestOptions: { signal: abortController.signal }
252
260
  });
253
261
  if (promise && "then" in promise) {
254
- this._addPromise("identify", promise);
262
+ this._addPromise("identify", promise, abortController);
255
263
  return promise;
256
264
  } else {
257
- return CancelablePromise.resolve(promise);
265
+ return Promise.resolve(promise);
258
266
  }
259
267
  }
260
268
  /**
@@ -419,7 +427,7 @@ class NgwMap extends webmap.WebMap {
419
427
  args.forEach((name) => {
420
428
  const group = this._promises[name];
421
429
  if (group) {
422
- group.forEach((x) => x.cancel());
430
+ group.forEach((x) => x[1].abort());
423
431
  this._promises[name] = [];
424
432
  }
425
433
  });
@@ -485,11 +493,13 @@ class NgwMap extends webmap.WebMap {
485
493
  }, highlightDuration);
486
494
  }
487
495
  }
496
+ const abortController = new AbortController();
488
497
  const selectPromise = ngwKit.sendIdentifyRequest(ev, {
489
498
  layers: ids,
490
499
  connector: this.connector,
491
500
  radius,
492
- geom
501
+ geom,
502
+ signal: abortController.signal
493
503
  }).then((resp) => {
494
504
  const identify = {
495
505
  ...resp,
@@ -501,21 +511,21 @@ class NgwMap extends webmap.WebMap {
501
511
  this._emitStatusEvent("ngw:select", identifyEvent);
502
512
  return identifyEvent;
503
513
  });
504
- this._addPromise("select", selectPromise);
514
+ this._addPromise("select", selectPromise, abortController);
505
515
  return selectPromise;
506
516
  }
507
- _addPromise(groupName, promise) {
517
+ _addPromise(groupName, promise, abortController) {
508
518
  const group = this._promises[groupName];
509
- if (group && group.indexOf(promise) === -1) {
519
+ if (group && group.findIndex((g) => g[0] === promise) === -1) {
510
520
  const removeFromGroup = () => {
511
- const index = group.indexOf(promise);
521
+ const index = group.findIndex((g) => g[0] === promise);
512
522
  if (index !== -1) {
513
523
  group.splice(index, 1);
514
524
  }
515
525
  };
516
526
  promise.then(removeFromGroup);
517
527
  promise.catch(removeFromGroup);
518
- group.push(promise);
528
+ group.push([promise, abortController]);
519
529
  }
520
530
  }
521
531
  _isFitFromResource() {
@@ -1 +1 @@
1
- {"version":3,"file":"ngw-map.cjs.js","sources":["../src/utils/appendNgwResources.ts","../src/utils/prepareWebMapOptions.ts","../src/NgwMap.ts","../src/index.ts"],"sourcesContent":["import type { NgwResourceDefinition } from '../interfaces';\nimport type { NgwLayerOptions } from '@nextgis/ngw-kit';\n\nexport function appendNgwResources(\n options: NgwLayerOptions[],\n resource?: NgwResourceDefinition,\n defOptions?: Partial<NgwLayerOptions>,\n overwriteOptions?: Partial<NgwLayerOptions>,\n): void {\n if (typeof resource === 'number' || typeof resource === 'string') {\n resource = Number(resource);\n options.push({\n ...defOptions,\n resource,\n });\n } else if (Array.isArray(resource)) {\n const [resourceId, id] = resource;\n options.push({\n ...defOptions,\n resource: resourceId,\n id,\n ...overwriteOptions,\n });\n } else if (typeof resource === 'object') {\n options.push({ ...defOptions, ...resource, ...overwriteOptions });\n }\n}\n","import NgwConnector from '@nextgis/ngw-connector';\nimport { NgwKit } from '@nextgis/ngw-kit';\nimport { QmsKit } from '@nextgis/qms-kit';\nimport { deepmerge } from '@nextgis/utils';\nimport { getDefaultControls } from '@nextgis/webmap';\n\nimport type { NgwMapOptions } from '../interfaces';\nimport type { MapOptions, StarterKit } from '@nextgis/webmap';\n\nexport const OPTIONS: NgwMapOptions = {\n target: 'map',\n baseUrl: '',\n whitlabel: false,\n controls: getDefaultControls(),\n controlsOptions: {\n ZOOM: { position: 'top-left' },\n ATTRIBUTION: {\n position: 'bottom-right',\n customAttribution: [\n '<a href=\"https://nextgis.com\" target=\"_blank\">©NextGIS</a>',\n ],\n },\n },\n pixelRadius: 10,\n};\n\nexport function prepareWebMapOptions(options: NgwMapOptions): MapOptions {\n const kits: StarterKit[] = [new QmsKit()];\n if (options.starterKits) {\n options.starterKits.forEach((x) => {\n kits.push(x);\n });\n }\n\n if (!options.connector) {\n options.connector = new NgwConnector({\n baseUrl: options.baseUrl || '',\n auth: options.auth,\n });\n } else if (options.connector) {\n options.baseUrl = options.connector.options.baseUrl;\n }\n options = deepmerge(OPTIONS, options);\n\n if (!options.center && !options.bounds) {\n options.bounds = [-179, -90, 180, 90];\n // options.maxBounds = options.bounds;\n }\n\n if (options.connector) {\n kits.push(\n new NgwKit({\n connector: options.connector,\n auth: options.auth,\n }),\n );\n }\n options = {\n ...options,\n starterKits: kits,\n create: false,\n };\n return options;\n}\n","import { EventEmitter } from 'events';\n\nimport CancelablePromise from '@nextgis/cancelable-promise';\nimport { getIcon } from '@nextgis/icons';\nimport {\n createIdentifyItem,\n createNgwLayerAdapter,\n fetchIdentifyGeoJson,\n fetchIdentifyItem,\n fetchNgwExtent,\n fetchNgwLayerFeature,\n fetchNgwLayerFeatureCollection,\n fetchNgwLayerItem,\n fetchNgwLayerItems,\n getCompanyLogo,\n getIdentifyItems,\n sendIdentifyRequest,\n} from '@nextgis/ngw-kit';\nimport {\n defined,\n getCirclePolygonCoordinates,\n getIdentifyRadius,\n isObject,\n} from '@nextgis/utils';\nimport { deprecatedWarn } from '@nextgis/utils';\nimport { WebMap } from '@nextgis/webmap';\n\nimport { appendNgwResources } from './utils/appendNgwResources';\nimport { prepareWebMapOptions } from './utils/prepareWebMapOptions';\n\nimport type {\n NgwIdentifyEvent,\n NgwLayers,\n NgwMapEvents,\n NgwMapOptions,\n} from './interfaces';\nimport type NgwConnector from '@nextgis/ngw-connector';\nimport type {\n FeatureItem,\n FeatureLayersIdentify,\n FeatureLayersIdentifyItems,\n LayerFeature,\n ResourceItem,\n} from '@nextgis/ngw-connector';\nimport type {\n FetchNgwItemsOptions,\n NgwFeatureItemResponse,\n NgwFeatureRequestOptions,\n NgwIdentify,\n NgwWebmapItem,\n ResourceAdapter,\n} from '@nextgis/ngw-kit';\nimport type { NgwLayerOptions } from '@nextgis/ngw-kit';\nimport type { FetchNgwItemOptions } from '@nextgis/ngw-kit';\nimport type { QmsAdapterOptions } from '@nextgis/qms-kit';\nimport type { FeatureProperties, JsonMap } from '@nextgis/utils';\nimport type {\n AdapterOptions,\n ControlPosition,\n FitOptions,\n LayerAdapter,\n LayerDef,\n MapClickEvent,\n MapControls,\n OnLayerMouseOptions,\n WebMapEvents,\n} from '@nextgis/webmap';\nimport type { Feature, FeatureCollection, Geometry, Polygon } from 'geojson';\nimport type StrictEventEmitter from 'strict-event-emitter-types';\n\ntype PromiseGroup = 'select' | 'identify';\n\n/**\n * Base class containing the logic of interaction WebMap with NextGIS services.\n *\n * @example\n * ```javascript\n * import { NgwMap } from '@nextgis/ngw-map';\n * import MapAdapter from '@nextgis/leaflet-map-adapter';\n * // styles are not included in the leaflet-map-adapter\n * import 'leaflet/dist/leaflet.css';\n *\n * const ngwMap = new NgwMap({\n * mapAdapter: new MapAdapter(),\n * target: 'map',\n * qmsId: 448,\n * baseUrl: 'https://demo.nextgis.com',\n * webmapId: 3985\n * });\n * ```\n */\nexport class NgwMap<\n M = unknown,\n L = unknown,\n C extends object = any,\n O extends NgwMapOptions<M, C> = NgwMapOptions<M, C>,\n> extends WebMap<M, L, C, NgwMapEvents, O> {\n static getIcon = getIcon;\n\n readonly emitter: StrictEventEmitter<EventEmitter, NgwMapEvents> =\n new EventEmitter();\n connector!: NgwConnector;\n\n protected _ngwLayers: NgwLayers = {};\n private $$selectFromNgwRaster?: (ev: MapClickEvent) => void;\n private $$selectFromNgwVector?: (ev: OnLayerMouseOptions) => void;\n private _promises: Record<PromiseGroup, CancelablePromise[]> = {\n select: [],\n identify: [],\n };\n\n constructor(options: O) {\n super(prepareWebMapOptions(options) as O);\n if (options.connector) {\n this.connector = options.connector;\n }\n this._createWebMap().then(() => {\n const container = this.getContainer();\n if (container) {\n container.classList.add('ngw-map-container');\n }\n if (this.options.whitlabel) {\n this._whiteLabel();\n }\n });\n }\n\n /**\n * Organized addition to the map design and controls elements,\n * calling `control.onAdd(this.webMap.mapAdapter)`\n * @param control - object with onAdd and onRemove methods\n * or a string value indicating the name of the control installed in the map adapter\n * @param position - position relative to the map angles\n * @param options - initialization parameters if the control is set as a string value\n *\n * @example\n * ```javascript\n * ngwMap.addControl(new CustomControl(), 'bottom-left');\n * ngwMap.addControl('ZOOM', 'top-right')\n * ```\n */\n async addControl<K extends keyof MapControls>(\n controlDef: K | C,\n position: ControlPosition,\n options?: MapControls[K],\n ): Promise<any> {\n await this.onLoad('controls:create');\n return super.addControl(controlDef, position, options);\n }\n\n /**\n * Add any (style, vector, webmap) NGW layer by resource definition.\n * @param options - set layer identification parameters and render method.\n *\n * @example\n * ```javascript\n * // Add raster layer resourceId is the style of 4004 layer\n * ngwMap.addNgwLayer({ resource: 4005 });\n * // Add vector data from layer GEOJSON source\n * ngwMap.addNgwLayer({\n * resource: 4038,\n * adapter: 'GEOJSON',\n * adapterOptions: { paint: { color: 'red' } }\n * });\n * ```\n */\n async addNgwLayer(\n options: NgwLayerOptions,\n ): Promise<ResourceAdapter | undefined> {\n await this.onMapLoad();\n // @ts-ignore for backward compatibility\n const { keyname, resourceId } = options;\n\n if (keyname || resourceId !== undefined) {\n deprecatedWarn(\n 'set `resource` options instead of `keyname` or `resourceId`',\n );\n }\n\n const resource = options.resource;\n if (!keyname && !resourceId && !resource) {\n throw new Error(\n 'resource, resourceId or keyname is required parameter to add NGW layer',\n );\n }\n if (defined(this.options.baseUrl)) {\n try {\n if (defined(this.options.setViewDelay)) {\n options.adapterOptions = options.adapterOptions || {};\n if (!defined(options.adapterOptions.setViewDelay)) {\n options.adapterOptions.setViewDelay = this.options.setViewDelay;\n }\n }\n const adapter = createNgwLayerAdapter(options, this, this.connector);\n const adapterOpts = {\n visibility: true,\n // TODO: do not merge options, use only `adapterOptions`\n ...options,\n ...options.adapterOptions,\n } as AdapterOptions;\n const layer = (await this.addLayer(\n adapter,\n adapterOpts,\n )) as ResourceAdapter<M, L, AdapterOptions>;\n const id = layer && this.getLayerId(layer);\n if (layer && id) {\n this._ngwLayers[id] = { layer, resourceId: layer.resourceId };\n layer.options.name =\n layer.options.name ||\n (layer.item && layer.item.resource.display_name);\n if (layer.options.baselayer) {\n const visibleLayerBaseLayer = this.getActiveBaseLayer();\n if (visibleLayerBaseLayer) {\n return layer;\n }\n }\n }\n return layer;\n } catch (er) {\n const resId =\n isObject(resource) && 'id' in resource\n ? resource.id\n : keyname || resourceId || resource;\n console.error(`Can't add NGW layer ${resId}.`, er);\n }\n }\n }\n\n /**\n * Pans and zooms the map to the initial position specified in the options\n */\n fit(): void {\n const { center, zoom, bounds } = this.options;\n if (center) {\n this.setCenter(center);\n if (zoom) {\n this.setZoom(zoom);\n }\n } else if (bounds) {\n this.fitBounds(bounds);\n }\n }\n\n fetchNgwLayerItem<\n G extends Geometry = Geometry,\n P extends FeatureProperties = FeatureProperties,\n >(\n options: Omit<FetchNgwItemOptions<P>, 'connector'>,\n ): CancelablePromise<FeatureItem> {\n return fetchNgwLayerItem<G, P>({\n connector: this.connector,\n ...options,\n });\n }\n\n fetchNgwLayerItems<\n F extends FeatureProperties = FeatureProperties,\n G extends Geometry = Geometry,\n >(\n options: Omit<FetchNgwItemsOptions<F>, 'connector'>,\n ): CancelablePromise<FeatureItem<F, G>[]> {\n return fetchNgwLayerItems<G, F>({\n connector: this.connector,\n ...options,\n });\n }\n\n fetchNgwLayerFeature<\n G extends Geometry = Geometry,\n P extends FeatureProperties = FeatureProperties,\n >(\n options: Omit<FetchNgwItemOptions<P>, 'connector'>,\n ): CancelablePromise<Feature<G, P>> {\n return fetchNgwLayerFeature<G, P>({\n connector: this.connector,\n ...options,\n });\n }\n\n fetchNgwLayerFeatures<\n G extends Geometry | null = Geometry,\n P extends FeatureProperties = FeatureProperties,\n >(\n options: Omit<FetchNgwItemsOptions<P>, 'connector'>,\n ): CancelablePromise<FeatureCollection<G, P>> {\n return fetchNgwLayerFeatureCollection({\n connector: this.connector,\n ...options,\n });\n }\n\n fetchIdentifyItem<\n G extends Geometry = Geometry,\n P extends FeatureProperties = FeatureProperties,\n >(\n identify: NgwIdentify,\n requestOptions?: NgwFeatureRequestOptions,\n // multiple = false\n ): CancelablePromise<NgwFeatureItemResponse<P, G> | undefined> {\n const promise = fetchIdentifyItem<G, P>({\n identify,\n connector: this.connector,\n requestOptions,\n // multiple,\n });\n\n this._addPromise('identify', promise);\n return promise;\n }\n\n fetchIdentifyGeoJson(\n identify: NgwIdentify,\n multiple = false,\n ): CancelablePromise<Feature | undefined> {\n const promise = fetchIdentifyGeoJson({\n identify,\n connector: this.connector,\n multiple,\n });\n if (promise && 'then' in promise) {\n this._addPromise('identify', promise);\n return promise;\n } else {\n return CancelablePromise.resolve(promise);\n }\n }\n\n /**\n * @deprecated use {@link fetchIdentifyGeoJson} instead\n */\n getIdentifyGeoJson(\n identify: NgwIdentify,\n multiple = false,\n ): CancelablePromise<Feature | undefined> {\n return this.fetchIdentifyGeoJson(identify, multiple);\n }\n\n async getNgwLayers(): Promise<NgwLayers> {\n await this.onLoad();\n return this._ngwLayers;\n }\n\n async getNgwLayerByResourceId(id: number): Promise<LayerAdapter | undefined> {\n for (const n in this._ngwLayers) {\n const mem = this._ngwLayers[n];\n if (mem.resourceId === id) {\n return mem && mem.layer;\n } else if (mem.layer.getIdentificationIds) {\n const ids = await mem.layer.getIdentificationIds();\n if (ids && ids.some((x) => x === id)) {\n return mem.layer;\n }\n }\n if (mem.layer.getDependLayers) {\n const dependLayers = mem.layer.getDependLayers() as NgwWebmapItem[];\n const dependFit = dependLayers.find((x) => {\n return x.item && x.item.parentId === id;\n });\n if (dependFit) {\n return dependFit.layer;\n }\n }\n }\n }\n\n /**\n * Move map to layer. If the layer is NGW resource, extent will be received from the server\n *\n * @example\n * ```javascript\n * const ngwLayer = ngwMap.addNgwLayer({ id: 'ngw_layer_name', resource: 4005 });\n * ngwMap.fitLayer(ngwLayer);\n * ngwMap.fitLayer('ngw_layer_name');\n * ```\n */\n async fitLayer(\n layerDef: LayerDef | number,\n options?: FitOptions,\n ): Promise<void> {\n let id: string | undefined;\n if (typeof layerDef === 'string' || typeof layerDef === 'number') {\n id = String(id);\n } else {\n id = layerDef.id;\n }\n const ngwLayer = id && this._ngwLayers[id];\n if (ngwLayer) {\n if (ngwLayer.layer.getBounds) {\n const bounds = await ngwLayer.layer.getBounds();\n if (bounds) {\n this.fitBounds(bounds, options);\n }\n } else {\n let item: ResourceItem | undefined;\n if (ngwLayer.layer.item) {\n item = ngwLayer.layer.item;\n } else {\n const resourceId = ngwLayer.resourceId;\n item = await this.connector.getResource(resourceId);\n }\n if (item) {\n fetchNgwExtent({\n resourceId: item.resource.id,\n connector: this.connector,\n }).then((extent) => {\n if (extent) {\n this.fitBounds(extent, options);\n }\n });\n }\n }\n } else {\n super.fitLayer(\n typeof layerDef === 'number' ? String(layerDef) : layerDef,\n options,\n );\n }\n }\n\n /** @deprecated use {@link fitLayer} instead */\n async zoomToLayer(layerDef: string | ResourceAdapter): Promise<void> {\n return this.fitLayer(layerDef);\n }\n\n onLoad(event: keyof NgwMapEvents = 'ngw-map:create'): Promise<this> {\n return super.onLoad(event as keyof WebMapEvents);\n }\n\n removeLayer(layerDef: LayerDef): void {\n const layer = this.getLayer(layerDef);\n if (layer) {\n const layerId = this.getLayerId(layer);\n if (layerId) {\n delete this._ngwLayers[layerId];\n }\n super.removeLayer(layer);\n }\n }\n\n enableSelection(): void {\n if (!this.$$selectFromNgwRaster) {\n this.$$selectFromNgwRaster = (ev: MapClickEvent) => {\n const count = this._getSelectListenersCount();\n if (count) {\n this.selectFromNgwRaster(ev);\n }\n };\n this.$$selectFromNgwVector = (ev: OnLayerMouseOptions) => {\n const count = this._getSelectListenersCount();\n if (count) {\n this._selectFromNgwVector(ev);\n }\n };\n this.emitter.on('click', this.$$selectFromNgwRaster);\n this.emitter.on('layer:click', this.$$selectFromNgwVector);\n }\n }\n\n disableSelection(): void {\n if (this.$$selectFromNgwRaster) {\n this.emitter.removeListener('click', this.$$selectFromNgwRaster);\n this.$$selectFromNgwRaster = undefined;\n }\n if (this.$$selectFromNgwVector) {\n this.emitter.removeListener('layer:click', this.$$selectFromNgwVector);\n\n this.$$selectFromNgwVector = undefined;\n }\n }\n\n /**\n * @deprecated use {@link fetchNgwLayerItem} instead\n */\n getNgwLayerItem<\n G extends Geometry = Geometry,\n P extends FeatureProperties = FeatureProperties,\n >(\n options: Omit<FetchNgwItemOptions<P>, 'connector'>,\n ): CancelablePromise<FeatureItem> {\n return this.fetchNgwLayerItem<G, P>(options);\n }\n\n /**\n * @deprecated use {@link fetchNgwLayerItems} instead\n */\n getNgwLayerItems<\n F extends FeatureProperties = FeatureProperties,\n G extends Geometry = Geometry,\n >(\n options: Omit<FetchNgwItemsOptions<F>, 'connector'>,\n ): CancelablePromise<FeatureItem<F, G>[]> {\n return this.fetchNgwLayerItems<F, G>(options);\n }\n\n /**\n * @deprecated use {@link fetchNgwLayerFeature} instead\n */\n getNgwLayerFeature<\n G extends Geometry = Geometry,\n P extends FeatureProperties = FeatureProperties,\n >(\n options: Omit<FetchNgwItemOptions<P>, 'connector'>,\n ): CancelablePromise<Feature<G, P>> {\n return this.fetchNgwLayerFeature<G, P>(options);\n }\n\n /**\n * @deprecated use {@link fetchNgwLayerFeatures} instead\n */\n getNgwLayerFeatures<\n G extends Geometry | null = Geometry,\n P extends JsonMap = JsonMap,\n >(\n options: FetchNgwItemsOptions<P>,\n ): CancelablePromise<FeatureCollection<G, P>> {\n return this.fetchNgwLayerFeatures(options);\n }\n\n /** @deprecated use {@link cancelPromises} instead */\n cancelPromise(...args: PromiseGroup[]): void {\n this.cancelPromises(...args);\n }\n\n cancelPromises(...args: PromiseGroup[]): void {\n if (!args.length) {\n args = Object.keys(this._promises) as PromiseGroup[];\n }\n args.forEach((name) => {\n const group = this._promises[name];\n if (group) {\n group.forEach((x) => x.cancel());\n this._promises[name] = [];\n }\n });\n }\n\n async selectFromNgwRaster(\n ev: MapClickEvent,\n ): Promise<NgwIdentifyEvent | undefined> {\n this._emitStatusEvent('ngw:preselect');\n\n const promises: Promise<number[] | undefined>[] = [];\n const layers = Object.values(this._ngwLayers);\n layers.sort((a, b) => {\n if (a.layer.order && b.layer.order) {\n return b.layer.order - a.layer.order;\n }\n return 1;\n });\n for (const l of layers) {\n const layer = l.layer;\n const identFunc =\n typeof layer.getIdentificationIds === 'function'\n ? layer.getIdentificationIds\n : false;\n const interactive = layer.options.interactive ?? true;\n if (\n identFunc &&\n layer.options.selectable &&\n interactive &&\n this.isLayerVisible(layer)\n ) {\n promises.push(identFunc.call(layer));\n }\n }\n const getIdsPromise = Promise.all(promises);\n const getIds = await getIdsPromise;\n const ids: number[] = [];\n for (const x of getIds) {\n if (x) {\n ids.push(...x);\n }\n }\n\n if (!ids.length) {\n this._emitStatusEvent('ngw:select', null);\n return;\n }\n\n const pixelRadius = this.options.pixelRadius || 10;\n const center = this.getCenter();\n let zoom = this.getZoom();\n zoom = zoom !== undefined ? zoom : 20;\n if (!center || !zoom) {\n this._emitStatusEvent('ngw:select', null);\n return;\n }\n const radius = getIdentifyRadius(center, zoom, pixelRadius);\n\n let geom: Polygon | undefined;\n if (this.options.highlightIdentification) {\n const highlightOptions = this.options.highlightIdentification;\n const highlightDuration =\n typeof highlightOptions === 'number' ? highlightOptions : 1000;\n const [lng, lat] = ev.lngLat;\n geom = {\n type: 'Polygon',\n coordinates: [getCirclePolygonCoordinates(lng, lat, radius)],\n };\n\n const highlightIdentificationLayer = await this.addGeoJsonLayer({\n data: {\n type: 'Feature',\n geometry: geom,\n },\n });\n if (highlightDuration !== Infinity) {\n setTimeout(() => {\n this.removeLayer(highlightIdentificationLayer);\n }, highlightDuration);\n }\n }\n\n const selectPromise = sendIdentifyRequest(ev, {\n layers: ids,\n connector: this.connector,\n radius,\n geom,\n }).then((resp) => {\n const identify: NgwIdentify = {\n ...resp,\n resources: ids,\n sourceType: 'raster',\n event: ev,\n };\n const identifyEvent: NgwIdentifyEvent = this._prepareToIdentify(identify);\n this._emitStatusEvent('ngw:select', identifyEvent);\n return identifyEvent;\n });\n this._addPromise('select', selectPromise);\n return selectPromise;\n }\n\n private _addPromise(groupName: PromiseGroup, promise: CancelablePromise) {\n const group = this._promises[groupName];\n if (group && group.indexOf(promise) === -1) {\n const removeFromGroup = () => {\n const index = group.indexOf(promise);\n if (index !== -1) {\n group.splice(index, 1);\n }\n };\n promise.then(removeFromGroup);\n promise.catch(removeFromGroup);\n group.push(promise);\n }\n }\n\n private _isFitFromResource() {\n const params = this._initMapState;\n if (params.zoom && params.center) {\n return false;\n }\n return true;\n }\n\n private async _createWebMap() {\n await this.create();\n if (this.options.qmsId) {\n this._addQmsBaseLayer();\n }\n if (this.options.osm) {\n this._addOsmBaseLayer();\n }\n\n const resources: NgwLayerOptions[] = [];\n const layerFitAllowed = this._isFitFromResource();\n if (this.options.webmapId) {\n appendNgwResources(resources, this.options.webmapId, {\n fit: layerFitAllowed,\n });\n }\n if (this.options.resources && Array.isArray(this.options.resources)) {\n for (const x of this.options.resources) {\n const overwriteOptions: Partial<NgwLayerOptions> = {};\n if (!layerFitAllowed) {\n overwriteOptions.fit = false;\n }\n appendNgwResources(resources, x, {}, overwriteOptions);\n }\n }\n for (const r of resources) {\n try {\n await this.addNgwLayer(r);\n } catch (er) {\n console.warn(er);\n }\n }\n this._emitStatusEvent('ngw-map:create', this);\n this.enableSelection();\n }\n\n private _addOsmBaseLayer() {\n this.addBaseLayer('OSM');\n }\n\n private _addQmsBaseLayer() {\n let qmsId: number;\n let qmsLayerName: string | undefined;\n if (Array.isArray(this.options.qmsId)) {\n qmsId = this.options.qmsId[0];\n qmsLayerName = this.options.qmsId[1];\n } else {\n qmsId = Number(this.options.qmsId);\n }\n const qmsLayerOptions: Partial<QmsAdapterOptions> = {\n qmsId,\n };\n if (qmsLayerName) {\n qmsLayerOptions.id = qmsLayerName;\n }\n\n this.addBaseLayer('QMS', qmsLayerOptions);\n }\n\n private _selectFromNgwVector(\n ev: OnLayerMouseOptions,\n ): FeatureLayersIdentify | undefined {\n const layer: ResourceAdapter = ev.layer as ResourceAdapter;\n const selectable = layer.options.selectable && this.isLayerVisible(layer);\n if (!selectable) {\n return undefined;\n }\n // Item property means layer is NgwResource\n const id = layer.item && layer.item.resource.id;\n const feature = ev.feature;\n\n if (id !== undefined && feature) {\n const featureId = feature.id;\n if (featureId) {\n const identifyFeature: LayerFeature = {\n id: Number(featureId),\n fields: feature.properties || {},\n label: `#${id}`,\n layerId: Number(id),\n parent: '',\n geom: feature.geometry,\n };\n const items: FeatureLayersIdentifyItems = {\n featureCount: 1,\n features: [identifyFeature],\n };\n const identify: FeatureLayersIdentify = {\n featureCount: 1,\n [id]: items,\n };\n this._emitStatusEvent(\n 'ngw:select',\n this._prepareToIdentify({\n ...identify,\n resources: [id],\n sourceType: 'vector',\n } as NgwIdentify),\n );\n return identify;\n }\n }\n }\n\n private _prepareToIdentify<\n F extends FeatureProperties = FeatureProperties,\n G extends Geometry = Geometry,\n >(identify: NgwIdentify): NgwIdentifyEvent {\n const getIdentifyItems_ = () => {\n return getIdentifyItems(identify, true).map((x) => {\n return createIdentifyItem<F, G>({\n feature: x.feature,\n connector: this.connector,\n });\n });\n };\n return {\n ...identify,\n getIdentifyItems: getIdentifyItems_,\n };\n }\n\n private _getSelectListenersCount() {\n return this.emitter.listenerCount('ngw:select');\n }\n\n private async _whiteLabel() {\n const container = this.getContainer();\n if (container) {\n const logo = await getCompanyLogo(\n this.connector,\n this.options.companyLogoOptions,\n );\n if (logo) {\n container.appendChild(logo);\n }\n }\n }\n}\n","import { NgwMap } from './NgwMap';\n\nimport type { NgwMapOptions } from './interfaces';\n\nexport * from '@nextgis/webmap';\n\nexport * from './interfaces';\n\nexport { NgwMap };\n\nexport async function createNgwMap(options: NgwMapOptions): Promise<NgwMap> {\n const ngwMap = new NgwMap(options);\n return ngwMap.onLoad();\n}\n"],"names":["getDefaultControls","QmsKit","deepmerge","NgwKit","WebMap","EventEmitter","deprecatedWarn","defined","createNgwLayerAdapter","isObject","fetchNgwLayerItem","fetchNgwLayerItems","fetchNgwLayerFeature","fetchNgwLayerFeatureCollection","fetchIdentifyItem","fetchIdentifyGeoJson","fetchNgwExtent","getIdentifyRadius","getCirclePolygonCoordinates","sendIdentifyRequest","getIdentifyItems","createIdentifyItem","getCompanyLogo","getIcon"],"mappings":"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"}
1
+ {"version":3,"file":"ngw-map.cjs.js","sources":["../src/utils/appendNgwResources.ts","../src/utils/prepareWebMapOptions.ts","../src/NgwMap.ts","../src/index.ts"],"sourcesContent":["import type { NgwResourceDefinition } from '../interfaces';\nimport type { NgwLayerOptions } from '@nextgis/ngw-kit';\n\nexport function appendNgwResources(\n options: NgwLayerOptions[],\n resource?: NgwResourceDefinition,\n defOptions?: Partial<NgwLayerOptions>,\n overwriteOptions?: Partial<NgwLayerOptions>,\n): void {\n if (typeof resource === 'number' || typeof resource === 'string') {\n resource = Number(resource);\n options.push({\n ...defOptions,\n resource,\n });\n } else if (Array.isArray(resource)) {\n const [resourceId, id] = resource;\n options.push({\n ...defOptions,\n resource: resourceId,\n id,\n ...overwriteOptions,\n });\n } else if (typeof resource === 'object') {\n options.push({ ...defOptions, ...resource, ...overwriteOptions });\n }\n}\n","import NgwConnector from '@nextgis/ngw-connector';\nimport { NgwKit } from '@nextgis/ngw-kit';\nimport { QmsKit } from '@nextgis/qms-kit';\nimport { deepmerge } from '@nextgis/utils';\nimport { getDefaultControls } from '@nextgis/webmap';\n\nimport type { NgwMapOptions } from '../interfaces';\nimport type { MapOptions, StarterKit } from '@nextgis/webmap';\n\nexport const OPTIONS: NgwMapOptions = {\n target: 'map',\n baseUrl: '',\n whitlabel: false,\n controls: getDefaultControls(),\n controlsOptions: {\n ZOOM: { position: 'top-left' },\n ATTRIBUTION: {\n position: 'bottom-right',\n customAttribution: [\n '<a href=\"https://nextgis.com\" target=\"_blank\">©NextGIS</a>',\n ],\n },\n },\n pixelRadius: 10,\n};\n\nexport function prepareWebMapOptions(options: NgwMapOptions): MapOptions {\n const kits: StarterKit[] = [new QmsKit()];\n if (options.starterKits) {\n options.starterKits.forEach((x) => {\n kits.push(x);\n });\n }\n\n if (!options.connector) {\n options.connector = new NgwConnector({\n baseUrl: options.baseUrl || '',\n auth: options.auth,\n });\n } else if (options.connector) {\n options.baseUrl = options.connector.options.baseUrl;\n }\n options = deepmerge(OPTIONS, options);\n\n if (!options.center && !options.bounds) {\n options.bounds = [-179, -90, 180, 90];\n // options.maxBounds = options.bounds;\n }\n\n if (options.connector) {\n kits.push(\n new NgwKit({\n connector: options.connector,\n auth: options.auth,\n }),\n );\n }\n options = {\n ...options,\n starterKits: kits,\n create: false,\n };\n return options;\n}\n","import { EventEmitter } from 'events';\n\nimport { getIcon } from '@nextgis/icons';\nimport {\n createIdentifyItem,\n createNgwLayerAdapter,\n fetchIdentifyGeoJson,\n fetchIdentifyItem,\n fetchNgwExtent,\n fetchNgwLayerFeature,\n fetchNgwLayerFeatureCollection,\n fetchNgwLayerItem,\n fetchNgwLayerItems,\n getCompanyLogo,\n getIdentifyItems,\n sendIdentifyRequest,\n} from '@nextgis/ngw-kit';\nimport {\n defined,\n getCirclePolygonCoordinates,\n getIdentifyRadius,\n isObject,\n} from '@nextgis/utils';\nimport { deprecatedWarn } from '@nextgis/utils';\nimport { WebMap } from '@nextgis/webmap';\n\nimport { appendNgwResources } from './utils/appendNgwResources';\nimport { prepareWebMapOptions } from './utils/prepareWebMapOptions';\n\nimport type {\n NgwIdentifyEvent,\n NgwLayers,\n NgwMapEvents,\n NgwMapOptions,\n} from './interfaces';\nimport type NgwConnector from '@nextgis/ngw-connector';\nimport type {\n FeatureItem,\n FeatureLayersIdentify,\n FeatureLayersIdentifyItems,\n LayerFeature,\n ResourceItem,\n} from '@nextgis/ngw-connector';\nimport type {\n FetchNgwItemsOptions,\n NgwFeatureItemResponse,\n NgwFeatureRequestOptions,\n NgwIdentify,\n NgwWebmapItem,\n ResourceAdapter,\n} from '@nextgis/ngw-kit';\nimport type { NgwLayerOptions } from '@nextgis/ngw-kit';\nimport type { FetchNgwItemOptions } from '@nextgis/ngw-kit';\nimport type { QmsAdapterOptions } from '@nextgis/qms-kit';\nimport type { FeatureProperties, JsonMap } from '@nextgis/utils';\nimport type {\n AdapterOptions,\n ControlPosition,\n FitOptions,\n LayerAdapter,\n LayerDef,\n MapClickEvent,\n MapControls,\n OnLayerMouseOptions,\n WebMapEvents,\n} from '@nextgis/webmap';\nimport type { Feature, FeatureCollection, Geometry, Polygon } from 'geojson';\nimport type StrictEventEmitter from 'strict-event-emitter-types';\n\ntype PromiseGroup = 'select' | 'identify';\n\n/**\n * Base class containing the logic of interaction WebMap with NextGIS services.\n *\n * @example\n * ```javascript\n * import { NgwMap } from '@nextgis/ngw-map';\n * import MapAdapter from '@nextgis/leaflet-map-adapter';\n * // styles are not included in the leaflet-map-adapter\n * import 'leaflet/dist/leaflet.css';\n *\n * const ngwMap = new NgwMap({\n * mapAdapter: new MapAdapter(),\n * target: 'map',\n * qmsId: 448,\n * baseUrl: 'https://demo.nextgis.com',\n * webmapId: 3985\n * });\n * ```\n */\nexport class NgwMap<\n M = unknown,\n L = unknown,\n C extends object = any,\n O extends NgwMapOptions<M, C> = NgwMapOptions<M, C>,\n> extends WebMap<M, L, C, NgwMapEvents, O> {\n static getIcon = getIcon;\n\n readonly emitter: StrictEventEmitter<EventEmitter, NgwMapEvents> =\n new EventEmitter();\n connector!: NgwConnector;\n\n protected _ngwLayers: NgwLayers = {};\n private $$selectFromNgwRaster?: (ev: MapClickEvent) => void;\n private $$selectFromNgwVector?: (ev: OnLayerMouseOptions) => void;\n private _promises: Record<\n PromiseGroup,\n [Promise<unknown>, AbortController][]\n > = {\n select: [],\n identify: [],\n };\n\n constructor(options: O) {\n super(prepareWebMapOptions(options) as O);\n if (options.connector) {\n this.connector = options.connector;\n }\n this._createWebMap().then(() => {\n const container = this.getContainer();\n if (container) {\n container.classList.add('ngw-map-container');\n }\n if (this.options.whitlabel) {\n this._whiteLabel();\n }\n });\n }\n\n /**\n * Organized addition to the map design and controls elements,\n * calling `control.onAdd(this.webMap.mapAdapter)`\n * @param control - object with onAdd and onRemove methods\n * or a string value indicating the name of the control installed in the map adapter\n * @param position - position relative to the map angles\n * @param options - initialization parameters if the control is set as a string value\n *\n * @example\n * ```javascript\n * ngwMap.addControl(new CustomControl(), 'bottom-left');\n * ngwMap.addControl('ZOOM', 'top-right')\n * ```\n */\n async addControl<K extends keyof MapControls>(\n controlDef: K | C,\n position: ControlPosition,\n options?: MapControls[K],\n ): Promise<any> {\n await this.onLoad('controls:create');\n return super.addControl(controlDef, position, options);\n }\n\n /**\n * Add any (style, vector, webmap) NGW layer by resource definition.\n * @param options - set layer identification parameters and render method.\n *\n * @example\n * ```javascript\n * // Add raster layer resourceId is the style of 4004 layer\n * ngwMap.addNgwLayer({ resource: 4005 });\n * // Add vector data from layer GEOJSON source\n * ngwMap.addNgwLayer({\n * resource: 4038,\n * adapter: 'GEOJSON',\n * adapterOptions: { paint: { color: 'red' } }\n * });\n * ```\n */\n async addNgwLayer(\n options: NgwLayerOptions,\n ): Promise<ResourceAdapter | undefined> {\n await this.onMapLoad();\n // @ts-ignore for backward compatibility\n const { keyname, resourceId } = options;\n\n if (keyname || resourceId !== undefined) {\n deprecatedWarn(\n 'set `resource` options instead of `keyname` or `resourceId`',\n );\n }\n\n const resource = options.resource;\n if (!keyname && !resourceId && !resource) {\n throw new Error(\n 'resource, resourceId or keyname is required parameter to add NGW layer',\n );\n }\n if (defined(this.options.baseUrl)) {\n try {\n if (defined(this.options.setViewDelay)) {\n options.adapterOptions = options.adapterOptions || {};\n if (!defined(options.adapterOptions.setViewDelay)) {\n options.adapterOptions.setViewDelay = this.options.setViewDelay;\n }\n }\n const adapter = createNgwLayerAdapter(options, this, this.connector);\n const adapterOpts = {\n visibility: true,\n // TODO: do not merge options, use only `adapterOptions`\n ...options,\n ...options.adapterOptions,\n } as AdapterOptions;\n const layer = (await this.addLayer(\n adapter,\n adapterOpts,\n )) as ResourceAdapter<M, L, AdapterOptions>;\n const id = layer && this.getLayerId(layer);\n if (layer && id) {\n this._ngwLayers[id] = { layer, resourceId: layer.resourceId };\n layer.options.name =\n layer.options.name ||\n (layer.item && layer.item.resource.display_name);\n if (layer.options.baselayer) {\n const visibleLayerBaseLayer = this.getActiveBaseLayer();\n if (visibleLayerBaseLayer) {\n return layer;\n }\n }\n }\n return layer;\n } catch (er) {\n const resId =\n isObject(resource) && 'id' in resource\n ? resource.id\n : keyname || resourceId || resource;\n console.error(`Can't add NGW layer ${resId}.`, er);\n }\n }\n }\n\n /**\n * Pans and zooms the map to the initial position specified in the options\n */\n fit(): void {\n const { center, zoom, bounds } = this.options;\n if (center) {\n this.setCenter(center);\n if (zoom) {\n this.setZoom(zoom);\n }\n } else if (bounds) {\n this.fitBounds(bounds);\n }\n }\n\n fetchNgwLayerItem<\n G extends Geometry = Geometry,\n P extends FeatureProperties = FeatureProperties,\n >(options: Omit<FetchNgwItemOptions<P>, 'connector'>): Promise<FeatureItem> {\n return fetchNgwLayerItem<G, P>({\n connector: this.connector,\n ...options,\n });\n }\n\n fetchNgwLayerItems<\n F extends FeatureProperties = FeatureProperties,\n G extends Geometry = Geometry,\n >(\n options: Omit<FetchNgwItemsOptions<F>, 'connector'>,\n ): Promise<FeatureItem<F, G>[]> {\n return fetchNgwLayerItems<G, F>({\n connector: this.connector,\n ...options,\n });\n }\n\n fetchNgwLayerFeature<\n G extends Geometry = Geometry,\n P extends FeatureProperties = FeatureProperties,\n >(\n options: Omit<FetchNgwItemOptions<P>, 'connector'>,\n ): Promise<Feature<G, P>> {\n return fetchNgwLayerFeature<G, P>({\n connector: this.connector,\n ...options,\n });\n }\n\n fetchNgwLayerFeatures<\n G extends Geometry | null = Geometry,\n P extends FeatureProperties = FeatureProperties,\n >(\n options: Omit<FetchNgwItemsOptions<P>, 'connector'>,\n ): Promise<FeatureCollection<G, P>> {\n return fetchNgwLayerFeatureCollection({\n connector: this.connector,\n ...options,\n });\n }\n\n fetchIdentifyItem<\n G extends Geometry = Geometry,\n P extends FeatureProperties = FeatureProperties,\n >(\n identify: NgwIdentify,\n requestOptions?: NgwFeatureRequestOptions,\n // multiple = false\n ): Promise<NgwFeatureItemResponse<P, G> | undefined> {\n const abortController = new AbortController();\n const abortSignal = abortController.signal;\n\n if (requestOptions?.signal) {\n requestOptions.signal.addEventListener('abort', abortController.abort);\n }\n requestOptions = requestOptions || {};\n requestOptions.signal = abortSignal;\n\n const promise = fetchIdentifyItem<G, P>({\n identify,\n connector: this.connector,\n requestOptions,\n // multiple,\n });\n this._addPromise('identify', promise, abortController);\n return promise;\n }\n\n fetchIdentifyGeoJson(\n identify: NgwIdentify,\n multiple = false,\n ): Promise<Feature | undefined> {\n const abortController = new AbortController();\n\n const promise = fetchIdentifyGeoJson({\n identify,\n connector: this.connector,\n multiple,\n requestOptions: { signal: abortController.signal },\n });\n if (promise && 'then' in promise) {\n this._addPromise('identify', promise, abortController);\n return promise;\n } else {\n return Promise.resolve(promise);\n }\n }\n\n /**\n * @deprecated use {@link fetchIdentifyGeoJson} instead\n */\n getIdentifyGeoJson(\n identify: NgwIdentify,\n multiple = false,\n ): Promise<Feature | undefined> {\n return this.fetchIdentifyGeoJson(identify, multiple);\n }\n\n async getNgwLayers(): Promise<NgwLayers> {\n await this.onLoad();\n return this._ngwLayers;\n }\n\n async getNgwLayerByResourceId(id: number): Promise<LayerAdapter | undefined> {\n for (const n in this._ngwLayers) {\n const mem = this._ngwLayers[n];\n if (mem.resourceId === id) {\n return mem && mem.layer;\n } else if (mem.layer.getIdentificationIds) {\n const ids = await mem.layer.getIdentificationIds();\n if (ids && ids.some((x) => x === id)) {\n return mem.layer;\n }\n }\n if (mem.layer.getDependLayers) {\n const dependLayers = mem.layer.getDependLayers() as NgwWebmapItem[];\n const dependFit = dependLayers.find((x) => {\n return x.item && x.item.parentId === id;\n });\n if (dependFit) {\n return dependFit.layer;\n }\n }\n }\n }\n\n /**\n * Move map to layer. If the layer is NGW resource, extent will be received from the server\n *\n * @example\n * ```javascript\n * const ngwLayer = ngwMap.addNgwLayer({ id: 'ngw_layer_name', resource: 4005 });\n * ngwMap.fitLayer(ngwLayer);\n * ngwMap.fitLayer('ngw_layer_name');\n * ```\n */\n async fitLayer(\n layerDef: LayerDef | number,\n options?: FitOptions,\n ): Promise<void> {\n let id: string | undefined;\n if (typeof layerDef === 'string' || typeof layerDef === 'number') {\n id = String(id);\n } else {\n id = layerDef.id;\n }\n const ngwLayer = id && this._ngwLayers[id];\n if (ngwLayer) {\n if (ngwLayer.layer.getBounds) {\n const bounds = await ngwLayer.layer.getBounds();\n if (bounds) {\n this.fitBounds(bounds, options);\n }\n } else {\n let item: ResourceItem | undefined;\n if (ngwLayer.layer.item) {\n item = ngwLayer.layer.item;\n } else {\n const resourceId = ngwLayer.resourceId;\n item = await this.connector.getResource(resourceId);\n }\n if (item) {\n fetchNgwExtent({\n resourceId: item.resource.id,\n connector: this.connector,\n }).then((extent) => {\n if (extent) {\n this.fitBounds(extent, options);\n }\n });\n }\n }\n } else {\n super.fitLayer(\n typeof layerDef === 'number' ? String(layerDef) : layerDef,\n options,\n );\n }\n }\n\n /** @deprecated use {@link fitLayer} instead */\n async zoomToLayer(layerDef: string | ResourceAdapter): Promise<void> {\n return this.fitLayer(layerDef);\n }\n\n onLoad(event: keyof NgwMapEvents = 'ngw-map:create'): Promise<this> {\n return super.onLoad(event as keyof WebMapEvents);\n }\n\n removeLayer(layerDef: LayerDef): void {\n const layer = this.getLayer(layerDef);\n if (layer) {\n const layerId = this.getLayerId(layer);\n if (layerId) {\n delete this._ngwLayers[layerId];\n }\n super.removeLayer(layer);\n }\n }\n\n enableSelection(): void {\n if (!this.$$selectFromNgwRaster) {\n this.$$selectFromNgwRaster = (ev: MapClickEvent) => {\n const count = this._getSelectListenersCount();\n if (count) {\n this.selectFromNgwRaster(ev);\n }\n };\n this.$$selectFromNgwVector = (ev: OnLayerMouseOptions) => {\n const count = this._getSelectListenersCount();\n if (count) {\n this._selectFromNgwVector(ev);\n }\n };\n this.emitter.on('click', this.$$selectFromNgwRaster);\n this.emitter.on('layer:click', this.$$selectFromNgwVector);\n }\n }\n\n disableSelection(): void {\n if (this.$$selectFromNgwRaster) {\n this.emitter.removeListener('click', this.$$selectFromNgwRaster);\n this.$$selectFromNgwRaster = undefined;\n }\n if (this.$$selectFromNgwVector) {\n this.emitter.removeListener('layer:click', this.$$selectFromNgwVector);\n\n this.$$selectFromNgwVector = undefined;\n }\n }\n\n /**\n * @deprecated use {@link fetchNgwLayerItem} instead\n */\n getNgwLayerItem<\n G extends Geometry = Geometry,\n P extends FeatureProperties = FeatureProperties,\n >(options: Omit<FetchNgwItemOptions<P>, 'connector'>): Promise<FeatureItem> {\n return this.fetchNgwLayerItem<G, P>(options);\n }\n\n /**\n * @deprecated use {@link fetchNgwLayerItems} instead\n */\n getNgwLayerItems<\n F extends FeatureProperties = FeatureProperties,\n G extends Geometry = Geometry,\n >(\n options: Omit<FetchNgwItemsOptions<F>, 'connector'>,\n ): Promise<FeatureItem<F, G>[]> {\n return this.fetchNgwLayerItems<F, G>(options);\n }\n\n /**\n * @deprecated use {@link fetchNgwLayerFeature} instead\n */\n getNgwLayerFeature<\n G extends Geometry = Geometry,\n P extends FeatureProperties = FeatureProperties,\n >(\n options: Omit<FetchNgwItemOptions<P>, 'connector'>,\n ): Promise<Feature<G, P>> {\n return this.fetchNgwLayerFeature<G, P>(options);\n }\n\n /**\n * @deprecated use {@link fetchNgwLayerFeatures} instead\n */\n getNgwLayerFeatures<\n G extends Geometry | null = Geometry,\n P extends JsonMap = JsonMap,\n >(options: FetchNgwItemsOptions<P>): Promise<FeatureCollection<G, P>> {\n return this.fetchNgwLayerFeatures(options);\n }\n\n /** @deprecated use {@link cancelPromises} instead */\n cancelPromise(...args: PromiseGroup[]): void {\n this.cancelPromises(...args);\n }\n\n cancelPromises(...args: PromiseGroup[]): void {\n if (!args.length) {\n args = Object.keys(this._promises) as PromiseGroup[];\n }\n args.forEach((name) => {\n const group = this._promises[name];\n if (group) {\n group.forEach((x) => x[1].abort());\n this._promises[name] = [];\n }\n });\n }\n\n async selectFromNgwRaster(\n ev: MapClickEvent,\n ): Promise<NgwIdentifyEvent | undefined> {\n this._emitStatusEvent('ngw:preselect');\n\n const promises: Promise<number[] | undefined>[] = [];\n const layers = Object.values(this._ngwLayers);\n layers.sort((a, b) => {\n if (a.layer.order && b.layer.order) {\n return b.layer.order - a.layer.order;\n }\n return 1;\n });\n for (const l of layers) {\n const layer = l.layer;\n const identFunc =\n typeof layer.getIdentificationIds === 'function'\n ? layer.getIdentificationIds\n : false;\n const interactive = layer.options.interactive ?? true;\n if (\n identFunc &&\n layer.options.selectable &&\n interactive &&\n this.isLayerVisible(layer)\n ) {\n promises.push(identFunc.call(layer));\n }\n }\n const getIdsPromise = Promise.all(promises);\n const getIds = await getIdsPromise;\n const ids: number[] = [];\n for (const x of getIds) {\n if (x) {\n ids.push(...x);\n }\n }\n\n if (!ids.length) {\n this._emitStatusEvent('ngw:select', null);\n return;\n }\n\n const pixelRadius = this.options.pixelRadius || 10;\n const center = this.getCenter();\n let zoom = this.getZoom();\n zoom = zoom !== undefined ? zoom : 20;\n if (!center || !zoom) {\n this._emitStatusEvent('ngw:select', null);\n return;\n }\n const radius = getIdentifyRadius(center, zoom, pixelRadius);\n\n let geom: Polygon | undefined;\n if (this.options.highlightIdentification) {\n const highlightOptions = this.options.highlightIdentification;\n const highlightDuration =\n typeof highlightOptions === 'number' ? highlightOptions : 1000;\n const [lng, lat] = ev.lngLat;\n geom = {\n type: 'Polygon',\n coordinates: [getCirclePolygonCoordinates(lng, lat, radius)],\n };\n\n const highlightIdentificationLayer = await this.addGeoJsonLayer({\n data: {\n type: 'Feature',\n geometry: geom,\n },\n });\n if (highlightDuration !== Infinity) {\n setTimeout(() => {\n this.removeLayer(highlightIdentificationLayer);\n }, highlightDuration);\n }\n }\n const abortController = new AbortController();\n const selectPromise = sendIdentifyRequest(ev, {\n layers: ids,\n connector: this.connector,\n radius,\n geom,\n signal: abortController.signal,\n }).then((resp) => {\n const identify: NgwIdentify = {\n ...resp,\n resources: ids,\n sourceType: 'raster',\n event: ev,\n };\n const identifyEvent: NgwIdentifyEvent = this._prepareToIdentify(identify);\n this._emitStatusEvent('ngw:select', identifyEvent);\n return identifyEvent;\n });\n this._addPromise('select', selectPromise, abortController);\n return selectPromise;\n }\n\n private _addPromise(\n groupName: PromiseGroup,\n promise: Promise<unknown>,\n abortController: AbortController,\n ) {\n const group = this._promises[groupName];\n if (group && group.findIndex((g) => g[0] === promise) === -1) {\n const removeFromGroup = () => {\n const index = group.findIndex((g) => g[0] === promise);\n if (index !== -1) {\n group.splice(index, 1);\n }\n };\n promise.then(removeFromGroup);\n promise.catch(removeFromGroup);\n group.push([promise, abortController]);\n }\n }\n\n private _isFitFromResource() {\n const params = this._initMapState;\n if (params.zoom && params.center) {\n return false;\n }\n return true;\n }\n\n private async _createWebMap() {\n await this.create();\n if (this.options.qmsId) {\n this._addQmsBaseLayer();\n }\n if (this.options.osm) {\n this._addOsmBaseLayer();\n }\n\n const resources: NgwLayerOptions[] = [];\n const layerFitAllowed = this._isFitFromResource();\n if (this.options.webmapId) {\n appendNgwResources(resources, this.options.webmapId, {\n fit: layerFitAllowed,\n });\n }\n if (this.options.resources && Array.isArray(this.options.resources)) {\n for (const x of this.options.resources) {\n const overwriteOptions: Partial<NgwLayerOptions> = {};\n if (!layerFitAllowed) {\n overwriteOptions.fit = false;\n }\n appendNgwResources(resources, x, {}, overwriteOptions);\n }\n }\n for (const r of resources) {\n try {\n await this.addNgwLayer(r);\n } catch (er) {\n console.warn(er);\n }\n }\n this._emitStatusEvent('ngw-map:create', this);\n this.enableSelection();\n }\n\n private _addOsmBaseLayer() {\n this.addBaseLayer('OSM');\n }\n\n private _addQmsBaseLayer() {\n let qmsId: number;\n let qmsLayerName: string | undefined;\n if (Array.isArray(this.options.qmsId)) {\n qmsId = this.options.qmsId[0];\n qmsLayerName = this.options.qmsId[1];\n } else {\n qmsId = Number(this.options.qmsId);\n }\n const qmsLayerOptions: Partial<QmsAdapterOptions> = {\n qmsId,\n };\n if (qmsLayerName) {\n qmsLayerOptions.id = qmsLayerName;\n }\n\n this.addBaseLayer('QMS', qmsLayerOptions);\n }\n\n private _selectFromNgwVector(\n ev: OnLayerMouseOptions,\n ): FeatureLayersIdentify | undefined {\n const layer: ResourceAdapter = ev.layer as ResourceAdapter;\n const selectable = layer.options.selectable && this.isLayerVisible(layer);\n if (!selectable) {\n return undefined;\n }\n // Item property means layer is NgwResource\n const id = layer.item && layer.item.resource.id;\n const feature = ev.feature;\n\n if (id !== undefined && feature) {\n const featureId = feature.id;\n if (featureId) {\n const identifyFeature: LayerFeature = {\n id: Number(featureId),\n fields: feature.properties || {},\n label: `#${id}`,\n layerId: Number(id),\n parent: '',\n geom: feature.geometry,\n };\n const items: FeatureLayersIdentifyItems = {\n featureCount: 1,\n features: [identifyFeature],\n };\n const identify: FeatureLayersIdentify = {\n featureCount: 1,\n [id]: items,\n };\n this._emitStatusEvent(\n 'ngw:select',\n this._prepareToIdentify({\n ...identify,\n resources: [id],\n sourceType: 'vector',\n } as NgwIdentify),\n );\n return identify;\n }\n }\n }\n\n private _prepareToIdentify<\n F extends FeatureProperties = FeatureProperties,\n G extends Geometry = Geometry,\n >(identify: NgwIdentify): NgwIdentifyEvent {\n const getIdentifyItems_ = () => {\n return getIdentifyItems(identify, true).map((x) => {\n return createIdentifyItem<F, G>({\n feature: x.feature,\n connector: this.connector,\n });\n });\n };\n return {\n ...identify,\n getIdentifyItems: getIdentifyItems_,\n };\n }\n\n private _getSelectListenersCount() {\n return this.emitter.listenerCount('ngw:select');\n }\n\n private async _whiteLabel() {\n const container = this.getContainer();\n if (container) {\n const logo = await getCompanyLogo(\n this.connector,\n this.options.companyLogoOptions,\n );\n if (logo) {\n container.appendChild(logo);\n }\n }\n }\n}\n","import { NgwMap } from './NgwMap';\n\nimport type { NgwMapOptions } from './interfaces';\n\nexport * from '@nextgis/webmap';\n\nexport * from './interfaces';\n\nexport { NgwMap };\n\nexport async function createNgwMap(options: NgwMapOptions): Promise<NgwMap> {\n const ngwMap = new NgwMap(options);\n return ngwMap.onLoad();\n}\n"],"names":["getDefaultControls","QmsKit","deepmerge","NgwKit","WebMap","EventEmitter","deprecatedWarn","defined","createNgwLayerAdapter","isObject","fetchNgwLayerItem","fetchNgwLayerItems","fetchNgwLayerFeature","fetchNgwLayerFeatureCollection","fetchIdentifyItem","fetchIdentifyGeoJson","fetchNgwExtent","getIdentifyRadius","getCirclePolygonCoordinates","sendIdentifyRequest","getIdentifyItems","createIdentifyItem","getCompanyLogo","getIcon"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("events"),t=require("@nextgis/cancelable-promise"),s=require("@nextgis/icons"),r=require("@nextgis/ngw-kit"),o=require("@nextgis/utils"),i=require("@nextgis/webmap"),n=require("@nextgis/ngw-connector"),a=require("@nextgis/qms-kit");function c(e,t,s,r){if("number"==typeof t||"string"==typeof t)t=Number(t),e.push({...s,resource:t});else if(Array.isArray(t)){const[o,i]=t;e.push({...s,resource:o,id:i,...r})}else"object"==typeof t&&e.push({...s,...t,...r})}const h={target:"map",baseUrl:"",whitlabel:!1,controls:i.getDefaultControls(),controlsOptions:{ZOOM:{position:"top-left"},ATTRIBUTION:{position:"bottom-right",customAttribution:['<a href="https://nextgis.com" target="_blank">©NextGIS</a>']}},pixelRadius:10};var d=Object.defineProperty,l=(e,t,s)=>((e,t,s)=>t in e?d(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);class u extends i.WebMap{constructor(t){super(function(e){const t=[new a.QmsKit];return e.starterKits&&e.starterKits.forEach((e=>{t.push(e)})),e.connector?e.connector&&(e.baseUrl=e.connector.options.baseUrl):e.connector=new n({baseUrl:e.baseUrl||"",auth:e.auth}),(e=o.deepmerge(h,e)).center||e.bounds||(e.bounds=[-179,-90,180,90]),e.connector&&t.push(new r.NgwKit({connector:e.connector,auth:e.auth})),{...e,starterKits:t,create:!1}}(t)),l(this,"emitter",new e.EventEmitter),l(this,"connector"),l(this,"_ngwLayers",{}),l(this,"$$selectFromNgwRaster"),l(this,"$$selectFromNgwVector"),l(this,"_promises",{select:[],identify:[]}),t.connector&&(this.connector=t.connector),this._createWebMap().then((()=>{const e=this.getContainer();e&&e.classList.add("ngw-map-container"),this.options.whitlabel&&this._whiteLabel()}))}async addControl(e,t,s){return await this.onLoad("controls:create"),super.addControl(e,t,s)}async addNgwLayer(e){await this.onMapLoad();const{keyname:t,resourceId:s}=e;(t||void 0!==s)&&o.deprecatedWarn("set `resource` options instead of `keyname` or `resourceId`");const i=e.resource;if(!t&&!s&&!i)throw new Error("resource, resourceId or keyname is required parameter to add NGW layer");if(o.defined(this.options.baseUrl))try{o.defined(this.options.setViewDelay)&&(e.adapterOptions=e.adapterOptions||{},o.defined(e.adapterOptions.setViewDelay)||(e.adapterOptions.setViewDelay=this.options.setViewDelay));const t=r.createNgwLayerAdapter(e,this,this.connector),s={visibility:!0,...e,...e.adapterOptions},i=await this.addLayer(t,s),n=i&&this.getLayerId(i);if(i&&n&&(this._ngwLayers[n]={layer:i,resourceId:i.resourceId},i.options.name=i.options.name||i.item&&i.item.resource.display_name,i.options.baselayer)){if(this.getActiveBaseLayer())return i}return i}catch(n){const e=o.isObject(i)&&"id"in i?i.id:t||s||i;console.error(`Can't add NGW layer ${e}.`,n)}}fit(){const{center:e,zoom:t,bounds:s}=this.options;e?(this.setCenter(e),t&&this.setZoom(t)):s&&this.fitBounds(s)}fetchNgwLayerItem(e){return r.fetchNgwLayerItem({connector:this.connector,...e})}fetchNgwLayerItems(e){return r.fetchNgwLayerItems({connector:this.connector,...e})}fetchNgwLayerFeature(e){return r.fetchNgwLayerFeature({connector:this.connector,...e})}fetchNgwLayerFeatures(e){return r.fetchNgwLayerFeatureCollection({connector:this.connector,...e})}fetchIdentifyItem(e,t){const s=r.fetchIdentifyItem({identify:e,connector:this.connector,requestOptions:t});return this._addPromise("identify",s),s}fetchIdentifyGeoJson(e,s=!1){const o=r.fetchIdentifyGeoJson({identify:e,connector:this.connector,multiple:s});return o&&"then"in o?(this._addPromise("identify",o),o):t.resolve(o)}getIdentifyGeoJson(e,t=!1){return this.fetchIdentifyGeoJson(e,t)}async getNgwLayers(){return await this.onLoad(),this._ngwLayers}async getNgwLayerByResourceId(e){for(const t in this._ngwLayers){const s=this._ngwLayers[t];if(s.resourceId===e)return s&&s.layer;if(s.layer.getIdentificationIds){const t=await s.layer.getIdentificationIds();if(t&&t.some((t=>t===e)))return s.layer}if(s.layer.getDependLayers){const t=s.layer.getDependLayers().find((t=>t.item&&t.item.parentId===e));if(t)return t.layer}}}async fitLayer(e,t){let s;s="string"==typeof e||"number"==typeof e?String(s):e.id;const o=s&&this._ngwLayers[s];if(o)if(o.layer.getBounds){const e=await o.layer.getBounds();e&&this.fitBounds(e,t)}else{let e;if(o.layer.item)e=o.layer.item;else{const t=o.resourceId;e=await this.connector.getResource(t)}e&&r.fetchNgwExtent({resourceId:e.resource.id,connector:this.connector}).then((e=>{e&&this.fitBounds(e,t)}))}else super.fitLayer("number"==typeof e?String(e):e,t)}async zoomToLayer(e){return this.fitLayer(e)}onLoad(e="ngw-map:create"){return super.onLoad(e)}removeLayer(e){const t=this.getLayer(e);if(t){const e=this.getLayerId(t);e&&delete this._ngwLayers[e],super.removeLayer(t)}}enableSelection(){this.$$selectFromNgwRaster||(this.$$selectFromNgwRaster=e=>{this._getSelectListenersCount()&&this.selectFromNgwRaster(e)},this.$$selectFromNgwVector=e=>{this._getSelectListenersCount()&&this._selectFromNgwVector(e)},this.emitter.on("click",this.$$selectFromNgwRaster),this.emitter.on("layer:click",this.$$selectFromNgwVector))}disableSelection(){this.$$selectFromNgwRaster&&(this.emitter.removeListener("click",this.$$selectFromNgwRaster),this.$$selectFromNgwRaster=void 0),this.$$selectFromNgwVector&&(this.emitter.removeListener("layer:click",this.$$selectFromNgwVector),this.$$selectFromNgwVector=void 0)}getNgwLayerItem(e){return this.fetchNgwLayerItem(e)}getNgwLayerItems(e){return this.fetchNgwLayerItems(e)}getNgwLayerFeature(e){return this.fetchNgwLayerFeature(e)}getNgwLayerFeatures(e){return this.fetchNgwLayerFeatures(e)}cancelPromise(...e){this.cancelPromises(...e)}cancelPromises(...e){e.length||(e=Object.keys(this._promises)),e.forEach((e=>{const t=this._promises[e];t&&(t.forEach((e=>e.cancel())),this._promises[e]=[])}))}async selectFromNgwRaster(e){var t;this._emitStatusEvent("ngw:preselect");const s=[],i=Object.values(this._ngwLayers);i.sort(((e,t)=>e.layer.order&&t.layer.order?t.layer.order-e.layer.order:1));for(const r of i){const e=r.layer,o="function"==typeof e.getIdentificationIds&&e.getIdentificationIds,i=null==(t=e.options.interactive)||t;o&&e.options.selectable&&i&&this.isLayerVisible(e)&&s.push(o.call(e))}const n=Promise.all(s),a=await n,c=[];for(const r of a)r&&c.push(...r);if(!c.length)return void this._emitStatusEvent("ngw:select",null);const h=this.options.pixelRadius||10,d=this.getCenter();let l=this.getZoom();if(l=void 0!==l?l:20,!d||!l)return void this._emitStatusEvent("ngw:select",null);const u=o.getIdentifyRadius(d,l,h);let y;if(this.options.highlightIdentification){const t=this.options.highlightIdentification,s="number"==typeof t?t:1e3,[r,i]=e.lngLat;y={type:"Polygon",coordinates:[o.getCirclePolygonCoordinates(r,i,u)]};const n=await this.addGeoJsonLayer({data:{type:"Feature",geometry:y}});s!==1/0&&setTimeout((()=>{this.removeLayer(n)}),s)}const g=r.sendIdentifyRequest(e,{layers:c,connector:this.connector,radius:u,geom:y}).then((t=>{const s={...t,resources:c,sourceType:"raster",event:e},r=this._prepareToIdentify(s);return this._emitStatusEvent("ngw:select",r),r}));return this._addPromise("select",g),g}_addPromise(e,t){const s=this._promises[e];if(s&&-1===s.indexOf(t)){const e=()=>{const e=s.indexOf(t);-1!==e&&s.splice(e,1)};t.then(e),t.catch(e),s.push(t)}}_isFitFromResource(){const e=this._initMapState;return!e.zoom||!e.center}async _createWebMap(){await this.create(),this.options.qmsId&&this._addQmsBaseLayer(),this.options.osm&&this._addOsmBaseLayer();const e=[],t=this._isFitFromResource();if(this.options.webmapId&&c(e,this.options.webmapId,{fit:t}),this.options.resources&&Array.isArray(this.options.resources))for(const r of this.options.resources){const s={};t||(s.fit=!1),c(e,r,{},s)}for(const r of e)try{await this.addNgwLayer(r)}catch(s){console.warn(s)}this._emitStatusEvent("ngw-map:create",this),this.enableSelection()}_addOsmBaseLayer(){this.addBaseLayer("OSM")}_addQmsBaseLayer(){let e,t;Array.isArray(this.options.qmsId)?(e=this.options.qmsId[0],t=this.options.qmsId[1]):e=Number(this.options.qmsId);const s={qmsId:e};t&&(s.id=t),this.addBaseLayer("QMS",s)}_selectFromNgwVector(e){const t=e.layer;if(!(t.options.selectable&&this.isLayerVisible(t)))return;const s=t.item&&t.item.resource.id,r=e.feature;if(void 0!==s&&r){const e=r.id;if(e){const t={featureCount:1,[s]:{featureCount:1,features:[{id:Number(e),fields:r.properties||{},label:`#${s}`,layerId:Number(s),parent:"",geom:r.geometry}]}};return this._emitStatusEvent("ngw:select",this._prepareToIdentify({...t,resources:[s],sourceType:"vector"})),t}}}_prepareToIdentify(e){return{...e,getIdentifyItems:()=>r.getIdentifyItems(e,!0).map((e=>r.createIdentifyItem({feature:e.feature,connector:this.connector})))}}_getSelectListenersCount(){return this.emitter.listenerCount("ngw:select")}async _whiteLabel(){const e=this.getContainer();if(e){const t=await r.getCompanyLogo(this.connector,this.options.companyLogoOptions);t&&e.appendChild(t)}}}l(u,"getIcon",s.getIcon),exports.NgwMap=u,exports.createNgwMap=async function(e){return new u(e).onLoad()},Object.keys(i).forEach((function(e){"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||(exports[e]=i[e])}));
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("events"),t=require("@nextgis/icons"),s=require("@nextgis/ngw-kit"),r=require("@nextgis/utils"),o=require("@nextgis/webmap"),i=require("@nextgis/ngw-connector"),n=require("@nextgis/qms-kit");function a(e,t,s,r){if("number"==typeof t||"string"==typeof t)t=Number(t),e.push({...s,resource:t});else if(Array.isArray(t)){const[o,i]=t;e.push({...s,resource:o,id:i,...r})}else"object"==typeof t&&e.push({...s,...t,...r})}const c={target:"map",baseUrl:"",whitlabel:!1,controls:o.getDefaultControls(),controlsOptions:{ZOOM:{position:"top-left"},ATTRIBUTION:{position:"bottom-right",customAttribution:['<a href="https://nextgis.com" target="_blank">©NextGIS</a>']}},pixelRadius:10};var h=Object.defineProperty,l=(e,t,s)=>((e,t,s)=>t in e?h(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);class d extends o.WebMap{constructor(t){super(function(e){const t=[new n.QmsKit];return e.starterKits&&e.starterKits.forEach((e=>{t.push(e)})),e.connector?e.connector&&(e.baseUrl=e.connector.options.baseUrl):e.connector=new i({baseUrl:e.baseUrl||"",auth:e.auth}),(e=r.deepmerge(c,e)).center||e.bounds||(e.bounds=[-179,-90,180,90]),e.connector&&t.push(new s.NgwKit({connector:e.connector,auth:e.auth})),{...e,starterKits:t,create:!1}}(t)),l(this,"emitter",new e.EventEmitter),l(this,"connector"),l(this,"_ngwLayers",{}),l(this,"$$selectFromNgwRaster"),l(this,"$$selectFromNgwVector"),l(this,"_promises",{select:[],identify:[]}),t.connector&&(this.connector=t.connector),this._createWebMap().then((()=>{const e=this.getContainer();e&&e.classList.add("ngw-map-container"),this.options.whitlabel&&this._whiteLabel()}))}async addControl(e,t,s){return await this.onLoad("controls:create"),super.addControl(e,t,s)}async addNgwLayer(e){await this.onMapLoad();const{keyname:t,resourceId:o}=e;(t||void 0!==o)&&r.deprecatedWarn("set `resource` options instead of `keyname` or `resourceId`");const i=e.resource;if(!t&&!o&&!i)throw new Error("resource, resourceId or keyname is required parameter to add NGW layer");if(r.defined(this.options.baseUrl))try{r.defined(this.options.setViewDelay)&&(e.adapterOptions=e.adapterOptions||{},r.defined(e.adapterOptions.setViewDelay)||(e.adapterOptions.setViewDelay=this.options.setViewDelay));const t=s.createNgwLayerAdapter(e,this,this.connector),o={visibility:!0,...e,...e.adapterOptions},i=await this.addLayer(t,o),n=i&&this.getLayerId(i);if(i&&n&&(this._ngwLayers[n]={layer:i,resourceId:i.resourceId},i.options.name=i.options.name||i.item&&i.item.resource.display_name,i.options.baselayer)){if(this.getActiveBaseLayer())return i}return i}catch(n){const e=r.isObject(i)&&"id"in i?i.id:t||o||i;console.error(`Can't add NGW layer ${e}.`,n)}}fit(){const{center:e,zoom:t,bounds:s}=this.options;e?(this.setCenter(e),t&&this.setZoom(t)):s&&this.fitBounds(s)}fetchNgwLayerItem(e){return s.fetchNgwLayerItem({connector:this.connector,...e})}fetchNgwLayerItems(e){return s.fetchNgwLayerItems({connector:this.connector,...e})}fetchNgwLayerFeature(e){return s.fetchNgwLayerFeature({connector:this.connector,...e})}fetchNgwLayerFeatures(e){return s.fetchNgwLayerFeatureCollection({connector:this.connector,...e})}fetchIdentifyItem(e,t){const r=new AbortController,o=r.signal;(null==t?void 0:t.signal)&&t.signal.addEventListener("abort",r.abort),(t=t||{}).signal=o;const i=s.fetchIdentifyItem({identify:e,connector:this.connector,requestOptions:t});return this._addPromise("identify",i,r),i}fetchIdentifyGeoJson(e,t=!1){const r=new AbortController,o=s.fetchIdentifyGeoJson({identify:e,connector:this.connector,multiple:t,requestOptions:{signal:r.signal}});return o&&"then"in o?(this._addPromise("identify",o,r),o):Promise.resolve(o)}getIdentifyGeoJson(e,t=!1){return this.fetchIdentifyGeoJson(e,t)}async getNgwLayers(){return await this.onLoad(),this._ngwLayers}async getNgwLayerByResourceId(e){for(const t in this._ngwLayers){const s=this._ngwLayers[t];if(s.resourceId===e)return s&&s.layer;if(s.layer.getIdentificationIds){const t=await s.layer.getIdentificationIds();if(t&&t.some((t=>t===e)))return s.layer}if(s.layer.getDependLayers){const t=s.layer.getDependLayers().find((t=>t.item&&t.item.parentId===e));if(t)return t.layer}}}async fitLayer(e,t){let r;r="string"==typeof e||"number"==typeof e?String(r):e.id;const o=r&&this._ngwLayers[r];if(o)if(o.layer.getBounds){const e=await o.layer.getBounds();e&&this.fitBounds(e,t)}else{let e;if(o.layer.item)e=o.layer.item;else{const t=o.resourceId;e=await this.connector.getResource(t)}e&&s.fetchNgwExtent({resourceId:e.resource.id,connector:this.connector}).then((e=>{e&&this.fitBounds(e,t)}))}else super.fitLayer("number"==typeof e?String(e):e,t)}async zoomToLayer(e){return this.fitLayer(e)}onLoad(e="ngw-map:create"){return super.onLoad(e)}removeLayer(e){const t=this.getLayer(e);if(t){const e=this.getLayerId(t);e&&delete this._ngwLayers[e],super.removeLayer(t)}}enableSelection(){this.$$selectFromNgwRaster||(this.$$selectFromNgwRaster=e=>{this._getSelectListenersCount()&&this.selectFromNgwRaster(e)},this.$$selectFromNgwVector=e=>{this._getSelectListenersCount()&&this._selectFromNgwVector(e)},this.emitter.on("click",this.$$selectFromNgwRaster),this.emitter.on("layer:click",this.$$selectFromNgwVector))}disableSelection(){this.$$selectFromNgwRaster&&(this.emitter.removeListener("click",this.$$selectFromNgwRaster),this.$$selectFromNgwRaster=void 0),this.$$selectFromNgwVector&&(this.emitter.removeListener("layer:click",this.$$selectFromNgwVector),this.$$selectFromNgwVector=void 0)}getNgwLayerItem(e){return this.fetchNgwLayerItem(e)}getNgwLayerItems(e){return this.fetchNgwLayerItems(e)}getNgwLayerFeature(e){return this.fetchNgwLayerFeature(e)}getNgwLayerFeatures(e){return this.fetchNgwLayerFeatures(e)}cancelPromise(...e){this.cancelPromises(...e)}cancelPromises(...e){e.length||(e=Object.keys(this._promises)),e.forEach((e=>{const t=this._promises[e];t&&(t.forEach((e=>e[1].abort())),this._promises[e]=[])}))}async selectFromNgwRaster(e){var t;this._emitStatusEvent("ngw:preselect");const o=[],i=Object.values(this._ngwLayers);i.sort(((e,t)=>e.layer.order&&t.layer.order?t.layer.order-e.layer.order:1));for(const s of i){const e=s.layer,r="function"==typeof e.getIdentificationIds&&e.getIdentificationIds,i=null==(t=e.options.interactive)||t;r&&e.options.selectable&&i&&this.isLayerVisible(e)&&o.push(r.call(e))}const n=Promise.all(o),a=await n,c=[];for(const s of a)s&&c.push(...s);if(!c.length)return void this._emitStatusEvent("ngw:select",null);const h=this.options.pixelRadius||10,l=this.getCenter();let d=this.getZoom();if(d=void 0!==d?d:20,!l||!d)return void this._emitStatusEvent("ngw:select",null);const u=r.getIdentifyRadius(l,d,h);let y;if(this.options.highlightIdentification){const t=this.options.highlightIdentification,s="number"==typeof t?t:1e3,[o,i]=e.lngLat;y={type:"Polygon",coordinates:[r.getCirclePolygonCoordinates(o,i,u)]};const n=await this.addGeoJsonLayer({data:{type:"Feature",geometry:y}});s!==1/0&&setTimeout((()=>{this.removeLayer(n)}),s)}const g=new AbortController,m=s.sendIdentifyRequest(e,{layers:c,connector:this.connector,radius:u,geom:y,signal:g.signal}).then((t=>{const s={...t,resources:c,sourceType:"raster",event:e},r=this._prepareToIdentify(s);return this._emitStatusEvent("ngw:select",r),r}));return this._addPromise("select",m,g),m}_addPromise(e,t,s){const r=this._promises[e];if(r&&-1===r.findIndex((e=>e[0]===t))){const e=()=>{const e=r.findIndex((e=>e[0]===t));-1!==e&&r.splice(e,1)};t.then(e),t.catch(e),r.push([t,s])}}_isFitFromResource(){const e=this._initMapState;return!e.zoom||!e.center}async _createWebMap(){await this.create(),this.options.qmsId&&this._addQmsBaseLayer(),this.options.osm&&this._addOsmBaseLayer();const e=[],t=this._isFitFromResource();if(this.options.webmapId&&a(e,this.options.webmapId,{fit:t}),this.options.resources&&Array.isArray(this.options.resources))for(const r of this.options.resources){const s={};t||(s.fit=!1),a(e,r,{},s)}for(const r of e)try{await this.addNgwLayer(r)}catch(s){console.warn(s)}this._emitStatusEvent("ngw-map:create",this),this.enableSelection()}_addOsmBaseLayer(){this.addBaseLayer("OSM")}_addQmsBaseLayer(){let e,t;Array.isArray(this.options.qmsId)?(e=this.options.qmsId[0],t=this.options.qmsId[1]):e=Number(this.options.qmsId);const s={qmsId:e};t&&(s.id=t),this.addBaseLayer("QMS",s)}_selectFromNgwVector(e){const t=e.layer;if(!(t.options.selectable&&this.isLayerVisible(t)))return;const s=t.item&&t.item.resource.id,r=e.feature;if(void 0!==s&&r){const e=r.id;if(e){const t={featureCount:1,[s]:{featureCount:1,features:[{id:Number(e),fields:r.properties||{},label:`#${s}`,layerId:Number(s),parent:"",geom:r.geometry}]}};return this._emitStatusEvent("ngw:select",this._prepareToIdentify({...t,resources:[s],sourceType:"vector"})),t}}}_prepareToIdentify(e){return{...e,getIdentifyItems:()=>s.getIdentifyItems(e,!0).map((e=>s.createIdentifyItem({feature:e.feature,connector:this.connector})))}}_getSelectListenersCount(){return this.emitter.listenerCount("ngw:select")}async _whiteLabel(){const e=this.getContainer();if(e){const t=await s.getCompanyLogo(this.connector,this.options.companyLogoOptions);t&&e.appendChild(t)}}}l(d,"getIcon",t.getIcon),exports.NgwMap=d,exports.createNgwMap=async function(e){return new d(e).onLoad()},Object.keys(o).forEach((function(e){"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||(exports[e]=o[e])}));
2
2
  //# sourceMappingURL=ngw-map.cjs.prod.js.map