@nextgis/leaflet-map-adapter 1.11.0 → 1.12.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.
@@ -1 +1 @@
1
- {"version":3,"file":"leaflet-map-adapter.esm-bundler.js","sources":["../src/utils/convertMapClickEvent.ts","../src/controls/createControl.ts","../src/controls/createButtonControl.ts","../src/controls/Attribution.ts","../src/utils/boundsToArray.ts","../src/utils/geometries.ts","../src/utils/createMouseEvent.ts","../src/utils/detectType.ts","../src/layer-adapters/BaseAdapter.ts","../src/layer-adapters/GeoJsonAdapter.ts","../src/utils/callAjax.ts","../src/layer-adapters/ImageAdapter/ImageOverlay.ts","../src/layer-adapters/ImageAdapter/ImageLayer.ts","../src/layer-adapters/ImageAdapter/ImageAdapter.ts","../../utils/src/debounce.ts","../src/utils/makeRemoteTileLayer.ts","../src/layer-adapters/TileAdapter/TileLayer.ts","../src/layer-adapters/TileAdapter/TileAdapter.ts","../src/layer-adapters/WmsAdapter/WmsLayer.ts","../src/layer-adapters/WmsAdapter/WmsAdapter.ts","../src/layer-adapters/OsmAdapter.ts","../src/utils/arrayToBoundsExpression.ts","../src/LeafletMapAdapter.ts","../src/index.ts"],"sourcesContent":["import type { LeafletMouseEvent } from 'leaflet';\n\nimport type { MapClickEvent } from '@nextgis/webmap';\n\nexport function convertMapClickEvent(evt: LeafletMouseEvent): MapClickEvent {\n const coord = evt.containerPoint;\n const latLng = evt.latlng;\n const { lat, lng } = latLng;\n return {\n latLng,\n lngLat: [lng, lat],\n pixel: { left: coord.x, top: coord.y },\n source: evt,\n };\n}\n","import { Control, DomEvent } from 'leaflet';\nimport type {\n MapControl,\n CreateControlOptions,\n MapAdapter,\n} from '@nextgis/webmap';\n\nexport function createControl(\n control: MapControl,\n options: CreateControlOptions = {},\n map: MapAdapter,\n): Control {\n const C = Control.extend({\n onAdd() {\n const element = document.createElement('div');\n const content = control.onAdd(map);\n element.classList.add('leaflet-control');\n if (options.bar) {\n element.classList.add('leaflet-bar');\n }\n if (options.addClass) {\n element.classList.add(options.addClass);\n }\n if (!options.margin && !options.bar) {\n element.style.marginBottom = '0px';\n element.style.marginTop = '0px';\n element.style.marginLeft = '0px';\n element.style.marginRight = '0px';\n }\n if (content) {\n element.appendChild(content);\n }\n\n DomEvent.disableClickPropagation(element);\n\n return element;\n },\n onRemove() {\n control.onRemove();\n },\n });\n return new C();\n}\n","import { ButtonControlOptions, MapAdapter } from '@nextgis/webmap';\nimport { createControl } from './createControl';\nimport { DomEvent, Control } from 'leaflet';\n\nexport function createButtonControl(\n options: ButtonControlOptions,\n map: MapAdapter,\n): Control {\n const link = document.createElement('a');\n\n const title = options.title || '';\n link.href = '#';\n link.title = title;\n\n link.setAttribute('role', 'button');\n link.setAttribute('aria-label', title);\n\n DomEvent.disableClickPropagation(link);\n DomEvent.on(link, 'click', DomEvent.stop);\n\n if (options.html instanceof HTMLElement) {\n link.appendChild(options.html);\n } else if (typeof options.html === 'string') {\n link.innerHTML = options.html;\n }\n\n const onClick = (e: Event) => {\n e.stopPropagation();\n options.onClick();\n };\n\n return createControl(\n {\n onAdd() {\n if (options.onClick !== undefined) {\n link.addEventListener('click', onClick);\n }\n return link;\n },\n onRemove() {\n const parent = link.parentNode;\n if (parent) {\n parent.removeChild(link);\n }\n if (options.onClick !== undefined) {\n link.removeEventListener('click', onClick);\n }\n },\n },\n { bar: true },\n map,\n );\n}\n","import { Control, ControlOptions } from 'leaflet';\nimport { AttributionControlOptions } from '@nextgis/webmap';\n\nexport class AttributionControl extends Control.Attribution {\n // options: AttributionControlOptions\n constructor(options: AttributionControlOptions & ControlOptions) {\n super(options);\n const customAttribution = options && options.customAttribution;\n if (customAttribution) {\n let attributions: string[] = [];\n if (Array.isArray(customAttribution)) {\n attributions = customAttribution;\n } else if (customAttribution) {\n attributions = [customAttribution];\n }\n attributions.forEach((x) => this.addAttribution(x));\n }\n }\n}\n","import type { LatLngBounds } from 'leaflet';\nimport type { LngLatBoundsArray } from '@nextgis/utils';\n\nexport function boundsToArray(bounds: LatLngBounds): LngLatBoundsArray {\n const ne = bounds.getNorthEast();\n const sw = bounds.getSouthWest();\n return [sw.lng, sw.lat, ne.lng, ne.lat];\n}\n","import { GeoJSON } from 'leaflet';\nimport { boundsToArray } from './boundsToArray';\n\nimport type {\n Feature,\n GeoJsonObject,\n FeatureCollection,\n GeometryCollection,\n GeoJsonGeometryTypes,\n} from 'geojson';\nimport type { LatLngBounds } from 'leaflet';\nimport type { FeaturePosition, VectorAdapterLayerType } from '@nextgis/webmap';\nimport type { LngLatArray, LngLatBoundsArray } from '@nextgis/utils';\n\nexport const typeAlias: {\n [key in GeoJsonGeometryTypes]: VectorAdapterLayerType;\n} = {\n Point: 'point',\n LineString: 'line',\n MultiPoint: 'point',\n Polygon: 'polygon',\n MultiLineString: 'line',\n MultiPolygon: 'polygon',\n GeometryCollection: 'polygon',\n};\n\nexport const PAINT = {\n stroke: false,\n opacity: 1,\n};\n\nexport const backAliases: {\n [key in VectorAdapterLayerType]?: GeoJsonGeometryTypes[];\n} = {};\n\nfor (const a in typeAlias) {\n const layerType = typeAlias[a as GeoJsonGeometryTypes];\n const backAlias = backAliases[layerType] || [];\n backAlias.push(a as GeoJsonGeometryTypes);\n backAliases[layerType] = backAlias;\n}\n\nexport function geometryFilter(\n geometry: GeoJsonGeometryTypes,\n type: VectorAdapterLayerType,\n): boolean {\n const geoJsonGeometry = backAliases[type] || [];\n return geoJsonGeometry.indexOf(geometry) !== -1;\n}\n\nexport function filterGeometries(\n data: GeoJsonObject,\n type: VectorAdapterLayerType,\n): GeoJsonObject | false {\n if (data.type === 'FeatureCollection') {\n const _data = data as FeatureCollection;\n _data.features = _data.features.filter((f) =>\n geometryFilter(f.geometry.type, type),\n );\n } else if (data.type === 'Feature') {\n const allow = geometryFilter((data as Feature).geometry.type, type);\n if (!allow) {\n return false;\n }\n } else if (data.type === 'GeometryCollection') {\n const _data = data as GeometryCollection;\n _data.geometries = _data.geometries.filter((g) =>\n geometryFilter(g.type, type),\n );\n }\n return data;\n}\n\nfunction featuresBounds(features: Feature | Feature[]): LatLngBounds {\n const geoJsonLayer = new GeoJSON();\n const features_ = Array.isArray(features) ? features : [features];\n features_.forEach((f) => geoJsonLayer.addData(f));\n return geoJsonLayer.getBounds();\n}\n\nexport function getFeaturesBounds(\n features: Feature | Feature[],\n): LngLatBoundsArray {\n return boundsToArray(featuresBounds(features));\n}\n\nexport function getFeaturesCenter(features: Feature | Feature[]): LngLatArray {\n const { lat, lng } = featuresBounds(features).getCenter();\n return [lng, lat];\n}\n\nexport function createFeaturePositionOptions(\n features: Feature | Feature[],\n): FeaturePosition {\n return {\n getBounds: () => getFeaturesBounds(features),\n getCenter: () => getFeaturesCenter(features),\n };\n}\n","import { convertMapClickEvent } from './convertMapClickEvent';\nimport { createFeaturePositionOptions } from './geometries';\n\nimport type { LeafletMouseEvent } from 'leaflet';\nimport type { LayerAdapter, OnLayerMouseOptions } from '@nextgis/webmap';\nimport type { LayerDef } from '../layer-adapters/GeoJsonAdapter';\n\nexport interface CreateMouseEventOptions {\n layer: LayerAdapter;\n source: LeafletMouseEvent;\n}\n\nexport function createMouseEvent({\n layer,\n source,\n}: CreateMouseEventOptions): OnLayerMouseOptions {\n const layer_ = source.target as LayerDef;\n const feature = layer_.feature;\n const opt: OnLayerMouseOptions = {\n layer,\n feature,\n event: convertMapClickEvent(source),\n source,\n ...createFeaturePositionOptions(feature),\n };\n return opt;\n}\n","import type {\n GeoJsonObject,\n GeoJsonGeometryTypes,\n FeatureCollection,\n Feature,\n GeometryCollection,\n} from 'geojson';\n\nfunction findMostFrequentGeomType(\n arr: GeoJsonGeometryTypes[],\n): GeoJsonGeometryTypes {\n const counts: { [x: string]: number } = {};\n for (let fry = 0; fry < arr.length; fry++) {\n counts[arr[fry]] = 1 + (counts[arr[fry]] || 0);\n }\n let maxName = '';\n for (const c in counts) {\n const maxCount = maxName ? counts[maxName] : 0;\n if (counts[c] > maxCount) {\n maxName = c;\n }\n }\n return maxName as GeoJsonGeometryTypes;\n}\n\nexport function detectType(geojson: GeoJsonObject): GeoJsonGeometryTypes {\n let geometry: GeoJsonGeometryTypes;\n if (geojson.type === 'FeatureCollection') {\n const featuresTypes = (geojson as FeatureCollection).features.map(\n (f) => f.geometry.type,\n );\n geometry = findMostFrequentGeomType(featuresTypes);\n } else if (geojson.type === 'GeometryCollection') {\n const geometryTypes = (geojson as GeometryCollection).geometries.map(\n (g) => g.type,\n );\n geometry = findMostFrequentGeomType(geometryTypes);\n } else if (geojson.type === 'Feature') {\n geometry = (geojson as Feature).geometry.type;\n } else {\n geometry = geojson.type;\n }\n return geometry;\n}\n","import { MainLayerAdapter, AdapterOptions } from '@nextgis/webmap';\nimport { Map } from 'leaflet';\n\nexport class BaseAdapter<O extends AdapterOptions = AdapterOptions, L = any>\n implements MainLayerAdapter<Map, L, O>\n{\n layer?: L;\n protected pane = 'order-0';\n\n constructor(public map: L.Map, public options: O) {\n if (options.order !== undefined) {\n const pane = 'order-' + options.order;\n let exist = map.getPane(pane);\n if (!exist) {\n exist = map.createPane(pane);\n }\n exist.style.zIndex = String(Math.round(options.order * 100));\n this.pane = pane;\n }\n }\n\n addLayer(options: O): L | Promise<L> | undefined {\n Object.assign(this.options, options);\n return undefined;\n }\n}\n","import {\n CircleMarker,\n FeatureGroup,\n DomEvent,\n GeoJSON,\n DivIcon,\n Marker,\n Layer,\n} from 'leaflet';\nimport { debounce, defined } from '@nextgis/utils';\n\nimport { isPaintCallback, isPaint } from '@nextgis/paint';\nimport {\n PAINT,\n typeAlias,\n filterGeometries,\n createFeaturePositionOptions,\n} from '../utils/geometries';\nimport { createMouseEvent } from '../utils/createMouseEvent';\nimport { boundsToArray } from '../utils/boundsToArray';\nimport { detectType } from '../utils/detectType';\nimport { BaseAdapter } from './BaseAdapter';\n\nimport type { GeoJsonObject, Feature, Point } from 'geojson';\nimport type {\n PopupOptions as LPopupOptions,\n CircleMarkerOptions,\n LeafletMouseEvent,\n LatLngExpression,\n GeoJSONOptions,\n LeafletEvent,\n PathOptions,\n LatLng,\n Path,\n Map,\n} from 'leaflet';\nimport type {\n Paint,\n IconPaint,\n PathPaint,\n VectorAdapterLayerPaint,\n} from '@nextgis/paint';\nimport type { LngLatBoundsArray } from '@nextgis/utils';\nimport type {\n VectorAdapterLayerType,\n GeoJsonAdapterOptions,\n PopupOnCloseFunction,\n OnLayerMouseOptions,\n VectorLayerAdapter,\n OnLayerSelectType,\n LayerDefinition,\n DataLayerFilter,\n PopupOptions,\n} from '@nextgis/webmap';\n\nexport type LayerDef = LayerDefinition<Feature, Layer>;\n\nexport class GeoJsonAdapter\n extends BaseAdapter<GeoJsonAdapterOptions>\n implements VectorLayerAdapter<Map>\n{\n layer?: FeatureGroup;\n selected = false;\n\n private paint?: Paint;\n private selectedPaint?: Paint;\n private type?: VectorAdapterLayerType;\n\n private _layers: LayerDef[] = [];\n private _selectedLayers: LayerDef[] = [];\n private _filteredLayers: LayerDef[] = [];\n private _filterFun?: DataLayerFilter<Feature>;\n private _openedPopup: [Layer, PopupOnCloseFunction[], LayerDef][] = [];\n\n private $updateTooltip = debounce(() => {\n this.updateTooltip();\n }, 300);\n\n constructor(map: L.Map, options: GeoJsonAdapterOptions) {\n super(map, options);\n }\n\n addLayer(options: GeoJsonAdapterOptions): FeatureGroup<any> | undefined {\n Object.assign(this.options, options);\n this.paint = options.paint;\n this.layer = new FeatureGroup([], {\n ...options.nativeOptions,\n pane: this.pane,\n });\n this.selectedPaint = options.selectedPaint;\n options.paint = this.paint;\n\n if (options.data) {\n this.addData(options.data);\n }\n\n this._addMapListener();\n\n return this.layer;\n }\n\n beforeRemove(): void {\n this._removeMapListener();\n }\n\n select(findFeatureFun?: DataLayerFilter): void {\n if (findFeatureFun) {\n const def = this._layers.filter(findFeatureFun);\n def.forEach((x) => {\n this._selectLayer(x, 'api');\n });\n } else if (!this.selected) {\n this.selected = true;\n if (this.selectedPaint) {\n this._setPaintEachLayer(this.selectedPaint);\n }\n }\n }\n\n unselect(findFeatureFun?: DataLayerFilter): void {\n if (findFeatureFun) {\n const feature = this._layers.filter(findFeatureFun);\n feature.forEach((x) => {\n this._unSelectLayer(x);\n });\n } else if (this.selected) {\n for (const p of this._openedPopup) {\n this._removePopup(p[0]);\n }\n if (this.paint) {\n this._setPaintEachLayer(this.paint);\n }\n this._selectedLayers.length = 0;\n this.selected = false;\n }\n }\n\n getSelected(): LayerDefinition<Feature, LayerDef>[] {\n return this._selectedLayers.map((x) => {\n return {\n target: this,\n feature: x.feature,\n layer: x,\n ...createFeaturePositionOptions(x.feature),\n };\n });\n }\n\n getFiltered(): LayerDef[] {\n return this._filteredLayers;\n }\n\n filter(fun?: DataLayerFilter): LayerDef[] {\n // Some optimization\n this._filterFun = fun;\n const layer_ = this.layer;\n const map = layer_ && (layer_ as any)._map;\n if (layer_ && map) {\n layer_.remove();\n\n const filteredLayers: LayerDef[] = [];\n this._layers.forEach(({ feature, layer }) => {\n if (layer) {\n const ok = fun\n ? fun({\n target: this,\n feature,\n layer,\n ...createFeaturePositionOptions(feature),\n })\n : true;\n if (ok) {\n layer_.addLayer(layer);\n filteredLayers.push({\n target: this,\n feature,\n layer,\n ...createFeaturePositionOptions(feature),\n });\n } else {\n layer_.removeLayer(layer);\n }\n }\n });\n this._filteredLayers = filteredLayers;\n\n layer_.addTo(map);\n }\n return this._filteredLayers;\n }\n\n cleanFilter(): void {\n this.filter();\n }\n\n getLayers(): LayerDef[] {\n return this._layers.map(({ layer, feature }) => {\n const visible = layer && !!(layer as any)._map;\n return {\n feature,\n layer,\n visible,\n target: this,\n ...createFeaturePositionOptions(feature),\n };\n });\n }\n\n clearLayer(cb?: (feature: Feature) => boolean): void {\n this.unselect();\n const layer_ = this.layer;\n if (layer_) {\n if (cb) {\n for (let fry = this._layers.length; fry--; ) {\n const def = this._layers[fry];\n if (def) {\n const { feature, layer } = def;\n if (feature && layer) {\n const exist = cb(feature);\n if (exist) {\n layer_.removeLayer(layer);\n this._layers.splice(fry, 1);\n }\n }\n }\n }\n } else {\n layer_.clearLayers();\n this._layers = [];\n }\n }\n }\n\n setData(data: GeoJsonObject): void {\n this.clearLayer();\n this.addData(data);\n }\n\n addData(data: GeoJsonObject | false): void {\n const options = this.options;\n let geoJsonOptions: GeoJSONOptions | undefined;\n if (options) {\n if (data) {\n let type: VectorAdapterLayerType;\n\n if (!options.type) {\n const detectedType = detectType(data);\n type = typeAlias[detectedType];\n } else {\n type = options.type;\n }\n if (this.type && this.type !== type) {\n console.warn('no other data type than layer can be added');\n return;\n }\n this.type = type;\n\n data = filterGeometries(data, type);\n if (data) {\n geoJsonOptions = this._getGeoJsonOptions(options, type);\n }\n }\n new GeoJSON(data || undefined, geoJsonOptions);\n }\n }\n\n openPopup(findFeatureFun: DataLayerFilter, options?: PopupOptions): void {\n if (findFeatureFun) {\n const def = this._layers.filter(findFeatureFun);\n def.forEach((x) => {\n this._openPopup(x, options, 'api');\n });\n }\n }\n\n closePopup(findFeatureFun?: DataLayerFilter): void {\n const popupToClose = findFeatureFun\n ? this._openedPopup.filter((x) => findFeatureFun(x[2]))\n : this._openedPopup;\n\n popupToClose.forEach((x) => {\n this._removePopup(x[0]);\n });\n }\n\n updateTooltip(layerDef?: LayerDefinition): void {\n if (layerDef) {\n this._updateTooltip(layerDef);\n } else {\n this.getLayers().forEach((x) =>\n this._updateTooltip({ feature: x.feature, layer: x.layer }),\n );\n }\n }\n\n /** @deprecated use {@link GeoJsonAdapter.getBounds} instead */\n getExtent(): LngLatBoundsArray | undefined {\n return this.getBounds();\n }\n\n getBounds(): LngLatBoundsArray | undefined {\n if (this.layer) {\n const bounds = this.layer.getBounds();\n if (bounds.isValid()) {\n return boundsToArray(bounds);\n }\n }\n }\n\n setOpacity(value: number): void {\n this.options.opacity = value;\n this.setPaint(this.paint);\n this.setSelectedPaint(this.selectedPaint);\n }\n\n setPaint(paint?: Paint | null): void {\n if (paint) {\n this.paint = paint;\n for (const l of this._layers) {\n this._setPaint(l, paint);\n }\n }\n }\n setSelectedPaint(paint?: Paint | null): void {\n if (paint) {\n this.selectedPaint = paint;\n for (const l of this._selectedLayers) {\n this._setPaint(l, paint);\n }\n }\n }\n updatePaint(paint: Partial<Paint>): void {\n this.paint = { ...this.paint, ...paint } as Paint;\n for (const l of this._layers) {\n this._setPaint(l, this.paint);\n }\n }\n updateSelectedPaint(paint: Partial<Paint>): void {\n this.selectedPaint = { ...this.selectedPaint, ...paint } as Paint;\n for (const l of this._selectedLayers) {\n this._setPaint(l, this.selectedPaint);\n }\n }\n\n private $unselect = () => {\n this.unselect();\n };\n\n private _updateTooltip(layerDef: Pick<LayerDef, 'feature' | 'layer'>) {\n const { feature, layer } = layerDef;\n if (feature && layer && feature.properties && this.options.labelField) {\n layer.unbindTooltip();\n const message = feature.properties[this.options.labelField];\n if (message !== undefined) {\n const permanent = !this.options.labelOnHover;\n\n layer.bindTooltip(String(message), { permanent, sticky: false });\n }\n }\n }\n\n private async _openPopup(\n def: LayerDef,\n options: PopupOptions = {},\n type: OnLayerSelectType,\n latLng?: LatLngExpression,\n ) {\n const { feature, layer } = def;\n const {\n minWidth,\n autoPan,\n maxWidth,\n closeButton: closeButton_,\n } = {\n minWidth: 300,\n ...options,\n };\n const closeButton = closeButton_ ?? !this.options.selectOnHover;\n let popup: Layer;\n const _closeHandlers: PopupOnCloseFunction[] = [];\n const onClose = (handler: PopupOnCloseFunction) => {\n _closeHandlers.push(handler);\n };\n const close = () => {\n if (popup) {\n this._removePopup(popup);\n }\n };\n let content;\n if (options.createPopupContent) {\n content = await options.createPopupContent({\n layer,\n feature,\n target: this,\n type,\n close,\n onClose,\n ...createFeaturePositionOptions(feature),\n });\n } else {\n content = options.popupContent;\n }\n\n if (content && layer) {\n const popupOptions: LPopupOptions = {\n minWidth,\n autoPan,\n // maxWidth,\n closeButton,\n closeOnClick: false,\n autoClose: false,\n };\n if (defined(maxWidth)) {\n popupOptions.maxWidth = maxWidth;\n }\n popup = layer.bindPopup(content, popupOptions);\n\n const unselectOnClose =\n this.options.popupOptions?.unselectOnClose ?? true;\n if (unselectOnClose) {\n const p = layer.getPopup();\n p &&\n p.once(\n 'remove',\n () => {\n close();\n },\n this,\n );\n }\n this._openedPopup.push([popup, _closeHandlers, def]);\n popup.openPopup(latLng);\n }\n }\n\n private _removePopup(popup: Layer) {\n const map = this.map;\n if (map) {\n popup.closePopup().unbindPopup();\n const index = this._openedPopup.findIndex((x) => x[0] === popup);\n if (index !== -1) {\n const unselectOnClose =\n this.options.popupOptions?.unselectOnClose ?? true;\n const [, closeHandlers, def] = this._openedPopup[index];\n for (const h of closeHandlers) {\n h(def);\n }\n closeHandlers.length = 0;\n if (unselectOnClose) {\n this._unSelectLayer(def);\n }\n this._openedPopup.splice(index, 1);\n }\n }\n }\n\n private _setPaintEachLayer(paint: Paint) {\n this._layers.forEach((l) => {\n this._setPaint(l, paint);\n });\n }\n\n private _setPaint(def: LayerDef, paint: Paint) {\n let style: VectorAdapterLayerPaint | undefined = undefined;\n const { layer, feature } = def;\n if (layer && feature) {\n if (isPaintCallback(paint)) {\n style = paint(feature);\n } else if (isPaint(paint)) {\n style = paint;\n }\n if (style) {\n if (this.type === 'point' && style.type === 'icon') {\n const marker = layer as Marker;\n const divIcon = this._createDivIcon(style);\n marker.setIcon(divIcon);\n } else if ('setStyle' in layer) {\n (layer as Path).setStyle(this._preparePaint(style));\n }\n }\n }\n }\n\n private _preparePaint(paint: VectorAdapterLayerPaint): PathOptions {\n if (paint.type !== 'get-paint') {\n // const path: CircleMarkerOptions | PathOptions = paint as CircleMarkerOptions | PathOptions;\n // if (path.opacity) {\n // path.fillOpacity = path.opacity;\n // }\n\n const paintAliases: [keyof PathOptions, keyof PathPaint][] = [\n // ['color', 'color'],\n ['color', 'strokeColor'],\n ['opacity', 'strokeOpacity'],\n ['stroke', 'stroke'],\n ['fillColor', 'fillColor'],\n ['fillOpacity', 'fillOpacity'],\n ['fill', 'fill'],\n ['weight', 'weight'],\n ];\n const aliases: [keyof PathOptions, keyof PathPaint][] =\n this.type === 'line'\n ? [\n ['color', 'strokeColor'],\n ['opacity', 'strokeOpacity'],\n ['weight', 'weight'],\n ]\n : paintAliases;\n\n const readyPaint: PathOptions & CircleMarkerOptions = {};\n\n if ('radius' in paint && typeof paint.radius === 'number') {\n readyPaint.radius = paint.radius;\n }\n for (const [to, from] of aliases) {\n let paintProp = (paint as PathPaint)[from];\n if (\n defined(this.options.opacity) &&\n from.toLowerCase().indexOf('opacity') !== -1\n ) {\n paintProp = Number(paintProp) * this.options.opacity;\n }\n\n if (paintProp !== undefined) {\n Object.defineProperty(readyPaint, to, {\n enumerable: true,\n value: paintProp,\n });\n }\n }\n\n return readyPaint;\n }\n return PAINT;\n }\n\n private _getGeoJsonOptions(\n options: GeoJsonAdapterOptions,\n type: VectorAdapterLayerType,\n ): GeoJSONOptions {\n const paint = options.paint;\n let lopt: GeoJSONOptions = {};\n\n if (typeof paint === 'function') {\n if (type === 'point') {\n // TODO: fix types (@geoman-io/leaflet-geoman-free)\n (lopt as any).pointToLayer = (\n feature: Feature<Point, any>,\n latLng: LatLng,\n ) => {\n const iconOpt = paint(feature);\n const pointToLayer = this._createPaintToLayer(iconOpt as IconPaint);\n return pointToLayer(feature, latLng);\n };\n } else {\n lopt = {\n style: (feature) => {\n if (feature) {\n return this._preparePaint({ ...PAINT, ...paint(feature) });\n } else {\n return this._preparePaint({ ...PAINT, type: 'path' });\n }\n },\n };\n }\n } else {\n lopt = this._createPaintOptions(paint as VectorAdapterLayerPaint, type);\n }\n\n lopt.onEachFeature = (feature: Feature, layer) => {\n this._onEachFeature(feature, layer);\n };\n\n return lopt;\n }\n\n private _onEachFeature(feature: Feature, layer: Layer) {\n const layer_ = this.layer;\n if (layer_) {\n const def = {\n target: this,\n feature,\n layer,\n ...createFeaturePositionOptions(feature),\n };\n\n // @ts-ignore\n layer.options.pane = this.pane;\n this._layers.push(def);\n let ok = true;\n if (this._filterFun) {\n ok = this._filterFun(def);\n }\n if (ok) {\n const { popup, popupOptions, selectable, interactive, selectOnHover } =\n this.options;\n // @ts-ignore\n layer.options.interactive = defined(interactive) ? interactive : true;\n layer_.addLayer(layer);\n if (selectable) {\n if (selectOnHover) {\n layer.on('mouseover', () => {\n this._selectLayer(def, 'hover');\n });\n layer.on('mouseout', () => {\n this._unSelectLayer(def);\n });\n } else {\n layer.on(\n 'click',\n (e) => this._selectOnLayerClick(e as LeafletMouseEvent),\n this,\n );\n }\n }\n this._handleMouseEvents(layer);\n // The timeout is needed to display the popup immediately when adding a layer to the map.\n // Without a timeout, the layer may not yet have a _map object\n setTimeout(() => {\n if (popup) {\n this._openPopup(\n {\n target: this,\n layer,\n feature,\n ...createFeaturePositionOptions(feature),\n },\n popupOptions,\n 'api',\n );\n }\n this._updateTooltip({ layer, feature });\n });\n }\n }\n }\n\n private _handleMouseEvents(layer: Layer) {\n const { onClick, onLayerClick, onMouseOut, onMouseOver } = this.options;\n // TODO: remove backward compatibility for onLayerClick\n const onClick_ = onClick || onLayerClick;\n if (onClick_) {\n layer.on(\n 'click',\n (e) => {\n const selected = !!this._getSelected(layer);\n onClick_({\n selected,\n ...this._createMouseEvent(e),\n });\n },\n this,\n );\n }\n if (onMouseOut) {\n layer.on(\n 'mouseout',\n (e) => {\n onMouseOut(this._createMouseEvent(e));\n },\n this,\n );\n }\n if (onMouseOver) {\n layer.on(\n 'mouseover',\n (e) => {\n onMouseOver(this._createMouseEvent(e));\n },\n this,\n );\n }\n }\n\n private _createMouseEvent(source: LeafletEvent): OnLayerMouseOptions {\n return createMouseEvent({\n layer: this,\n source: source as LeafletMouseEvent,\n });\n }\n\n private _getSelected(layer: LayerDef['layer']) {\n return this._selectedLayers.find((x) => x.layer === layer);\n }\n\n private _selectOnLayerClick(e: LeafletMouseEvent) {\n DomEvent.stopPropagation(e);\n const layer = e.target as Layer;\n const feature = (layer as any).feature;\n const def: LayerDef = {\n target: this,\n layer,\n feature,\n ...createFeaturePositionOptions(feature),\n };\n const isSelected = this._getSelected(layer);\n if (isSelected) {\n if (this.options && this.options.unselectOnSecondClick) {\n this._unSelectLayer(isSelected);\n }\n } else {\n this._selectLayer(def, 'click', e.latlng);\n }\n }\n\n private _selectLayer(\n def: LayerDef,\n type: OnLayerSelectType,\n latlng?: LatLngExpression,\n ) {\n this.map._addUnselectCb(() => {\n this._unSelectLayer(def);\n });\n if (this.options && !this.options.multiselect) {\n this._selectedLayers.forEach((x) => this._unSelectLayer(x));\n }\n this._selectedLayers.push(def);\n this.selected = true;\n const { selectedPaint, popupOnSelect, popupOptions } = this.options;\n\n if (selectedPaint && def.layer) {\n this._setPaint(def, selectedPaint);\n }\n if (popupOnSelect) {\n this._openPopup(def, popupOptions, type, latlng);\n }\n if (this.options.onSelect) {\n const features = def.feature ? [def.feature] : [];\n this.options.onSelect({\n type,\n layer: this,\n features,\n ...createFeaturePositionOptions(features),\n });\n }\n }\n\n private _unSelectLayer(def: LayerDef) {\n const index = this._selectedLayers.indexOf(def);\n if (index !== -1) {\n this._selectedLayers.splice(index, 1);\n if (this.options) {\n if (this.options.paint) {\n this._setPaint(def, this.options.paint);\n }\n\n if (this.options.popupOnSelect && def.layer) {\n this._removePopup(def.layer);\n }\n }\n }\n this.selected = this._selectedLayers.length > 0;\n }\n\n private _createDivIcon(icon: IconPaint) {\n const { ...toLIconOpt } = icon;\n return new DivIcon({ className: '', ...toLIconOpt });\n }\n\n private _createPaintToLayer(icon: IconPaint) {\n if (icon && icon.type) {\n if (icon.type === 'icon') {\n const iconClassName = icon.className;\n const html = icon.html;\n if (iconClassName || html) {\n return (geoJsonPoint: any, latlng: LatLngExpression) => {\n const divIcon = this._createDivIcon(icon);\n return new Marker(latlng, { icon: divIcon });\n };\n }\n } else if (icon.type === 'pin') {\n return (geoJsonPoint: any, latlng: LatLngExpression) => {\n // const divIcon = this.createDivIcon(icon);\n return new Marker(latlng);\n };\n }\n }\n return (geoJsonPoint: any, latlng: LatLngExpression) => {\n const p: any = PAINT;\n return new CircleMarker(latlng, this._preparePaint({ ...p, ...icon }));\n };\n }\n\n private _createPaintOptions(\n paintOptions: VectorAdapterLayerPaint,\n type: VectorAdapterLayerType,\n ): GeoJSONOptions {\n const geoJsonOptions: GeoJSONOptions = {};\n const paint = (paintOptions && this._preparePaint(paintOptions)) || {};\n if (paintOptions) {\n geoJsonOptions.style = () => {\n return paint;\n };\n }\n if (type === 'point') {\n (geoJsonOptions as any).pointToLayer = this._createPaintToLayer(\n paintOptions as IconPaint,\n );\n } else if (type === 'line') {\n paint.stroke = true;\n }\n return geoJsonOptions;\n }\n\n private _addMapListener() {\n const map = this.map;\n if (map) {\n const { labelField, labelOnHover, unselectOnClick } = this.options;\n const uoc = unselectOnClick ?? true;\n if (uoc) {\n map.on('click', this.$unselect);\n }\n if (labelField && !labelOnHover) {\n map.on('zoomend', this.$updateTooltip);\n map.on('moveend', this.$updateTooltip);\n }\n }\n }\n\n private _removeMapListener() {\n this.map.off('zoomend', this.$updateTooltip);\n this.map.off('moveend', this.$updateTooltip);\n this.map.off('click', this.$unselect);\n }\n}\n","export function callAjax(\n src: string,\n callback: (resp: any) => any,\n headers: Record<string, any>,\n): () => void {\n const xhr = new XMLHttpRequest();\n xhr.open('GET', src);\n xhr.responseType = 'arraybuffer';\n for (const h in headers) {\n xhr.setRequestHeader(h, headers[h]);\n }\n xhr.onload = function () {\n const arrayBufferView = new Uint8Array(this.response);\n const blob = new Blob([arrayBufferView], { type: 'image/png' });\n // @ts-ignore for typedoc\n const urlCreator = window.URL || window.webkitURL;\n const imageUrl = urlCreator.createObjectURL(blob);\n callback(imageUrl);\n };\n xhr.send();\n return () => {\n xhr.abort();\n };\n}\n","import {\n ImageOverlay as LImageOverlay,\n LatLngBoundsExpression,\n ImageOverlayOptions,\n} from 'leaflet';\nimport { callAjax } from '../../utils/callAjax';\n\ntype IOptions = ImageOverlayOptions & { headers?: any };\n\nexport class ImageOverlay extends LImageOverlay {\n private _abort: (() => void)[] = [];\n\n constructor(\n imageUrl: string,\n bounds: LatLngBoundsExpression,\n options?: IOptions,\n ) {\n super(imageUrl, bounds, options);\n }\n\n cancelLoad(): void {\n if (this._abort) {\n this._abort.forEach((x) => x());\n this._abort = [];\n }\n }\n\n _initImage(): void {\n // @ts-ignore\n super._initImage();\n // @ts-ignore\n const headers = this.options.headers;\n if (headers) {\n // @ts-ignore\n const img: HTMLImageElement = this._image;\n const src = img.src;\n img.src = '';\n this._abort.push(\n callAjax(\n src,\n (response) => {\n img.src = response;\n },\n headers,\n ),\n );\n }\n }\n}\n","/*!\n * leaflet.wms.js\n * A collection of Leaflet utilities for working with Web Mapping services.\n * (c) 2014-2016, Houston Engineering, Inc.\n * MIT License\n */\n\nimport { Layer, Util, CRS } from 'leaflet';\nimport { debounce } from '@nextgis/utils';\nimport { ImageOverlay } from './ImageOverlay';\n\ninterface OverlayOptions {\n crs?: null;\n uppercase?: boolean;\n attribution?: string;\n opacity?: number;\n isBack?: boolean;\n minZoom?: number;\n maxZoom?: number;\n zIndex?: number;\n pane?: string;\n headers?: any;\n viewPortBuffer?: number;\n setViewDelay?: number;\n}\n\n/*\n * Overlay:\n * \"Single Tile\" WMS image overlay that updates with map changes.\n * Portions of wms.Overlay are directly extracted from L.TileLayer.WMS.\n * See Leaflet license.\n */\nexport class ImageLayer extends Layer {\n defaultWmsParams = {\n service: 'WMS',\n request: 'GetMap',\n version: '1.1.1',\n layers: '',\n styles: '',\n format: 'image/jpeg',\n transparent: false,\n };\n\n options: OverlayOptions = {\n crs: null,\n uppercase: false,\n attribution: '',\n opacity: 1,\n isBack: false,\n minZoom: 0,\n maxZoom: 18,\n pane: 'tilePane',\n headers: null,\n viewPortBuffer: 0,\n setViewDelay: 100,\n };\n\n private wmsParams: any;\n private _url?: string;\n private _currentUrl?: string;\n private _currentOverlay?: ImageOverlay;\n\n constructor(url: string, options: OverlayOptions) {\n super(options);\n this._url = url;\n\n // Move WMS parameters to params object\n const params: any = {};\n const opts: any = {};\n let opt: keyof OverlayOptions;\n for (opt in options) {\n if (opt in this.options) {\n opts[opt] = options[opt];\n } else {\n params[opt] = options[opt];\n }\n }\n Util.setOptions(this, opts);\n this.wmsParams = Util.extend({}, this.defaultWmsParams, params);\n }\n\n setParams(params: Record<string, any>): void {\n Util.extend(this.wmsParams, params);\n this.update();\n }\n\n getAttribution(): string {\n return this.options.attribution || '';\n }\n\n onAdd(): this {\n this.update();\n return this;\n }\n\n onRemove(map: L.Map): this {\n if (this._currentOverlay) {\n this._currentOverlay.cancelLoad();\n map.removeLayer(this._currentOverlay);\n delete this._currentOverlay;\n }\n if (this._currentUrl) {\n delete this._currentUrl;\n }\n return this;\n }\n\n getEvents(): {\n moveend: () => void;\n } {\n return {\n moveend: debounce(this.update, this.options.setViewDelay),\n };\n }\n\n update(): void {\n if (!this._map) {\n return;\n }\n // Determine image URL and whether it has changed since last update\n this.updateWmsParams();\n const url = this.getImageUrl();\n if (this._currentUrl === url) {\n return;\n }\n this._currentUrl = url;\n\n // Keep current image overlay in place until new one loads\n // (inspired by esri.leaflet)\n const viewPortBuffer = this.options.viewPortBuffer || 0;\n const bounds = this._map.getBounds().pad(viewPortBuffer);\n\n const overlay = new ImageOverlay(url, bounds, {\n opacity: 0,\n pane: this.options.pane,\n headers: this.options.headers,\n });\n overlay.addTo(this._map);\n if (this._currentOverlay) {\n this._currentOverlay.cancelLoad();\n }\n overlay.once(\n 'load',\n () => {\n if (!this._map) {\n return;\n }\n // @ts-ignore\n if (overlay._url !== this._currentUrl) {\n this._map.removeLayer(overlay);\n return;\n } else if (this._currentOverlay) {\n this._map.removeLayer(this._currentOverlay);\n }\n this._currentOverlay = overlay;\n overlay.setOpacity(\n this.options.opacity !== undefined ? this.options.opacity : 1,\n );\n if (this.options.isBack === true) {\n overlay.bringToBack();\n }\n if (this.options.isBack === false) {\n overlay.bringToFront();\n }\n if (this.options.zIndex !== undefined) {\n overlay.setZIndex(this.options.zIndex);\n }\n },\n this,\n );\n const { minZoom, maxZoom } = this.options;\n if (\n (minZoom && this._map.getZoom() < minZoom) ||\n (maxZoom && this._map.getZoom() > maxZoom)\n ) {\n this._map.removeLayer(overlay);\n }\n }\n\n setOpacity(opacity: number): void {\n this.options.opacity = opacity;\n if (this._currentOverlay) {\n this._currentOverlay.setOpacity(opacity);\n }\n }\n\n bringToBack(): void {\n this.options.isBack = true;\n if (this._currentOverlay) {\n this._currentOverlay.bringToBack();\n }\n }\n\n bringToFront(): void {\n this.options.isBack = false;\n if (this._currentOverlay) {\n this._currentOverlay.bringToFront();\n }\n }\n\n setZIndex(zIndex: number): void {\n this.options.zIndex = zIndex;\n if (this._currentOverlay) {\n this._currentOverlay.setZIndex(zIndex);\n }\n }\n\n // See L.TileLayer.WMS: onAdd() & getTileUrl()\n updateWmsParams(map?: L.Map): void {\n if (!map) {\n map = this._map;\n }\n // Compute WMS options\n const viewPortBuffer = this.options.viewPortBuffer || 0;\n const bounds = map.getBounds().pad(viewPortBuffer);\n const size = map.getSize();\n if (this.options.viewPortBuffer !== 0) {\n const factor = viewPortBuffer + 1;\n size.x = Math.ceil(size.x * factor);\n size.y = Math.ceil(size.y * factor);\n }\n const wmsVersion = parseFloat(this.wmsParams.version);\n const crs = this.options.crs || map.options.crs;\n const projectionKey = wmsVersion >= 1.3 ? 'crs' : 'srs';\n if (crs) {\n const nw = crs.project(bounds.getNorthWest());\n const se = crs.project(bounds.getSouthEast());\n\n // Assemble WMS parameter string\n const params: any = {\n width: size.x,\n height: size.y,\n };\n params[projectionKey] = crs.code;\n params.bbox = (\n wmsVersion >= 1.3 && crs === CRS.EPSG4326\n ? [se.y, nw.x, nw.y, se.x]\n : [nw.x, se.y, se.x, nw.y]\n ).join(',');\n\n Util.extend(this.wmsParams, params);\n }\n }\n\n getImageUrl(): string {\n const uppercase = this.options.uppercase || false;\n const pstr = Util.getParamString(this.wmsParams, this._url, uppercase);\n return this._url + pstr;\n }\n}\n","import { MainLayerAdapter } from '@nextgis/webmap';\nimport { ImageLayer } from './ImageLayer';\nimport { BaseAdapter } from '../BaseAdapter';\n\nimport type { Map } from 'leaflet';\nimport type { ImageAdapterOptions } from '@nextgis/webmap';\n\nexport class ImageAdapter\n extends BaseAdapter<ImageAdapterOptions>\n implements MainLayerAdapter<Map>\n{\n layer: any;\n\n addLayer(options: ImageAdapterOptions): any {\n const url = options && options.url;\n if (url) {\n options = { transparent: true, ...options };\n const updateWmsParamsFromOpt = options.updateWmsParams;\n this.layer = new ImageLayer(url, {\n pane: this.pane,\n headers: options.headers,\n setViewDelay: options.setViewDelay,\n /**\n * TODO: safe remove, use only options.nativeOptions\n */\n ...options,\n ...options.params,\n ...options.nativeOptions,\n });\n if (updateWmsParamsFromOpt) {\n const updateWmsParams = this.layer.updateWmsParams;\n this.layer.updateWmsParams = function (map: Map) {\n updateWmsParams.call(this, map);\n this.wmsParams = updateWmsParamsFromOpt(this.wmsParams);\n };\n }\n return this.layer;\n }\n }\n}\n","// based on https://github.com/bvaughn/debounce-decorator\n\nexport function debounce<T extends (...args: any[]) => void>(\n cb: T,\n wait = 10,\n): T & { clear: () => void } {\n let timeoutId: any;\n\n function wrapper(this: any, ...args: any[]) {\n wrapper.clear();\n\n timeoutId = setTimeout(() => {\n timeoutId = null;\n cb.apply(this, args);\n }, wait);\n }\n\n wrapper.clear = function () {\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n };\n\n return wrapper as T & { clear: () => void };\n}\n\nexport function DebounceDecorator(wait = 10) {\n return function (\n target: unknown,\n key: string,\n descriptor: PropertyDescriptor,\n ): PropertyDescriptor {\n return {\n configurable: true,\n enumerable: descriptor.enumerable,\n get: function getter() {\n // Attach this function to the instance (not the class)\n Object.defineProperty(this, key, {\n configurable: true,\n enumerable: descriptor.enumerable,\n value: debounce(descriptor.value, wait),\n });\n // @ts-ignore\n return this[key];\n },\n };\n };\n}\n","import { DomUtil, GridLayer, Util } from 'leaflet';\nimport { debounce } from '../../../utils/src';\nimport { callAjax } from './callAjax';\n\n// import type { TileLayerOptionsExtended } from './TileAdapter/TileLayer';\n\ntype Constructor = new (...args: any[]) => any;\n\nexport function makeRemote<\n TBase extends Constructor,\n // O extends TileLayerOptionsExtended = TileLayerOptionsExtended\n>(Base: TBase): TBase {\n return class RemoteTileLayer extends Base {\n constructor(...args: any[]) {\n super(...args);\n if (this.options.setViewDelay) {\n // @ts-ignore\n this._update = debounce((...a: any[]) => {\n // @ts-ignore\n GridLayer.prototype._update.call(this, ...a);\n }, this.options.setViewDelay);\n }\n }\n\n createTile(\n coords: Record<string, unknown>,\n done: (error: any, tile: HTMLImageElement) => void,\n ): HTMLImageElement {\n // @ts-ignore\n const url = this.getTileUrl(coords);\n\n const tile = document.createElement('img');\n (tile as any).abort = callAjax(\n url,\n (response) => {\n tile.src = response;\n done(null, tile);\n },\n // @ts-ignore\n this.options.headers,\n );\n\n if (this.options.crossOrigin || this.options.crossOrigin === '') {\n tile.crossOrigin =\n this.options.crossOrigin === true ? '' : this.options.crossOrigin;\n }\n\n tile.alt = '';\n tile.setAttribute('role', 'presentation');\n\n return tile;\n }\n\n _abortLoading() {\n // @ts-ignore\n const tiles = this._tiles;\n // @ts-ignore\n const tileZoom = this._tileZoom;\n for (const i in tiles) {\n if (tiles[i].coords.z !== tileZoom) {\n const tile = tiles[i].el;\n\n tile.onload = Util.falseFn;\n tile.onerror = Util.falseFn;\n if (!tile.complete) {\n if (tile.abort) {\n tile.abort();\n }\n tile.src = Util.emptyImageUrl;\n DomUtil.remove(tile);\n delete tiles[i];\n }\n }\n }\n }\n };\n}\n","import { TileLayer as TL } from 'leaflet';\nimport { makeRemote } from '../../utils/makeRemoteTileLayer';\n\nimport type { TileLayerOptions } from 'leaflet';\n\nexport type TileLayerOptionsExtended = TileLayerOptions & {\n headers: Record<string, any>;\n setViewDelay?: number;\n};\n\nclass TileLayerBase extends TL {\n constructor(urlTemplate: string, options?: TileLayerOptionsExtended) {\n super(urlTemplate, options);\n Object.assign(this.options, options);\n }\n}\n\nexport const TileLayer = makeRemote(TileLayerBase);\n","import { TileLayer } from 'leaflet';\nimport { TileLayer as TL } from './TileLayer';\nimport { BaseAdapter } from '../BaseAdapter';\n\nimport type { MainLayerAdapter, TileAdapterOptions } from '@nextgis/webmap';\nimport type { TileLayerOptions } from 'leaflet';\n\nexport class TileAdapter\n extends BaseAdapter<TileAdapterOptions, TileLayer>\n implements MainLayerAdapter\n{\n addLayer(options: TileAdapterOptions): TileLayer | undefined {\n this.options = Object.assign(this.options, options);\n if (options) {\n const { url, ...opt } = options;\n if (url) {\n const tileLayerOptions: TileLayerOptions = {\n pane: this.pane,\n attribution: opt.attribution,\n minZoom: opt.minZoom,\n maxZoom: opt.maxZoom,\n\n ...opt.nativeOptions,\n };\n if (opt.subdomains) {\n tileLayerOptions.subdomains = opt.subdomains;\n }\n let layer;\n if (opt.headers) {\n layer = new TL(url, {\n ...tileLayerOptions,\n headers: opt.headers,\n setViewDelay: opt.setViewDelay,\n });\n } else {\n layer = new TileLayer(url, tileLayerOptions);\n }\n return layer;\n }\n }\n }\n}\n","import { TileLayer } from 'leaflet';\nimport { makeRemote } from '../../utils/makeRemoteTileLayer';\nimport type { WMSOptions } from 'leaflet';\n\ntype LayerOptions = WMSOptions & { headers: any };\n\nclass WmsLayerBase extends TileLayer.WMS {\n constructor(urlTemplate: string, options: LayerOptions) {\n super(urlTemplate, options);\n }\n}\n\nexport const WmsLayer = makeRemote(WmsLayerBase);\n\n// applyMixins(WmsLayer, [RemoteTileLayer]);\n","import { TileLayer } from 'leaflet';\nimport { WmsLayer as WMS } from './WmsLayer';\nimport { BaseAdapter } from '../BaseAdapter';\n\nimport type { MainLayerAdapter, WmsAdapterOptions } from '@nextgis/webmap';\nimport type { WMSOptions } from 'leaflet';\n\nexport class WmsAdapter\n extends BaseAdapter<WmsAdapterOptions, TileLayer.WMS>\n implements MainLayerAdapter\n{\n addLayer(options: WmsAdapterOptions): TileLayer.WMS | undefined {\n Object.assign(this.options, options);\n const { url, ...opt } = options;\n if (url) {\n const layerOptions: WMSOptions = {\n pane: this.pane,\n attribution: opt.attribution,\n minZoom: opt.minZoom,\n maxZoom: opt.maxZoom,\n layers: options.layers,\n format: options.format,\n ...options.nativeOptions,\n };\n let layer;\n if (opt.headers) {\n layer = new WMS(url, { ...layerOptions, headers: opt.headers });\n } else {\n layer = new TileLayer.WMS(url, layerOptions);\n }\n return layer;\n }\n }\n}\n","import { MainLayerAdapter, TileAdapterOptions } from '@nextgis/webmap';\nimport { TileLayer } from 'leaflet';\n\nimport { TileAdapter } from './TileAdapter/TileAdapter';\n\nexport class OsmAdapter extends TileAdapter implements MainLayerAdapter {\n addLayer(options: Omit<TileAdapterOptions, 'url'>): TileLayer | undefined {\n const url = 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';\n return super.addLayer({\n name: 'OpenStreetMap',\n attribution:\n '&copy; <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> contributors',\n ...options,\n url,\n });\n }\n}\n","import type { LatLngBoundsExpression } from 'leaflet';\nimport type { LngLatBoundsArray } from '@nextgis/utils';\n\nexport function arrayToBoundsExpression(\n bounds: LngLatBoundsArray,\n): LatLngBoundsExpression {\n const e = bounds;\n // top, left, bottom, right\n return [\n [e[3], e[0]],\n [e[1], e[2]],\n ];\n}\n","import { EventEmitter } from 'events';\nimport {\n Map,\n Control,\n FitBoundsOptions,\n LatLngBoundsExpression,\n} from 'leaflet';\nimport { convertMapClickEvent } from './utils/convertMapClickEvent';\nimport { createButtonControl } from './controls/createButtonControl';\nimport { AttributionControl } from './controls/Attribution';\nimport { createControl } from './controls/createControl';\nimport { GeoJsonAdapter } from './layer-adapters/GeoJsonAdapter';\nimport { ImageAdapter } from './layer-adapters/ImageAdapter/ImageAdapter';\nimport { TileAdapter } from './layer-adapters/TileAdapter/TileAdapter';\nimport { WmsAdapter } from './layer-adapters/WmsAdapter/WmsAdapter';\nimport { OsmAdapter } from './layer-adapters/OsmAdapter';\n\nimport type {\n Layer,\n GridLayer,\n ControlPosition,\n LeafletMouseEvent,\n} from 'leaflet';\nimport type { LngLatBoundsArray, LngLatArray } from '@nextgis/utils';\nimport type {\n CreateControlOptions,\n ButtonControlOptions,\n LocationEvents,\n LocateOptions,\n MainMapEvents,\n LayerAdapter,\n ViewOptions,\n MapAdapter,\n MapOptions,\n FitOptions,\n MapControl,\n Locate,\n} from '@nextgis/webmap';\nimport { arrayToBoundsExpression } from './utils/arrayToBoundsExpression';\n\nexport type Type<T> = new (...args: any[]) => T;\nexport type UnselectCb = () => void;\nexport type UnselectDef = UnselectCb;\nexport class LeafletMapAdapter implements MapAdapter<Map, any, Control> {\n static layerAdapters: {\n [name: string]: Type<LayerAdapter<Map, any, any>>;\n } = {\n GEOJSON: GeoJsonAdapter,\n IMAGE: ImageAdapter,\n TILE: TileAdapter,\n WMS: WmsAdapter,\n // // MVT: MvtAdapter,\n OSM: OsmAdapter,\n };\n\n static controlAdapters = {\n ZOOM: Control.Zoom,\n ATTRIBUTION: AttributionControl,\n };\n\n static Map = Map;\n\n options: MapOptions = { target: 'map' };\n\n layerAdapters = LeafletMapAdapter.layerAdapters;\n controlAdapters = LeafletMapAdapter.controlAdapters;\n emitter = new EventEmitter();\n map?: Map;\n\n private _resizeObserver?: ResizeObserver;\n private _unselectCb: UnselectDef[] = [];\n private _universalEvents: (keyof MainMapEvents)[] = [\n 'move',\n 'zoom',\n 'moveend',\n 'zoomend',\n 'zoomstart',\n 'movestart',\n ];\n\n create(options: MapOptions): void {\n this.options = { ...options };\n if (this.options.target) {\n const {\n zoom,\n center,\n maxZoom,\n minZoom,\n maxBounds: mb,\n mapAdapterOptions,\n } = this.options;\n this.map = new Map(this.options.target, {\n attributionControl: false,\n zoomControl: false,\n maxBounds: mb ? arrayToBoundsExpression(mb) : undefined,\n maxZoom,\n minZoom,\n center: center && [center[1], center[0]],\n zoom,\n ...mapAdapterOptions,\n });\n // create default pane\n const defPane = this.map.createPane('order-0');\n this.map._addUnselectCb = (def) => {\n this._addUnselectCb(def);\n };\n defPane.style.zIndex = String(0);\n this.emitter.emit('create', this);\n this._addMapListeners();\n }\n }\n\n destroy(): void {\n if (this.map) {\n this.map.remove();\n }\n this._stopWatchSizeChangeToUpdateMinZoom();\n }\n\n getContainer(): HTMLElement | undefined {\n return this.map && this.map.getContainer();\n }\n\n getControlContainer(): HTMLElement {\n const controlContainer = this.map && (this.map as any)._controlContainer;\n if (controlContainer) {\n return controlContainer;\n }\n throw new Error('Leaflet Map is not initialized yet');\n }\n\n setCursor(cursor: string): void {\n if (this.map) {\n this.map.getContainer().style.cursor = cursor;\n }\n }\n\n setView(lngLat: LngLatArray, zoom?: number): void;\n setView(options: ViewOptions): void;\n setView(lngLatOrOpt: LngLatArray | ViewOptions, zoom?: number): void {\n const map = this.map;\n if (!map) return;\n if (Array.isArray(lngLatOrOpt)) {\n const lngLat = lngLatOrOpt;\n const [lng, lat] = lngLat;\n if (this.map) {\n if (typeof zoom === 'number') {\n this.map.setView([lat, lng], zoom, { animate: false });\n } else {\n this.setCenter([lng, lat]);\n }\n }\n } else {\n const { zoom, center, maxBounds, bounds, minZoom, maxZoom } = lngLatOrOpt;\n if (center && zoom !== undefined) {\n this.setView(center, zoom);\n } else {\n if (zoom !== undefined) {\n this.setZoom(zoom);\n }\n if (center) {\n this.setCenter(center);\n }\n }\n if (bounds) {\n this.fitBounds(bounds);\n }\n if (maxBounds !== undefined) {\n if (maxBounds) {\n const b = arrayToBoundsExpression(maxBounds);\n map.setMaxBounds(b);\n map.setMinZoom(map.getBoundsZoom(b));\n this._watchSizeChangeToUpdateMinZoom(b);\n } else {\n // @ts-ignore `null` works for unset maxBounds, but not in typing\n map.setMaxBounds(null);\n this._stopWatchSizeChangeToUpdateMinZoom();\n }\n }\n if (maxZoom !== undefined) {\n map.setMaxZoom(maxZoom);\n }\n if (minZoom !== undefined) {\n this._stopWatchSizeChangeToUpdateMinZoom();\n map.setMinZoom(minZoom);\n }\n }\n }\n\n setCenter(lngLat: LngLatArray): void {\n const [lng, lat] = lngLat;\n if (this.map) {\n this.map.panTo([lat, lng]);\n }\n }\n\n getCenter(): LngLatArray | undefined {\n const map = this.map;\n if (map) {\n const bounds = map.getBounds();\n const center = bounds.getCenter();\n return [center.lng, center.lat];\n }\n }\n\n setZoom(zoom: number): void {\n if (this.map) {\n this.map.setZoom(zoom);\n }\n }\n\n getZoom(): number | undefined {\n return (this.map && this.map.getZoom()) || undefined;\n }\n\n getBounds(): LngLatBoundsArray | undefined {\n if (!this.map) return undefined;\n const b = this.map.getBounds();\n const sw = b.getSouthWest();\n const ne = b.getNorthEast();\n return [sw.lng, sw.lat, ne.lng, ne.lat];\n }\n\n // [west, south, east, north]\n fitBounds(bounds: LngLatBoundsArray, options: FitOptions = {}): void {\n if (this.map) {\n const { maxZoom, offset, padding } = options;\n const opt: FitBoundsOptions = {};\n if (maxZoom) {\n opt.maxZoom = maxZoom;\n }\n if (padding) {\n opt.padding = [padding, padding];\n }\n if (offset) {\n opt.padding = offset;\n }\n\n this.map.fitBounds(arrayToBoundsExpression(bounds), opt);\n }\n }\n\n getLayerAdapter(name: string): Type<LayerAdapter<L.Map, any, any>> {\n return LeafletMapAdapter.layerAdapters[name];\n }\n\n createControl(control: MapControl, options: CreateControlOptions): L.Control {\n return createControl(control, options, this);\n }\n\n createButtonControl(options: ButtonControlOptions): L.Control {\n return createButtonControl(options, this);\n }\n\n addControl(control: Control, position: string): Control | undefined {\n control.options.position = position.replace('-', '') as ControlPosition;\n if (this.map) {\n this.map.addControl(control);\n return control;\n }\n }\n\n removeControl(control: Control): void {\n if (this.map) {\n this.map.removeControl(control);\n }\n }\n\n removeLayer(layer: Layer): void {\n layer && layer.remove && layer.remove();\n }\n\n showLayer(layer: Layer): void {\n if (this.map) {\n layer.addTo(this.map);\n }\n }\n\n hideLayer(layer: Layer): void {\n layer.remove();\n }\n\n setLayerOpacity(layer: GridLayer | Layer, value: number): void {\n if ('setOpacity' in layer) {\n layer.setOpacity(value);\n }\n }\n\n setLayerOrder(\n layer: Layer,\n order: number,\n layers: { [x: string]: LayerAdapter },\n ): void {\n //\n }\n\n onMapClick(evt: LeafletMouseEvent): void {\n const converted = convertMapClickEvent(evt);\n this.emitter.emit('preclick', converted);\n this.emitter.emit('click', converted);\n }\n\n locate(opt: LocateOptions, events?: LocationEvents): Locate {\n const map = this.map;\n if (map) {\n map.locate(opt);\n if (events) {\n const { locationfound, locationerror } = events;\n const locationFound = (e: L.LeafletEvent) => {\n const event = e as L.LocationEvent;\n const lngLat: [number, number] = [event.latlng.lng, event.latlng.lat];\n locationfound({ lngLat });\n };\n if (locationfound !== undefined) {\n map.on('locationfound', locationFound, this);\n }\n if (locationerror) {\n map.on('locationerror', locationerror, this);\n }\n const stop = () => {\n if (locationfound !== undefined) {\n map.off('locationfound', locationFound);\n }\n if (locationerror) {\n map.off('locationerror', locationerror);\n }\n };\n return { stop };\n }\n }\n const stop = () => void 'fake function';\n return { stop };\n }\n\n private _addUnselectCb(cb: UnselectDef) {\n for (const p of this._unselectCb) {\n p();\n }\n this._unselectCb.length = 0;\n this._unselectCb.push(cb);\n }\n\n private _watchSizeChangeToUpdateMinZoom(bounds: LatLngBoundsExpression) {\n this._stopWatchSizeChangeToUpdateMinZoom();\n const container = this.getContainer();\n const map = this.map;\n if (container && map && window.ResizeObserver) {\n this._resizeObserver = new ResizeObserver(() => {\n map.setMinZoom(map.getBoundsZoom(bounds));\n });\n this._resizeObserver.observe(container);\n }\n }\n\n private _stopWatchSizeChangeToUpdateMinZoom() {\n const map = this.map;\n if (map) {\n map.setMinZoom(0);\n }\n if (this._resizeObserver) {\n this._resizeObserver.disconnect();\n this._resizeObserver = undefined;\n }\n }\n\n private _addMapListeners() {\n const map = this.map;\n if (map) {\n map.on('click', (evt) => {\n this.onMapClick(evt as LeafletMouseEvent);\n });\n this._universalEvents.forEach((e) => {\n map.on(e, () => this.emitter.emit(e, this), map);\n });\n }\n }\n}\n","/**\n * @module leaflet-map-adapter\n */\n\nimport { LeafletMapAdapter } from './LeafletMapAdapter';\n\nexport default LeafletMapAdapter;\n"],"names":["debounce","LImageOverlay","TL","TileLayer","WMS","LeafletMapAdapter"],"mappings":"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"}
1
+ {"version":3,"file":"leaflet-map-adapter.esm-bundler.js","sources":["../src/utils/convertMapClickEvent.ts","../src/controls/createControl.ts","../src/controls/createButtonControl.ts","../src/controls/Attribution.ts","../src/utils/boundsToArray.ts","../src/utils/geometries.ts","../src/utils/createMouseEvent.ts","../src/utils/detectType.ts","../src/layer-adapters/BaseAdapter.ts","../src/layer-adapters/GeoJsonAdapter.ts","../src/utils/callAjax.ts","../src/layer-adapters/ImageAdapter/ImageOverlay.ts","../src/layer-adapters/ImageAdapter/ImageLayer.ts","../src/layer-adapters/ImageAdapter/ImageAdapter.ts","../../utils/src/debounce.ts","../src/utils/makeRemoteTileLayer.ts","../src/layer-adapters/TileAdapter/TileLayer.ts","../src/layer-adapters/TileAdapter/TileAdapter.ts","../src/layer-adapters/WmsAdapter/WmsLayer.ts","../src/layer-adapters/WmsAdapter/WmsAdapter.ts","../src/layer-adapters/OsmAdapter.ts","../src/utils/arrayToBoundsExpression.ts","../src/LeafletMapAdapter.ts","../src/index.ts"],"sourcesContent":["import type { LeafletMouseEvent } from 'leaflet';\n\nimport type { MapClickEvent } from '@nextgis/webmap';\n\nexport function convertMapClickEvent(evt: LeafletMouseEvent): MapClickEvent {\n const coord = evt.containerPoint;\n const latLng = evt.latlng;\n const { lat, lng } = latLng;\n return {\n latLng,\n lngLat: [lng, lat],\n pixel: { left: coord.x, top: coord.y },\n source: evt,\n };\n}\n","import { Control, DomEvent } from 'leaflet';\nimport type {\n MapControl,\n CreateControlOptions,\n MapAdapter,\n} from '@nextgis/webmap';\n\nexport function createControl(\n control: MapControl,\n options: CreateControlOptions = {},\n map: MapAdapter,\n): Control {\n const C = Control.extend({\n onAdd() {\n const element = document.createElement('div');\n const content = control.onAdd(map);\n element.classList.add('leaflet-control');\n if (options.bar) {\n element.classList.add('leaflet-bar');\n }\n if (options.addClass) {\n element.classList.add(options.addClass);\n }\n if (!options.margin && !options.bar) {\n element.style.marginBottom = '0px';\n element.style.marginTop = '0px';\n element.style.marginLeft = '0px';\n element.style.marginRight = '0px';\n }\n if (content) {\n element.appendChild(content);\n }\n\n DomEvent.disableClickPropagation(element);\n\n return element;\n },\n onRemove() {\n control.onRemove();\n },\n });\n return new C();\n}\n","import { ButtonControlOptions, MapAdapter } from '@nextgis/webmap';\nimport { createControl } from './createControl';\nimport { DomEvent, Control } from 'leaflet';\n\nexport function createButtonControl(\n options: ButtonControlOptions,\n map: MapAdapter,\n): Control {\n const link = document.createElement('a');\n\n const title = options.title || '';\n link.href = '#';\n link.title = title;\n\n link.setAttribute('role', 'button');\n link.setAttribute('aria-label', title);\n\n if (options.addClass) {\n link.classList.add(options.addClass);\n }\n\n DomEvent.disableClickPropagation(link);\n DomEvent.on(link, 'click', DomEvent.stop);\n\n if (options.html instanceof HTMLElement) {\n link.appendChild(options.html);\n } else if (typeof options.html === 'string') {\n link.innerHTML = options.html;\n }\n\n const onClick = (e: Event) => {\n e.stopPropagation();\n options.onClick();\n };\n\n return createControl(\n {\n onAdd() {\n if (options.onClick !== undefined) {\n link.addEventListener('click', onClick);\n }\n return link;\n },\n onRemove() {\n const parent = link.parentNode;\n if (parent) {\n parent.removeChild(link);\n }\n if (options.onClick !== undefined) {\n link.removeEventListener('click', onClick);\n }\n },\n },\n { bar: true },\n map,\n );\n}\n","import { Control, ControlOptions } from 'leaflet';\nimport { AttributionControlOptions } from '@nextgis/webmap';\n\nexport class AttributionControl extends Control.Attribution {\n // options: AttributionControlOptions\n constructor(options: AttributionControlOptions & ControlOptions) {\n super(options);\n const customAttribution = options && options.customAttribution;\n if (customAttribution) {\n let attributions: string[] = [];\n if (Array.isArray(customAttribution)) {\n attributions = customAttribution;\n } else if (customAttribution) {\n attributions = [customAttribution];\n }\n attributions.forEach((x) => this.addAttribution(x));\n }\n }\n}\n","import type { LatLngBounds } from 'leaflet';\nimport type { LngLatBoundsArray } from '@nextgis/utils';\n\nexport function boundsToArray(bounds: LatLngBounds): LngLatBoundsArray {\n const ne = bounds.getNorthEast();\n const sw = bounds.getSouthWest();\n return [sw.lng, sw.lat, ne.lng, ne.lat];\n}\n","import { GeoJSON } from 'leaflet';\nimport { boundsToArray } from './boundsToArray';\n\nimport type {\n Feature,\n GeoJsonObject,\n FeatureCollection,\n GeometryCollection,\n GeoJsonGeometryTypes,\n} from 'geojson';\nimport type { LatLngBounds } from 'leaflet';\nimport type { FeaturePosition, VectorAdapterLayerType } from '@nextgis/webmap';\nimport type { LngLatArray, LngLatBoundsArray } from '@nextgis/utils';\n\nexport const typeAlias: {\n [key in GeoJsonGeometryTypes]: VectorAdapterLayerType;\n} = {\n Point: 'point',\n LineString: 'line',\n MultiPoint: 'point',\n Polygon: 'polygon',\n MultiLineString: 'line',\n MultiPolygon: 'polygon',\n GeometryCollection: 'polygon',\n};\n\nexport const PAINT = {\n stroke: false,\n opacity: 1,\n};\n\nexport const backAliases: {\n [key in VectorAdapterLayerType]?: GeoJsonGeometryTypes[];\n} = {};\n\nfor (const a in typeAlias) {\n const layerType = typeAlias[a as GeoJsonGeometryTypes];\n const backAlias = backAliases[layerType] || [];\n backAlias.push(a as GeoJsonGeometryTypes);\n backAliases[layerType] = backAlias;\n}\n\nexport function geometryFilter(\n geometry: GeoJsonGeometryTypes,\n type: VectorAdapterLayerType,\n): boolean {\n const geoJsonGeometry = backAliases[type] || [];\n return geoJsonGeometry.indexOf(geometry) !== -1;\n}\n\nexport function filterGeometries(\n data: GeoJsonObject,\n type: VectorAdapterLayerType,\n): GeoJsonObject | false {\n if (data.type === 'FeatureCollection') {\n const _data = data as FeatureCollection;\n _data.features = _data.features.filter((f) =>\n geometryFilter(f.geometry.type, type),\n );\n } else if (data.type === 'Feature') {\n const allow = geometryFilter((data as Feature).geometry.type, type);\n if (!allow) {\n return false;\n }\n } else if (data.type === 'GeometryCollection') {\n const _data = data as GeometryCollection;\n _data.geometries = _data.geometries.filter((g) =>\n geometryFilter(g.type, type),\n );\n }\n return data;\n}\n\nfunction featuresBounds(features: Feature | Feature[]): LatLngBounds {\n const geoJsonLayer = new GeoJSON();\n const features_ = Array.isArray(features) ? features : [features];\n features_.forEach((f) => geoJsonLayer.addData(f));\n return geoJsonLayer.getBounds();\n}\n\nexport function getFeaturesBounds(\n features: Feature | Feature[],\n): LngLatBoundsArray {\n return boundsToArray(featuresBounds(features));\n}\n\nexport function getFeaturesCenter(features: Feature | Feature[]): LngLatArray {\n const { lat, lng } = featuresBounds(features).getCenter();\n return [lng, lat];\n}\n\nexport function createFeaturePositionOptions(\n features: Feature | Feature[],\n): FeaturePosition {\n return {\n getBounds: () => getFeaturesBounds(features),\n getCenter: () => getFeaturesCenter(features),\n };\n}\n","import { convertMapClickEvent } from './convertMapClickEvent';\nimport { createFeaturePositionOptions } from './geometries';\n\nimport type { LeafletMouseEvent } from 'leaflet';\nimport type { LayerAdapter, OnLayerMouseOptions } from '@nextgis/webmap';\nimport type { LayerDef } from '../layer-adapters/GeoJsonAdapter';\n\nexport interface CreateMouseEventOptions {\n layer: LayerAdapter;\n source: LeafletMouseEvent;\n}\n\nexport function createMouseEvent({\n layer,\n source,\n}: CreateMouseEventOptions): OnLayerMouseOptions {\n const layer_ = source.target as LayerDef;\n const feature = layer_.feature;\n const opt: OnLayerMouseOptions = {\n layer,\n feature,\n event: convertMapClickEvent(source),\n source,\n ...createFeaturePositionOptions(feature),\n };\n return opt;\n}\n","import type {\n GeoJsonObject,\n GeoJsonGeometryTypes,\n FeatureCollection,\n Feature,\n GeometryCollection,\n} from 'geojson';\n\nfunction findMostFrequentGeomType(\n arr: GeoJsonGeometryTypes[],\n): GeoJsonGeometryTypes {\n const counts: { [x: string]: number } = {};\n for (let fry = 0; fry < arr.length; fry++) {\n counts[arr[fry]] = 1 + (counts[arr[fry]] || 0);\n }\n let maxName = '';\n for (const c in counts) {\n const maxCount = maxName ? counts[maxName] : 0;\n if (counts[c] > maxCount) {\n maxName = c;\n }\n }\n return maxName as GeoJsonGeometryTypes;\n}\n\nexport function detectType(geojson: GeoJsonObject): GeoJsonGeometryTypes {\n let geometry: GeoJsonGeometryTypes;\n if (geojson.type === 'FeatureCollection') {\n const featuresTypes = (geojson as FeatureCollection).features.map(\n (f) => f.geometry.type,\n );\n geometry = findMostFrequentGeomType(featuresTypes);\n } else if (geojson.type === 'GeometryCollection') {\n const geometryTypes = (geojson as GeometryCollection).geometries.map(\n (g) => g.type,\n );\n geometry = findMostFrequentGeomType(geometryTypes);\n } else if (geojson.type === 'Feature') {\n geometry = (geojson as Feature).geometry.type;\n } else {\n geometry = geojson.type;\n }\n return geometry;\n}\n","import { MainLayerAdapter, AdapterOptions } from '@nextgis/webmap';\nimport { Map } from 'leaflet';\n\nexport class BaseAdapter<O extends AdapterOptions = AdapterOptions, L = any>\n implements MainLayerAdapter<Map, L, O>\n{\n layer?: L;\n protected pane = 'order-0';\n\n constructor(public map: L.Map, public options: O) {\n if (options.order !== undefined) {\n const pane = 'order-' + options.order;\n let exist = map.getPane(pane);\n if (!exist) {\n exist = map.createPane(pane);\n }\n exist.style.zIndex = String(Math.round(options.order * 100));\n this.pane = pane;\n }\n }\n\n addLayer(options: O): L | Promise<L> | undefined {\n Object.assign(this.options, options);\n return undefined;\n }\n}\n","import {\n CircleMarker,\n FeatureGroup,\n DomEvent,\n GeoJSON,\n DivIcon,\n Marker,\n Layer,\n} from 'leaflet';\nimport { debounce, defined } from '@nextgis/utils';\n\nimport { isPaintCallback, isPaint } from '@nextgis/paint';\nimport {\n PAINT,\n typeAlias,\n filterGeometries,\n createFeaturePositionOptions,\n} from '../utils/geometries';\nimport { createMouseEvent } from '../utils/createMouseEvent';\nimport { boundsToArray } from '../utils/boundsToArray';\nimport { detectType } from '../utils/detectType';\nimport { BaseAdapter } from './BaseAdapter';\n\nimport type { GeoJsonObject, Feature, Point } from 'geojson';\nimport type {\n PopupOptions as LPopupOptions,\n CircleMarkerOptions,\n LeafletMouseEvent,\n LatLngExpression,\n GeoJSONOptions,\n LeafletEvent,\n PathOptions,\n LatLng,\n Path,\n Map,\n} from 'leaflet';\nimport type {\n Paint,\n IconPaint,\n PathPaint,\n VectorAdapterLayerPaint,\n} from '@nextgis/paint';\nimport type { LngLatBoundsArray } from '@nextgis/utils';\nimport type {\n VectorAdapterLayerType,\n GeoJsonAdapterOptions,\n PopupOnCloseFunction,\n OnLayerMouseOptions,\n VectorLayerAdapter,\n OnLayerSelectType,\n LayerDefinition,\n DataLayerFilter,\n PopupOptions,\n} from '@nextgis/webmap';\n\nexport type LayerDef = LayerDefinition<Feature, Layer>;\n\nexport class GeoJsonAdapter\n extends BaseAdapter<GeoJsonAdapterOptions>\n implements VectorLayerAdapter<Map>\n{\n layer?: FeatureGroup;\n selected = false;\n\n private paint?: Paint;\n private selectedPaint?: Paint;\n private type?: VectorAdapterLayerType;\n\n private _layers: LayerDef[] = [];\n private _selectedLayers: LayerDef[] = [];\n private _filteredLayers: LayerDef[] = [];\n private _filterFun?: DataLayerFilter<Feature>;\n private _openedPopup: [Layer, PopupOnCloseFunction[], LayerDef][] = [];\n\n private $updateTooltip = debounce(() => {\n this.updateTooltip();\n }, 300);\n\n constructor(map: L.Map, options: GeoJsonAdapterOptions) {\n super(map, options);\n }\n\n addLayer(options: GeoJsonAdapterOptions): FeatureGroup<any> | undefined {\n Object.assign(this.options, options);\n this.paint = options.paint;\n this.layer = new FeatureGroup([], {\n ...options.nativeOptions,\n pane: this.pane,\n });\n this.selectedPaint = options.selectedPaint;\n options.paint = this.paint;\n\n if (options.data) {\n this.addData(options.data);\n }\n\n this._addMapListener();\n\n return this.layer;\n }\n\n beforeRemove(): void {\n this._removeMapListener();\n }\n\n select(findFeatureFun?: DataLayerFilter): void {\n if (findFeatureFun) {\n const def = this._layers.filter(findFeatureFun);\n def.forEach((x) => {\n this._selectLayer(x, 'api');\n });\n } else if (!this.selected) {\n this.selected = true;\n if (this.selectedPaint) {\n this._setPaintEachLayer(this.selectedPaint);\n }\n }\n }\n\n unselect(findFeatureFun?: DataLayerFilter): void {\n if (findFeatureFun) {\n const feature = this._layers.filter(findFeatureFun);\n feature.forEach((x) => {\n this._unSelectLayer(x);\n });\n } else if (this.selected) {\n for (const p of this._openedPopup) {\n this._removePopup(p[0]);\n }\n if (this.paint) {\n this._setPaintEachLayer(this.paint);\n }\n this._selectedLayers.length = 0;\n this.selected = false;\n }\n }\n\n getSelected(): LayerDefinition<Feature, LayerDef>[] {\n return this._selectedLayers.map((x) => {\n return {\n target: this,\n feature: x.feature,\n layer: x,\n ...createFeaturePositionOptions(x.feature),\n };\n });\n }\n\n getFiltered(): LayerDef[] {\n return this._filteredLayers;\n }\n\n filter(fun?: DataLayerFilter): LayerDef[] {\n // Some optimization\n this._filterFun = fun;\n const layer_ = this.layer;\n const map = layer_ && (layer_ as any)._map;\n if (layer_ && map) {\n layer_.remove();\n\n const filteredLayers: LayerDef[] = [];\n this._layers.forEach(({ feature, layer }) => {\n if (layer) {\n const ok = fun\n ? fun({\n target: this,\n feature,\n layer,\n ...createFeaturePositionOptions(feature),\n })\n : true;\n if (ok) {\n layer_.addLayer(layer);\n filteredLayers.push({\n target: this,\n feature,\n layer,\n ...createFeaturePositionOptions(feature),\n });\n } else {\n layer_.removeLayer(layer);\n }\n }\n });\n this._filteredLayers = filteredLayers;\n\n layer_.addTo(map);\n }\n return this._filteredLayers;\n }\n\n cleanFilter(): void {\n this.filter();\n }\n\n getLayers(): LayerDef[] {\n return this._layers.map(({ layer, feature }) => {\n const visible = layer && !!(layer as any)._map;\n return {\n feature,\n layer,\n visible,\n target: this,\n ...createFeaturePositionOptions(feature),\n };\n });\n }\n\n clearLayer(cb?: (feature: Feature) => boolean): void {\n this.unselect();\n const layer_ = this.layer;\n if (layer_) {\n if (cb) {\n for (let fry = this._layers.length; fry--; ) {\n const def = this._layers[fry];\n if (def) {\n const { feature, layer } = def;\n if (feature && layer) {\n const exist = cb(feature);\n if (exist) {\n layer_.removeLayer(layer);\n this._layers.splice(fry, 1);\n }\n }\n }\n }\n } else {\n layer_.clearLayers();\n this._layers = [];\n }\n }\n }\n\n setData(data: GeoJsonObject): void {\n this.clearLayer();\n this.addData(data);\n }\n\n addData(data: GeoJsonObject | false): void {\n const options = this.options;\n let geoJsonOptions: GeoJSONOptions | undefined;\n if (options) {\n if (data) {\n let type: VectorAdapterLayerType;\n\n if (!options.type) {\n const detectedType = detectType(data);\n type = typeAlias[detectedType];\n } else {\n type = options.type;\n }\n if (this.type && this.type !== type) {\n console.warn('no other data type than layer can be added');\n return;\n }\n this.type = type;\n\n data = filterGeometries(data, type);\n if (data) {\n geoJsonOptions = this._getGeoJsonOptions(options, type);\n }\n }\n new GeoJSON(data || undefined, geoJsonOptions);\n }\n }\n\n openPopup(findFeatureFun: DataLayerFilter, options?: PopupOptions): void {\n if (findFeatureFun) {\n const def = this._layers.filter(findFeatureFun);\n def.forEach((x) => {\n this._openPopup(x, options, 'api');\n });\n }\n }\n\n closePopup(findFeatureFun?: DataLayerFilter): void {\n const popupToClose = findFeatureFun\n ? this._openedPopup.filter((x) => findFeatureFun(x[2]))\n : this._openedPopup;\n\n popupToClose.forEach((x) => {\n this._removePopup(x[0]);\n });\n }\n\n updateTooltip(layerDef?: LayerDefinition): void {\n if (layerDef) {\n this._updateTooltip(layerDef);\n } else {\n this.getLayers().forEach((x) =>\n this._updateTooltip({ feature: x.feature, layer: x.layer }),\n );\n }\n }\n\n /** @deprecated use {@link GeoJsonAdapter.getBounds} instead */\n getExtent(): LngLatBoundsArray | undefined {\n return this.getBounds();\n }\n\n getBounds(): LngLatBoundsArray | undefined {\n if (this.layer) {\n const bounds = this.layer.getBounds();\n if (bounds.isValid()) {\n return boundsToArray(bounds);\n }\n }\n }\n\n setOpacity(value: number): void {\n this.options.opacity = value;\n this.setPaint(this.paint);\n this.setSelectedPaint(this.selectedPaint);\n }\n\n setPaint(paint?: Paint | null): void {\n if (paint) {\n this.paint = paint;\n for (const l of this._layers) {\n this._setPaint(l, paint);\n }\n }\n }\n setSelectedPaint(paint?: Paint | null): void {\n if (paint) {\n this.selectedPaint = paint;\n for (const l of this._selectedLayers) {\n this._setPaint(l, paint);\n }\n }\n }\n updatePaint(paint: Partial<Paint>): void {\n this.paint = { ...this.paint, ...paint } as Paint;\n for (const l of this._layers) {\n this._setPaint(l, this.paint);\n }\n }\n updateSelectedPaint(paint: Partial<Paint>): void {\n this.selectedPaint = { ...this.selectedPaint, ...paint } as Paint;\n for (const l of this._selectedLayers) {\n this._setPaint(l, this.selectedPaint);\n }\n }\n\n private $unselect = () => {\n this.unselect();\n };\n\n private _updateTooltip(layerDef: Pick<LayerDef, 'feature' | 'layer'>) {\n const { feature, layer } = layerDef;\n if (feature && layer && feature.properties && this.options.labelField) {\n layer.unbindTooltip();\n const message = feature.properties[this.options.labelField];\n if (message !== undefined) {\n const permanent = !this.options.labelOnHover;\n\n layer.bindTooltip(String(message), { permanent, sticky: false });\n }\n }\n }\n\n private async _openPopup(\n def: LayerDef,\n options: PopupOptions = {},\n type: OnLayerSelectType,\n latLng?: LatLngExpression,\n ) {\n const { feature, layer } = def;\n const {\n minWidth,\n autoPan,\n maxWidth,\n closeButton: closeButton_,\n } = {\n minWidth: 300,\n ...options,\n };\n const closeButton = closeButton_ ?? !this.options.selectOnHover;\n let popup: Layer;\n const _closeHandlers: PopupOnCloseFunction[] = [];\n const onClose = (handler: PopupOnCloseFunction) => {\n _closeHandlers.push(handler);\n };\n const close = () => {\n if (popup) {\n this._removePopup(popup);\n }\n };\n let content;\n if (options.createPopupContent) {\n content = await options.createPopupContent({\n layer,\n feature,\n target: this,\n type,\n close,\n onClose,\n ...createFeaturePositionOptions(feature),\n });\n } else {\n content = options.popupContent;\n }\n\n if (content && layer) {\n const popupOptions: LPopupOptions = {\n minWidth,\n autoPan,\n // maxWidth,\n closeButton,\n closeOnClick: false,\n autoClose: false,\n };\n if (defined(maxWidth)) {\n popupOptions.maxWidth = maxWidth;\n }\n popup = layer.bindPopup(content, popupOptions);\n\n const unselectOnClose =\n this.options.popupOptions?.unselectOnClose ?? true;\n if (unselectOnClose) {\n const p = layer.getPopup();\n p &&\n p.once(\n 'remove',\n () => {\n close();\n },\n this,\n );\n }\n this._openedPopup.push([popup, _closeHandlers, def]);\n popup.openPopup(latLng);\n }\n }\n\n private _removePopup(popup: Layer) {\n const map = this.map;\n if (map) {\n popup.closePopup().unbindPopup();\n const index = this._openedPopup.findIndex((x) => x[0] === popup);\n if (index !== -1) {\n const unselectOnClose =\n this.options.popupOptions?.unselectOnClose ?? true;\n const [, closeHandlers, def] = this._openedPopup[index];\n for (const h of closeHandlers) {\n h(def);\n }\n closeHandlers.length = 0;\n if (unselectOnClose) {\n this._unSelectLayer(def);\n }\n this._openedPopup.splice(index, 1);\n }\n }\n }\n\n private _setPaintEachLayer(paint: Paint) {\n this._layers.forEach((l) => {\n this._setPaint(l, paint);\n });\n }\n\n private _setPaint(def: LayerDef, paint: Paint) {\n let style: VectorAdapterLayerPaint | undefined = undefined;\n const { layer, feature } = def;\n if (layer && feature) {\n if (isPaintCallback(paint)) {\n style = paint(feature);\n } else if (isPaint(paint)) {\n style = paint;\n }\n if (style) {\n if (this.type === 'point' && style.type === 'icon') {\n const marker = layer as Marker;\n const divIcon = this._createDivIcon(style);\n marker.setIcon(divIcon);\n } else if ('setStyle' in layer) {\n (layer as Path).setStyle(this._preparePaint(style));\n }\n }\n }\n }\n\n private _preparePaint(paint: VectorAdapterLayerPaint): PathOptions {\n if (paint.type !== 'get-paint') {\n // const path: CircleMarkerOptions | PathOptions = paint as CircleMarkerOptions | PathOptions;\n // if (path.opacity) {\n // path.fillOpacity = path.opacity;\n // }\n\n const paintAliases: [keyof PathOptions, keyof PathPaint][] = [\n // ['color', 'color'],\n ['color', 'strokeColor'],\n ['opacity', 'strokeOpacity'],\n ['stroke', 'stroke'],\n ['fillColor', 'fillColor'],\n ['fillOpacity', 'fillOpacity'],\n ['fill', 'fill'],\n ['weight', 'weight'],\n ];\n const aliases: [keyof PathOptions, keyof PathPaint][] =\n this.type === 'line'\n ? [\n ['color', 'strokeColor'],\n ['opacity', 'strokeOpacity'],\n ['weight', 'weight'],\n ]\n : paintAliases;\n\n const readyPaint: PathOptions & CircleMarkerOptions = {};\n\n if ('radius' in paint && typeof paint.radius === 'number') {\n readyPaint.radius = paint.radius;\n }\n for (const [to, from] of aliases) {\n let paintProp = (paint as PathPaint)[from];\n if (\n defined(this.options.opacity) &&\n from.toLowerCase().indexOf('opacity') !== -1\n ) {\n paintProp = Number(paintProp) * this.options.opacity;\n }\n\n if (paintProp !== undefined) {\n Object.defineProperty(readyPaint, to, {\n enumerable: true,\n value: paintProp,\n });\n }\n }\n\n return readyPaint;\n }\n return PAINT;\n }\n\n private _getGeoJsonOptions(\n options: GeoJsonAdapterOptions,\n type: VectorAdapterLayerType,\n ): GeoJSONOptions {\n const paint = options.paint;\n let lopt: GeoJSONOptions = {};\n\n if (typeof paint === 'function') {\n if (type === 'point') {\n // TODO: fix types (@geoman-io/leaflet-geoman-free)\n (lopt as any).pointToLayer = (\n feature: Feature<Point, any>,\n latLng: LatLng,\n ) => {\n const iconOpt = paint(feature);\n const pointToLayer = this._createPaintToLayer(iconOpt as IconPaint);\n return pointToLayer(feature, latLng);\n };\n } else {\n lopt = {\n style: (feature) => {\n if (feature) {\n return this._preparePaint({ ...PAINT, ...paint(feature) });\n } else {\n return this._preparePaint({ ...PAINT, type: 'path' });\n }\n },\n };\n }\n } else {\n lopt = this._createPaintOptions(paint as VectorAdapterLayerPaint, type);\n }\n\n lopt.onEachFeature = (feature: Feature, layer) => {\n this._onEachFeature(feature, layer);\n };\n\n return lopt;\n }\n\n private _onEachFeature(feature: Feature, layer: Layer) {\n const layer_ = this.layer;\n if (layer_) {\n const def = {\n target: this,\n feature,\n layer,\n ...createFeaturePositionOptions(feature),\n };\n\n // @ts-ignore\n layer.options.pane = this.pane;\n this._layers.push(def);\n let ok = true;\n if (this._filterFun) {\n ok = this._filterFun(def);\n }\n if (ok) {\n const { popup, popupOptions, selectable, interactive, selectOnHover } =\n this.options;\n // @ts-ignore\n layer.options.interactive = defined(interactive) ? interactive : true;\n layer_.addLayer(layer);\n if (selectable) {\n if (selectOnHover) {\n layer.on('mouseover', () => {\n this._selectLayer(def, 'hover');\n });\n layer.on('mouseout', () => {\n this._unSelectLayer(def);\n });\n } else {\n layer.on(\n 'click',\n (e) => this._selectOnLayerClick(e as LeafletMouseEvent),\n this,\n );\n }\n }\n this._handleMouseEvents(layer);\n // The timeout is needed to display the popup immediately when adding a layer to the map.\n // Without a timeout, the layer may not yet have a _map object\n setTimeout(() => {\n if (popup) {\n this._openPopup(\n {\n target: this,\n layer,\n feature,\n ...createFeaturePositionOptions(feature),\n },\n popupOptions,\n 'api',\n );\n }\n this._updateTooltip({ layer, feature });\n });\n }\n }\n }\n\n private _handleMouseEvents(layer: Layer) {\n const { onClick, onLayerClick, onMouseOut, onMouseOver } = this.options;\n // TODO: remove backward compatibility for onLayerClick\n const onClick_ = onClick || onLayerClick;\n if (onClick_) {\n layer.on(\n 'click',\n (e) => {\n const selected = !!this._getSelected(layer);\n onClick_({\n selected,\n ...this._createMouseEvent(e),\n });\n },\n this,\n );\n }\n if (onMouseOut) {\n layer.on(\n 'mouseout',\n (e) => {\n onMouseOut(this._createMouseEvent(e));\n },\n this,\n );\n }\n if (onMouseOver) {\n layer.on(\n 'mouseover',\n (e) => {\n onMouseOver(this._createMouseEvent(e));\n },\n this,\n );\n }\n }\n\n private _createMouseEvent(source: LeafletEvent): OnLayerMouseOptions {\n return createMouseEvent({\n layer: this,\n source: source as LeafletMouseEvent,\n });\n }\n\n private _getSelected(layer: LayerDef['layer']) {\n return this._selectedLayers.find((x) => x.layer === layer);\n }\n\n private _selectOnLayerClick(e: LeafletMouseEvent) {\n DomEvent.stopPropagation(e);\n const layer = e.target as Layer;\n const feature = (layer as any).feature;\n const def: LayerDef = {\n target: this,\n layer,\n feature,\n ...createFeaturePositionOptions(feature),\n };\n const isSelected = this._getSelected(layer);\n if (isSelected) {\n if (this.options && this.options.unselectOnSecondClick) {\n this._unSelectLayer(isSelected);\n }\n } else {\n this._selectLayer(def, 'click', e.latlng);\n }\n }\n\n private _selectLayer(\n def: LayerDef,\n type: OnLayerSelectType,\n latlng?: LatLngExpression,\n ) {\n this.map._addUnselectCb(() => {\n this._unSelectLayer(def);\n });\n if (this.options && !this.options.multiselect) {\n this._selectedLayers.forEach((x) => this._unSelectLayer(x));\n }\n this._selectedLayers.push(def);\n this.selected = true;\n const { selectedPaint, popupOnSelect, popupOptions } = this.options;\n\n if (selectedPaint && def.layer) {\n this._setPaint(def, selectedPaint);\n }\n if (popupOnSelect) {\n this._openPopup(def, popupOptions, type, latlng);\n }\n if (this.options.onSelect) {\n const features = def.feature ? [def.feature] : [];\n this.options.onSelect({\n type,\n layer: this,\n features,\n ...createFeaturePositionOptions(features),\n });\n }\n }\n\n private _unSelectLayer(def: LayerDef) {\n const index = this._selectedLayers.indexOf(def);\n if (index !== -1) {\n this._selectedLayers.splice(index, 1);\n if (this.options) {\n if (this.options.paint) {\n this._setPaint(def, this.options.paint);\n }\n\n if (this.options.popupOnSelect && def.layer) {\n this._removePopup(def.layer);\n }\n }\n }\n this.selected = this._selectedLayers.length > 0;\n }\n\n private _createDivIcon(icon: IconPaint) {\n const { ...toLIconOpt } = icon;\n return new DivIcon({ className: '', ...toLIconOpt });\n }\n\n private _createPaintToLayer(icon: IconPaint) {\n if (icon && icon.type) {\n if (icon.type === 'icon') {\n const iconClassName = icon.className;\n const html = icon.html;\n if (iconClassName || html) {\n return (geoJsonPoint: any, latlng: LatLngExpression) => {\n const divIcon = this._createDivIcon(icon);\n return new Marker(latlng, { icon: divIcon });\n };\n }\n } else if (icon.type === 'pin') {\n return (geoJsonPoint: any, latlng: LatLngExpression) => {\n // const divIcon = this.createDivIcon(icon);\n return new Marker(latlng);\n };\n }\n }\n return (geoJsonPoint: any, latlng: LatLngExpression) => {\n const p: any = PAINT;\n return new CircleMarker(latlng, this._preparePaint({ ...p, ...icon }));\n };\n }\n\n private _createPaintOptions(\n paintOptions: VectorAdapterLayerPaint,\n type: VectorAdapterLayerType,\n ): GeoJSONOptions {\n const geoJsonOptions: GeoJSONOptions = {};\n const paint = (paintOptions && this._preparePaint(paintOptions)) || {};\n if (paintOptions) {\n geoJsonOptions.style = () => {\n return paint;\n };\n }\n if (type === 'point') {\n (geoJsonOptions as any).pointToLayer = this._createPaintToLayer(\n paintOptions as IconPaint,\n );\n } else if (type === 'line') {\n paint.stroke = true;\n }\n return geoJsonOptions;\n }\n\n private _addMapListener() {\n const map = this.map;\n if (map) {\n const { labelField, labelOnHover, unselectOnClick } = this.options;\n const uoc = unselectOnClick ?? true;\n if (uoc) {\n map.on('click', this.$unselect);\n }\n if (labelField && !labelOnHover) {\n map.on('zoomend', this.$updateTooltip);\n map.on('moveend', this.$updateTooltip);\n }\n }\n }\n\n private _removeMapListener() {\n this.map.off('zoomend', this.$updateTooltip);\n this.map.off('moveend', this.$updateTooltip);\n this.map.off('click', this.$unselect);\n }\n}\n","export function callAjax(\n src: string,\n callback: (resp: any) => any,\n headers: Record<string, any>,\n): () => void {\n const xhr = new XMLHttpRequest();\n xhr.open('GET', src);\n xhr.responseType = 'arraybuffer';\n for (const h in headers) {\n xhr.setRequestHeader(h, headers[h]);\n }\n xhr.onload = function () {\n const arrayBufferView = new Uint8Array(this.response);\n const blob = new Blob([arrayBufferView], { type: 'image/png' });\n // @ts-ignore for typedoc\n const urlCreator = window.URL || window.webkitURL;\n const imageUrl = urlCreator.createObjectURL(blob);\n callback(imageUrl);\n };\n xhr.send();\n return () => {\n xhr.abort();\n };\n}\n","import {\n ImageOverlay as LImageOverlay,\n LatLngBoundsExpression,\n ImageOverlayOptions,\n} from 'leaflet';\nimport { callAjax } from '../../utils/callAjax';\n\ntype IOptions = ImageOverlayOptions & { headers?: any };\n\nexport class ImageOverlay extends LImageOverlay {\n private _abort: (() => void)[] = [];\n\n constructor(\n imageUrl: string,\n bounds: LatLngBoundsExpression,\n options?: IOptions,\n ) {\n super(imageUrl, bounds, options);\n }\n\n cancelLoad(): void {\n if (this._abort) {\n this._abort.forEach((x) => x());\n this._abort = [];\n }\n }\n\n _initImage(): void {\n // @ts-ignore\n super._initImage();\n // @ts-ignore\n const headers = this.options.headers;\n if (headers) {\n // @ts-ignore\n const img: HTMLImageElement = this._image;\n const src = img.src;\n img.src = '';\n this._abort.push(\n callAjax(\n src,\n (response) => {\n img.src = response;\n },\n headers,\n ),\n );\n }\n }\n}\n","/*!\n * leaflet.wms.js\n * A collection of Leaflet utilities for working with Web Mapping services.\n * (c) 2014-2016, Houston Engineering, Inc.\n * MIT License\n */\n\nimport { Layer, Util, CRS } from 'leaflet';\nimport { debounce } from '@nextgis/utils';\nimport { ImageOverlay } from './ImageOverlay';\n\ninterface OverlayOptions {\n crs?: null;\n uppercase?: boolean;\n attribution?: string;\n opacity?: number;\n isBack?: boolean;\n minZoom?: number;\n maxZoom?: number;\n zIndex?: number;\n pane?: string;\n headers?: any;\n viewPortBuffer?: number;\n setViewDelay?: number;\n}\n\n/*\n * Overlay:\n * \"Single Tile\" WMS image overlay that updates with map changes.\n * Portions of wms.Overlay are directly extracted from L.TileLayer.WMS.\n * See Leaflet license.\n */\nexport class ImageLayer extends Layer {\n defaultWmsParams = {\n service: 'WMS',\n request: 'GetMap',\n version: '1.1.1',\n layers: '',\n styles: '',\n format: 'image/jpeg',\n transparent: false,\n };\n\n options: OverlayOptions = {\n crs: null,\n uppercase: false,\n attribution: '',\n opacity: 1,\n isBack: false,\n minZoom: 0,\n maxZoom: 18,\n pane: 'tilePane',\n headers: null,\n viewPortBuffer: 0,\n setViewDelay: 100,\n };\n\n private wmsParams: any;\n private _url?: string;\n private _currentUrl?: string;\n private _currentOverlay?: ImageOverlay;\n\n constructor(url: string, options: OverlayOptions) {\n super(options);\n this._url = url;\n\n // Move WMS parameters to params object\n const params: any = {};\n const opts: any = {};\n let opt: keyof OverlayOptions;\n for (opt in options) {\n if (opt in this.options) {\n opts[opt] = options[opt];\n } else {\n params[opt] = options[opt];\n }\n }\n Util.setOptions(this, opts);\n this.wmsParams = Util.extend({}, this.defaultWmsParams, params);\n }\n\n setParams(params: Record<string, any>): void {\n Util.extend(this.wmsParams, params);\n this.update();\n }\n\n getAttribution(): string {\n return this.options.attribution || '';\n }\n\n onAdd(): this {\n this.update();\n return this;\n }\n\n onRemove(map: L.Map): this {\n if (this._currentOverlay) {\n this._currentOverlay.cancelLoad();\n map.removeLayer(this._currentOverlay);\n delete this._currentOverlay;\n }\n if (this._currentUrl) {\n delete this._currentUrl;\n }\n return this;\n }\n\n getEvents(): {\n moveend: () => void;\n } {\n return {\n moveend: debounce(this.update, this.options.setViewDelay),\n };\n }\n\n update(): void {\n if (!this._map) {\n return;\n }\n // Determine image URL and whether it has changed since last update\n this.updateWmsParams();\n const url = this.getImageUrl();\n if (this._currentUrl === url) {\n return;\n }\n this._currentUrl = url;\n\n // Keep current image overlay in place until new one loads\n // (inspired by esri.leaflet)\n const viewPortBuffer = this.options.viewPortBuffer || 0;\n const bounds = this._map.getBounds().pad(viewPortBuffer);\n\n const overlay = new ImageOverlay(url, bounds, {\n opacity: 0,\n pane: this.options.pane,\n headers: this.options.headers,\n });\n overlay.addTo(this._map);\n if (this._currentOverlay) {\n this._currentOverlay.cancelLoad();\n }\n overlay.once(\n 'load',\n () => {\n if (!this._map) {\n return;\n }\n // @ts-ignore\n if (overlay._url !== this._currentUrl) {\n this._map.removeLayer(overlay);\n return;\n } else if (this._currentOverlay) {\n this._map.removeLayer(this._currentOverlay);\n }\n this._currentOverlay = overlay;\n overlay.setOpacity(\n this.options.opacity !== undefined ? this.options.opacity : 1,\n );\n if (this.options.isBack === true) {\n overlay.bringToBack();\n }\n if (this.options.isBack === false) {\n overlay.bringToFront();\n }\n if (this.options.zIndex !== undefined) {\n overlay.setZIndex(this.options.zIndex);\n }\n },\n this,\n );\n const { minZoom, maxZoom } = this.options;\n if (\n (minZoom && this._map.getZoom() < minZoom) ||\n (maxZoom && this._map.getZoom() > maxZoom)\n ) {\n this._map.removeLayer(overlay);\n }\n }\n\n setOpacity(opacity: number): void {\n this.options.opacity = opacity;\n if (this._currentOverlay) {\n this._currentOverlay.setOpacity(opacity);\n }\n }\n\n bringToBack(): void {\n this.options.isBack = true;\n if (this._currentOverlay) {\n this._currentOverlay.bringToBack();\n }\n }\n\n bringToFront(): void {\n this.options.isBack = false;\n if (this._currentOverlay) {\n this._currentOverlay.bringToFront();\n }\n }\n\n setZIndex(zIndex: number): void {\n this.options.zIndex = zIndex;\n if (this._currentOverlay) {\n this._currentOverlay.setZIndex(zIndex);\n }\n }\n\n // See L.TileLayer.WMS: onAdd() & getTileUrl()\n updateWmsParams(map?: L.Map): void {\n if (!map) {\n map = this._map;\n }\n // Compute WMS options\n const viewPortBuffer = this.options.viewPortBuffer || 0;\n const bounds = map.getBounds().pad(viewPortBuffer);\n const size = map.getSize();\n if (this.options.viewPortBuffer !== 0) {\n const factor = viewPortBuffer + 1;\n size.x = Math.ceil(size.x * factor);\n size.y = Math.ceil(size.y * factor);\n }\n const wmsVersion = parseFloat(this.wmsParams.version);\n const crs = this.options.crs || map.options.crs;\n const projectionKey = wmsVersion >= 1.3 ? 'crs' : 'srs';\n if (crs) {\n const nw = crs.project(bounds.getNorthWest());\n const se = crs.project(bounds.getSouthEast());\n\n // Assemble WMS parameter string\n const params: any = {\n width: size.x,\n height: size.y,\n };\n params[projectionKey] = crs.code;\n params.bbox = (\n wmsVersion >= 1.3 && crs === CRS.EPSG4326\n ? [se.y, nw.x, nw.y, se.x]\n : [nw.x, se.y, se.x, nw.y]\n ).join(',');\n\n Util.extend(this.wmsParams, params);\n }\n }\n\n getImageUrl(): string {\n const uppercase = this.options.uppercase || false;\n const pstr = Util.getParamString(this.wmsParams, this._url, uppercase);\n return this._url + pstr;\n }\n}\n","import { MainLayerAdapter } from '@nextgis/webmap';\nimport { ImageLayer } from './ImageLayer';\nimport { BaseAdapter } from '../BaseAdapter';\n\nimport type { Map } from 'leaflet';\nimport type { ImageAdapterOptions } from '@nextgis/webmap';\n\nexport class ImageAdapter\n extends BaseAdapter<ImageAdapterOptions>\n implements MainLayerAdapter<Map>\n{\n layer: any;\n\n addLayer(options: ImageAdapterOptions): any {\n const url = options && options.url;\n if (url) {\n options = { transparent: true, ...options };\n const updateWmsParamsFromOpt = options.updateWmsParams;\n this.layer = new ImageLayer(url, {\n pane: this.pane,\n headers: options.headers,\n setViewDelay: options.setViewDelay,\n /**\n * TODO: safe remove, use only options.nativeOptions\n */\n ...options,\n ...options.params,\n ...options.nativeOptions,\n });\n if (updateWmsParamsFromOpt) {\n const updateWmsParams = this.layer.updateWmsParams;\n this.layer.updateWmsParams = function (map: Map) {\n updateWmsParams.call(this, map);\n this.wmsParams = updateWmsParamsFromOpt(this.wmsParams);\n };\n }\n return this.layer;\n }\n }\n}\n","// based on https://github.com/bvaughn/debounce-decorator\n\nexport function debounce<T extends (...args: any[]) => void>(\n cb: T,\n wait = 10,\n): T & { clear: () => void } {\n let timeoutId: any;\n\n function wrapper(this: any, ...args: any[]) {\n wrapper.clear();\n\n timeoutId = setTimeout(() => {\n timeoutId = null;\n cb.apply(this, args);\n }, wait);\n }\n\n wrapper.clear = function () {\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n };\n\n return wrapper as T & { clear: () => void };\n}\n\nexport function DebounceDecorator(wait = 10) {\n return function (\n target: unknown,\n key: string,\n descriptor: PropertyDescriptor,\n ): PropertyDescriptor {\n return {\n configurable: true,\n enumerable: descriptor.enumerable,\n get: function getter() {\n // Attach this function to the instance (not the class)\n Object.defineProperty(this, key, {\n configurable: true,\n enumerable: descriptor.enumerable,\n value: debounce(descriptor.value, wait),\n });\n // @ts-ignore\n return this[key];\n },\n };\n };\n}\n","import { DomUtil, GridLayer, Util } from 'leaflet';\nimport { debounce } from '../../../utils/src';\nimport { callAjax } from './callAjax';\n\n// import type { TileLayerOptionsExtended } from './TileAdapter/TileLayer';\n\ntype Constructor = new (...args: any[]) => any;\n\nexport function makeRemote<\n TBase extends Constructor,\n // O extends TileLayerOptionsExtended = TileLayerOptionsExtended\n>(Base: TBase): TBase {\n return class RemoteTileLayer extends Base {\n constructor(...args: any[]) {\n super(...args);\n if (this.options.setViewDelay) {\n // @ts-ignore\n this._update = debounce((...a: any[]) => {\n // @ts-ignore\n GridLayer.prototype._update.call(this, ...a);\n }, this.options.setViewDelay);\n }\n }\n\n createTile(\n coords: Record<string, unknown>,\n done: (error: any, tile: HTMLImageElement) => void,\n ): HTMLImageElement {\n // @ts-ignore\n const url = this.getTileUrl(coords);\n\n const tile = document.createElement('img');\n (tile as any).abort = callAjax(\n url,\n (response) => {\n tile.src = response;\n done(null, tile);\n },\n // @ts-ignore\n this.options.headers,\n );\n\n if (this.options.crossOrigin || this.options.crossOrigin === '') {\n tile.crossOrigin =\n this.options.crossOrigin === true ? '' : this.options.crossOrigin;\n }\n\n tile.alt = '';\n tile.setAttribute('role', 'presentation');\n\n return tile;\n }\n\n _abortLoading() {\n // @ts-ignore\n const tiles = this._tiles;\n // @ts-ignore\n const tileZoom = this._tileZoom;\n for (const i in tiles) {\n if (tiles[i].coords.z !== tileZoom) {\n const tile = tiles[i].el;\n\n tile.onload = Util.falseFn;\n tile.onerror = Util.falseFn;\n if (!tile.complete) {\n if (tile.abort) {\n tile.abort();\n }\n tile.src = Util.emptyImageUrl;\n DomUtil.remove(tile);\n delete tiles[i];\n }\n }\n }\n }\n };\n}\n","import { TileLayer as TL } from 'leaflet';\nimport { makeRemote } from '../../utils/makeRemoteTileLayer';\n\nimport type { TileLayerOptions } from 'leaflet';\n\nexport type TileLayerOptionsExtended = TileLayerOptions & {\n headers: Record<string, any>;\n setViewDelay?: number;\n};\n\nclass TileLayerBase extends TL {\n constructor(urlTemplate: string, options?: TileLayerOptionsExtended) {\n super(urlTemplate, options);\n Object.assign(this.options, options);\n }\n}\n\nexport const TileLayer = makeRemote(TileLayerBase);\n","import { TileLayer } from 'leaflet';\nimport { TileLayer as TL } from './TileLayer';\nimport { BaseAdapter } from '../BaseAdapter';\n\nimport type { MainLayerAdapter, TileAdapterOptions } from '@nextgis/webmap';\nimport type { TileLayerOptions } from 'leaflet';\n\nexport class TileAdapter\n extends BaseAdapter<TileAdapterOptions, TileLayer>\n implements MainLayerAdapter\n{\n addLayer(options: TileAdapterOptions): TileLayer | undefined {\n this.options = Object.assign(this.options, options);\n if (options) {\n const { url, ...opt } = options;\n if (url) {\n const tileLayerOptions: TileLayerOptions = {\n pane: this.pane,\n attribution: opt.attribution,\n minZoom: opt.minZoom,\n maxZoom: opt.maxZoom,\n\n ...opt.nativeOptions,\n };\n if (opt.subdomains) {\n tileLayerOptions.subdomains = opt.subdomains;\n }\n let layer;\n if (opt.headers) {\n layer = new TL(url, {\n ...tileLayerOptions,\n headers: opt.headers,\n setViewDelay: opt.setViewDelay,\n });\n } else {\n layer = new TileLayer(url, tileLayerOptions);\n }\n return layer;\n }\n }\n }\n}\n","import { TileLayer } from 'leaflet';\nimport { makeRemote } from '../../utils/makeRemoteTileLayer';\nimport type { WMSOptions } from 'leaflet';\n\ntype LayerOptions = WMSOptions & { headers: any };\n\nclass WmsLayerBase extends TileLayer.WMS {\n constructor(urlTemplate: string, options: LayerOptions) {\n super(urlTemplate, options);\n }\n}\n\nexport const WmsLayer = makeRemote(WmsLayerBase);\n\n// applyMixins(WmsLayer, [RemoteTileLayer]);\n","import { TileLayer } from 'leaflet';\nimport { WmsLayer as WMS } from './WmsLayer';\nimport { BaseAdapter } from '../BaseAdapter';\n\nimport type { MainLayerAdapter, WmsAdapterOptions } from '@nextgis/webmap';\nimport type { WMSOptions } from 'leaflet';\n\nexport class WmsAdapter\n extends BaseAdapter<WmsAdapterOptions, TileLayer.WMS>\n implements MainLayerAdapter\n{\n addLayer(options: WmsAdapterOptions): TileLayer.WMS | undefined {\n Object.assign(this.options, options);\n const { url, ...opt } = options;\n if (url) {\n const layerOptions: WMSOptions = {\n pane: this.pane,\n attribution: opt.attribution,\n minZoom: opt.minZoom,\n maxZoom: opt.maxZoom,\n layers: options.layers,\n format: options.format,\n ...options.nativeOptions,\n };\n let layer;\n if (opt.headers) {\n layer = new WMS(url, { ...layerOptions, headers: opt.headers });\n } else {\n layer = new TileLayer.WMS(url, layerOptions);\n }\n return layer;\n }\n }\n}\n","import { MainLayerAdapter, TileAdapterOptions } from '@nextgis/webmap';\nimport { TileLayer } from 'leaflet';\n\nimport { TileAdapter } from './TileAdapter/TileAdapter';\n\nexport class OsmAdapter extends TileAdapter implements MainLayerAdapter {\n addLayer(options: Omit<TileAdapterOptions, 'url'>): TileLayer | undefined {\n const url = 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';\n return super.addLayer({\n name: 'OpenStreetMap',\n attribution:\n '&copy; <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> contributors',\n ...options,\n url,\n });\n }\n}\n","import type { LatLngBoundsExpression } from 'leaflet';\nimport type { LngLatBoundsArray } from '@nextgis/utils';\n\nexport function arrayToBoundsExpression(\n bounds: LngLatBoundsArray,\n): LatLngBoundsExpression {\n const e = bounds;\n // top, left, bottom, right\n return [\n [e[3], e[0]],\n [e[1], e[2]],\n ];\n}\n","import { EventEmitter } from 'events';\nimport {\n Map,\n Control,\n FitBoundsOptions,\n LatLngBoundsExpression,\n} from 'leaflet';\nimport { convertMapClickEvent } from './utils/convertMapClickEvent';\nimport { createButtonControl } from './controls/createButtonControl';\nimport { AttributionControl } from './controls/Attribution';\nimport { createControl } from './controls/createControl';\nimport { GeoJsonAdapter } from './layer-adapters/GeoJsonAdapter';\nimport { ImageAdapter } from './layer-adapters/ImageAdapter/ImageAdapter';\nimport { TileAdapter } from './layer-adapters/TileAdapter/TileAdapter';\nimport { WmsAdapter } from './layer-adapters/WmsAdapter/WmsAdapter';\nimport { OsmAdapter } from './layer-adapters/OsmAdapter';\n\nimport type {\n Layer,\n GridLayer,\n ControlPosition,\n LeafletMouseEvent,\n} from 'leaflet';\nimport type { LngLatBoundsArray, LngLatArray } from '@nextgis/utils';\nimport type {\n CreateControlOptions,\n ButtonControlOptions,\n LocationEvents,\n LocateOptions,\n MainMapEvents,\n LayerAdapter,\n ViewOptions,\n MapAdapter,\n MapOptions,\n FitOptions,\n MapControl,\n Locate,\n} from '@nextgis/webmap';\nimport { arrayToBoundsExpression } from './utils/arrayToBoundsExpression';\n\nexport type Type<T> = new (...args: any[]) => T;\nexport type UnselectCb = () => void;\nexport type UnselectDef = UnselectCb;\nexport class LeafletMapAdapter implements MapAdapter<Map, any, Control> {\n static layerAdapters: {\n [name: string]: Type<LayerAdapter<Map, any, any>>;\n } = {\n GEOJSON: GeoJsonAdapter,\n IMAGE: ImageAdapter,\n TILE: TileAdapter,\n WMS: WmsAdapter,\n // // MVT: MvtAdapter,\n OSM: OsmAdapter,\n };\n\n static controlAdapters = {\n ZOOM: Control.Zoom,\n ATTRIBUTION: AttributionControl,\n };\n\n static Map = Map;\n\n options: MapOptions = { target: 'map' };\n\n layerAdapters = LeafletMapAdapter.layerAdapters;\n controlAdapters = LeafletMapAdapter.controlAdapters;\n emitter = new EventEmitter();\n map?: Map;\n\n private _resizeObserver?: ResizeObserver;\n private _unselectCb: UnselectDef[] = [];\n private _universalEvents: (keyof MainMapEvents)[] = [\n 'move',\n 'zoom',\n 'moveend',\n 'zoomend',\n 'zoomstart',\n 'movestart',\n ];\n\n create(options: MapOptions): void {\n this.options = { ...options };\n if (this.options.target) {\n const {\n zoom,\n center,\n maxZoom,\n minZoom,\n maxBounds: mb,\n mapAdapterOptions,\n } = this.options;\n this.map = new Map(this.options.target, {\n attributionControl: false,\n zoomControl: false,\n maxBounds: mb ? arrayToBoundsExpression(mb) : undefined,\n maxZoom,\n minZoom,\n center: center && [center[1], center[0]],\n zoom,\n ...mapAdapterOptions,\n });\n // create default pane\n const defPane = this.map.createPane('order-0');\n this.map._addUnselectCb = (def) => {\n this._addUnselectCb(def);\n };\n defPane.style.zIndex = String(0);\n this.emitter.emit('create', this);\n this._addMapListeners();\n }\n }\n\n destroy(): void {\n if (this.map) {\n this.map.remove();\n }\n this._stopWatchSizeChangeToUpdateMinZoom();\n }\n\n getContainer(): HTMLElement | undefined {\n return this.map && this.map.getContainer();\n }\n\n getControlContainer(): HTMLElement {\n const controlContainer = this.map && (this.map as any)._controlContainer;\n if (controlContainer) {\n return controlContainer;\n }\n throw new Error('Leaflet Map is not initialized yet');\n }\n\n setCursor(cursor: string): void {\n if (this.map) {\n this.map.getContainer().style.cursor = cursor;\n }\n }\n\n setView(lngLat: LngLatArray, zoom?: number): void;\n setView(options: ViewOptions): void;\n setView(lngLatOrOpt: LngLatArray | ViewOptions, zoom?: number): void {\n const map = this.map;\n if (!map) return;\n if (Array.isArray(lngLatOrOpt)) {\n const lngLat = lngLatOrOpt;\n const [lng, lat] = lngLat;\n if (this.map) {\n if (typeof zoom === 'number') {\n this.map.setView([lat, lng], zoom, { animate: false });\n } else {\n this.setCenter([lng, lat]);\n }\n }\n } else {\n const { zoom, center, maxBounds, bounds, minZoom, maxZoom } = lngLatOrOpt;\n if (center && zoom !== undefined) {\n this.setView(center, zoom);\n } else {\n if (zoom !== undefined) {\n this.setZoom(zoom);\n }\n if (center) {\n this.setCenter(center);\n }\n }\n if (bounds) {\n this.fitBounds(bounds);\n }\n if (maxBounds !== undefined) {\n if (maxBounds) {\n const b = arrayToBoundsExpression(maxBounds);\n map.setMaxBounds(b);\n map.setMinZoom(map.getBoundsZoom(b));\n this._watchSizeChangeToUpdateMinZoom(b);\n } else {\n // @ts-ignore `null` works for unset maxBounds, but not in typing\n map.setMaxBounds(null);\n this._stopWatchSizeChangeToUpdateMinZoom();\n }\n }\n if (maxZoom !== undefined) {\n map.setMaxZoom(maxZoom);\n }\n if (minZoom !== undefined) {\n this._stopWatchSizeChangeToUpdateMinZoom();\n map.setMinZoom(minZoom);\n }\n }\n }\n\n setCenter(lngLat: LngLatArray): void {\n const [lng, lat] = lngLat;\n if (this.map) {\n this.map.panTo([lat, lng]);\n }\n }\n\n getCenter(): LngLatArray | undefined {\n const map = this.map;\n if (map) {\n const bounds = map.getBounds();\n const center = bounds.getCenter();\n return [center.lng, center.lat];\n }\n }\n\n setZoom(zoom: number): void {\n if (this.map) {\n this.map.setZoom(zoom);\n }\n }\n\n getZoom(): number | undefined {\n return (this.map && this.map.getZoom()) || undefined;\n }\n\n getBounds(): LngLatBoundsArray | undefined {\n if (!this.map) return undefined;\n const b = this.map.getBounds();\n const sw = b.getSouthWest();\n const ne = b.getNorthEast();\n return [sw.lng, sw.lat, ne.lng, ne.lat];\n }\n\n // [west, south, east, north]\n fitBounds(bounds: LngLatBoundsArray, options: FitOptions = {}): void {\n if (this.map) {\n const { maxZoom, offset, padding } = options;\n const opt: FitBoundsOptions = {};\n if (maxZoom) {\n opt.maxZoom = maxZoom;\n }\n if (padding) {\n opt.padding = [padding, padding];\n }\n if (offset) {\n opt.padding = offset;\n }\n\n this.map.fitBounds(arrayToBoundsExpression(bounds), opt);\n }\n }\n\n getLayerAdapter(name: string): Type<LayerAdapter<L.Map, any, any>> {\n return LeafletMapAdapter.layerAdapters[name];\n }\n\n createControl(control: MapControl, options: CreateControlOptions): L.Control {\n return createControl(control, options, this);\n }\n\n createButtonControl(options: ButtonControlOptions): L.Control {\n return createButtonControl(options, this);\n }\n\n addControl(control: Control, position: string): Control | undefined {\n control.options.position = position.replace('-', '') as ControlPosition;\n if (this.map) {\n this.map.addControl(control);\n return control;\n }\n }\n\n removeControl(control: Control): void {\n if (this.map) {\n this.map.removeControl(control);\n }\n }\n\n removeLayer(layer: Layer): void {\n layer && layer.remove && layer.remove();\n }\n\n showLayer(layer: Layer): void {\n if (this.map) {\n layer.addTo(this.map);\n }\n }\n\n hideLayer(layer: Layer): void {\n layer.remove();\n }\n\n setLayerOpacity(layer: GridLayer | Layer, value: number): void {\n if ('setOpacity' in layer) {\n layer.setOpacity(value);\n }\n }\n\n setLayerOrder(\n layer: Layer,\n order: number,\n layers: { [x: string]: LayerAdapter },\n ): void {\n //\n }\n\n onMapClick(evt: LeafletMouseEvent): void {\n const converted = convertMapClickEvent(evt);\n this.emitter.emit('preclick', converted);\n this.emitter.emit('click', converted);\n }\n\n locate(opt: LocateOptions, events?: LocationEvents): Locate {\n const map = this.map;\n if (map) {\n map.locate(opt);\n if (events) {\n const { locationfound, locationerror } = events;\n const locationFound = (e: L.LeafletEvent) => {\n const event = e as L.LocationEvent;\n const lngLat: [number, number] = [event.latlng.lng, event.latlng.lat];\n locationfound({ lngLat });\n };\n if (locationfound !== undefined) {\n map.on('locationfound', locationFound, this);\n }\n if (locationerror) {\n map.on('locationerror', locationerror, this);\n }\n const stop = () => {\n if (locationfound !== undefined) {\n map.off('locationfound', locationFound);\n }\n if (locationerror) {\n map.off('locationerror', locationerror);\n }\n };\n return { stop };\n }\n }\n const stop = () => void 'fake function';\n return { stop };\n }\n\n private _addUnselectCb(cb: UnselectDef) {\n for (const p of this._unselectCb) {\n p();\n }\n this._unselectCb.length = 0;\n this._unselectCb.push(cb);\n }\n\n private _watchSizeChangeToUpdateMinZoom(bounds: LatLngBoundsExpression) {\n this._stopWatchSizeChangeToUpdateMinZoom();\n const container = this.getContainer();\n const map = this.map;\n if (container && map && window.ResizeObserver) {\n this._resizeObserver = new ResizeObserver(() => {\n map.setMinZoom(map.getBoundsZoom(bounds));\n });\n this._resizeObserver.observe(container);\n }\n }\n\n private _stopWatchSizeChangeToUpdateMinZoom() {\n const map = this.map;\n if (map) {\n map.setMinZoom(0);\n }\n if (this._resizeObserver) {\n this._resizeObserver.disconnect();\n this._resizeObserver = undefined;\n }\n }\n\n private _addMapListeners() {\n const map = this.map;\n if (map) {\n map.on('click', (evt) => {\n this.onMapClick(evt as LeafletMouseEvent);\n });\n this._universalEvents.forEach((e) => {\n map.on(e, () => this.emitter.emit(e, this), map);\n });\n }\n }\n}\n","/**\n * @module leaflet-map-adapter\n */\n\nimport { LeafletMapAdapter } from './LeafletMapAdapter';\n\nexport default LeafletMapAdapter;\n"],"names":["debounce","LImageOverlay","TL","TileLayer","WMS","LeafletMapAdapter"],"mappings":"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"}