@nextgis/ngw-map 1.16.6 → 1.16.8

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 +1 @@
1
- {"version":3,"file":"ngw-map.cjs.prod.js","sources":["../src/utils/appendNgwResources.ts","../src/utils/prepareWebMapOptions.ts","../src/NgwMap.ts","../src/index.ts"],"sourcesContent":["import type { NgwLayerOptions } from '@nextgis/ngw-kit';\nimport type { NgwResourceDefinition } from '../interfaces';\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 { deepmerge } from '@nextgis/utils';\nimport { StarterKit, MapOptions } from '@nextgis/webmap';\nimport NgwConnector from '@nextgis/ngw-connector';\nimport { QmsKit } from '@nextgis/qms-kit';\nimport { NgwKit } from '@nextgis/ngw-kit';\n\nimport { NgwMapOptions } from '../interfaces';\n\nexport const OPTIONS: NgwMapOptions = {\n target: 'map',\n baseUrl: '',\n whitlabel: false,\n controls: ['ZOOM', 'ATTRIBUTION'],\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 StrictEventEmitter from 'strict-event-emitter-types';\nimport { EventEmitter } from 'events';\nimport CancelablePromise from '@nextgis/cancelable-promise';\nimport { defined, isObject, getIdentifyRadius } from '@nextgis/utils';\nimport { AdapterOptions, WebMap } from '@nextgis/webmap';\nimport NgwConnector from '@nextgis/ngw-connector';\n\nimport {\n fetchNgwLayerFeatureCollection,\n createNgwLayerAdapter,\n fetchNgwLayerFeature,\n fetchIdentifyGeoJson,\n sendIdentifyRequest,\n createIdentifyItem,\n fetchNgwLayerItems,\n fetchIdentifyItem,\n fetchNgwLayerItem,\n getIdentifyItems,\n getCompanyLogo,\n fetchNgwExtent,\n} from '@nextgis/ngw-kit';\nimport { deprecatedWarn } from '@nextgis/utils';\nimport { getIcon } from '@nextgis/icons';\n\nimport { appendNgwResources } from './utils/appendNgwResources';\nimport { prepareWebMapOptions } from './utils/prepareWebMapOptions';\n\nimport type { JsonMap, FeatureProperties } from '@nextgis/utils';\nimport type {\n FeatureItem,\n LayerFeature,\n ResourceItem,\n FeatureLayersIdentify,\n FeatureLayersIdentifyItems,\n} from '@nextgis/ngw-connector';\nimport type {\n OnLayerMouseOptions,\n ControlPosition,\n MapClickEvent,\n LayerAdapter,\n WebMapEvents,\n MapControls,\n FitOptions,\n LayerDef,\n} from '@nextgis/webmap';\nimport type {\n NgwIdentify,\n NgwWebmapItem,\n ResourceAdapter,\n FetchNgwItemsOptions,\n NgwFeatureItemResponse,\n NgwFeatureRequestOptions,\n} from '@nextgis/ngw-kit';\nimport type { Geometry, Feature, FeatureCollection } from 'geojson';\nimport type { QmsAdapterOptions } from '@nextgis/qms-kit';\nimport type { NgwLayerOptions } from '@nextgis/ngw-kit';\nimport type {\n NgwIdentifyEvent,\n NgwMapOptions,\n NgwMapEvents,\n NgwLayers,\n} from './interfaces';\nimport type { FetchNgwItemOptions } from '@nextgis/ngw-kit';\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 NgwMap.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 NgwMap.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 NgwMap.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 NgwMap.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 NgwMap.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 NgwMap.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 if (identFunc && layer.options.selectable && this.isLayerVisible(layer)) {\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 const selectPromise = sendIdentifyRequest(ev, {\n layers: ids,\n connector: this.connector,\n radius,\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","/**\n * @module ngw-map\n */\n\nimport { NgwMap } from './NgwMap';\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":["appendNgwResources","options","resource","defOptions","overwriteOptions","Number","push","__assign","Array","isArray","resourceId","id","OPTIONS","target","baseUrl","whitlabel","controls","controlsOptions","ZOOM","position","ATTRIBUTION","customAttribution","pixelRadius","NgwMap","_super","_this","kits","QmsKit","starterKits","forEach","x","connector","NgwConnector","auth","deepmerge","center","bounds","NgwKit","create","prepareWebMapOptions","this","emitter","EventEmitter","_ngwLayers","_promises","select","identify","_createWebMap","then","container","getContainer","classList","add","_whiteLabel","__extends","prototype","addControl","controlDef","onLoad","_a","sent","call","addNgwLayer","onMapLoad","keyname","undefined","deprecatedWarn","Error","defined","setViewDelay","adapterOptions","adapter","createNgwLayerAdapter","adapterOpts","visibility","addLayer","layer","getLayerId","name","item","display_name","baselayer","getActiveBaseLayer","resId","isObject","console","error","concat","er_1","fit","zoom","setCenter","setZoom","fitBounds","fetchNgwLayerItem","fetchNgwLayerItems","fetchNgwLayerFeature","fetchNgwLayerFeatures","fetchNgwLayerFeatureCollection","fetchIdentifyItem","requestOptions","promise","_addPromise","fetchIdentifyGeoJson","multiple","CancelablePromise","resolve","getIdentifyGeoJson","getNgwLayers","getNgwLayerByResourceId","_b","mem","getIdentificationIds","ids","_c","some","getDependLayers","dependLayers","dependFit","find","parentId","fitLayer","layerDef","String","ngwLayer","getBounds","getResource","fetchNgwExtent","extent","zoomToLayer","event","removeLayer","getLayer","layerId","enableSelection","$$selectFromNgwRaster","ev","_getSelectListenersCount","selectFromNgwRaster","$$selectFromNgwVector","_selectFromNgwVector","on","disableSelection","removeListener","getNgwLayerItem","getNgwLayerItems","getNgwLayerFeature","getNgwLayerFeatures","cancelPromise","args","_i","arguments","length","cancelPromises","apply","Object","keys","group","cancel","_emitStatusEvent","promises","layers","values","sort","a","b","order","layers_1","identFunc","selectable","isLayerVisible","Promise","all","getIds","getIds_1","getCenter","getZoom","radius","getIdentifyRadius","selectPromise","sendIdentifyRequest","resp","resources","sourceType","identifyEvent","_prepareToIdentify","groupName","indexOf","removeFromGroup","index","splice","catch","_isFitFromResource","params","_initMapState","qmsId","_addQmsBaseLayer","osm","_addOsmBaseLayer","layerFitAllowed","webmapId","resources_1","r","warn","er_2","addBaseLayer","qmsLayerName","qmsLayerOptions","feature","featureId","identifyFeature","fields","properties","label","parent","geom","geometry","featureCount","features","getIdentifyItems","map","createIdentifyItem","listenerCount","getCompanyLogo","companyLogoOptions","logo","appendChild","getIcon","WebMap"],"mappings":"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"}
1
+ {"version":3,"file":"ngw-map.cjs.prod.js","sources":["../src/utils/appendNgwResources.ts","../src/utils/prepareWebMapOptions.ts","../src/NgwMap.ts","../src/index.ts"],"sourcesContent":["import type { NgwLayerOptions } from '@nextgis/ngw-kit';\nimport type { NgwResourceDefinition } from '../interfaces';\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 { getDefaultControls } from '@nextgis/webmap';\nimport { deepmerge } from '@nextgis/utils';\nimport { StarterKit, MapOptions } from '@nextgis/webmap';\nimport NgwConnector from '@nextgis/ngw-connector';\nimport { QmsKit } from '@nextgis/qms-kit';\nimport { NgwKit } from '@nextgis/ngw-kit';\n\nimport { NgwMapOptions } from '../interfaces';\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 StrictEventEmitter from 'strict-event-emitter-types';\nimport { EventEmitter } from 'events';\nimport CancelablePromise from '@nextgis/cancelable-promise';\nimport { defined, isObject, getIdentifyRadius } from '@nextgis/utils';\nimport { AdapterOptions, WebMap } from '@nextgis/webmap';\nimport NgwConnector from '@nextgis/ngw-connector';\n\nimport {\n fetchNgwLayerFeatureCollection,\n createNgwLayerAdapter,\n fetchNgwLayerFeature,\n fetchIdentifyGeoJson,\n sendIdentifyRequest,\n createIdentifyItem,\n fetchNgwLayerItems,\n fetchIdentifyItem,\n fetchNgwLayerItem,\n getIdentifyItems,\n getCompanyLogo,\n fetchNgwExtent,\n} from '@nextgis/ngw-kit';\nimport { deprecatedWarn } from '@nextgis/utils';\nimport { getIcon } from '@nextgis/icons';\n\nimport { appendNgwResources } from './utils/appendNgwResources';\nimport { prepareWebMapOptions } from './utils/prepareWebMapOptions';\n\nimport type { JsonMap, FeatureProperties } from '@nextgis/utils';\nimport type {\n FeatureItem,\n LayerFeature,\n ResourceItem,\n FeatureLayersIdentify,\n FeatureLayersIdentifyItems,\n} from '@nextgis/ngw-connector';\nimport type {\n OnLayerMouseOptions,\n ControlPosition,\n MapClickEvent,\n LayerAdapter,\n WebMapEvents,\n MapControls,\n FitOptions,\n LayerDef,\n} from '@nextgis/webmap';\nimport type {\n NgwIdentify,\n NgwWebmapItem,\n ResourceAdapter,\n FetchNgwItemsOptions,\n NgwFeatureItemResponse,\n NgwFeatureRequestOptions,\n} from '@nextgis/ngw-kit';\nimport type { Geometry, Feature, FeatureCollection } from 'geojson';\nimport type { QmsAdapterOptions } from '@nextgis/qms-kit';\nimport type { NgwLayerOptions } from '@nextgis/ngw-kit';\nimport type {\n NgwIdentifyEvent,\n NgwMapOptions,\n NgwMapEvents,\n NgwLayers,\n} from './interfaces';\nimport type { FetchNgwItemOptions } from '@nextgis/ngw-kit';\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 if (identFunc && layer.options.selectable && this.isLayerVisible(layer)) {\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 const selectPromise = sendIdentifyRequest(ev, {\n layers: ids,\n connector: this.connector,\n radius,\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","/**\n * @module ngw-map\n */\n\nimport { NgwMap } from './NgwMap';\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":["appendNgwResources","options","resource","defOptions","overwriteOptions","Number","push","__assign","Array","isArray","resourceId","id","OPTIONS","target","baseUrl","whitlabel","controls","getDefaultControls","controlsOptions","ZOOM","position","ATTRIBUTION","customAttribution","pixelRadius","NgwMap","_super","_this","kits","QmsKit","starterKits","forEach","x","connector","NgwConnector","auth","deepmerge","center","bounds","NgwKit","create","prepareWebMapOptions","this","emitter","EventEmitter","_ngwLayers","_promises","select","identify","_createWebMap","then","container","getContainer","classList","add","_whiteLabel","__extends","prototype","addControl","controlDef","onLoad","_a","sent","call","addNgwLayer","onMapLoad","keyname","undefined","deprecatedWarn","Error","defined","setViewDelay","adapterOptions","adapter","createNgwLayerAdapter","adapterOpts","visibility","addLayer","layer","getLayerId","name","item","display_name","baselayer","getActiveBaseLayer","resId","isObject","console","error","concat","er_1","fit","zoom","setCenter","setZoom","fitBounds","fetchNgwLayerItem","fetchNgwLayerItems","fetchNgwLayerFeature","fetchNgwLayerFeatures","fetchNgwLayerFeatureCollection","fetchIdentifyItem","requestOptions","promise","_addPromise","fetchIdentifyGeoJson","multiple","CancelablePromise","resolve","getIdentifyGeoJson","getNgwLayers","getNgwLayerByResourceId","_b","mem","getIdentificationIds","ids","_c","some","getDependLayers","dependLayers","dependFit","find","parentId","fitLayer","layerDef","String","ngwLayer","getBounds","getResource","fetchNgwExtent","extent","zoomToLayer","event","removeLayer","getLayer","layerId","enableSelection","$$selectFromNgwRaster","ev","_getSelectListenersCount","selectFromNgwRaster","$$selectFromNgwVector","_selectFromNgwVector","on","disableSelection","removeListener","getNgwLayerItem","getNgwLayerItems","getNgwLayerFeature","getNgwLayerFeatures","cancelPromise","args","_i","arguments","length","cancelPromises","apply","Object","keys","group","cancel","_emitStatusEvent","promises","layers","values","sort","a","b","order","layers_1","identFunc","selectable","isLayerVisible","Promise","all","getIds","getIds_1","getCenter","getZoom","radius","getIdentifyRadius","selectPromise","sendIdentifyRequest","resp","resources","sourceType","identifyEvent","_prepareToIdentify","groupName","indexOf","removeFromGroup","index","splice","catch","_isFitFromResource","params","_initMapState","qmsId","_addQmsBaseLayer","osm","_addOsmBaseLayer","layerFitAllowed","webmapId","resources_1","r","warn","er_2","addBaseLayer","qmsLayerName","qmsLayerOptions","feature","featureId","identifyFeature","fields","properties","label","parent","geom","geometry","featureCount","features","getIdentifyItems","map","createIdentifyItem","listenerCount","getCompanyLogo","companyLogoOptions","logo","appendChild","getIcon","WebMap"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** Bundle of @nextgis/ngw-map; version: 1.16.6; author: NextGIS */
1
+ /** Bundle of @nextgis/ngw-map; version: 1.16.8; author: NextGIS */
2
2
  /******************************************************************************
3
3
  Copyright (c) Microsoft Corporation.
4
4
 
@@ -3001,11 +3001,27 @@ var WebMapLayers = /** @class */ (function (_super) {
3001
3001
  }
3002
3002
  }
3003
3003
  };
3004
- // requestGeomString(pixel: Pixel, pixelRadius: number) {
3005
- // if (this.mapAdapter.requestGeomString) {
3006
- // return this.mapAdapter.requestGeomString(pixel, pixelRadius);
3007
- // }
3008
- // }
3004
+ WebMapLayers.prototype.showLayerLabel = function (layerDef) {
3005
+ this.toggleLayerLabel(layerDef, true);
3006
+ };
3007
+ WebMapLayers.prototype.hideLayerLabel = function (layerDef) {
3008
+ this.toggleLayerLabel(layerDef, false);
3009
+ };
3010
+ WebMapLayers.prototype.toggleLayerLabel = function (layerDef, status) {
3011
+ var layer = this.getLayer(layerDef);
3012
+ if (layer) {
3013
+ if (status) {
3014
+ if (layer.showLabel) {
3015
+ layer.showLabel();
3016
+ }
3017
+ }
3018
+ else {
3019
+ if (layer.hideLabel) {
3020
+ layer.hideLabel();
3021
+ }
3022
+ }
3023
+ }
3024
+ };
3009
3025
  /**
3010
3026
  * Mark the layer as selected.
3011
3027
  * If the adapter is a vector layer and supports data selection,
@@ -3559,7 +3575,7 @@ var WebMapControls = /** @class */ (function (_super) {
3559
3575
  /**
3560
3576
  *
3561
3577
  * @param control - Instance of WEB-GIS framework control.
3562
- * What is returned by the {@Link WebMapControls.createControl | create} method
3578
+ * What is returned by the {@link createControl | create} method
3563
3579
  */
3564
3580
  WebMapControls.prototype.removeControl = function (control) {
3565
3581
  var _this = this;
@@ -3882,6 +3898,10 @@ var WebMap = /** @class */ (function (_super) {
3882
3898
  return WebMap;
3883
3899
  }(WebMapControls));
3884
3900
 
3901
+ function getDefaultControls() {
3902
+ return ['ZOOM', 'ATTRIBUTION'];
3903
+ }
3904
+
3885
3905
  function createWebMap(options) {
3886
3906
  return __awaiter(this, void 0, void 0, function () {
3887
3907
  var webMap;
@@ -4692,7 +4712,7 @@ var NgwConnector$1 = /** @class */ (function () {
4692
4712
  /**
4693
4713
  * Establishing a connection with NextGIS Web to fulfill all other requests.
4694
4714
  * @remarks
4695
- * This method need not be called manually as it is used when forming a request in {@link NgwConnector.apiRequest | apiRequest}.
4715
+ * This method need not be called manually as it is used when forming a request in {@link apiRequest | apiRequest}.
4696
4716
  * Can be used to check connection.
4697
4717
  * @example
4698
4718
  * ```javascript
@@ -4937,73 +4957,73 @@ var NgwConnector$1 = /** @class */ (function () {
4937
4957
  // Resource Methods
4938
4958
  // -------------------------------------------------------------------------
4939
4959
  /**
4940
- * {@inheritDoc ResourcesControl.getOne}
4960
+ * {@link ResourcesControl.getOne}
4941
4961
  */
4942
4962
  NgwConnector.prototype.getResource = function (resource, requestOptions) {
4943
4963
  return this.resources.getOne(resource, requestOptions);
4944
4964
  };
4945
4965
  /**
4946
- * {@inheritDoc ResourcesControl.getOneOrFail}
4966
+ * {@link ResourcesControl.getOneOrFail}
4947
4967
  */
4948
4968
  NgwConnector.prototype.getResourceOrFail = function (resource, requestOptions) {
4949
4969
  return this.resources.getOneOrFail(resource, requestOptions);
4950
4970
  };
4951
4971
  /**
4952
- * @deprecated - use {@link NgwConnector.getResource}
4972
+ * @deprecated - use {@link getResource}
4953
4973
  */
4954
4974
  NgwConnector.prototype.getResourceBy = function (resource) {
4955
4975
  return this.resources.getOne(resource);
4956
4976
  };
4957
4977
  /**
4958
- * @deprecated - use {@link NgwConnector.getResource}
4978
+ * @deprecated - use {@link getResource}
4959
4979
  */
4960
4980
  NgwConnector.prototype.getResourceByKeyname = function (keyname) {
4961
4981
  return this.resources.getOne(keyname);
4962
4982
  };
4963
4983
  /**
4964
- * @deprecated - use {@link NgwConnector.getResource}
4984
+ * @deprecated - use {@link getResource}
4965
4985
  */
4966
4986
  NgwConnector.prototype.getResourceById = function (id) {
4967
4987
  return this.resources.getOne(id);
4968
4988
  };
4969
4989
  /**
4970
- * {@inheritDoc ResourcesControl.getId}
4990
+ * {@link ResourcesControl.getId}
4971
4991
  */
4972
4992
  NgwConnector.prototype.getResourceId = function (resource, requestOptions) {
4973
4993
  return this.resources.getId(resource, requestOptions);
4974
4994
  };
4975
4995
  /**
4976
- * {@inheritDoc ResourcesControl.getIdOrFail}
4996
+ * {@link ResourcesControl.getIdOrFail}
4977
4997
  */
4978
4998
  NgwConnector.prototype.getResourceIdOrFail = function (resource, requestOptions) {
4979
4999
  return this.resources.getIdOrFail(resource, requestOptions);
4980
5000
  };
4981
5001
  /**
4982
- * {@inheritDoc ResourcesControl.getMany}
5002
+ * {@link ResourcesControl.getMany}
4983
5003
  */
4984
5004
  NgwConnector.prototype.getResourcesBy = function (resource, requestOptions) {
4985
5005
  return this.resources.getMany(resource, requestOptions);
4986
5006
  };
4987
5007
  /**
4988
- * {@inheritDoc ResourcesControl.getParent}
5008
+ * {@link ResourcesControl.getParent}
4989
5009
  */
4990
5010
  NgwConnector.prototype.getResourceParent = function (resource, requestOptions) {
4991
5011
  return this.resources.getParent(resource, requestOptions);
4992
5012
  };
4993
5013
  /**
4994
- * {@inheritDoc ResourcesControl.getChildrenOf}
5014
+ * {@link ResourcesControl.getChildrenOf}
4995
5015
  */
4996
5016
  NgwConnector.prototype.getResourceChildren = function (resource, requestOptions) {
4997
5017
  return this.resources.getChildrenOf(resource, requestOptions);
4998
5018
  };
4999
5019
  /**
5000
- * {@inheritDoc ResourcesControl.update}
5020
+ * {@link ResourcesControl.update}
5001
5021
  */
5002
5022
  NgwConnector.prototype.updateResource = function (resource, data) {
5003
5023
  return this.resources.update(resource, data);
5004
5024
  };
5005
5025
  /**
5006
- * {@inheritDoc ResourcesControl.delete}
5026
+ * {@link ResourcesControl.delete}
5007
5027
  */
5008
5028
  NgwConnector.prototype.deleteResource = function (resource) {
5009
5029
  return this.resources.delete(resource);
@@ -5103,7 +5123,6 @@ var NgwConnector$1 = /** @class */ (function () {
5103
5123
  * @packageDocumentation
5104
5124
  * @module ngw-connector
5105
5125
  */
5106
- // export { NgwConnector };
5107
5126
  var NgwConnector = NgwConnector$1;
5108
5127
 
5109
5128
  function getNgwWebmapExtent(webmap) {
@@ -7501,9 +7520,23 @@ function getSubdomainsOriginUrl(originUrl) {
7501
7520
  }
7502
7521
 
7503
7522
  var URL = 'https://qms.nextgis.com';
7504
- function createQmsAdapter(webMap, url, createOpt) {
7523
+ function createQmsAdapter(webMapOrOptions, url, createOpt) {
7505
7524
  if (url === void 0) { url = URL; }
7506
7525
  if (createOpt === void 0) { createOpt = {}; }
7526
+ var webMap;
7527
+ if ('webMap' in webMapOrOptions) {
7528
+ var webMap_ = webMapOrOptions.webMap, url_ = webMapOrOptions.url, adapterOptions = __rest(webMapOrOptions, ["webMap", "url"]);
7529
+ webMap = webMap_;
7530
+ if (url_) {
7531
+ url = url_;
7532
+ }
7533
+ if (adapterOptions) {
7534
+ createOpt = adapterOptions;
7535
+ }
7536
+ }
7537
+ else {
7538
+ webMap = webMapOrOptions;
7539
+ }
7507
7540
  if (!url) {
7508
7541
  url = URL;
7509
7542
  }
@@ -7591,7 +7624,7 @@ var QmsKit = /** @class */ (function () {
7591
7624
  ]);
7592
7625
  };
7593
7626
  QmsKit.prototype._createAdapter = function (webMap) {
7594
- return createQmsAdapter(webMap, this.url);
7627
+ return createQmsAdapter({ webMap: webMap, url: this.url });
7595
7628
  };
7596
7629
  QmsKit.utils = {
7597
7630
  createQmsAdapter: createQmsAdapter,
@@ -8301,7 +8334,7 @@ var OPTIONS = {
8301
8334
  target: 'map',
8302
8335
  baseUrl: '',
8303
8336
  whitlabel: false,
8304
- controls: ['ZOOM', 'ATTRIBUTION'],
8337
+ controls: getDefaultControls(),
8305
8338
  controlsOptions: {
8306
8339
  ZOOM: { position: 'top-left' },
8307
8340
  ATTRIBUTION: {
@@ -8667,7 +8700,7 @@ var NgwMap = /** @class */ (function (_super) {
8667
8700
  });
8668
8701
  });
8669
8702
  };
8670
- /** @deprecated use {@link NgwMap.fitLayer} instead */
8703
+ /** @deprecated use {@link fitLayer} instead */
8671
8704
  NgwMap.prototype.zoomToLayer = function (layerDef) {
8672
8705
  return __awaiter(this, void 0, void 0, function () {
8673
8706
  return __generator(this, function (_a) {
@@ -8719,30 +8752,30 @@ var NgwMap = /** @class */ (function (_super) {
8719
8752
  }
8720
8753
  };
8721
8754
  /**
8722
- * @deprecated use {@link NgwMap.fetchNgwLayerItem} instead
8755
+ * @deprecated use {@link fetchNgwLayerItem} instead
8723
8756
  */
8724
8757
  NgwMap.prototype.getNgwLayerItem = function (options) {
8725
8758
  return this.fetchNgwLayerItem(options);
8726
8759
  };
8727
8760
  /**
8728
- * @deprecated use {@link NgwMap.fetchNgwLayerItems} instead
8761
+ * @deprecated use {@link fetchNgwLayerItems} instead
8729
8762
  */
8730
8763
  NgwMap.prototype.getNgwLayerItems = function (options) {
8731
8764
  return this.fetchNgwLayerItems(options);
8732
8765
  };
8733
8766
  /**
8734
- * @deprecated use {@link NgwMap.fetchNgwLayerFeature} instead
8767
+ * @deprecated use {@link fetchNgwLayerFeature} instead
8735
8768
  */
8736
8769
  NgwMap.prototype.getNgwLayerFeature = function (options) {
8737
8770
  return this.fetchNgwLayerFeature(options);
8738
8771
  };
8739
8772
  /**
8740
- * @deprecated use {@link NgwMap.fetchNgwLayerFeatures} instead
8773
+ * @deprecated use {@link fetchNgwLayerFeatures} instead
8741
8774
  */
8742
8775
  NgwMap.prototype.getNgwLayerFeatures = function (options) {
8743
8776
  return this.fetchNgwLayerFeatures(options);
8744
8777
  };
8745
- /** @deprecated use {@link NgwMap.cancelPromises} instead */
8778
+ /** @deprecated use {@link cancelPromises} instead */
8746
8779
  NgwMap.prototype.cancelPromise = function () {
8747
8780
  var args = [];
8748
8781
  for (var _i = 0; _i < arguments.length; _i++) {
@@ -9020,5 +9053,5 @@ function createNgwMap(options) {
9020
9053
  });
9021
9054
  }
9022
9055
 
9023
- export { NgwMap, WebMap, WebMapControls, WebMapLayers, WebMapMain, createNgwMap, createToggleControl, createWebMap, detectGeometryType, findMostFrequentGeomType, getWebMap, updateGeoJsonAdapterOptions };
9056
+ export { NgwMap, WebMap, WebMapControls, WebMapLayers, WebMapMain, createNgwMap, createToggleControl, createWebMap, detectGeometryType, findMostFrequentGeomType, getDefaultControls, getWebMap, updateGeoJsonAdapterOptions };
9024
9057
  //# sourceMappingURL=ngw-map.esm-browser.js.map