ol-wfst 4.0.3 → 4.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +3 -0
- package/LICENSE.md +1 -1
- package/README.md +7 -7
- package/dist/ol-wfst.js +451 -619
- package/dist/ol-wfst.js.map +1 -1
- package/dist/ol-wfst.min.js +1 -1
- package/dist/ol-wfst.min.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/lib/{index-es.js → ol-wfst.js} +1 -1
- package/lib/ol-wfst.js.map +1 -0
- package/package.json +13 -13
- package/index.js +0 -1
- package/lib/index-es.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ol-wfst.js","sources":["../src/modules/errors.ts","../src/modules/i18n/es.ts","../src/modules/i18n/en.ts","../src/modules/i18n/zh.ts","../src/modules/i18n/index.ts","../src/modules/loading.ts","../src/@enums.ts","../src/modules/state.ts","../src/modules/base/BaseLayer.ts","../src/modules/base/WfsSource.ts","../src/WfsLayer.ts","../src/modules/base/WmsSource.ts","../src/WmsLayer.ts","../src/myPragma.ts","../src/assets/images/upload.svg","../src/assets/images/draw.svg","../src/assets/images/visibilityOn.svg","../src/assets/images/visibilityOff.svg","../src/modules/LayersControl.tsx","../src/modules/editLayer.ts","../src/modules/Uploads.ts","../src/modules/helpers.ts","../src/defaults.ts","../src/modules/EditControlChanges.tsx","../src/modules/styleFunction.ts","../src/modules/EditFieldsModal.ts","../src/Geoserver.ts","../src/assets/images/editFields.svg","../src/assets/images/editGeom.svg","../src/modules/EditOverlay.tsx","../src/ol-wfst.ts"],"sourcesContent":["// External\nimport Modal from 'modal-vanilla';\n\nimport { Options } from '../ol-wfst';\n\nlet options = {};\n\n// Store layerNames that has errors\nconst isError = new Set();\n\nexport const initModal = (opts: Options['modal']) => {\n options = opts;\n};\n\nexport const parseError = (geoserverError) => {\n if ('exceptions' in geoserverError) {\n return geoserverError.exceptions.map((e) => e.text).join(',');\n } else {\n return '';\n }\n};\n\n/**\n * Show modal with errors\n *\n * @param msg\n * @private\n */\nexport const showError = (\n msg: string,\n originalError: Error = null,\n layerName = ''\n): void => {\n // Prevent multiples modals error in the same layer\n if (isError.has(layerName)) {\n return;\n }\n\n isError.add(layerName);\n\n let err_msg = `<b>Error: ${msg}</b>`;\n if (originalError) {\n err_msg += `. ${originalError.message}`;\n }\n\n const al = Modal.alert(err_msg, options);\n\n al.show();\n\n al.on('hidden', () => {\n isError.delete(layerName);\n });\n};\n","import { I18n } from '../../ol-wfst';\n\nexport const es: I18n = {\n labels: {\n select: 'Seleccionar',\n addElement: 'Modo dibujo',\n editElement: 'Editar elemento',\n save: 'Guardar',\n delete: 'Eliminar',\n cancel: 'Cancelar',\n apply: 'Aplicar cambios',\n upload: 'Subir',\n editMode: 'Modo Edición',\n confirmDelete: '¿Estás seguro de borrar el elemento?',\n geomTypeNotSupported: 'Geometría no compatible con la capa',\n editFields: 'Editar campos',\n editGeom: 'Editar geometría',\n selectDrawType: 'Tipo de geometría para dibujar',\n uploadToLayer: 'Subir archivo a la capa seleccionada',\n uploadFeatures: 'Subida de elementos a la capa',\n validFeatures: 'Válidas',\n invalidFeatures: 'Invalidas',\n loading: 'Cargando...',\n toggleVisibility: 'Cambiar visibilidad de la capa',\n close: 'Cerrar'\n },\n errors: {\n capabilities: 'No se pudieron obtener las Capabilidades del GeoServer',\n wfst: 'El GeoServer no tiene soporte a Transacciones',\n layer: 'No se pudieron obtener datos de la capa',\n layerNotFound: 'Capa no encontrada',\n layerNotVisible: 'La capa no está visible',\n noValidGeometry:\n 'No se encontraron geometrías válidas para agregar a esta capa',\n geoserver: 'No se pudieron obtener datos desde el GeoServer',\n badFormat: 'Formato no soportado',\n badFile: 'Error al leer elementos del archivo',\n lockFeature: 'No se pudieron bloquear elementos en el GeoServer.',\n transaction: 'Error al hacer transacción con el GeoServer.',\n getFeatures: 'Error al obtener elemento desde el GeoServer.'\n }\n};\n","import { I18n } from '../../ol-wfst';\n\nexport const en: I18n = {\n labels: {\n select: 'Select',\n addElement: 'Toggle Draw mode',\n editElement: 'Edit feature',\n save: 'Save',\n delete: 'Delete',\n cancel: 'Cancel',\n apply: 'Apply changes',\n upload: 'Upload',\n editMode: 'Edit Mode',\n confirmDelete: 'Are you sure to delete the feature?',\n geomTypeNotSupported: 'Geometry not supported by layer',\n editFields: 'Edit fields',\n editGeom: 'Edit geometry',\n selectDrawType: 'Geometry type to draw',\n uploadToLayer: 'Upload file to selected layer',\n uploadFeatures: 'Uploaded features to layer',\n validFeatures: 'Valid geometries',\n invalidFeatures: 'Invalid',\n loading: 'Loading...',\n toggleVisibility: 'Toggle layer visibility',\n close: 'Close'\n },\n errors: {\n capabilities: 'GeoServer Capabilities could not be downloaded.',\n wfst: 'The GeoServer does not support Transactions',\n layer: 'Could not get data from layer',\n layerNotFound: 'Layer not found',\n layerNotVisible: 'Layer is not visible',\n noValidGeometry: 'No valid geometries found to add to this layer',\n geoserver: 'Failed to get data from GeoServer',\n badFormat: 'Unsupported format',\n badFile: 'Error reading items from file',\n lockFeature: 'Could not lock items on the GeoServer.',\n transaction: 'Error when doing Transaction with GeoServer.',\n getFeatures: 'Error getting elements from GeoServer.'\n }\n};\n","import { I18n } from '../../ol-wfst';\n\nexport const zh: I18n = {\n labels: {\n select: '选择',\n addElement: '切换绘图类型',\n editElement: '编辑元素',\n save: '保存',\n delete: '删除',\n cancel: '取消',\n apply: '确认并应用改变',\n upload: '上传',\n editMode: '编辑模式',\n confirmDelete: '确认删除元素?',\n geomTypeNotSupported: '图层不支持该几何',\n editFields: '编辑区域',\n editGeom: '编辑几何',\n selectDrawType: '几何类型',\n uploadToLayer: '通过文件上传图层',\n uploadFeatures: '上传元素到图层',\n validFeatures: '合法的几何类型',\n invalidFeatures: '不合法',\n loading: '加载中...',\n toggleVisibility: '切换图层透明度',\n close: '关闭'\n },\n errors: {\n capabilities: '无法加载GeoServer服务所支持的能力.',\n wfst: 'GeoServer不支持事务',\n layer: '无法从图层获得数据',\n layerNotFound: 'Layer not found',\n layerNotVisible: 'Layer is not visible',\n noValidGeometry: '不支持的几何类型无法加载到图层',\n geoserver: '无法从GeoServer获取数据',\n badFormat: '不支持的格式',\n badFile: '读取文件数据出错',\n lockFeature: '无法锁定GeoServer上的元素.',\n transaction: 'GeoServer处理事务出错.',\n getFeatures: '从GeoServer获取元素出错.'\n }\n};\n","import { I18n } from '../../@types';\nexport * from './es';\nexport * from './en';\nexport * from './zh';\n\nimport { es } from './es';\nimport { en } from './en';\nimport { zh } from './zh';\n\nconst langs = {\n es,\n en,\n zh\n};\n\n// Set default Language\nexport let I18N: I18n = en;\n\nexport const setLang = (lang = 'en', customI18n: I18n = null): void => {\n // Check if language exists\n if (lang in langs) {\n I18N = langs[lang];\n }\n\n // Check if customs translations are provided\n if (customI18n) {\n I18N = { ...I18N, ...customI18n };\n }\n};\n\n/**\n * /**\n * For translations thas has a variable \"{}\"\" to be replaced inside\n * @param string\n * @param args\n * @returns\n */\nexport const I18N_ = (string: string, ...args: any): string => {\n let text = I18N[string];\n\n if (!text) {\n console.error('Translation not found', string);\n text = string;\n }\n\n if (args.length) {\n args.forEach((arg) => {\n text = text.replace(/{}/, arg);\n });\n }\n\n return text;\n};\n","import { I18N } from './i18n';\n\nlet loadingDiv: HTMLDivElement;\n\nexport const initLoading = (): HTMLDivElement => {\n loadingDiv = document.createElement('div');\n loadingDiv.className = 'ol-wfst--tools-control--loading';\n loadingDiv.innerHTML = I18N.labels.loading;\n return loadingDiv;\n};\n\nexport const showLoading = (bool: boolean = true) => {\n if (bool) {\n loadingDiv.classList.add('ol-wfst--tools-control--loading-show');\n } else {\n loadingDiv.classList.remove('ol-wfst--tools-control--loading-show');\n }\n};\n","export enum GeometryType {\n Point = 'Point',\n LineString = 'LineString',\n LinearRing = 'LinearRing',\n Polygon = 'Polygon',\n MultiPoint = 'MultiPoint',\n MultiLineString = 'MultiLineString',\n MultiPolygon = 'MultiPolygon',\n GeometryCollection = 'GeometryCollection',\n Circle = 'Circle'\n}\n\nexport enum TransactionType {\n Insert = 'insert',\n Delete = 'delete',\n Update = 'update'\n}\n","import Map from 'ol/Map';\nimport { FeatureLike } from 'ol/Feature';\n\nimport WfsLayer from '../WfsLayer';\nimport WmsLayer from '../WmsLayer';\nimport { IWfstLayersList } from '../@types';\n\nlet map: Map;\nlet layerToInsertElements: WfsLayer | WmsLayer = null;\nlet mode = null;\n\nexport enum Modes {\n Edit = 'EDIT',\n Draw = 'DRAW'\n}\n\nexport function activateMode(m: Modes = null) {\n mode = m;\n}\n\nexport function getMode() {\n return mode;\n}\n\nconst editedFeatures: Set<string> = new Set();\nconst mapLayers: IWfstLayersList = {};\n\nexport function setMap(m: Map) {\n map = m;\n}\n\nexport function getMap(): Map {\n return map;\n}\n\nexport function setActiveLayerToInsertEls(layer: WmsLayer | WfsLayer) {\n layerToInsertElements = layer;\n}\n\nexport function getActiveLayerToInsertEls(): WmsLayer | WfsLayer {\n return layerToInsertElements;\n}\n\nexport function setMapLayers(data) {\n Object.assign(mapLayers, data);\n}\n\nexport function getStoredMapLayers(): IWfstLayersList {\n return mapLayers;\n}\n\nexport function getStoredLayer(layerName: string): WfsLayer | WmsLayer {\n return getStoredMapLayers()[layerName];\n}\n\nexport function addFeatureToEditedList(feature: FeatureLike): void {\n editedFeatures.add(String(feature.getId()));\n}\n\nexport function removeFeatureFromEditList(feature: FeatureLike): void {\n editedFeatures.delete(String(feature.getId()));\n}\n\nexport function isFeatureEdited(feature: FeatureLike): boolean {\n return editedFeatures.has(String(feature.getId()));\n}\n","import { Feature } from 'ol';\nimport { Geometry } from 'ol/geom';\nimport { TransactionResponse } from 'ol/format/WFS';\nimport Layer from 'ol/layer/Base';\n\nimport Geoserver from '../../Geoserver';\nimport { IGeoserverDescribeFeatureType } from '../../@types';\nimport { GeometryType, TransactionType } from '../../@enums';\nimport { I18N } from '../i18n';\nimport { getMap } from '../state';\n\n/**\n * Base class from which all layer types are derived.\n */\nexport default class BaseLayer extends Layer {\n /**\n * @private\n */\n _init(): void {\n const geoserver = this.getGeoserver() as Geoserver;\n\n if (geoserver.isLoaded()) {\n this.getAndUpdateDescribeFeatureType();\n } else {\n geoserver.on('change:capabilities', () => {\n this.getAndUpdateDescribeFeatureType();\n });\n }\n }\n\n /**\n * Request and store data layers obtained by DescribeFeatureType\n *\n * @public\n */\n async getAndUpdateDescribeFeatureType(): Promise<void> {\n const layerName = this.get(BaseLayerProperty.NAME);\n const layerLabel = this.get(BaseLayerProperty.LABEL);\n\n try {\n const geoserver = this.getGeoserver() as Geoserver;\n\n const params = new URLSearchParams({\n service: 'wfs',\n version: geoserver.getAdvanced().describeFeatureTypeVersion,\n request: 'DescribeFeatureType',\n typeName: layerName,\n outputFormat: 'application/json',\n exceptions: 'application/json'\n });\n\n const url_fetch = geoserver.getUrl() + '?' + params.toString();\n\n const response = await fetch(url_fetch, {\n headers: geoserver.getHeaders(),\n credentials: geoserver.getCredentials()\n });\n\n if (!response.ok) {\n throw new Error('');\n }\n\n const data: IGeoserverDescribeFeatureType = await response.json();\n\n if (!data) {\n throw new Error('');\n }\n\n const targetNamespace = data.targetNamespace;\n const properties = data.featureTypes[0].properties;\n\n // Find the geometry field\n const geom = properties.find((el) => el.type.indexOf('gml:') >= 0);\n\n data._parsed = {\n namespace: targetNamespace,\n properties: properties,\n geomType: geom.localType as GeometryType,\n geomField: geom.name\n };\n\n this.set(BaseLayerProperty.DESCRIBEFEATURETYPE, data);\n } catch (err) {\n console.error(err);\n throw new Error(`${I18N.errors.layer} \"${layerLabel}\"`);\n }\n }\n\n /**\n * @public\n * @returns\n */\n isVisibleByZoom(): boolean {\n return getMap().getView().getZoom() > this.getMinZoom();\n }\n\n /**\n *\n * @param mode\n * @param features\n * @public\n */\n async transactFeatures(\n mode: TransactionType,\n features: Array<Feature<Geometry>> | Feature<Geometry>\n ): Promise<TransactionResponse | false> {\n const geoserver = this.getGeoserver() as Geoserver;\n return geoserver.transact(\n mode,\n features,\n this.get(BaseLayerProperty.NAME)\n );\n }\n\n async insertFeatures(\n features: Array<Feature<Geometry>> | Feature<Geometry>\n ): Promise<TransactionResponse | false> {\n return this.transactFeatures(TransactionType.Insert, features);\n }\n\n /**\n * @public\n * @param featureId\n * @returns\n */\n async maybeLockFeature(featureId: string | number): Promise<string> {\n const geoserver = this.getGeoserver() as Geoserver;\n\n if (geoserver.getUseLockFeature() && geoserver.hasLockFeature()) {\n return await geoserver.lockFeature(\n featureId,\n this.get(BaseLayerProperty.NAME)\n );\n }\n return null;\n }\n\n /**\n *\n * @returns\n * @public\n */\n getGeoserver(): Geoserver {\n return this.get(BaseLayerProperty.GEOSERVER);\n }\n\n /**\n *\n * @returns\n * @public\n */\n getDescribeFeatureType(): IGeoserverDescribeFeatureType {\n return this.get(BaseLayerProperty.DESCRIBEFEATURETYPE);\n }\n}\n\nexport enum BaseLayerProperty {\n NAME = 'name',\n LABEL = 'label',\n DESCRIBEFEATURETYPE = 'describeFeatureType',\n ISVISIBLE = 'isVisible',\n GEOSERVER = 'geoserver'\n}\n\nexport type BaseLayerEventTypes =\n | 'layerRendered'\n | `change:${BaseLayerProperty.DESCRIBEFEATURETYPE}`\n | `change:${BaseLayerProperty.ISVISIBLE}`;\n","import Feature from 'ol/Feature';\nimport GeoJSON from 'ol/format/GeoJSON';\nimport Geometry from 'ol/geom/Geometry';\nimport VectorSource, { Options as VSOptions } from 'ol/source/Vector';\nimport { transformExtent } from 'ol/proj';\nimport { bbox } from 'ol/loadingstrategy';\n\nimport { WfsGeoserverVendor } from '../../@types';\nimport { parseError, showError } from '../errors';\nimport { I18N } from '../i18n';\nimport { GeoServerAdvanced } from '../../Geoserver';\n\n/**\n * Layer source to retrieve WFS features from geoservers\n * https://docs.geoserver.org/stable/en/user/services/wfs/reference.html\n *\n * @extends {ol/source/Vector~VectorSource}\n * @param options\n */\nexport default class WfsSource extends VectorSource {\n public urlParams = new URLSearchParams({\n SERVICE: 'wfs',\n REQUEST: 'GetFeature',\n OUTPUTFORMAT: 'application/json',\n EXCEPTIONS: 'application/json'\n });\n\n constructor(options: WfsSourceOptions) {\n super({\n ...options,\n format: new GeoJSON(),\n loader: async (\n extent,\n resolution,\n projection,\n success,\n failure\n ) => {\n try {\n // If bbox, add extent to the request\n if (options.strategy == bbox) {\n const extentGeoServer = transformExtent(\n extent,\n projection.getCode(),\n options.geoServerAdvanced.projection\n );\n // https://docs.geoserver.org/stable/en/user/services/wfs/reference.html\n // request features using a bounding box with CRS maybe different from featureTypes native CRS\n this.urlParams.set(\n 'bbox',\n extentGeoServer.toString() +\n `,${options.geoServerAdvanced.projection}`\n );\n }\n\n const url_fetch =\n options.geoserverUrl + '?' + this.urlParams.toString();\n\n const response = await fetch(url_fetch, {\n headers: options.headers,\n credentials: options.credentials\n });\n\n if (!response.ok) {\n throw new Error('');\n }\n\n const data = await response.json();\n\n if (data.exceptions) {\n throw new Error(parseError(data));\n }\n\n const features = this.getFormat().readFeatures(data, {\n featureProjection: projection.getCode(),\n dataProjection: options.geoServerAdvanced.projection\n });\n\n features.forEach((feature: Feature<Geometry>) => {\n feature.set(\n '_layerName_',\n options.name,\n /* silent = */ true\n );\n });\n\n this.addFeatures(features as Feature<Geometry>[]);\n\n success(features as Feature<Geometry>[]);\n } catch (err) {\n this.removeLoadedExtent(extent);\n\n showError(I18N.errors.geoserver, err, options.name);\n\n failure();\n }\n }\n });\n\n this.urlParams.set(\n 'version',\n options.geoServerAdvanced.getFeatureVersion\n );\n\n this.urlParams.set('typename', options.name);\n\n this.urlParams.set(\n 'srsName',\n options.geoServerAdvanced.projection.toString()\n );\n }\n}\n\n/**\n * **_[interface]_** - Parameters to create a WfsSource\n *\n * @public\n */\nexport interface WfsSourceOptions extends VSOptions {\n /**\n * Layer name in the GeoServer\n */\n name: string;\n\n /**\n * Url for OWS services. This endpoint will recive the WFS, WFST and WMS requests\n */\n geoserverUrl: string;\n\n /**\n * Advanced options for geoserver requests\n */\n geoServerAdvanced?: GeoServerAdvanced;\n\n /**\n *\n */\n geoserverVendor?: WfsGeoserverVendor;\n\n /**\n * Url headers for GeoServer requests. You can use it to add Authorization credentials\n * https://developer.mozilla.org/en-US/docs/Web/API/Request/headers\n */\n headers?: HeadersInit;\n\n /**\n * Credentials for fetch requests\n * https://developer.mozilla.org/en-US/docs/Web/API/Request/credentials\n */\n credentials?: RequestCredentials;\n}\n","import { Feature } from 'ol';\nimport { Geometry } from 'ol/geom';\nimport VectorLayer from 'ol/layer/Vector';\nimport BaseEvent from 'ol/events/Event';\nimport { CombinedOnSignature, EventTypes, OnSignature } from 'ol/Observable';\nimport { EventsKey } from 'ol/events';\nimport { LayerRenderEventTypes } from 'ol/render/EventType';\nimport { BaseLayerObjectEventTypes } from 'ol/layer/Base';\nimport { ObjectEvent } from 'ol/Object';\nimport RenderEvent from 'ol/render/Event';\n\nimport { Mixin } from 'ts-mixer';\n\nimport BaseLayer, { BaseLayerEventTypes } from './modules/base/BaseLayer';\nimport WfsSource from './modules/base/WfsSource';\nimport { LayerOptions } from './ol-wfst';\nimport { showLoading } from './modules/loading';\nimport { TransactionType } from './@enums';\nimport { WfsGeoserverVendor } from './@types';\n\n/**\n * Layer to retrieve WFS features from geoservers\n * https://docs.geoserver.org/stable/en/user/services/wfs/reference.html\n *\n * @fires layerRendered\n * @extends {ol/layer/Vector~VectorLayer}\n * @param options\n */\nexport default class WfsLayer extends Mixin(BaseLayer, VectorLayer<WfsSource>) {\n private _loadingCount = 0;\n private _loadedCount = 0;\n\n public beforeTransactFeature: (\n feature: Feature<Geometry>,\n transaction: TransactionType\n ) => Feature<Geometry>;\n\n declare on: OnSignature<EventTypes, BaseEvent, EventsKey> &\n OnSignature<\n BaseLayerEventTypes | BaseLayerObjectEventTypes | 'change:source',\n ObjectEvent,\n EventsKey\n > &\n OnSignature<LayerRenderEventTypes, RenderEvent, EventsKey> &\n CombinedOnSignature<\n | EventTypes\n | BaseLayerEventTypes\n | BaseLayerObjectEventTypes\n | 'change:source'\n | LayerRenderEventTypes,\n EventsKey\n >;\n\n declare once: OnSignature<EventTypes, BaseEvent, EventsKey> &\n OnSignature<\n BaseLayerEventTypes | BaseLayerObjectEventTypes | 'change:source',\n ObjectEvent,\n EventsKey\n > &\n OnSignature<LayerRenderEventTypes, RenderEvent, EventsKey> &\n CombinedOnSignature<\n | EventTypes\n | BaseLayerEventTypes\n | BaseLayerObjectEventTypes\n | 'change:source'\n | LayerRenderEventTypes,\n EventsKey\n >;\n\n declare un: OnSignature<EventTypes, BaseEvent, void> &\n OnSignature<\n BaseLayerEventTypes | BaseLayerObjectEventTypes | 'change:source',\n ObjectEvent,\n void\n > &\n OnSignature<LayerRenderEventTypes, RenderEvent, void> &\n CombinedOnSignature<\n | EventTypes\n | BaseLayerEventTypes\n | BaseLayerObjectEventTypes\n | 'change:source'\n | LayerRenderEventTypes,\n void\n >;\n\n constructor(options: LayerOptions) {\n super({\n name: options.name,\n label: options.label || options.name,\n minZoom: options.minZoom,\n ...options\n });\n\n if (options.beforeTransactFeature) {\n this.beforeTransactFeature = options.beforeTransactFeature;\n }\n\n const geoserver = options.geoserver;\n\n const source = new WfsSource({\n name: options.name,\n geoserverUrl: geoserver.getUrl(),\n geoServerAdvanced: geoserver.getAdvanced(),\n ...(options.strategy && { strategy: options.strategy }),\n geoserverVendor: options.geoserverVendor\n });\n\n this._loadingCount = 0;\n this._loadedCount = 0;\n\n source.on('featuresloadstart', () => {\n this._loadingCount++;\n if (this._loadingCount === 1 && this.isVisibleByZoom()) {\n showLoading();\n }\n });\n\n source.on(['featuresloadend', 'featuresloaderror'], () => {\n this._loadedCount++;\n if (this._loadingCount === this._loadedCount) {\n this._loadingCount = 0;\n this._loadedCount = 0;\n setTimeout(() => {\n this.dispatchEvent('layerRendered');\n }, 300);\n }\n });\n\n this.setSource(source);\n\n const geoserverOptions = options.geoserverVendor as WfsGeoserverVendor;\n\n Object.keys(geoserverOptions).forEach((param) => {\n source.urlParams.set(param, geoserverOptions[param]);\n });\n }\n\n /**\n * @public\n */\n refresh() {\n const source = this.getSource();\n // Refrescamos el wms\n source.refresh();\n }\n\n /**\n * Use this to update Geoserver Wms Vendors (https://docs.geoserver.org/latest/en/user/services/wms/vendor.html)\n * and other arguements (https://docs.geoserver.org/stable/en/user/services/wms/reference.html#getmap)\n * in all the getMap requests.\n *\n * Example: you can use this to change the style of the WMS, add a custom sld, set a cql_filter, etc.\n *\n * @public\n * @param paramName\n * @param value Use `undefined` or `null` to remove the param\n * @param refresh\n */\n setCustomParam(\n paramName: string,\n value: string = null,\n refresh = true\n ): URLSearchParams {\n const source = this.getSource();\n\n if (value === undefined || value === null) {\n source.urlParams.delete(paramName);\n } else {\n source.urlParams.set(paramName, value);\n }\n\n if (refresh) {\n this.refresh();\n }\n\n return source.urlParams;\n }\n}\n","import TileWMS, { Options as TSOptions } from 'ol/source/TileWMS';\nimport TileState from 'ol/TileState';\nimport { ImageTile } from 'ol';\nimport { ObjectEvent } from 'ol/Object';\n\nimport { WmsGeoserverVendor } from '../../@types';\nimport { parseError, showError } from '../errors';\nimport { I18N } from '../i18n';\nimport { GeoServerAdvanced } from '../../Geoserver';\n\n/**\n * Layer source to retrieve WMS information from geoservers\n * https://docs.geoserver.org/stable/en/user/services/wms/reference.html\n *\n * @extends {ol/source/TieWMS~TileWMS}\n * @param options\n */\nexport default class WmsSource extends TileWMS {\n constructor(options: WmsSourceOptions) {\n super({\n url: options.geoserverUrl,\n serverType: 'geoserver',\n params: {\n SERVICE: 'wms',\n TILED: true,\n LAYERS: options.name,\n EXCEPTIONS: 'application/json',\n ...(options.geoserverVendor && options.geoserverVendor)\n },\n tileLoadFunction: async (tile, src) => {\n const blobToJson = (blob: Blob): any => {\n return new Promise((resolve) => {\n const reader = new FileReader();\n reader.onloadend = () =>\n resolve(JSON.parse(reader.result as string));\n reader.readAsText(blob);\n });\n };\n\n try {\n const response = await fetch(src, {\n headers: options.headers,\n credentials: options.credentials\n });\n\n if (!response.ok) {\n throw new Error('');\n }\n\n let data = await response.blob();\n\n // Check if the response has an error\n if (data.type == 'application/json') {\n const parsedError = await blobToJson(data);\n throw new Error(parseError(parsedError));\n }\n\n ((tile as ImageTile).getImage() as HTMLImageElement).src =\n URL.createObjectURL(data);\n\n tile.setState(TileState.LOADED);\n } catch (err) {\n showError(I18N.errors.geoserver, err, options.name);\n tile.setState(TileState.ERROR);\n }\n },\n ...options\n });\n }\n}\n\n/**\n * **_[interface]_** - Parameters to create a WmsSource\n *\n * @public\n */\nexport interface WmsSourceOptions extends Omit<TSOptions, 'params'> {\n /**\n * Layer name in the GeoServer\n */\n name: string;\n\n /**\n * Url for OWS services. This endpoint will recive the WFS, WFST and WMS requests\n */\n geoserverUrl: string;\n\n /**\n * Advanced options for geoserver requests\n */\n geoServerAdvanced?: GeoServerAdvanced;\n\n /**\n *\n */\n geoserverVendor?: WmsGeoserverVendor;\n\n /**\n * Url headers for GeoServer requests. You can use it to add Authorization credentials\n * https://developer.mozilla.org/en-US/docs/Web/API/Request/headers\n */\n headers?: HeadersInit;\n\n /**\n * Credentials for fetch requests\n * https://developer.mozilla.org/en-US/docs/Web/API/Request/credentials\n */\n credentials?: RequestCredentials;\n}\n","import TileLayer from 'ol/layer/Tile';\nimport { Geometry } from 'ol/geom';\nimport { Feature, MapBrowserEvent } from 'ol';\nimport { GeoJSON } from 'ol/format';\nimport BaseEvent from 'ol/events/Event';\nimport { CombinedOnSignature, EventTypes, OnSignature } from 'ol/Observable';\nimport { EventsKey } from 'ol/events';\nimport { LayerRenderEventTypes } from 'ol/render/EventType';\nimport { BaseLayerObjectEventTypes } from 'ol/layer/Base';\nimport { ObjectEvent } from 'ol/Object';\nimport RenderEvent from 'ol/render/Event';\n\nimport WmsSource from './modules/base/WmsSource';\nimport BaseLayer, { BaseLayerEventTypes } from './modules/base/BaseLayer';\nimport { LayerOptions } from './ol-wfst';\nimport { showLoading } from './modules/loading';\nimport { TransactionType } from './@enums';\nimport { showError } from './modules/errors';\nimport { I18N } from './modules/i18n';\nimport { getMap } from './modules/state';\nimport { Mixin } from 'ts-mixer';\nimport { WmsGeoserverVendor } from './@types';\n\n/**\n * Layer to retrieve WMS information from geoservers\n * https://docs.geoserver.org/stable/en/user/services/wms/reference.html\n *\n * @fires layerRendered\n * @extends {ol/layer/Tile~TileLayer}\n * @param options\n */\nexport default class WmsLayer extends Mixin(BaseLayer, TileLayer<WmsSource>) {\n private _loadingCount = 0;\n private _loadedCount = 0;\n\n public beforeTransactFeature: (\n feature: Feature<Geometry>,\n transaction: TransactionType\n ) => Feature<Geometry>;\n\n // Formats\n private _formatGeoJSON: GeoJSON;\n\n declare on: OnSignature<EventTypes, BaseEvent, EventsKey> &\n OnSignature<\n | BaseLayerEventTypes\n | BaseLayerObjectEventTypes\n | 'change:source'\n | 'change:preload'\n | 'change:useInterimTilesOnError',\n ObjectEvent,\n EventsKey\n > &\n OnSignature<LayerRenderEventTypes, RenderEvent, EventsKey> &\n CombinedOnSignature<\n | EventTypes\n | BaseLayerEventTypes\n | BaseLayerObjectEventTypes\n | 'change:source'\n | 'change:preload'\n | 'change:useInterimTilesOnError'\n | LayerRenderEventTypes,\n EventsKey\n >;\n declare once: OnSignature<EventTypes, BaseEvent, EventsKey> &\n OnSignature<\n | BaseLayerEventTypes\n | BaseLayerObjectEventTypes\n | 'change:source'\n | 'change:preload'\n | 'change:useInterimTilesOnError',\n ObjectEvent,\n EventsKey\n > &\n OnSignature<LayerRenderEventTypes, RenderEvent, EventsKey> &\n CombinedOnSignature<\n | EventTypes\n | BaseLayerEventTypes\n | BaseLayerObjectEventTypes\n | 'change:source'\n | 'change:preload'\n | 'change:useInterimTilesOnError'\n | LayerRenderEventTypes,\n EventsKey\n >;\n\n declare un: OnSignature<EventTypes, BaseEvent, void> &\n OnSignature<\n | BaseLayerEventTypes\n | BaseLayerObjectEventTypes\n | 'change:source'\n | 'change:preload'\n | 'change:useInterimTilesOnError',\n ObjectEvent,\n void\n > &\n OnSignature<LayerRenderEventTypes, RenderEvent, void> &\n CombinedOnSignature<\n | EventTypes\n | BaseLayerEventTypes\n | BaseLayerObjectEventTypes\n | 'change:source'\n | 'change:preload'\n | 'change:useInterimTilesOnError'\n | LayerRenderEventTypes,\n void\n >;\n\n constructor(options: LayerOptions) {\n super({\n name: options.name,\n label: options.label || options.name,\n minZoom: options.minZoom,\n ...options\n });\n\n if (options.beforeTransactFeature) {\n this.beforeTransactFeature = options.beforeTransactFeature;\n }\n\n this._formatGeoJSON = new GeoJSON();\n\n const geoserver = options.geoserver;\n\n const source = new WmsSource({\n name: options.name,\n geoserverUrl: geoserver.getUrl(),\n geoServerAdvanced: geoserver.getAdvanced(),\n geoserverVendor: options.geoserverVendor as WmsGeoserverVendor\n });\n\n this._loadingCount = 0;\n this._loadedCount = 0;\n\n source.on('tileloadstart', () => {\n this._loadingCount++;\n if (this._loadingCount === 1 && this.isVisibleByZoom()) {\n showLoading();\n }\n });\n\n source.on(['tileloadend', 'tileloaderror'], () => {\n this._loadedCount++;\n if (this._loadingCount === this._loadedCount) {\n this._loadingCount = 0;\n this._loadedCount = 0;\n setTimeout(() => {\n this.dispatchEvent('layerRendered');\n }, 300);\n }\n });\n\n this.setSource(source);\n }\n\n /**\n * Get the features on the click area\n * @param evt\n * @returns\n * @private\n */\n async _getFeaturesByClickEvent(\n evt: MapBrowserEvent<UIEvent>\n ): Promise<Feature<Geometry>[]> {\n const coordinate = evt.coordinate;\n\n const view = getMap().getView();\n\n // Si la vista es lejana, disminumos el buffer\n // Si es cercana, lo aumentamos, por ejemplo, para podeer clickear los vectores\n // y mejorar la sensibilidad en IOS\n const buffer = view.getZoom() > 10 ? 10 : 5;\n\n const source = this.getSource();\n\n // Fallback to support a bad name\n // https://openlayers.org/en/v5.3.0/apidoc/module-ol_source_ImageWMS-ImageWMS.html#getGetFeatureInfoUrl\n const fallbackOl5 =\n 'getFeatureInfoUrl' in source\n ? 'getFeatureInfoUrl'\n : 'getGetFeatureInfoUrl';\n\n const url = source[fallbackOl5](\n coordinate,\n view.getResolution(),\n view.getProjection().getCode(),\n {\n INFO_FORMAT: 'application/json',\n BUFFER: buffer, // Buffer es el \"hit tolerance\" para capas ráster\n FEATURE_COUNT: 1,\n EXCEPTIONS: 'application/json'\n }\n );\n\n const geoserver = this.getGeoserver();\n\n try {\n const response = await fetch(url, {\n headers: geoserver.getHeaders(),\n credentials: geoserver.getCredentials()\n });\n\n if (!response.ok) {\n throw new Error(\n `${I18N.errors.getFeatures} ${response.status}`\n );\n }\n\n const data = await response.json();\n const features = this._formatGeoJSON.readFeatures(data);\n\n return features;\n } catch (err) {\n showError(err.message, err);\n }\n }\n\n /**\n * @public\n */\n refresh() {\n const source = this.getSource();\n\n // Refrescamos el wms\n source.refresh();\n\n // Force refresh the tiles\n const params = source.getParams();\n params.t = new Date().getMilliseconds();\n source.updateParams(params);\n }\n\n /**\n * Use this to update Geoserver Wfs Vendors (https://docs.geoserver.org/latest/en/user/services/wfs/vendor.html)\n * and other arguements (https://docs.geoserver.org/stable/en/user/services/wfs/reference.html)\n * in all the getFeature requests.\n *\n * Example: you can use this to set a cql_filter, limit the numbers of features, etc.\n *\n * @public\n * @param paramName\n * @param value\n * @param refresh\n */\n setCustomParam(\n paramName: string,\n value: string = null,\n refresh = true\n ): URLSearchParams {\n const source = this.getSource();\n\n source.updateParams({\n [paramName]: value\n });\n\n if (refresh) {\n this.refresh();\n }\n\n return source.getParams();\n }\n}\n","export default function createElement(tagName, attrs = {}, ...children) {\n if (typeof tagName === 'function') return tagName(attrs, children);\n\n const elem =\n tagName === null\n ? new DocumentFragment()\n : document.createElement(tagName);\n\n Object.entries(attrs || {}).forEach(([name, value]) => {\n if (\n typeof value !== undefined &&\n value !== null &&\n value !== undefined\n ) {\n if (name.startsWith('on') && name.toLowerCase() in window)\n elem.addEventListener(name.toLowerCase().substr(2), value);\n else {\n if (name === 'className')\n elem.setAttribute('class', value.toString());\n else if (name === 'htmlFor')\n elem.setAttribute('for', value.toString());\n else elem.setAttribute(name, value.toString());\n }\n }\n });\n\n for (const child of children) {\n if (!child) continue;\n if (Array.isArray(child)) elem.append(...child);\n else {\n if (child.nodeType === undefined) elem.innerHTML += child;\n else elem.appendChild(child);\n }\n }\n return elem;\n}\n","var img = \"data:image/svg+xml,%3csvg version='1.1' xmlns='http://www.w3.org/2000/svg' width='512' height='512' viewBox='0 0 512 512'%3e%3cpath d='M240 352h-240v128h480v-128h-240zM448 416h-64v-32h64v32zM112 160l128-128 128 128h-80v160h-96v-160z'%3e%3c/path%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg version='1.1' xmlns='http://www.w3.org/2000/svg' width='768' height='768' viewBox='0 0 768 768'%3e %3cpath d='M663 225l-58.5 58.5-120-120 58.5-58.5q9-9 22.5-9t22.5 9l75 75q9 9 9 22.5t-9 22.5zM96 552l354-354 120 120-354 354h-120v-120z'%3e%3c/path%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg version='1.1' xmlns='http://www.w3.org/2000/svg' width='768' height='768' viewBox='0 0 768 768'%3e%3cpath d='M384 288q39 0 67.5 28.5t28.5 67.5-28.5 67.5-67.5 28.5-67.5-28.5-28.5-67.5 28.5-67.5 67.5-28.5zM384 544.5q66 0 113.25-47.25t47.25-113.25-47.25-113.25-113.25-47.25-113.25 47.25-47.25 113.25 47.25 113.25 113.25 47.25zM384 144q118.5 0 214.5 66t138 174q-42 108-138 174t-214.5 66-214.5-66-138-174q42-108 138-174t214.5-66z'%3e%3c/path%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg version='1.1' xmlns='http://www.w3.org/2000/svg' width='768' height='768' viewBox='0 0 768 768'%3e%3cpath d='M379.5 288h4.5q39 0 67.5 28.5t28.5 67.5v6zM241.5 313.5q-18 36-18 70.5 0 66 47.25 113.25t113.25 47.25q34.5 0 70.5-18l-49.5-49.5q-12 3-21 3-39 0-67.5-28.5t-28.5-67.5q0-9 3-21zM64.5 136.5l40.5-40.5 567 567-40.5 40.5q-7.5-7.5-47.25-46.5t-60.75-60q-64.5 27-139.5 27-118.5 0-214.5-66t-138-174q16.5-39 51.75-86.25t68.25-72.75q-18-18-50.25-51t-36.75-37.5zM384 223.5q-30 0-58.5 12l-69-69q58.5-22.5 127.5-22.5 118.5 0 213.75 66t137.25 174q-36 88.5-109.5 151.5l-93-93q12-28.5 12-58.5 0-66-47.25-113.25t-113.25-47.25z'%3e%3c/path%3e%3c/svg%3e\";\n export default img;","import { Observable } from 'ol';\nimport { SelectEvent } from 'ol/interaction/Select';\n\nimport { Options, WfsLayer, WmsLayer } from '../ol-wfst';\nimport myPragma from '../myPragma';\n\nimport uploadSvg from '../assets/images/upload.svg';\nimport drawSvg from '../assets/images/draw.svg';\nimport visibilityOn from '../assets/images/visibilityOn.svg';\nimport visibilityOff from '../assets/images/visibilityOff.svg';\n\nimport { GeometryType } from '../@enums';\nimport {\n getActiveLayerToInsertEls,\n getStoredMapLayers,\n setActiveLayerToInsertEls\n} from './state';\nimport { I18N } from './i18n';\nimport Uploads from './Uploads';\nimport { BaseLayerProperty } from './base/BaseLayer';\n\n/**\n * Removes in the DOM the class of the tools\n * @private\n */\nexport const resetStateButtons = (): void => {\n const activeBtn = document.querySelector(\n '.ol-wfst--tools-control-btn.wfst--active'\n );\n if (activeBtn) {\n activeBtn.classList.remove('wfst--active');\n }\n};\n\nexport const activateModeButtons = () => {\n const btn = document.querySelector('.ol-wfst--tools-control-btn-edit');\n if (btn) {\n btn.classList.add('wfst--active');\n }\n};\n\nexport const activateDrawButton = () => {\n const btn = document.querySelector('.ol-wfst--tools-control-btn-draw');\n if (btn) {\n btn.classList.add('wfst--active');\n }\n};\n\nexport const visibleLayer = (bool = true) => {\n const btn = document.querySelector('.ol-wfst--tools-control-btn-draw');\n if (btn) {\n btn.classList.add('wfst--active');\n }\n};\n\nexport default class LayersControl extends Observable {\n protected _uploads: Uploads;\n protected _uploadFormats: Options['uploadFormats'];\n\n constructor(uploads: Uploads, uploadFormats: Options['uploadFormats']) {\n super();\n\n this._uploads = uploads;\n this._uploadFormats = uploadFormats;\n }\n\n /**\n *\n * @param layer\n * @public\n */\n addLayerEl(layer: WfsLayer | WmsLayer) {\n const container = document.querySelector(\n '.wfst--tools-control--select-layers'\n );\n\n const layerName = layer.get(BaseLayerProperty.NAME) as string;\n const checked =\n layer === getActiveLayerToInsertEls() ? { checked: 'checked' } : {};\n\n const input = (\n <input\n value={layerName}\n id={`wfst--${layerName}`}\n type=\"radio\"\n className=\"ol-wfst--tools-control-input\"\n name=\"wfst--select-layer\"\n {...checked}\n onchange={(evt) => this._layerChangeHandler(evt, layer)}\n />\n );\n\n const layerDom = (\n <div\n className={`wfst--layer-control \n ${layer.getVisible() ? 'ol-wfst--visible-on' : ''}\n ${\n layer === getActiveLayerToInsertEls()\n ? 'ol-wfst--selected-on'\n : ''\n }`}\n data-layer={layerName}\n >\n <div className=\"ol-wfst--tools-control-visible\">\n <span\n className=\"ol-wfst--tools-control-visible-btn ol-wfst--visible-btn-on\"\n title={I18N.labels.toggleVisibility}\n onclick={(evt) => this._visibilityClickHandler(evt)}\n >\n <img src={visibilityOn} />\n </span>\n <span\n className=\"ol-wfst--tools-control-visible-btn ol-wfst--visible-btn-off\"\n title={I18N.labels.toggleVisibility}\n onclick={(evt) => this._visibilityClickHandler(evt)}\n >\n <img src={visibilityOff} />\n </span>\n </div>\n <label htmlFor={`wfst--${layerName}`}>\n {input}\n <span\n title={layer.getDescribeFeatureType()._parsed.geomType}\n >\n {layer.get(BaseLayerProperty.LABEL)}\n </span>\n </label>\n </div>\n );\n\n container.appendChild(layerDom);\n\n if (layer === getActiveLayerToInsertEls()) {\n input.dispatchEvent(new Event('change'));\n }\n\n return layerDom;\n }\n\n /**\n * Update geom Types availibles to select for this layer\n *\n * @param layerName\n * @param geomDrawTypeSelected\n * @private\n */\n _changeStateSelect(\n layer: WmsLayer | WfsLayer,\n geomDrawTypeSelected: GeometryType = null\n ): GeometryType {\n /**\n * Set the geometry type in the select according to the geometry of\n * the layer in the geoserver and disable what does not correspond.\n *\n * @param value\n * @param options\n * @private\n */\n const setSelectState = (\n value: GeometryType,\n options: Array<string> | 'all'\n ): void => {\n Array.from(selectDraw.options).forEach(\n (option: HTMLOptionElement) => {\n option.selected = option.value === value ? true : false;\n option.disabled =\n options === 'all'\n ? false\n : options.includes(option.value)\n ? false\n : true;\n option.title = option.disabled\n ? I18N.labels.geomTypeNotSupported\n : '';\n }\n );\n };\n\n const selectDraw = document.querySelector(\n '.wfst--tools-control--select-draw'\n ) as HTMLSelectElement;\n\n let drawType: GeometryType;\n\n if (selectDraw) {\n const geomLayer = layer.getDescribeFeatureType()._parsed.geomType;\n\n if (geomDrawTypeSelected) {\n drawType = selectDraw.value as GeometryType;\n } else {\n if (geomLayer === GeometryType.GeometryCollection) {\n drawType = GeometryType.LineString; // Default drawing type for GeometryCollection\n setSelectState(drawType, 'all');\n } else if (geomLayer === GeometryType.LinearRing) {\n drawType = GeometryType.LineString; // Default drawing type for GeometryCollection\n setSelectState(drawType, [\n GeometryType.Circle,\n GeometryType.LinearRing,\n GeometryType.Polygon\n ]);\n selectDraw.value = drawType;\n } else {\n drawType = geomLayer;\n setSelectState(drawType, [geomLayer]);\n }\n }\n }\n\n return drawType;\n }\n\n _visibilityClickHandler(evt) {\n const btn = evt.currentTarget;\n const parentDiv = btn.closest('.wfst--layer-control') as HTMLElement;\n const layerName = parentDiv.dataset['layer'];\n parentDiv.classList.toggle('ol-wfst--visible-on');\n const layer = getStoredMapLayers()[layerName];\n if (parentDiv.classList.contains('ol-wfst--visible-on')) {\n layer.setVisible(true);\n } else {\n layer.setVisible(false);\n }\n }\n\n _layerChangeHandler(evt, layer) {\n const radioInput = evt.currentTarget;\n const parentDiv = radioInput.closest(\n '.wfst--layer-control'\n ) as HTMLElement;\n\n // Deselect DOM previous layer\n const selected = document.querySelector('.ol-wfst--selected-on');\n\n if (selected) selected.classList.remove('ol-wfst--selected-on');\n\n // Select this layer\n parentDiv.classList.add('ol-wfst--selected-on');\n setActiveLayerToInsertEls(layer);\n this._changeStateSelect(layer);\n }\n\n render(): HTMLElement {\n return (\n <>\n <div className=\"wfst--tools-control--head\">\n {this._uploads && (\n <div>\n <input\n id=\"ol-wfst--upload\"\n type=\"file\"\n accept={this._uploadFormats}\n onchange={(evt: InputEvent) =>\n this._uploads.process(evt)\n }\n />\n <label\n className=\"ol-wfst--tools-control-btn ol-wfst--tools-control-btn-upload\"\n htmlFor=\"ol-wfst--upload\"\n title={I18N.labels.uploadToLayer}\n >\n <img src={uploadSvg} />\n </label>\n </div>\n )}\n <div className=\"ol-wfst--tools-control-draw-cnt\">\n <button\n className=\"ol-wfst--tools-control-btn ol-wfst--tools-control-btn-draw\"\n type=\"button\"\n title={I18N.labels.addElement}\n onclick={() => {\n this.dispatchEvent('drawMode');\n }}\n >\n <img src={drawSvg} />\n </button>\n <select\n title={I18N.labels.selectDrawType}\n className=\"wfst--tools-control--select-draw\"\n onchange={(evt: SelectEvent) => {\n const selectedValue = evt.target\n .value as GeometryType;\n this._changeStateSelect(\n getActiveLayerToInsertEls(),\n selectedValue\n );\n this.dispatchEvent('changeGeom');\n }}\n >\n {[\n GeometryType.Point,\n GeometryType.MultiPoint,\n GeometryType.LineString,\n GeometryType.MultiLineString,\n GeometryType.Polygon,\n GeometryType.MultiPolygon,\n GeometryType.Circle\n ].map((type) => {\n // Show all options, but enable only the accepted ones\n return <option value={type}>{type}</option>;\n })}\n </select>\n </div>\n </div>\n <div className=\"wfst--tools-control--select-layers\"></div>\n </>\n );\n }\n}\n","import VectorLayer from 'ol/layer/Vector';\nimport VectorSource from 'ol/source/Vector';\n\nlet editLayer = new VectorLayer({\n source: new VectorSource(),\n zIndex: 100\n});\n\nexport const getEditLayer = (): VectorLayer<VectorSource> => {\n return editLayer;\n};\n","// Ol\nimport {\n Geometry,\n LineString,\n MultiLineString,\n MultiPoint,\n MultiPolygon,\n Point,\n Polygon\n} from 'ol/geom';\nimport { Feature, Observable } from 'ol';\nimport { GeoJSON, KML, WFS } from 'ol/format';\n\n// External\nimport Modal from 'modal-vanilla';\n\nimport { Options } from '../ol-wfst';\nimport { showError } from './errors';\nimport { resetStateButtons } from './LayersControl';\nimport { getEditLayer } from './editLayer';\nimport { getActiveLayerToInsertEls, getMap } from './state';\nimport { GeometryType } from '../@enums';\nimport { I18N } from './i18n';\nimport { VectorSourceEvent } from 'ol/source/Vector';\nimport { BaseLayerProperty } from './base/BaseLayer';\n\nexport default class Uploads extends Observable {\n protected _options: Options;\n\n // Formats\n protected _formatWFS: WFS;\n protected _formatGeoJSON: GeoJSON;\n protected _formatKml: KML;\n protected _xs: XMLSerializer;\n\n protected _processUpload: Options['processUpload'];\n\n constructor(options: Options) {\n super();\n\n this._options = options;\n\n this._processUpload = options.processUpload;\n\n // Formats\n this._formatWFS = new WFS();\n\n this._formatGeoJSON = new GeoJSON();\n this._formatKml = new KML({\n extractStyles: false,\n showPointNames: false\n });\n this._xs = new XMLSerializer();\n }\n\n /**\n * Parse and check geometry of uploaded files\n *\n * @param evt\n * @public\n */\n async process(evt: Event): Promise<void> {\n const map = getMap();\n const view = map.getView();\n\n const file = (evt.target as HTMLInputElement).files[0];\n\n let features: Array<Feature<Geometry>>;\n\n if (!file) {\n return;\n }\n\n const extension = file.name.split('.').pop().toLowerCase();\n\n try {\n // If the user uses a custom fucntion...\n if (this._processUpload) {\n features = this._processUpload(file);\n }\n\n // If the user functions return features, we dont process anything more\n if (!features) {\n const string = await this._fileReader(file);\n\n if (extension === 'geojson' || extension === 'json') {\n features = this._formatGeoJSON.readFeatures(string, {\n featureProjection: view.getProjection().getCode()\n });\n } else if (extension === 'kml') {\n features = this._formatKml.readFeatures(string, {\n featureProjection: view.getProjection().getCode()\n });\n } else {\n showError(I18N.errors.badFormat);\n }\n }\n\n let invalidFeaturesCount = 0;\n let validFeaturesCount = 0;\n\n const featuresToInsert: Array<Feature<Geometry>> = [];\n\n for (let feature of features) {\n // If the geometry doesn't correspond to the layer, try to fixit.\n // If we can't, don't use it\n if (!this._checkGeometry(feature)) {\n feature = this._fixGeometry(feature);\n }\n\n if (feature) {\n featuresToInsert.push(feature);\n validFeaturesCount++;\n } else {\n invalidFeaturesCount++;\n continue;\n }\n }\n\n if (!validFeaturesCount) {\n showError(I18N.errors.noValidGeometry);\n } else {\n resetStateButtons();\n\n this.dispatchEvent(\n new VectorSourceEvent(\n 'loadedFeatures',\n null,\n featuresToInsert\n )\n );\n\n const content = `\n ${I18N.labels.validFeatures}: ${validFeaturesCount}<br>\n ${\n invalidFeaturesCount\n ? `${I18N.labels.invalidFeatures}: ${invalidFeaturesCount}`\n : ''\n }`;\n\n this._initModal(content, featuresToInsert);\n }\n\n // Reset the input to allow another onChange trigger\n (evt.target as HTMLInputElement).value = null;\n } catch (err) {\n showError(I18N.errors.badFile, err);\n }\n }\n\n /**\n * Read data file\n * @param file\n * @public\n */\n async _fileReader(file: File): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n\n reader.addEventListener('load', async (e) => {\n const fileData = e.target.result;\n resolve(fileData as string);\n });\n\n reader.addEventListener('error', (err) => {\n console.error('Error' + err);\n reject();\n });\n reader.readAsText(file);\n });\n }\n\n /**\n * Attemp to change the geometry feature to the layer\n * @param feature\n * @private\n */\n _fixGeometry(feature: Feature<Geometry>): Feature<Geometry> {\n // Geometry of the layer\n const geomTypeLayer =\n getActiveLayerToInsertEls().getDescribeFeatureType()._parsed\n .geomType;\n const geomTypeFeature = feature.getGeometry().getType();\n let geom: Geometry;\n\n switch (geomTypeFeature) {\n case GeometryType.Point: {\n if (geomTypeLayer === GeometryType.MultiPoint) {\n const coords = (\n feature.getGeometry() as Point\n ).getCoordinates();\n geom = new MultiPoint([coords]);\n }\n break;\n }\n\n case GeometryType.LineString:\n if (geomTypeLayer === GeometryType.MultiLineString) {\n const coords = (\n feature.getGeometry() as LineString\n ).getCoordinates();\n geom = new MultiLineString([coords]);\n }\n break;\n\n case GeometryType.Polygon:\n if (geomTypeLayer === GeometryType.MultiPolygon) {\n const coords = (\n feature.getGeometry() as Polygon\n ).getCoordinates();\n geom = new MultiPolygon([coords]);\n }\n break;\n default:\n geom = null;\n }\n\n if (!geom) {\n return null;\n }\n\n feature.setGeometry(geom);\n return feature;\n }\n\n /**\n * Check if the feature has the same geometry as the target layer\n * @param feature\n * @private\n */\n _checkGeometry(feature: Feature<Geometry>): boolean {\n // Geometry of the layer\n const geomTypeLayer =\n getActiveLayerToInsertEls().getDescribeFeatureType()._parsed\n .geomType;\n const geomTypeFeature = feature.getGeometry().getType();\n\n // This geom accepts every type of geometry\n if (geomTypeLayer === GeometryType.GeometryCollection) {\n return true;\n }\n\n return geomTypeFeature === geomTypeLayer;\n }\n\n /**\n * Confirm modal before transact to the GeoServer the features in the file\n *\n * @param content\n * @param featuresToInsert\n * @private\n */\n _initModal(\n content: string,\n featuresToInsert: Array<Feature<Geometry>>\n ): void {\n const footer = `\n <button type=\"button\" class=\"btn btn-sm btn-secondary\" data-dismiss=\"modal\">\n ${I18N.labels.cancel}\n </button>\n <button type=\"button\" class=\"btn btn-sm btn-primary\" data-action=\"save\" data-dismiss=\"modal\">\n ${I18N.labels.upload}\n </button>\n `;\n\n const modal = new Modal({\n ...this._options.modal,\n header: true,\n headerClose: false,\n title:\n I18N.labels.uploadFeatures +\n ' ' +\n getActiveLayerToInsertEls().get(BaseLayerProperty.NAME),\n content: content,\n backdrop: 'static', // Prevent close on click outside the modal\n footer: footer\n }).show();\n\n modal.on('dismiss', (modal, event) => {\n // On saving changes\n if (event.target.dataset.action === 'save') {\n this.dispatchEvent(\n new VectorSourceEvent(\n 'addedFeatures',\n null,\n featuresToInsert\n )\n );\n } else {\n // On cancel button\n getEditLayer().getSource().clear();\n }\n });\n }\n}\n","/**\n * @param target\n * @param sources\n * @returns\n */\nexport const deepObjectAssign = (target, ...sources) => {\n sources.forEach((source) => {\n Object.keys(source).forEach((key) => {\n const s_val = source[key];\n const t_val = target[key];\n target[key] =\n t_val &&\n s_val &&\n typeof t_val === 'object' &&\n typeof s_val === 'object' &&\n !Array.isArray(t_val) // Don't merge arrays\n ? deepObjectAssign(t_val, s_val)\n : s_val;\n });\n });\n return target;\n};\n","import { I18N } from './modules/i18n';\nimport { Options } from './ol-wfst';\n\nexport const DEFAULT_LANGUAGE = 'en';\n\nexport const getDefaultOptions = (): Options => {\n return {\n layers: null,\n evtType: 'singleclick',\n active: true,\n showControl: true,\n language: DEFAULT_LANGUAGE,\n uploadFormats: '.geojson,.json,.kml',\n processUpload: null,\n modal: {\n animateClass: 'fade',\n animateInClass: 'show',\n transition: 300,\n backdropTransition: 150,\n templates: {\n dialog: '<div class=\"modal-dialog modal-dialog-centered\"></div>',\n headerClose: `<button type=\"button\" class=\"btn-close\" data-dismiss=\"modal\" aria-label=\"${I18N.labels.close}\"><span aria-hidden=\"true\">×</span></button>`\n }\n }\n };\n};\n","import { Feature } from 'ol';\nimport { Geometry } from 'ol/geom';\nimport { Control } from 'ol/control';\nimport { VectorSourceEvent } from 'ol/source/Vector';\nimport { CombinedOnSignature, EventTypes, OnSignature } from 'ol/Observable';\nimport BaseEvent from 'ol/events/Event';\nimport { EventsKey } from 'ol/events';\nimport { ObjectEvent } from 'ol/Object';\nimport { Types as ObjectEventTypes } from 'ol/ObjectEventType';\n\nimport myPragma from '../myPragma';\nimport { I18N } from './i18n';\n\ntype ChangesEventTypes = 'cancel' | 'apply' | 'delete';\n\nexport default class EditControlChangesEl extends Control {\n declare on: OnSignature<EventTypes, BaseEvent, EventsKey> &\n OnSignature<ChangesEventTypes, VectorSourceEvent, EventsKey> &\n OnSignature<ObjectEventTypes, ObjectEvent, EventsKey> &\n CombinedOnSignature<\n ChangesEventTypes | ObjectEventTypes | EventTypes,\n EventsKey\n >;\n\n declare once: OnSignature<EventTypes, BaseEvent, EventsKey> &\n OnSignature<ChangesEventTypes, VectorSourceEvent, EventsKey> &\n OnSignature<ObjectEventTypes, ObjectEvent, EventsKey> &\n CombinedOnSignature<\n ChangesEventTypes | ObjectEventTypes | EventTypes,\n EventsKey\n >;\n\n declare un: OnSignature<EventTypes, BaseEvent, void> &\n OnSignature<ChangesEventTypes, VectorSourceEvent, EventsKey> &\n OnSignature<ObjectEventTypes, ObjectEvent, void> &\n CombinedOnSignature<\n ChangesEventTypes | ObjectEventTypes | EventTypes,\n void\n >;\n\n constructor(feature: Feature<Geometry>) {\n super({\n element: (\n <div className=\"ol-wfst--changes-control\">\n <div className=\"ol-wfst--changes-control-el\">\n <div className=\"ol-wfst--changes-control-id\">\n <b>{I18N.labels.editMode}</b> -{' '}\n <i>{String(feature.getId())}</i>\n </div>\n <button\n type=\"button\"\n className=\"btn btn-sm btn-secondary\"\n onclick={() => {\n this.dispatchEvent(\n new VectorSourceEvent('cancel', feature)\n );\n }}\n >\n {I18N.labels.cancel}\n </button>\n <button\n type=\"button\"\n className=\"btn btn-sm btn-primary\"\n onclick={() => {\n this.dispatchEvent(\n new VectorSourceEvent('apply', feature)\n );\n }}\n >\n {I18N.labels.apply}\n </button>\n <button\n type=\"button\"\n className=\"btn btn-sm btn-danger-outline\"\n onclick={() => {\n this.dispatchEvent(\n new VectorSourceEvent('delete', feature)\n );\n }}\n >\n {I18N.labels.delete}\n </button>\n </div>\n </div>\n )\n });\n }\n}\n","// Ol\nimport {\n Geometry,\n GeometryCollection,\n LineString,\n MultiLineString,\n MultiPoint,\n MultiPolygon,\n Polygon\n} from 'ol/geom';\nimport { Circle as CircleStyle, Fill, Stroke, Style } from 'ol/style';\nimport { Feature } from 'ol';\nimport { FeatureLike } from 'ol/Feature';\nimport { Coordinate } from 'ol/coordinate';\n\nimport { GeometryType } from '../@enums';\nimport { getMode, Modes } from './state';\n\n/**\n * Master style that handles two modes on the Edit Layer:\n * - one is the basic, showing only the vertices\n * - and the other when modify is active, showing bigger vertices\n *\n * @param feature\n * @private\n */\nexport default function styleFunction(\n feature: Feature<Geometry>\n): Array<Style> {\n const getVertexs = (feature: FeatureLike) => {\n let geometry = feature.getGeometry();\n\n if (geometry instanceof GeometryCollection) {\n geometry = geometry.getGeometries()[0];\n }\n\n const coordinates = (geometry as LineString).getCoordinates();\n let flatCoordinates: Coordinate[] | number[] = null;\n\n if (\n geometry instanceof Polygon ||\n geometry instanceof MultiLineString\n ) {\n flatCoordinates = coordinates.flat(1);\n } else if (geometry instanceof MultiPolygon) {\n flatCoordinates = coordinates.flat(2);\n } else {\n flatCoordinates = coordinates;\n }\n\n if (!flatCoordinates || !flatCoordinates.length) {\n return;\n }\n\n return new MultiPoint(flatCoordinates as Coordinate[]);\n };\n\n let geometry = feature.getGeometry();\n let type = geometry.getType();\n\n if (geometry instanceof GeometryCollection) {\n geometry = geometry.getGeometries()[0];\n type = geometry.getType();\n }\n\n switch (type) {\n case GeometryType.Point:\n case GeometryType.MultiPoint:\n if (getMode() === Modes.Edit) {\n return [\n new Style({\n image: new CircleStyle({\n radius: 6,\n fill: new Fill({\n color: '#000000'\n })\n })\n }),\n new Style({\n image: new CircleStyle({\n radius: 4,\n fill: new Fill({\n color: '#ff0000'\n })\n })\n })\n ];\n } else {\n return [\n new Style({\n image: new CircleStyle({\n radius: 5,\n fill: new Fill({\n color: '#ff0000'\n })\n })\n }),\n new Style({\n image: new CircleStyle({\n radius: 2,\n fill: new Fill({\n color: '#000000'\n })\n })\n })\n ];\n }\n default:\n // If editing mode is active, show bigger vertex\n if (getMode() == Modes.Draw || getMode() == Modes.Edit) {\n return [\n new Style({\n stroke: new Stroke({\n color: 'rgba( 255, 0, 0, 1)',\n width: 4\n }),\n fill: new Fill({\n color: 'rgba(255, 0, 0, 0.7)'\n })\n }),\n new Style({\n image: new CircleStyle({\n radius: 4,\n fill: new Fill({\n color: '#ff0000'\n }),\n stroke: new Stroke({\n width: 2,\n color: 'rgba(5, 5, 5, 0.9)'\n })\n }),\n geometry: (feature) => getVertexs(feature)\n }),\n new Style({\n stroke: new Stroke({\n color: 'rgba(255, 255, 255, 0.7)',\n width: 2\n })\n })\n ];\n } else {\n return [\n new Style({\n image: new CircleStyle({\n radius: 2,\n fill: new Fill({\n color: '#000000'\n })\n }),\n geometry: (feature) => getVertexs(feature)\n }),\n new Style({\n stroke: new Stroke({\n color: '#ff0000',\n width: 4\n }),\n fill: new Fill({\n color: 'rgba(255, 0, 0, 0.7)'\n })\n })\n ];\n }\n }\n}\n","// Ol\nimport { Feature, Observable } from 'ol';\nimport { Geometry } from 'ol/geom';\n\n// External\nimport Modal from 'modal-vanilla';\n\nimport { addFeatureToEditedList, getStoredLayer } from './state';\nimport { Options } from '../ol-wfst';\nimport { I18N } from './i18n';\nimport { VectorSourceEvent } from 'ol/source/Vector';\n\n/**\n * Shows a fields form in a modal window to allow changes in the properties of the feature.\n *\n * @param feature\n * @private\n */\nexport class EditFieldsModal extends Observable {\n protected _options: Options['modal'];\n protected _modal: Modal;\n protected _feature: Feature;\n\n constructor(options: Options['modal']) {\n super();\n\n this._options = options;\n\n const footer = `\n <button type=\"button\" class=\"btn btn-sm btn-link btn-third\" data-action=\"delete\" data-dismiss=\"modal\">\n ${I18N.labels.delete}\n </button>\n <button type=\"button\" class=\"btn btn-sm btn-secondary\" data-dismiss=\"modal\">\n ${I18N.labels.cancel}\n </button>\n <button type=\"button\" class=\"btn btn-sm btn-primary\" data-action=\"save\" data-dismiss=\"modal\">\n ${I18N.labels.save}\n </button>\n `;\n\n this._modal = new Modal({\n ...this._options,\n header: true,\n headerClose: true,\n title: '',\n content: '<div></div>',\n footer: footer\n });\n\n this._modal.on('dismiss', (modal, event) => {\n // On saving changes\n if (event.target.dataset.action === 'save') {\n const inputs = modal.el.querySelectorAll('input');\n\n inputs.forEach((el: HTMLInputElement) => {\n const value = el.value;\n const field = el.name;\n this._feature.set(field, value, /*isSilent = */ true);\n });\n\n this._feature.changed();\n\n addFeatureToEditedList(this._feature);\n\n this.dispatchEvent(\n new VectorSourceEvent('save', this._feature)\n );\n } else if (event.target.dataset.action === 'delete') {\n this.dispatchEvent(\n new VectorSourceEvent('delete', this._feature)\n );\n }\n });\n }\n\n show(feature: Feature<Geometry>) {\n this._feature = feature;\n\n const title = `${I18N.labels.editElement} ${feature.getId()} `;\n\n const properties = feature.getProperties();\n const layerName = feature.get('_layerName_');\n\n // Data schema from the geoserver\n const layer = getStoredLayer(layerName);\n const dataSchema = layer.getDescribeFeatureType()._parsed.properties;\n\n let content = '<form autocomplete=\"false\">';\n Object.keys(properties).forEach((key) => {\n // If the feature field exists in the geoserver and is not added by openlayers\n const field = dataSchema.find((data) => data.name === key);\n\n if (field) {\n const typeXsd = field.type;\n let type;\n\n switch (typeXsd) {\n case 'xsd:string':\n type = 'text';\n break;\n case 'xsd:number':\n case 'xsd:int':\n type = 'number';\n break;\n case 'xsd:date-time':\n type = 'datetime';\n break;\n default:\n type = 'text';\n }\n\n if (type) {\n content += `\n <div class=\"ol-wfst--input-field-container\">\n <label class=\"ol-wfst--input-field-label\" for=\"${key}\">${key}</label>\n <input placeholder=\"NULL\" class=\"ol-wfst--input-field-input\" type=\"${type}\" name=\"${key}\" value=\"${\n properties[key] || ''\n }\">\n </div>`;\n }\n }\n });\n\n content += '</form>';\n\n this._modal._html.body.innerHTML = content;\n this._modal._html.header.innerHTML = title;\n this._modal.show();\n }\n}\n","// Ol\nimport BaseObject, { ObjectEvent } from 'ol/Object';\nimport { Types as ObjectEventTypes } from 'ol/ObjectEventType';\n\nimport { ProjectionLike } from 'ol/proj';\nimport { Circle, Geometry, GeometryCollection } from 'ol/geom';\nimport { Feature } from 'ol';\nimport { GeoJSON, KML, WFS } from 'ol/format';\nimport { State } from 'ol/source/Source';\nimport { fromCircle } from 'ol/geom/Polygon';\nimport BaseEvent from 'ol/events/Event';\n\nimport { showLoading } from './modules/loading';\nimport { showError } from './modules/errors';\nimport {\n getMap,\n getStoredLayer,\n removeFeatureFromEditList\n} from './modules/state';\nimport { getEditLayer } from './modules/editLayer';\nimport { deepObjectAssign } from './modules/helpers';\nimport { I18N } from './modules/i18n';\nimport { GeometryType, TransactionType } from './@enums';\nimport { CombinedOnSignature, EventTypes, OnSignature } from 'ol/Observable';\nimport { EventsKey } from 'ol/events';\nimport { TransactionResponse } from 'ol/format/WFS';\n\n// https://docs.geoserver.org/latest/en/user/services/wfs/axis_order.html\n// Axis ordering: latitude/longitude\nconst DEFAULT_GEOSERVER_SRS = 'EPSG:3857';\n\n/**\n * @fires change:capabilities\n * @extends {ol/Object~BaseObject}\n * @param options\n */\nexport default class Geoserver extends BaseObject {\n protected _options: GeoserverOptions;\n\n protected _countRequests: number;\n protected _insertFeatures: Array<Feature<Geometry>>;\n protected _updateFeatures: Array<Feature<Geometry>>;\n protected _deleteFeatures: Array<Feature<Geometry>>;\n\n // Formats\n protected _formatWFS: WFS;\n protected _formatGeoJSON: GeoJSON;\n protected _formatKml: KML;\n protected _xs: XMLSerializer;\n\n protected state_: State;\n\n declare on: OnSignature<EventTypes, BaseEvent, EventsKey> &\n OnSignature<\n GeoserverEventTypes | ObjectEventTypes,\n ObjectEvent,\n EventsKey\n > &\n CombinedOnSignature<\n GeoserverEventTypes | ObjectEventTypes | EventTypes,\n EventsKey\n >;\n\n declare once: OnSignature<EventTypes, BaseEvent, EventsKey> &\n OnSignature<\n GeoserverEventTypes | ObjectEventTypes,\n ObjectEvent,\n EventsKey\n > &\n CombinedOnSignature<\n GeoserverEventTypes | ObjectEventTypes | EventTypes,\n EventsKey\n >;\n\n declare un: OnSignature<EventTypes, BaseEvent, void> &\n OnSignature<GeoserverEventTypes | ObjectEventTypes, ObjectEvent, void> &\n CombinedOnSignature<\n GeoserverEventTypes | ObjectEventTypes | EventTypes,\n void\n >;\n\n constructor(options: GeoserverOptions) {\n super();\n\n const defaults = {\n url: null,\n advanced: {\n getCapabilitiesVersion: '1.3.0',\n getFeatureVersion: '1.0.0',\n describeFeatureTypeVersion: '1.1.0',\n lockFeatureVersion: '1.1.0',\n wfsTransactionVersion: '1.1.0',\n projection: DEFAULT_GEOSERVER_SRS,\n lockFeatureParams: {\n expiry: 5, // minutes\n lockId: 'GeoServer',\n releaseAction: 'SOME'\n }\n },\n headers: {},\n credentials: 'same-origin',\n useLockFeature: true\n };\n\n this._options = deepObjectAssign(defaults, options);\n\n this.setAdvanced(this._options.advanced);\n this.setHeaders(this._options.headers);\n this.setCredentials(this._options.credentials);\n this.setUrl(this._options.url);\n this.setUseLockFeature(this._options.useLockFeature);\n\n this._countRequests = 0;\n\n this._insertFeatures = [];\n this._updateFeatures = [];\n this._deleteFeatures = [];\n\n // Formats\n this._formatWFS = new WFS();\n\n this._formatGeoJSON = new GeoJSON();\n this._formatKml = new KML({\n extractStyles: false,\n showPointNames: false\n });\n this._xs = new XMLSerializer();\n\n this.getAndUpdateCapabilities();\n\n this.on('change:capabilities', () => {\n this._checkGeoserverCapabilities();\n });\n }\n\n /**\n *\n * @returns\n * @public\n */\n getCapabilities(): XMLDocument {\n return this.get(GeoserverProperty.CAPABILITIES);\n }\n\n /**\n *\n * @param url\n * @param opt_silent\n * @public\n */\n setUrl(url: string, opt_silent = false): void {\n this.set(GeoserverProperty.URL, url, opt_silent);\n }\n\n /**\n *\n * @returns\n */\n getUrl(): string {\n return this.get(GeoserverProperty.URL);\n }\n\n /**\n *\n * @param headers\n * @param opt_silent\n * @returns\n * @public\n */\n setHeaders(headers: HeadersInit = {}, opt_silent = false): void {\n return this.set(GeoserverProperty.HEADERS, headers, opt_silent);\n }\n\n /**\n *\n * @returns\n * @public\n */\n getHeaders(): HeadersInit {\n return this.get(GeoserverProperty.HEADERS);\n }\n\n /**\n *\n * @param credentials\n * @param opt_silent\n * @public\n */\n setCredentials(\n credentials: RequestCredentials = null,\n opt_silent = false\n ): void {\n this.set(GeoserverProperty.CREDENTIALS, credentials, opt_silent);\n }\n\n /**\n *\n * @returns\n * @public\n */\n getCredentials(): RequestCredentials {\n return this.get(GeoserverProperty.CREDENTIALS);\n }\n\n /**\n *\n * @returns\n * @public\n */\n setAdvanced(advanced: GeoServerAdvanced = {}, opt_silent = false): void {\n this.set(GeoserverProperty.ADVANCED, advanced, opt_silent);\n }\n\n /**\n *\n * @returns\n * @public\n */\n getAdvanced(): GeoServerAdvanced {\n return this.get(GeoserverProperty.ADVANCED);\n }\n\n /**\n *\n * @returns\n * @public\n */\n hasTransaction(): boolean {\n return this.get(GeoserverProperty.HASTRASNACTION);\n }\n\n /**\n *\n * @returns\n * @public\n */\n hasLockFeature(): boolean {\n return this.get(GeoserverProperty.HASLOCKFEATURE);\n }\n\n /**\n *\n * @returns\n * @public\n */\n getUseLockFeature(): boolean {\n return this.get(GeoserverProperty.USELOCKFEATURE);\n }\n\n /**\n *\n * @returns\n * @public\n */\n setUseLockFeature(useLockFeature: boolean, opt_silent = false): void {\n this.set(GeoserverProperty.USELOCKFEATURE, useLockFeature, opt_silent);\n }\n\n /**\n *\n * @returns\n * @public\n */\n isLoaded(): boolean {\n return this.get(GeoserverProperty.ISLOADED);\n }\n\n /**\n *\n * @returns\n */\n getState() {\n return this.state_;\n }\n\n /**\n * Get the capabilities from the GeoServer and check\n * all the available operations.\n *\n * @fires getcapabilities\n * @public\n */\n async getAndUpdateCapabilities(): Promise<XMLDocument> {\n try {\n const params = new URLSearchParams({\n service: 'wfs',\n version: this.getAdvanced().getCapabilitiesVersion,\n request: 'GetCapabilities',\n exceptions: 'application/json'\n });\n\n const url_fetch = this.getUrl() + '?' + params.toString();\n\n const response = await fetch(url_fetch, {\n headers: this.getHeaders(),\n credentials: this.getCredentials()\n });\n\n if (!response.ok) {\n throw new Error('');\n }\n\n const data = await response.text();\n const capabilities = new window.DOMParser().parseFromString(\n data,\n 'text/xml'\n );\n\n this.set(GeoserverProperty.CAPABILITIES, capabilities);\n\n this.state_ = capabilities ? 'ready' : 'error';\n\n return capabilities;\n } catch (err) {\n console.error(err);\n const msg =\n typeof err === 'string' ? err : I18N.errors.capabilities;\n showError(msg, err);\n }\n }\n\n /**\n *\n * @private\n */\n _checkGeoserverCapabilities() {\n // Available operations in the geoserver\n const operations: HTMLCollectionOf<Element> =\n this.getCapabilities().getElementsByTagName('ows:Operation');\n\n Array.from(operations).forEach((operation) => {\n if (operation.getAttribute('name') === 'Transaction') {\n this.set(GeoserverProperty.HASTRASNACTION, true);\n } else if (operation.getAttribute('name') === 'LockFeature') {\n this.set(GeoserverProperty.HASLOCKFEATURE, true);\n } else if (\n operation.getAttribute('name') === 'DescribeFeatureType'\n ) {\n this.set(GeoserverProperty.HASDESCRIBEFEATURETYPE, true);\n }\n });\n\n if (!this.hasTransaction()) {\n throw I18N.errors.wfst;\n }\n }\n\n /**\n * Make the WFS Transactions\n *\n * @param transactionType\n * @param features\n * @param layerName\n * @private\n */\n async transact(\n transactionType: TransactionType,\n features: Array<Feature<Geometry>> | Feature<Geometry>,\n layerName: string\n ): Promise<TransactionResponse | false> {\n features = Array.isArray(features) ? features : [features];\n\n const clonedFeatures = [];\n const geoLayer = getStoredLayer(layerName);\n\n for (const feature of features) {\n let clone = this._cloneFeature(feature);\n const cloneGeom = clone.getGeometry();\n\n // Ugly fix to support GeometryCollection on GML\n // See https://github.com/openlayers/openlayers/issues/4220\n if (cloneGeom instanceof GeometryCollection) {\n this._transformGeoemtryCollectionToGeometries(\n clone,\n cloneGeom as GeometryCollection\n );\n } else if (cloneGeom instanceof Circle) {\n // Geoserver has no Support to Circles\n this._transformCircleToPolygon(clone, cloneGeom as Circle);\n }\n\n // Filters\n if (\n 'beforeTransactFeature' in geoLayer &&\n typeof geoLayer.beforeTransactFeature === 'function'\n ) {\n clone = geoLayer.beforeTransactFeature(clone, transactionType);\n }\n\n if (clone) {\n clonedFeatures.push(clone);\n }\n }\n\n if (!clonedFeatures.length) {\n showError(I18N.errors.noValidGeometry);\n return false;\n }\n\n switch (transactionType) {\n case TransactionType.Insert:\n this._insertFeatures = [\n ...this._insertFeatures,\n ...clonedFeatures\n ];\n break;\n case TransactionType.Update:\n this._updateFeatures = [\n ...this._updateFeatures,\n ...clonedFeatures\n ];\n break;\n case TransactionType.Delete:\n this._deleteFeatures = [\n ...this._deleteFeatures,\n ...clonedFeatures\n ];\n break;\n default:\n break;\n }\n\n this._countRequests++;\n const numberRequest = this._countRequests;\n\n return new Promise((resolve, reject) => {\n setTimeout(async () => {\n try {\n // Prevent fire multiples times\n if (numberRequest !== this._countRequests) {\n return;\n }\n\n let srs = getMap().getView().getProjection().getCode();\n\n // Force latitude/longitude order on transactions\n // EPSG:4326 is longitude/latitude (assumption) and is not managed correctly by GML3\n srs =\n srs === 'EPSG:4326'\n ? 'urn:x-ogc:def:crs:EPSG:4326'\n : srs;\n\n const describeFeatureType =\n geoLayer.getDescribeFeatureType()._parsed;\n\n if (!geoLayer) {\n throw new Error(I18N.errors.layerNotFound);\n }\n\n const options = {\n featureNS: describeFeatureType.namespace,\n featureType: layerName,\n srsName: srs,\n featurePrefix: null,\n nativeElements: null,\n version: this.getAdvanced().wfsTransactionVersion\n };\n\n const transaction = this._formatWFS.writeTransaction(\n this._insertFeatures,\n this._updateFeatures,\n this._deleteFeatures,\n options\n );\n\n let payload = this._xs.serializeToString(transaction);\n const geomType = describeFeatureType.geomType;\n const geomField = describeFeatureType.geomField;\n\n // Ugly fix to support GeometryCollection on GML\n // See https://github.com/openlayers/openlayers/issues/4220\n if (geomType === GeometryType.GeometryCollection) {\n if (transactionType === TransactionType.Insert) {\n payload = payload.replace(\n /<geometry>/g,\n `<geometry><MultiGeometry xmlns=\"http://www.opengis.net/gml\" srsName=\"${srs}\"><geometryMember>`\n );\n payload = payload.replace(\n /<\\/geometry>/g,\n `</geometryMember></MultiGeometry></geometry>`\n );\n } else if (transactionType === TransactionType.Update) {\n const gmemberIn = `<MultiGeometry xmlns=\"http://www.opengis.net/gml\" srsName=\"${srs}\"><geometryMember>`;\n const gmemberOut = `</geometryMember></MultiGeometry>`;\n\n payload = payload.replace(\n /(.*)(<Name>geometry<\\/Name><Value>)(.*?)(<\\/Value>)(.*)/g,\n `$1$2${gmemberIn}$3${gmemberOut}$4$5`\n );\n }\n }\n\n // Fixes geometry name, weird bug with GML:\n // The property for the geometry column is always named \"geometry\"\n if (transactionType === TransactionType.Insert) {\n payload = payload.replace(\n /<(\\/?)\\bgeometry\\b>/g,\n `<$1${geomField}>`\n );\n } else {\n payload = payload.replace(\n /<Name>geometry<\\/Name>/g,\n `<Name>${geomField}</Name>`\n );\n }\n\n // This has to be te same used before\n if (\n this.hasLockFeature &&\n this.getUseLockFeature() &&\n transactionType !== TransactionType.Insert\n ) {\n payload = payload.replace(\n `</Transaction>`,\n `<LockId>${this._options.advanced.lockFeatureParams.lockId}</LockId></Transaction>`\n );\n }\n\n const headers = {\n 'Content-Type': 'text/xml',\n ...this.getHeaders()\n };\n\n const response = await fetch(this.getUrl(), {\n method: 'POST',\n body: payload,\n headers: headers,\n credentials: this._options.credentials\n });\n\n if (!response.ok) {\n throw new Error(\n I18N.errors.transaction + ' ' + response.status\n );\n }\n\n const parseResponse =\n this._formatWFS.readTransactionResponse(\n await response.text()\n );\n\n if (!Object.keys(parseResponse).length) {\n const responseStr = await response.text();\n const findError = String(responseStr).match(\n /<ows:ExceptionText>([\\s\\S]*?)<\\/ows:ExceptionText>/\n );\n\n if (findError) {\n throw new Error(findError[1]);\n }\n }\n\n if (transactionType !== TransactionType.Delete) {\n for (const feature of features as Array<\n Feature<Geometry>\n >) {\n getEditLayer().getSource().removeFeature(feature);\n }\n }\n\n const wlayer = getStoredLayer(layerName);\n\n wlayer.refresh();\n\n showLoading(false);\n\n this._insertFeatures = [];\n this._updateFeatures = [];\n this._deleteFeatures = [];\n\n this._countRequests = 0;\n\n resolve(parseResponse);\n } catch (err) {\n showError(err.message, err);\n showLoading(false);\n this._countRequests = 0;\n reject();\n }\n }, 0);\n });\n }\n\n /**\n *\n * @param feature\n * @param geom\n * @private\n */\n _transformCircleToPolygon(feature: Feature<Geometry>, geom: Circle) {\n const geomConverted = fromCircle(geom);\n feature.setGeometry(geomConverted);\n }\n\n /**\n *\n * @param feature\n * @private\n * @param geom\n */\n _transformGeoemtryCollectionToGeometries(\n feature: Feature<Geometry>,\n geom: GeometryCollection\n ) {\n let geomConverted = geom.getGeometries()[0];\n\n if (geomConverted instanceof Circle) {\n geomConverted = fromCircle(geomConverted);\n }\n\n feature.setGeometry(geomConverted);\n }\n\n /**\n *\n * @param feature\n * @returns\n * @private\n */\n _cloneFeature(feature: Feature<Geometry>): Feature<Geometry> {\n removeFeatureFromEditList(feature);\n\n const featureProperties = feature.getProperties();\n\n delete featureProperties.boundedBy;\n delete featureProperties._layerName_;\n\n const clone = new Feature(featureProperties);\n clone.setId(feature.getId());\n\n return clone;\n }\n\n /**\n * Lock a feature in the geoserver. Useful before editing a geometry,\n * to avoid changes from multiples suers\n *\n * @param featureId\n * @param layerName\n * @param retry\n * @public\n */\n async lockFeature(\n featureId: string | number,\n layerName: string,\n retry = 0\n ): Promise<string> {\n const params = new URLSearchParams({\n service: 'wfs',\n version: this.getAdvanced().lockFeatureVersion,\n request: 'LockFeature',\n typeName: layerName,\n expiry: String(this._options.advanced.lockFeatureParams.expiry),\n LockId: this._options.advanced.lockFeatureParams.lockId,\n releaseAction:\n this._options.advanced.lockFeatureParams.releaseAction,\n exceptions: 'application/json',\n featureid: `${featureId}`\n });\n\n const url_fetch = this.getUrl() + '?' + params.toString();\n\n try {\n const response = await fetch(url_fetch, {\n headers: this._options.headers,\n credentials: this._options.credentials\n });\n\n if (!response.ok) {\n throw new Error(I18N.errors.lockFeature);\n }\n\n const data = await response.text();\n\n try {\n // First, check if is a JSON (with errors)\n const dataParsed = JSON.parse(data);\n\n if ('exceptions' in dataParsed) {\n const exceptions = dataParsed.exceptions;\n if (exceptions[0].code === 'CannotLockAllFeatures') {\n // Maybe the Feature is already blocked, ant thats trigger error, so, we try one locking more time again\n if (!retry) {\n this.lockFeature(featureId, layerName, 1);\n } else {\n showError(I18N.errors.lockFeature, exceptions);\n }\n } else {\n showError(exceptions[0].text, exceptions);\n }\n }\n } catch (err) {\n /*\n \n let dataDoc = (new window.DOMParser()).parseFromString(data, 'text/xml');\n \n let lockId = dataDoc.getElementsByTagName('wfs:LockId');\n \n let featuresLocked: HTMLCollectionOf<Element> = dataDoc.getElementsByTagName('ogc:FeatureId');\n \n for (let featureLocked of featuresLocked as any) {\n \n console.log(featureLocked.getAttribute('fid'));\n \n }\n \n */\n }\n\n return data;\n } catch (err) {\n showError(err.message, err);\n }\n }\n}\n\n/**\n * **_[interface]_**\n * @public\n */\nexport interface GeoserverOptions {\n /**\n * Url for OWS services. This endpoint will recive the WFS, WFST and WMS requests\n *\n */\n url: string;\n\n /**\n * Advanced options for geoserver requests\n *\n */\n advanced?: GeoServerAdvanced;\n\n /**\n * Http headers for GeoServer requests\n * https://developer.mozilla.org/en-US/docs/Web/API/Request/headers\n *\n */\n headers?: HeadersInit;\n\n /**\n * Credentials for fetch requests\n * https://developer.mozilla.org/en-US/docs/Web/API/Request/credentials\n *\n * Default is 'same-origin'\n */\n credentials?: RequestCredentials;\n\n /**\n * Use LockFeatue request on GeoServer when selecting features. Prevents a feature from being edited\n * through a persistent feature lock. This is not always supportedd by the GeoServer.\n * See https://docs.geoserver.org/stable/en/user/services/wfs/reference.html\n */\n useLockFeature?: boolean;\n}\n\n/**\n * **_[interface]_**\n *\n * * Default values:\n * ```javascript\n * {\n * getCapabilitiesVersion: '1.3.0',\n * getFeatureVersion: '1.0.0',\n * describeFeatureTypeVersion: '1.1.0',\n * lockFeatureVersion: '1.1.0',\n * wfsTransactionVersion: '1.1.0',\n * projection: 'EPSG:3857',\n * lockFeatureParams: {\n * expiry: 5,\n * lockId: 'Geoserver',\n * releaseAction: 'SOME'\n * }\n * }\n * @public\n */\nexport interface GeoServerAdvanced {\n getCapabilitiesVersion?: string;\n getFeatureVersion?: string;\n lockFeatureVersion?: string;\n describeFeatureTypeVersion?: string;\n wfsTransactionVersion?: string;\n projection?: ProjectionLike;\n lockFeatureParams?: {\n // 5 (minutes) by default\n expiry?: number | string;\n\n // 'Geoserver' by default\n lockId?: string;\n\n // 'SOME' by default\n releaseAction?: string;\n };\n}\n\nexport enum GeoserverProperty {\n CAPABILITIES = 'capabilities',\n URL = 'url',\n HEADERS = 'headers',\n CREDENTIALS = 'credentials',\n ADVANCED = 'advanced',\n HASTRASNACTION = 'hasTransaction',\n HASLOCKFEATURE = 'hasLockFeature',\n HASDESCRIBEFEATURETYPE = 'hasDescribeFeatureType',\n USELOCKFEATURE = 'useLockFeature',\n ISLOADED = 'isLoaded'\n}\n\nexport type GeoserverEventTypes =\n | `change:${GeoserverProperty.CAPABILITIES}`\n | `change:${GeoserverProperty.URL}`\n | `change:${GeoserverProperty.HEADERS}`\n | `change:${GeoserverProperty.CREDENTIALS}`\n | `change:${GeoserverProperty.ADVANCED}`\n | `change:${GeoserverProperty.HASTRASNACTION}`\n | `change:${GeoserverProperty.HASLOCKFEATURE}`\n | `change:${GeoserverProperty.HASDESCRIBEFEATURETYPE}`\n | `change:${GeoserverProperty.USELOCKFEATURE}`\n | `change:${GeoserverProperty.ISLOADED}`;\n","var img = \"data:image/svg+xml,%3csvg version='1.1' xmlns='http://www.w3.org/2000/svg' width='448' height='448' viewBox='0 0 448 448'%3e %3cpath d='M222 296l29-29-38-38-29 29v14h24v24h14zM332 116c-2.25-2.25-6-2-8.25 0.25l-87.5 87.5c-2.25 2.25-2.5 6-0.25 8.25s6 2 8.25-0.25l87.5-87.5c2.25-2.25 2.5-6 0.25-8.25zM352 264.5v47.5c0 39.75-32.25 72-72 72h-208c-39.75 0-72-32.25-72-72v-208c0-39.75 32.25-72 72-72h208c10 0 20 2 29.25 6.25 2.25 1 4 3.25 4.5 5.75 0.5 2.75-0.25 5.25-2.25 7.25l-12.25 12.25c-2.25 2.25-5.25 3-8 2-3.75-1-7.5-1.5-11.25-1.5h-208c-22 0-40 18-40 40v208c0 22 18 40 40 40h208c22 0 40-18 40-40v-31.5c0-2 0.75-4 2.25-5.5l16-16c2.5-2.5 5.75-3 8.75-1.75s5 4 5 7.25zM328 80l72 72-168 168h-72v-72zM439 113l-23 23-72-72 23-23c9.25-9.25 24.75-9.25 34 0l38 38c9.25 9.25 9.25 24.75 0 34z'%3e%3c/path%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg version='1.1' xmlns='http://www.w3.org/2000/svg' width='541' height='512' viewBox='0 0 541 512'%3e %3cpath fill='black' d='M103.306 228.483l129.493-125.249c-17.662-4.272-31.226-18.148-34.98-35.663l-0.055-0.307-129.852 125.248c17.812 4.15 31.53 18.061 35.339 35.662l0.056 0.308z'%3e%3c/path%3e %3cpath fill='black' d='M459.052 393.010c-13.486-8.329-22.346-23.018-22.373-39.779v-0.004c-0.053-0.817-0.082-1.772-0.082-2.733s0.030-1.916 0.089-2.863l-0.007 0.13-149.852 71.94c9.598 8.565 15.611 20.969 15.611 34.779 0 0.014 0 0.029 0 0.043v-0.002c-0.048 5.164-0.94 10.104-2.544 14.711l0.098-0.322z'%3e%3c/path%3e %3cpath fill='black' d='M290.207 57.553c-0.009 15.55-7.606 29.324-19.289 37.819l-0.135 0.093 118.054 46.69c-0.216-1.608-0.346-3.48-0.36-5.379v-0.017c0.033-16.948 9.077-31.778 22.596-39.953l0.209-0.118-122.298-48.056c0.659 2.633 1.098 5.693 1.221 8.834l0.002 0.087z'%3e%3c/path%3e %3cpath fill='black' d='M241.36 410.132l-138.629-160.067c-4.734 17.421-18.861 30.61-36.472 33.911l-0.29 0.045 143.881 166.255c1.668-18.735 14.197-34.162 31.183-40.044l0.327-0.099z'%3e%3c/path%3e %3cpath fill='black' d='M243.446 115.105c-31.785 0-57.553-25.767-57.553-57.553s25.767-57.553 57.553-57.553c31.785 0 57.552 25.767 57.552 57.553v0c0 31.786-25.767 57.553-57.553 57.553v0zM243.446 21.582c-19.866 0-35.97 16.105-35.97 35.97s16.105 35.97 35.97 35.97c19.866 0 35.97-16.105 35.97-35.97v0c0-19.866-16.104-35.97-35.97-35.97v0z'%3e%3c/path%3e %3cpath fill='black' d='M483.224 410.78c-31.786 0-57.553-25.767-57.553-57.553s25.767-57.553 57.553-57.553c31.786 0 57.552 25.767 57.552 57.553v0c0 31.786-25.767 57.553-57.553 57.553v0zM483.224 317.257c-19.866 0-35.97 16.104-35.97 35.97s16.105 35.97 35.97 35.97c19.866 0 35.97-16.105 35.97-35.97v0c0-19.866-16.105-35.97-35.97-35.97v0z'%3e%3c/path%3e %3cpath fill='black' d='M57.553 295.531c-31.785 0-57.553-25.767-57.553-57.553s25.767-57.553 57.553-57.553c31.785 0 57.553 25.767 57.553 57.553v0c0 31.786-25.767 57.553-57.553 57.553v0zM57.553 202.008c-19.866 0-35.97 16.105-35.97 35.97s16.105 35.97 35.97 35.97c19.866 0 35.97-16.105 35.97-35.97v0c-0.041-19.835-16.13-35.898-35.97-35.898 0 0 0 0 0 0v0z'%3e%3c/path%3e %3cpath fill='black' d='M256.036 512.072c-31.786 0-57.553-25.767-57.553-57.553s25.767-57.553 57.553-57.553c31.786 0 57.553 25.767 57.553 57.553v0c0 31.786-25.767 57.553-57.553 57.553v0zM256.036 418.55c-19.866 0-35.97 16.104-35.97 35.97s16.105 35.97 35.97 35.97c19.866 0 35.97-16.105 35.97-35.97v0c0-19.866-16.105-35.97-35.97-35.97v0z'%3e%3c/path%3e %3cpath fill='black' d='M435.24 194.239c-31.786 0-57.553-25.767-57.553-57.553s25.767-57.553 57.553-57.553c31.786 0 57.553 25.767 57.553 57.553v0c0 31.785-25.767 57.553-57.553 57.553v0zM435.24 100.716c-19.866 0-35.97 16.105-35.97 35.97s16.105 35.97 35.97 35.97c19.866 0 35.97-16.105 35.97-35.97v0c0-19.866-16.105-35.97-35.97-35.97v0z'%3e%3c/path%3e%3c/svg%3e\";\n export default img;","import { getCenter } from 'ol/extent';\nimport { Geometry } from 'ol/geom';\nimport { Feature, Overlay } from 'ol';\nimport { Coordinate } from 'ol/coordinate';\n\n// Images\nimport editFieldsSvg from '../assets/images/editFields.svg';\nimport editGeomSvg from '../assets/images/editGeom.svg';\nimport { I18N } from './i18n';\n\nimport myPragma from '../myPragma';\n\nexport default class EditOverlay extends Overlay {\n constructor(feature: Feature<Geometry>, coordinate: Coordinate = null) {\n super({\n id: feature.getId(),\n position:\n coordinate || getCenter(feature.getGeometry().getExtent()),\n positioning: 'center-center',\n offset: [0, -40],\n stopEvent: true,\n element: (\n <div>\n <div\n className=\"ol-wfst--edit-button-cnt\"\n onclick={() => {\n this.dispatchEvent('editFields');\n }}\n >\n <button\n className=\"ol-wfst--edit-button\"\n type=\"button\"\n title={I18N.labels.editFields}\n >\n <img\n src={editFieldsSvg}\n alt={I18N.labels.editFields}\n />\n </button>\n </div>\n <div\n className=\"ol-wfst--edit-button-cnt\"\n onclick={() => {\n this.dispatchEvent('editGeom');\n }}\n >\n <button\n class=\"ol-wfst--edit-button\"\n type=\"button\"\n title={I18N.labels.editGeom}\n >\n <img src={editGeomSvg} alt={I18N.labels.editGeom} />\n </button>\n </div>\n </div>\n )\n });\n }\n}\n","// Ol\nimport { Geometry } from 'ol/geom';\nimport { Circle as CircleStyle, Fill, Stroke, Style } from 'ol/style';\nimport { Control } from 'ol/control';\nimport { Draw, Modify, Select, Snap } from 'ol/interaction';\nimport { EventsKey } from 'ol/events';\nimport { Collection, Feature, MapBrowserEvent, Overlay, View } from 'ol';\nimport Map from 'ol/Map';\nimport BaseEvent from 'ol/events/Event';\nimport { LoadingStrategy } from 'ol/source/Vector';\nimport { FeatureLike } from 'ol/Feature';\nimport { Options as VectorLayerOptions } from 'ol/layer/BaseVector';\nimport { Vector as VectorSource } from 'ol/source';\nimport { never, primaryAction } from 'ol/events/condition';\nimport { unByKey } from 'ol/Observable';\nimport { Coordinate } from 'ol/coordinate';\nimport { CombinedOnSignature, EventTypes, OnSignature } from 'ol/Observable';\nimport { ObjectEvent } from 'ol/Object';\nimport { Types as ObjectEventTypes } from 'ol/ObjectEventType';\n\nimport { initModal, showError } from './modules/errors';\nimport { initLoading, showLoading } from './modules/loading';\nimport WfsLayer from './WfsLayer';\nimport WmsLayer from './WmsLayer';\nimport LayersControl, {\n activateDrawButton,\n activateModeButtons,\n resetStateButtons\n} from './modules/LayersControl';\nimport Uploads from './modules/Uploads';\nimport {\n addFeatureToEditedList,\n getStoredMapLayers,\n isFeatureEdited,\n removeFeatureFromEditList,\n setActiveLayerToInsertEls,\n getActiveLayerToInsertEls,\n activateMode,\n getMode,\n Modes,\n setMap,\n setMapLayers,\n getStoredLayer\n} from './modules/state';\nimport { deepObjectAssign } from './modules/helpers';\nimport { getEditLayer } from './modules/editLayer';\nimport { GeometryType, TransactionType } from './@enums';\nimport {\n I18n,\n IGeoserverDescribeFeatureType,\n WfsGeoserverVendor,\n WmsGeoserverVendor\n} from './@types';\nimport * as i18n from './modules/i18n/index';\nimport { getDefaultOptions } from './defaults';\nimport EditControlChangesEl from './modules/EditControlChanges';\nimport styleFunction from './modules/styleFunction';\nimport { EditFieldsModal } from './modules/EditFieldsModal';\nimport Geoserver from './Geoserver';\nimport EditOverlay from './modules/EditOverlay';\nimport { BaseLayerProperty } from './modules/base/BaseLayer';\n\n// External\nimport Modal from 'modal-vanilla';\n\n// Style\nimport './assets/scss/-ol-wfst.bootstrap5.scss';\nimport './assets/scss/ol-wfst.scss';\n\nconst controlElement = document.createElement('div');\n\n/**\n * Tiny WFST-T client to insert (drawing/uploading), modify and delete\n * features on GeoServers using OpenLayers. Layers with these types\n * of geometries are supported: \"GeometryCollection\" (in this case, you can\n * choose the geometry type of each element to draw), \"Point\", \"MultiPoint\",\n * \"LineString\", \"MultiLineString\", \"Polygon\" and \"MultiPolygon\".\n *\n * @constructor\n * @fires modifystart\n * @fires modifyend\n * @fires drawstart\n * @fires drawend\n * @fires load\n * @fires describeFeatureType\n * @extends {ol/control/Control~Control}\n * @param options Wfst options, see [Wfst Options](#options) for more details.\n */\nexport default class Wfst extends Control {\n protected _options: Options;\n protected _i18n: I18n;\n\n // Ol\n protected _map: Map;\n protected _view: View;\n protected _viewport: HTMLElement;\n protected _initialized = false;\n protected _layersControl: LayersControl;\n protected _overlay: Overlay;\n\n // Interactions\n protected _interactionWfsSelect: Select;\n protected _interactionSelectModify: Select;\n protected _collectionModify: Collection<any>;\n protected _interactionModify: Modify;\n protected _interactionSnap: Snap;\n protected _interactionDraw: Draw;\n\n // Obserbable keys\n protected _keyClickWms: EventsKey | EventsKey[];\n protected _keyRemove: EventsKey;\n protected _keySelect: EventsKey;\n\n // Controls\n protected _controlApplyDiscardChanges: EditControlChangesEl;\n protected _controlWidgetToolsDiv: HTMLElement;\n protected _selectDraw: HTMLSelectElement;\n\n // State\n protected _currentZoom: number;\n protected _lastZoom: number;\n\n // Editing\n protected _editFeature: Feature<Geometry>;\n protected _editFeatureOriginal: Feature<Geometry>;\n\n protected _uploads: Uploads;\n protected _editFields: EditFieldsModal;\n\n declare on: OnSignature<EventTypes, BaseEvent, EventsKey> &\n OnSignature<WfstEventTypes, WfstEvent, EventsKey> &\n OnSignature<ObjectEventTypes, ObjectEvent, EventsKey> &\n CombinedOnSignature<\n WfstEventTypes | ObjectEventTypes | EventTypes,\n EventsKey\n >;\n\n declare once: OnSignature<EventTypes, BaseEvent, EventsKey> &\n OnSignature<WfstEventTypes, WfstEvent, EventsKey> &\n OnSignature<ObjectEventTypes, ObjectEvent, EventsKey> &\n CombinedOnSignature<\n WfstEventTypes | ObjectEventTypes | EventTypes,\n EventsKey\n >;\n\n declare un: OnSignature<EventTypes, BaseEvent, void> &\n OnSignature<WfstEventTypes, WfstEvent, EventsKey> &\n OnSignature<ObjectEventTypes, ObjectEvent, void> &\n CombinedOnSignature<\n WfstEventTypes | ObjectEventTypes | EventTypes,\n void\n >;\n\n constructor(options?: Options) {\n super({\n target: null,\n element: controlElement,\n render: () => {\n if (!this._map) this._init();\n }\n });\n\n i18n.setLang(options.language, options.i18n);\n\n const defaultOptions = getDefaultOptions();\n\n this._options = deepObjectAssign(defaultOptions, options);\n\n // By default, the first layer is ready to accept new draws\n setActiveLayerToInsertEls(this._options.layers[0]);\n\n this._controlWidgetToolsDiv = controlElement;\n this._controlWidgetToolsDiv.className = 'ol-wfst--tools-control';\n\n this._uploads = new Uploads(this._options);\n\n this._editFields = new EditFieldsModal(this._options.modal);\n }\n\n /**\n * Get all the layers in the ol-wfst instance\n * @public\n */\n getLayers(): Array<WfsLayer | WmsLayer> {\n return Object.values(getStoredMapLayers());\n }\n\n /**\n * Get a layer\n * @public\n */\n getLayerByName(layerName = ''): WfsLayer | WmsLayer {\n const layers = getStoredMapLayers();\n if (layerName && layerName in layers) {\n return layers[layerName];\n }\n return null;\n }\n\n /**\n * Connect to the GeoServer and retrieve metadata about the service (GetCapabilities).\n * Get each layer specs (DescribeFeatureType) and create the layers and map controls.\n * @fires describeFeatureType\n * @private\n */\n async _initMapAndLayers(): Promise<void> {\n try {\n const layers = this._options.layers;\n\n if (layers.length) {\n let layerRendered = 0;\n let layersNumber = 0; // Only count visibles\n\n layers.forEach((layer) => {\n if (layer.getVisible()) layersNumber++;\n\n layer.on('layerRendered', () => {\n layerRendered++;\n if (layerRendered >= layersNumber) {\n // run only once\n if (!this._initialized) {\n this.dispatchEvent('load');\n this._initialized = true;\n }\n showLoading(false);\n }\n });\n\n layer.on('change:describeFeatureType', () => {\n const domEl = this._layersControl.addLayerEl(layer);\n\n layer.on('change:isVisible', () => {\n const layerNotVisible =\n 'ol-wfst--layer-not-visible';\n\n const visible = layer.isVisibleByZoom();\n if (visible)\n domEl.classList.remove(layerNotVisible);\n else domEl.classList.add(layerNotVisible);\n });\n\n layer.set(\n BaseLayerProperty.ISVISIBLE,\n this._currentZoom > layer.getMinZoom()\n );\n\n this.dispatchEvent(\n new WfstEvent({\n type: 'describeFeatureType',\n layer: layer,\n data: layer.getDescribeFeatureType()\n })\n );\n });\n\n layer._init();\n\n this._map.addLayer(layer);\n\n setMapLayers({\n [layer.get(BaseLayerProperty.NAME)]: layer\n });\n });\n\n this._createMapElements(\n this._options.showControl,\n this._options.active\n );\n }\n } catch (err) {\n showLoading(false);\n showError(err.message, err);\n }\n }\n\n /**\n * @private\n */\n _init(): void {\n this._map = super.getMap();\n this._view = this._map.getView();\n this._viewport = this._map.getViewport();\n\n setMap(this._map);\n\n //@ts-expect-error\n this._uploads.on('addedFeatures', ({ features }) => {\n const layer = getActiveLayerToInsertEls();\n layer.insertFeatures(features);\n });\n\n //@ts-expect-error\n this._uploads.on('loadedFeatures', ({ features }) => {\n this.activateEditMode();\n const editLayerSource = getEditLayer().getSource();\n\n editLayerSource.addFeatures(features);\n\n this._view.fit(editLayerSource.getExtent(), {\n size: this._map.getSize(),\n maxZoom: 21,\n padding: [100, 100, 100, 100]\n });\n });\n\n // @ts-expect-error\n this._editFields.on('save', ({ feature }) => {\n // Force deselect to trigger handler\n this._collectionModify.remove(feature);\n });\n\n // @ts-expect-error\n this._editFields.dispose('delete', ({ feature }) => {\n this._deleteFeature(feature, true);\n });\n\n this._addMapEvents();\n\n initModal(this._options['modal']);\n\n this._controlWidgetToolsDiv.append(initLoading());\n\n this._initMapAndLayers();\n }\n\n /**\n * Create the edit layer to allow modify elements, add interactions,\n * map controls and keyboard handlers.\n *\n * @param showControl\n * @param active\n * @private\n */\n async _createMapElements(\n showControl: boolean,\n active: boolean\n ): Promise<void> {\n // VectorLayer to store features on editing and inserting\n this._prepareEditLayer();\n\n this._addInteractions();\n this._addInteractionHandlers();\n\n if (showControl) {\n this._addMapControl();\n }\n\n // By default, init in edit mode\n this.activateEditMode(active);\n }\n\n /**\n * @private\n */\n _addInteractions(): void {\n /**\n * Select the wfs feature already downloaded\n * @private\n */\n const prepareWfsInteraction = () => {\n this._collectionModify = new Collection();\n\n // Interaction to select wfs layer elements\n this._interactionWfsSelect = new Select({\n hitTolerance: 10,\n style: (feature: Feature<Geometry>) => styleFunction(feature),\n toggleCondition: never, // Prevent add features to the current selection using shift\n filter: (feature, layer) => {\n return (\n getMode() !== Modes.Edit &&\n layer &&\n layer instanceof WfsLayer &&\n layer === getActiveLayerToInsertEls()\n );\n }\n });\n\n this._map.addInteraction(this._interactionWfsSelect);\n\n this._interactionWfsSelect.on(\n 'select',\n ({ selected, deselected, mapBrowserEvent }) => {\n const coordinate = mapBrowserEvent.coordinate;\n\n if (selected.length) {\n selected.forEach((feature) => {\n if (!isFeatureEdited(feature)) {\n // Remove the feature from the original layer\n const layer =\n this._interactionWfsSelect.getLayer(\n feature\n );\n layer.getSource().removeFeature(feature);\n this._addFeatureToEditMode(\n feature,\n coordinate,\n layer.get(BaseLayerProperty.NAME)\n );\n }\n });\n }\n\n if (deselected.length) {\n if (getMode() !== Modes.Edit) {\n deselected.forEach((feature) => {\n // Trigger deselect\n // This is necessary for those times where two features overlap.\n this._collectionModify.remove(feature);\n });\n }\n }\n }\n );\n };\n\n /**\n * Call the geoserver to get the clicked feature\n * @private\n */\n const prepareWmsInteraction = (): void => {\n // Interaction to allow select features in the edit layer\n this._interactionSelectModify = new Select({\n style: (feature: Feature<Geometry>) => styleFunction(feature),\n layers: [getEditLayer()],\n toggleCondition: never, // Prevent add features to the current selection using shift\n removeCondition: () => (getMode() === Modes.Edit ? true : false) // Prevent deselect on clicking outside the feature\n });\n\n this._map.addInteraction(this._interactionSelectModify);\n\n this._collectionModify =\n this._interactionSelectModify.getFeatures();\n\n this._keyClickWms = this._map.on(\n this._options.evtType,\n async (evt: MapBrowserEvent<MouseEvent>) => {\n if (this._map.hasFeatureAtPixel(evt.pixel)) {\n return;\n }\n\n // Only get other features if editmode is disabled\n if (getMode() !== Modes.Edit) {\n const layer = getActiveLayerToInsertEls();\n\n // If layer is hidden or is a wfs, skip\n if (\n !layer.getVisible() ||\n !layer.isVisibleByZoom() ||\n layer instanceof WfsLayer\n ) {\n return;\n }\n\n const features = await layer._getFeaturesByClickEvent(\n evt\n );\n\n if (!features.length) {\n return;\n }\n\n // For now, support is only for one feature at time\n this._addFeatureToEditMode(\n features[0],\n evt.coordinate,\n layer.get(BaseLayerProperty.NAME)\n );\n }\n }\n );\n };\n\n if (this._options.layers.find((layer) => layer instanceof WfsLayer)) {\n prepareWfsInteraction();\n }\n\n if (this._options.layers.find((layer) => layer instanceof WmsLayer)) {\n prepareWmsInteraction();\n }\n\n this._interactionModify = new Modify({\n style: () => {\n if (getMode() === Modes.Edit) {\n return new Style({\n image: new CircleStyle({\n radius: 6,\n fill: new Fill({\n color: '#ff0000'\n }),\n stroke: new Stroke({\n width: 2,\n color: 'rgba(5, 5, 5, 0.9)'\n })\n })\n });\n } else {\n return;\n }\n },\n features: this._collectionModify,\n condition: (evt) => {\n return primaryAction(evt) && getMode() === Modes.Edit;\n }\n });\n\n this._map.addInteraction(this._interactionModify);\n\n this._interactionSnap = new Snap({\n source: getEditLayer().getSource()\n });\n this._map.addInteraction(this._interactionSnap);\n }\n\n /**\n * Layer to store temporary the elements to be edited\n * @private\n */\n _prepareEditLayer(): void {\n this._map.addLayer(getEditLayer());\n }\n\n /**\n * @private\n */\n _addMapEvents(): void {\n /**\n * @private\n */\n const keyboardEvents = (): void => {\n document.addEventListener('keydown', ({ key }) => {\n const inputFocus = document.querySelector('input:focus');\n if (inputFocus) {\n return;\n }\n if (key === 'Delete') {\n const selectedFeatures = this._collectionModify;\n if (selectedFeatures) {\n selectedFeatures.forEach((feature) => {\n this._deleteFeature(feature, true);\n });\n }\n }\n });\n };\n\n keyboardEvents();\n\n this._map.on('moveend', (): void => {\n this._currentZoom = this._view.getZoom();\n\n if (this._currentZoom !== this._lastZoom) {\n const layers = getStoredMapLayers();\n\n Object.keys(layers).forEach((key) => {\n const layer = layers[key];\n if (this._currentZoom > layer.getMinZoom()) {\n // Show the layers\n if (!layer.get(BaseLayerProperty.ISVISIBLE)) {\n layer.set(BaseLayerProperty.ISVISIBLE, true);\n }\n } else {\n // Hide the layer\n if (layer.get(BaseLayerProperty.ISVISIBLE)) {\n layer.set(BaseLayerProperty.ISVISIBLE, false);\n }\n }\n });\n\n this._lastZoom = this._currentZoom;\n }\n });\n }\n\n /**\n * Add map handlers\n * @private\n */\n _addInteractionHandlers(): void {\n // When a feature is modified, add this to a list.\n // This prevent events fired on select and deselect features that has no changes and should\n // not be updated in the geoserver\n this._interactionModify.on('modifyend', (evt) => {\n const feature = evt.features.item(0);\n addFeatureToEditedList(feature);\n super.dispatchEvent(evt);\n });\n\n this._interactionModify.on('modifystart', (evt) => {\n super.dispatchEvent(evt);\n });\n\n this._onDeselectFeatureEvent();\n this._onRemoveFeatureEvent();\n }\n\n /**\n * Add the widget on the map to allow change the tools and select active layers\n * @private\n */\n _addMapControl(): void {\n this._layersControl = new LayersControl(\n this._options.showUpload ? this._uploads : null,\n this._options.uploadFormats\n );\n\n // @ts-expect-error\n this._layersControl.on('drawMode', () => {\n if (getMode() === Modes.Draw) {\n resetStateButtons();\n this.activateEditMode();\n } else {\n const activeLayer = getActiveLayerToInsertEls();\n\n if (!activeLayer.isVisibleByZoom()) {\n showError(i18n.I18N.errors.layerNotVisible);\n } else {\n this.activateDrawMode(getActiveLayerToInsertEls());\n }\n }\n });\n\n // @ts-expect-error\n this._layersControl.on('changeGeom', () => {\n if (getMode() === Modes.Draw) {\n this.activateDrawMode(getActiveLayerToInsertEls());\n }\n });\n\n const controlEl = this._layersControl.render();\n\n this._selectDraw = controlEl.querySelector(\n '.wfst--tools-control--select-draw'\n );\n\n this._controlWidgetToolsDiv.append(controlEl);\n }\n\n /**\n *\n * @param feature\n * @private\n */\n _deselectEditFeature(feature: FeatureLike): void {\n this._removeOverlayHelper(feature);\n }\n\n /**\n *\n * @param feature\n * @param layerName\n * @private\n */\n _restoreFeatureToLayer(\n feature: Feature<Geometry>,\n layerName?: string\n ): void {\n layerName = layerName || feature.get('_layerName_');\n const layer = getStoredMapLayers()[layerName];\n (layer.getSource() as VectorSource<Geometry>).addFeature(feature);\n }\n\n /**\n * @param feature\n * @private\n */\n _removeFeatureFromTmpLayer(feature: Feature<Geometry>): void {\n // Remove element from the Layer\n getEditLayer().getSource().removeFeature(feature);\n }\n\n /**\n * Trigger on deselecting a feature from in the Edit layer\n *\n * @private\n */\n _onDeselectFeatureEvent(): void {\n const checkIfFeatureIsChanged = (feature: Feature<Geometry>): void => {\n const layerName = feature.get('_layerName_');\n\n const layer = this._options.layers.find(\n (layer) => layer.get(BaseLayerProperty.NAME) === layerName\n );\n\n if (layer instanceof WfsLayer) {\n this._interactionWfsSelect.getFeatures().remove(feature);\n }\n\n if (isFeatureEdited(feature)) {\n layer.transactFeatures(TransactionType.Update, feature);\n } else {\n // Si es wfs y el elemento no tuvo cambios, lo devolvemos a la layer original\n if (layer instanceof WfsLayer) {\n this._restoreFeatureToLayer(feature, layerName);\n }\n this._removeFeatureFromTmpLayer(feature);\n }\n };\n\n // This is fired when a feature is deselected and fires the transaction process\n this._keySelect = this._collectionModify.on('remove', (evt) => {\n const feature = evt.element;\n\n this._deselectEditFeature(feature);\n\n checkIfFeatureIsChanged(feature);\n\n this._editModeOff();\n });\n }\n\n /**\n * Trigger on removing a feature from the Edit layer\n *\n * @private\n */\n _onRemoveFeatureEvent(): void {\n // If a feature is removed from the edit layer\n this._keyRemove = getEditLayer()\n .getSource()\n .on('removefeature', (evt) => {\n const feature = evt.feature;\n\n if (!feature.get('_delete_')) {\n return;\n }\n\n if (this._keySelect) {\n unByKey(this._keySelect);\n }\n\n const layerName = feature.get('_layerName_');\n\n const ll = this.getLayerByName(layerName);\n\n ll.transactFeatures(TransactionType.Delete, feature);\n\n this._deselectEditFeature(feature);\n this._editModeOff();\n\n if (this._keySelect) {\n setTimeout(() => {\n this._onDeselectFeatureEvent();\n }, 150);\n }\n });\n }\n\n /**\n *\n * @param feature\n * @private\n */\n _editModeOn(feature: Feature<Geometry>): void {\n this._editFeatureOriginal = feature.clone();\n\n activateMode(Modes.Edit);\n\n // To refresh the style\n getEditLayer().getSource().changed();\n\n this._removeOverlayHelper(feature);\n\n this._controlApplyDiscardChanges = new EditControlChangesEl(feature);\n\n this._controlApplyDiscardChanges.on('cancel', ({ feature }) => {\n feature.setGeometry(this._editFeatureOriginal.getGeometry());\n removeFeatureFromEditList(feature);\n this._collectionModify.remove(feature);\n });\n\n this._controlApplyDiscardChanges.on('apply', ({ feature }) => {\n showLoading();\n this._collectionModify.remove(feature);\n });\n\n this._controlApplyDiscardChanges.on('delete', ({ feature }) => {\n this._deleteFeature(feature, true);\n });\n\n this._map.addControl(this._controlApplyDiscardChanges);\n }\n\n /**\n * @private\n */\n _editModeOff(): void {\n activateMode(null);\n this._map.removeControl(this._controlApplyDiscardChanges);\n }\n\n /**\n * Remove a feature from the edit Layer and from the Geoserver\n *\n * @param feature\n * @private\n */\n _deleteFeature(feature: Feature<Geometry>, confirm: boolean): void {\n const deleteEl = () => {\n const features = Array.isArray(feature) ? feature : [feature];\n features.forEach((feature) => {\n feature.set('_delete_', true, true);\n getEditLayer().getSource().removeFeature(feature);\n });\n this._collectionModify.clear();\n\n const layerName = feature.get('_layerName_');\n const layer = this._options.layers.find(\n (layer) => layer.get(BaseLayerProperty.NAME) === layerName\n );\n\n if (layer instanceof WfsLayer) {\n this._interactionWfsSelect.getFeatures().remove(feature);\n }\n };\n\n if (confirm) {\n const confirmModal = Modal.confirm(i18n.I18N.labels.confirmDelete, {\n ...this._options.modal\n });\n\n confirmModal.show().once('dismiss', function (modal, ev, button) {\n if (button && button.value) {\n deleteEl();\n }\n });\n } else {\n deleteEl();\n }\n }\n\n /**\n * Add a feature to the Edit Layer to allow editing, and creates an Overlay Helper to show options\n *\n * @param feature\n * @param coordinate\n * @param layerName\n * @private\n */\n _addFeatureToEditMode(\n feature: Feature<Geometry>,\n coordinate: Coordinate = null,\n layerName = null\n ): void {\n // For now, only allow one element at time\n // @TODO: allow edit multiples elements\n if (this._collectionModify.getLength()) return;\n\n if (layerName) {\n // Store the layer information inside the feature\n feature.set('_layerName_', layerName);\n }\n\n const props = feature ? feature.getProperties() : '';\n\n if (props) {\n if (feature.getGeometry()) {\n getEditLayer().getSource().addFeature(feature);\n this._collectionModify.push(feature);\n\n const overlay = new EditOverlay(feature, coordinate);\n\n // @ts-expect-error\n overlay.on('editFields', () => {\n this._editFields.show(feature);\n });\n\n // @ts-expect-error\n overlay.on('editGeom', () => {\n this._editModeOn(feature);\n });\n\n this._map.addOverlay(overlay);\n\n const layer = getStoredLayer(layerName);\n if (layer) {\n layer.maybeLockFeature(feature.getId());\n }\n }\n }\n }\n\n /**\n * Activate/deactivate the draw mode\n *\n * @param layer\n * @public\n */\n activateDrawMode(layer: WfsLayer | WmsLayer | false): void {\n /**\n *\n * @param layer\n * @private\n */\n const addDrawInteraction = (layer: WfsLayer | WmsLayer): void => {\n this.activateEditMode(false);\n\n // If already exists, remove\n if (this._interactionDraw) {\n this._map.removeInteraction(this._interactionDraw);\n }\n\n const geomDrawType = this._selectDraw.value;\n\n this._interactionDraw = new Draw({\n source: getEditLayer().getSource(),\n type: geomDrawType as GeometryType,\n style: (feature: Feature<Geometry>) => styleFunction(feature),\n stopClick: true // To prevent firing a map/wms click\n });\n\n this._map.addInteraction(this._interactionDraw);\n\n this._interactionDraw.on('drawstart', (evt) => {\n super.dispatchEvent(evt);\n });\n\n this._interactionDraw.on('drawend', (evt) => {\n const feature: Feature<Geometry> = evt.feature;\n layer.transactFeatures(TransactionType.Insert, feature);\n super.dispatchEvent(evt);\n });\n };\n\n if (!this._interactionDraw && !layer) {\n return;\n }\n\n if (layer) {\n // If layer is set to invisible, show warning\n if (!layer.getVisible()) {\n return;\n }\n\n activateDrawButton();\n\n this._viewport.classList.add('draw-mode');\n\n addDrawInteraction(layer);\n } else {\n this._map.removeInteraction(this._interactionDraw);\n this._viewport.classList.remove('draw-mode');\n }\n\n activateMode(layer ? Modes.Draw : null);\n }\n\n /**\n * Activate/desactivate the edit mode\n *\n * @param bool\n * @public\n */\n activateEditMode(bool = true): void {\n if (bool) {\n activateModeButtons();\n this.activateDrawMode(false);\n } else {\n // Deselct features\n this._collectionModify.clear();\n }\n\n if (this._interactionSelectModify) {\n this._interactionSelectModify.setActive(bool);\n }\n\n this._interactionModify.setActive(bool);\n\n if (this._interactionWfsSelect)\n this._interactionWfsSelect.setActive(bool);\n }\n\n /**\n * Remove the overlay helper atttached to a specify feature\n * @param feature\n * @private\n */\n _removeOverlayHelper(feature: FeatureLike): void {\n const featureId = feature.getId();\n\n if (!featureId) {\n return;\n }\n\n const overlay = this._map.getOverlayById(featureId);\n\n if (!overlay) {\n return;\n }\n\n this._map.removeOverlay(overlay);\n }\n}\n\n/**\n * **_[interface]_** - Wfst Options specified when creating a Wfst instance\n *\n * Default values:\n * ```javascript\n * {\n * layers: null,\n * evtType: 'singleclick',\n * active: true,\n * showControl: true,\n * language: 'en',\n * i18n: {...}, // according to language selection\n * uploadFormats: '.geojson,.json,.kml',\n * processUpload: null,\n * }\n * ```\n */\ninterface Options {\n /**\n * Layers to be loaded from the geoserver\n */\n layers?: Array<WfsLayer | WmsLayer>;\n\n /**\n * Init active\n */\n active?: boolean;\n\n /**\n * The click event to allow selection of Features to be edited\n */\n evtType?: 'singleclick' | 'dblclick';\n\n /**\n * Show/hide the control map\n */\n showControl?: boolean;\n\n /**\n * Modal configuration\n */\n modal?: {\n animateClass?: string;\n animateInClass?: string;\n transition?: number;\n backdropTransition?: number;\n templates?: {\n dialog?: string | HTMLElement;\n headerClose?: string | HTMLElement;\n };\n };\n\n /**\n * Language to be used\n */\n language?: 'es' | 'en' | 'zh';\n\n /**\n * Custom translations\n */\n i18n?: I18n;\n\n /**\n * Show/hide the upload button\n */\n showUpload?: boolean;\n\n /**\n * Accepted extension formats on upload\n * Example: \".json,.geojson\"\n */\n uploadFormats?: string;\n\n /**\n * Triggered to allow implement custom functions or to parse other formats than default\n * by filtering the extension. If this doesn't return features, the default function\n * will be used to extract them.\n */\n processUpload?(file: File): Array<Feature<Geometry>>;\n}\n\n/**\n * **_[interface]_** - Parameters to create the layers and connect to the GeoServer\n *\n * You can use all the parameters supported by OpenLayers\n *\n * Default values:\n * ```javascript\n * {\n * name: null,\n * geoserver: null,\n * label: null, // `name` if not provided\n * strategy: all,\n * geoserverVendor: null\n * }\n * ```\n */\ninterface LayerOptions extends Omit<VectorLayerOptions<any>, 'source'> {\n /**\n * Layer name in the GeoServer\n */\n name: string;\n\n /**\n * Geoserver Object\n */\n geoserver: Geoserver;\n\n /**\n * Label to be displayed in the widget control\n */\n label?: string;\n\n /**\n * Available geoserver options\n */\n geoserverVendor?: WfsGeoserverVendor | WmsGeoserverVendor;\n\n /**\n * Strategy function for loading features.\n * Only for WFS\n * By default `all` strategy is used\n */\n strategy?: LoadingStrategy;\n\n /**\n * Triggered before inserting new features to the Geoserver.\n * Use this to insert custom properties, modify the feature, etc.\n */\n beforeTransactFeature?(\n feature: Feature<Geometry>,\n transaction: TransactionType\n ): Feature<Geometry>;\n}\nclass WfstEvent extends BaseEvent {\n public data: IGeoserverDescribeFeatureType;\n public layer: WfsLayer | WmsLayer;\n\n constructor(options: {\n type: WfstEventTypes;\n layer: WfsLayer | WmsLayer;\n data: IGeoserverDescribeFeatureType;\n }) {\n super(options.type);\n this.layer = options.layer;\n this.data = options.data;\n }\n}\n\ntype WfstEventTypes = 'describeFeatureType';\n\nexport {\n Options,\n WfstEventTypes,\n WfstEvent,\n I18n,\n LayerOptions,\n Geoserver,\n WmsLayer,\n WfsLayer\n};\n"],"names":["GeoJSON","img","myPragma","visibilityOn","visibilityOff","uploadSvg","drawSvg","CircleStyle","Circle","editFieldsSvg","editGeomSvg","i18n.setLang","i18n.I18N"],"mappings":"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"}
|