ol-wfst 1.0.8 → 3.0.1
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 +24 -1
- package/README.md +125 -48
- package/dist/@enums.d.ts +12 -0
- package/dist/@enums.d.ts.map +1 -0
- package/dist/assets/i18n/en.d.ts +3 -0
- package/dist/assets/i18n/en.d.ts.map +1 -0
- package/dist/assets/i18n/es.d.ts +3 -0
- package/dist/assets/i18n/es.d.ts.map +1 -0
- package/dist/assets/i18n/index.d.ts +3 -0
- package/dist/assets/i18n/index.d.ts.map +1 -0
- package/dist/css/ol-wfst.bootstrap5.css +863 -0
- package/dist/css/ol-wfst.bootstrap5.min.css +1 -0
- package/dist/css/ol-wfst.css +172 -128
- package/dist/css/ol-wfst.min.css +1 -1
- package/dist/ol-wfst.d.ts +142 -86
- package/dist/ol-wfst.d.ts.map +1 -0
- package/dist/ol-wfst.js +5327 -4595
- package/dist/ol-wfst.js.map +1 -0
- package/dist/ol-wfst.min.js +16 -1
- package/dist/ol-wfst.min.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/lib/@enums.d.ts +12 -0
- package/lib/@enums.d.ts.map +1 -0
- package/lib/assets/i18n/en.d.ts +3 -0
- package/lib/assets/i18n/en.d.ts.map +1 -0
- package/lib/assets/i18n/es.d.ts +3 -0
- package/lib/assets/i18n/es.d.ts.map +1 -0
- package/lib/assets/i18n/index.d.ts +3 -0
- package/lib/assets/i18n/index.d.ts.map +1 -0
- package/lib/ol-wfst.d.ts +142 -86
- package/lib/ol-wfst.d.ts.map +1 -0
- package/lib/ol-wfst.js +2123 -2200
- package/lib/ol-wfst.js.map +1 -0
- package/lib/style/css/ol-gisify.css +267 -0
- package/lib/style/css/ol-wfst.bootstrap5.css +863 -0
- package/lib/style/scss/-ol-wfst.bootstrap5.scss +10 -0
- package/lib/{css/ol-wfst.css → style/scss/ol-wfst.scss} +7 -3
- package/lib/tsconfig.tsbuildinfo +1 -0
- package/package.json +70 -66
- package/dist/css/bootstrap-modal.min.css +0 -7
- package/lib/css/bootstrap-modal.min.css +0 -7
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ol-wfst.js","sources":["../node_modules/tslib/tslib.es6.js","../node_modules/ol/TileState.js","../node_modules/ol/util.js","../node_modules/ol/AssertionError.js","../node_modules/ol/events/Event.js","../node_modules/ol/ObjectEventType.js","../node_modules/ol/Disposable.js","../node_modules/ol/functions.js","../node_modules/ol/obj.js","../node_modules/ol/events/Target.js","../node_modules/ol/events/EventType.js","../node_modules/ol/events.js","../node_modules/ol/Observable.js","../node_modules/ol/Object.js","../node_modules/ol/CollectionEventType.js","../node_modules/ol/Collection.js","../node_modules/ol/asserts.js","../node_modules/ol/Feature.js","../node_modules/ol/extent.js","../node_modules/ol/dom.js","../node_modules/ol/css.js","../node_modules/ol/MapEventType.js","../node_modules/ol/OverlayPositioning.js","../node_modules/ol/Overlay.js","../node_modules/modal-vanilla/lib/modal.js","../node_modules/modal-vanilla/index.js","../src/assets/images/draw.svg","../src/assets/images/editFields.svg","../src/assets/images/editGeom.svg","../src/assets/images/upload.svg","../src/assets/images/visibilityOn.svg","../src/assets/images/visibilityOff.svg","../src/@enums.ts","../src/assets/i18n/es.ts","../src/assets/i18n/en.ts","../src/ol-wfst.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/**\n * @module ol/TileState\n */\n/**\n * @enum {number}\n */\nexport default {\n IDLE: 0,\n LOADING: 1,\n LOADED: 2,\n /**\n * Indicates that tile loading failed\n * @type {number}\n */\n ERROR: 3,\n EMPTY: 4,\n};\n//# sourceMappingURL=TileState.js.map","/**\n * @module ol/util\n */\n/**\n * @return {?} Any return.\n */\nexport function abstract() {\n return /** @type {?} */ ((function () {\n throw new Error('Unimplemented abstract method.');\n })());\n}\n/**\n * Counter for getUid.\n * @type {number}\n * @private\n */\nvar uidCounter_ = 0;\n/**\n * Gets a unique ID for an object. This mutates the object so that further calls\n * with the same object as a parameter returns the same value. Unique IDs are generated\n * as a strictly increasing sequence. Adapted from goog.getUid.\n *\n * @param {Object} obj The object to get the unique ID for.\n * @return {string} The unique ID for the object.\n * @api\n */\nexport function getUid(obj) {\n return obj.ol_uid || (obj.ol_uid = String(++uidCounter_));\n}\n/**\n * OpenLayers version.\n * @type {string}\n */\nexport var VERSION = '6.12.0';\n//# sourceMappingURL=util.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/AssertionError\n */\nimport { VERSION } from './util.js';\n/**\n * Error object thrown when an assertion failed. This is an ECMA-262 Error,\n * extended with a `code` property.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error.\n */\nvar AssertionError = /** @class */ (function (_super) {\n __extends(AssertionError, _super);\n /**\n * @param {number} code Error code.\n */\n function AssertionError(code) {\n var _this = this;\n var path = VERSION === 'latest' ? VERSION : 'v' + VERSION.split('-')[0];\n var message = 'Assertion failed. See https://openlayers.org/en/' +\n path +\n '/doc/errors/#' +\n code +\n ' for details.';\n _this = _super.call(this, message) || this;\n /**\n * Error code. The meaning of the code can be found on\n * https://openlayers.org/en/latest/doc/errors/ (replace `latest` with\n * the version found in the OpenLayers script's header comment if a version\n * other than the latest is used).\n * @type {number}\n * @api\n */\n _this.code = code;\n /**\n * @type {string}\n */\n _this.name = 'AssertionError';\n // Re-assign message, see https://github.com/Rich-Harris/buble/issues/40\n _this.message = message;\n return _this;\n }\n return AssertionError;\n}(Error));\nexport default AssertionError;\n//# sourceMappingURL=AssertionError.js.map","/**\n * @module ol/events/Event\n */\n/**\n * @classdesc\n * Stripped down implementation of the W3C DOM Level 2 Event interface.\n * See https://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-interface.\n *\n * This implementation only provides `type` and `target` properties, and\n * `stopPropagation` and `preventDefault` methods. It is meant as base class\n * for higher level events defined in the library, and works with\n * {@link module:ol/events/Target~Target}.\n */\nvar BaseEvent = /** @class */ (function () {\n /**\n * @param {string} type Type.\n */\n function BaseEvent(type) {\n /**\n * @type {boolean}\n */\n this.propagationStopped;\n /**\n * @type {boolean}\n */\n this.defaultPrevented;\n /**\n * The event type.\n * @type {string}\n * @api\n */\n this.type = type;\n /**\n * The event target.\n * @type {Object}\n * @api\n */\n this.target = null;\n }\n /**\n * Prevent default. This means that no emulated `click`, `singleclick` or `doubleclick` events\n * will be fired.\n * @api\n */\n BaseEvent.prototype.preventDefault = function () {\n this.defaultPrevented = true;\n };\n /**\n * Stop event propagation.\n * @api\n */\n BaseEvent.prototype.stopPropagation = function () {\n this.propagationStopped = true;\n };\n return BaseEvent;\n}());\n/**\n * @param {Event|import(\"./Event.js\").default} evt Event\n */\nexport function stopPropagation(evt) {\n evt.stopPropagation();\n}\n/**\n * @param {Event|import(\"./Event.js\").default} evt Event\n */\nexport function preventDefault(evt) {\n evt.preventDefault();\n}\nexport default BaseEvent;\n//# sourceMappingURL=Event.js.map","/**\n * @module ol/ObjectEventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered when a property is changed.\n * @event module:ol/Object.ObjectEvent#propertychange\n * @api\n */\n PROPERTYCHANGE: 'propertychange',\n};\n/**\n * @typedef {'propertychange'} Types\n */\n//# sourceMappingURL=ObjectEventType.js.map","/**\n * @module ol/Disposable\n */\n/**\n * @classdesc\n * Objects that need to clean up after themselves.\n */\nvar Disposable = /** @class */ (function () {\n function Disposable() {\n /**\n * The object has already been disposed.\n * @type {boolean}\n * @protected\n */\n this.disposed = false;\n }\n /**\n * Clean up.\n */\n Disposable.prototype.dispose = function () {\n if (!this.disposed) {\n this.disposed = true;\n this.disposeInternal();\n }\n };\n /**\n * Extension point for disposable objects.\n * @protected\n */\n Disposable.prototype.disposeInternal = function () { };\n return Disposable;\n}());\nexport default Disposable;\n//# sourceMappingURL=Disposable.js.map","/**\n * @module ol/functions\n */\nimport { equals as arrayEquals } from './array.js';\n/**\n * Always returns true.\n * @return {boolean} true.\n */\nexport function TRUE() {\n return true;\n}\n/**\n * Always returns false.\n * @return {boolean} false.\n */\nexport function FALSE() {\n return false;\n}\n/**\n * A reusable function, used e.g. as a default for callbacks.\n *\n * @return {void} Nothing.\n */\nexport function VOID() { }\n/**\n * Wrap a function in another function that remembers the last return. If the\n * returned function is called twice in a row with the same arguments and the same\n * this object, it will return the value from the first call in the second call.\n *\n * @param {function(...any): ReturnType} fn The function to memoize.\n * @return {function(...any): ReturnType} The memoized function.\n * @template ReturnType\n */\nexport function memoizeOne(fn) {\n var called = false;\n /** @type {ReturnType} */\n var lastResult;\n /** @type {Array<any>} */\n var lastArgs;\n var lastThis;\n return function () {\n var nextArgs = Array.prototype.slice.call(arguments);\n if (!called || this !== lastThis || !arrayEquals(nextArgs, lastArgs)) {\n called = true;\n lastThis = this;\n lastArgs = nextArgs;\n lastResult = fn.apply(this, arguments);\n }\n return lastResult;\n };\n}\n/**\n * @template T\n * @param {function(): (T | Promise<T>)} getter A function that returns a value or a promise for a value.\n * @return {Promise<T>} A promise for the value.\n */\nexport function toPromise(getter) {\n function promiseGetter() {\n var value;\n try {\n value = getter();\n }\n catch (err) {\n return Promise.reject(err);\n }\n if (value instanceof Promise) {\n return value;\n }\n return Promise.resolve(value);\n }\n return promiseGetter();\n}\n//# sourceMappingURL=functions.js.map","/**\n * @module ol/obj\n */\n/**\n * Polyfill for Object.assign(). Assigns enumerable and own properties from\n * one or more source objects to a target object.\n * See https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign.\n *\n * @param {!Object} target The target object.\n * @param {...Object} var_sources The source object(s).\n * @return {!Object} The modified target object.\n */\nexport var assign = typeof Object.assign === 'function'\n ? Object.assign\n : function (target, var_sources) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n var output = Object(target);\n for (var i = 1, ii = arguments.length; i < ii; ++i) {\n var source = arguments[i];\n if (source !== undefined && source !== null) {\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n output[key] = source[key];\n }\n }\n }\n }\n return output;\n };\n/**\n * Removes all properties from an object.\n * @param {Object} object The object to clear.\n */\nexport function clear(object) {\n for (var property in object) {\n delete object[property];\n }\n}\n/**\n * Polyfill for Object.values(). Get an array of property values from an object.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/values\n *\n * @param {!Object<K,V>} object The object from which to get the values.\n * @return {!Array<V>} The property values.\n * @template K,V\n */\nexport var getValues = typeof Object.values === 'function'\n ? Object.values\n : function (object) {\n var values = [];\n for (var property in object) {\n values.push(object[property]);\n }\n return values;\n };\n/**\n * Determine if an object has any properties.\n * @param {Object} object The object to check.\n * @return {boolean} The object is empty.\n */\nexport function isEmpty(object) {\n var property;\n for (property in object) {\n return false;\n }\n return !property;\n}\n//# sourceMappingURL=obj.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/events/Target\n */\nimport Disposable from '../Disposable.js';\nimport Event from './Event.js';\nimport { VOID } from '../functions.js';\nimport { clear } from '../obj.js';\n/**\n * @typedef {EventTarget|Target} EventTargetLike\n */\n/**\n * @classdesc\n * A simplified implementation of the W3C DOM Level 2 EventTarget interface.\n * See https://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html#Events-EventTarget.\n *\n * There are two important simplifications compared to the specification:\n *\n * 1. The handling of `useCapture` in `addEventListener` and\n * `removeEventListener`. There is no real capture model.\n * 2. The handling of `stopPropagation` and `preventDefault` on `dispatchEvent`.\n * There is no event target hierarchy. When a listener calls\n * `stopPropagation` or `preventDefault` on an event object, it means that no\n * more listeners after this one will be called. Same as when the listener\n * returns false.\n */\nvar Target = /** @class */ (function (_super) {\n __extends(Target, _super);\n /**\n * @param {*} [opt_target] Default event target for dispatched events.\n */\n function Target(opt_target) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {*}\n */\n _this.eventTarget_ = opt_target;\n /**\n * @private\n * @type {Object<string, number>}\n */\n _this.pendingRemovals_ = null;\n /**\n * @private\n * @type {Object<string, number>}\n */\n _this.dispatching_ = null;\n /**\n * @private\n * @type {Object<string, Array<import(\"../events.js\").Listener>>}\n */\n _this.listeners_ = null;\n return _this;\n }\n /**\n * @param {string} type Type.\n * @param {import(\"../events.js\").Listener} listener Listener.\n */\n Target.prototype.addEventListener = function (type, listener) {\n if (!type || !listener) {\n return;\n }\n var listeners = this.listeners_ || (this.listeners_ = {});\n var listenersForType = listeners[type] || (listeners[type] = []);\n if (listenersForType.indexOf(listener) === -1) {\n listenersForType.push(listener);\n }\n };\n /**\n * Dispatches an event and calls all listeners listening for events\n * of this type. The event parameter can either be a string or an\n * Object with a `type` property.\n *\n * @param {import(\"./Event.js\").default|string} event Event object.\n * @return {boolean|undefined} `false` if anyone called preventDefault on the\n * event object or if any of the listeners returned false.\n * @api\n */\n Target.prototype.dispatchEvent = function (event) {\n /** @type {import(\"./Event.js\").default|Event} */\n var evt = typeof event === 'string' ? new Event(event) : event;\n var type = evt.type;\n if (!evt.target) {\n evt.target = this.eventTarget_ || this;\n }\n var listeners = this.listeners_ && this.listeners_[type];\n var propagate;\n if (listeners) {\n var dispatching = this.dispatching_ || (this.dispatching_ = {});\n var pendingRemovals = this.pendingRemovals_ || (this.pendingRemovals_ = {});\n if (!(type in dispatching)) {\n dispatching[type] = 0;\n pendingRemovals[type] = 0;\n }\n ++dispatching[type];\n for (var i = 0, ii = listeners.length; i < ii; ++i) {\n if ('handleEvent' in listeners[i]) {\n propagate = /** @type {import(\"../events.js\").ListenerObject} */ (listeners[i]).handleEvent(evt);\n }\n else {\n propagate = /** @type {import(\"../events.js\").ListenerFunction} */ (listeners[i]).call(this, evt);\n }\n if (propagate === false || evt.propagationStopped) {\n propagate = false;\n break;\n }\n }\n --dispatching[type];\n if (dispatching[type] === 0) {\n var pr = pendingRemovals[type];\n delete pendingRemovals[type];\n while (pr--) {\n this.removeEventListener(type, VOID);\n }\n delete dispatching[type];\n }\n return propagate;\n }\n };\n /**\n * Clean up.\n */\n Target.prototype.disposeInternal = function () {\n this.listeners_ && clear(this.listeners_);\n };\n /**\n * Get the listeners for a specified event type. Listeners are returned in the\n * order that they will be called in.\n *\n * @param {string} type Type.\n * @return {Array<import(\"../events.js\").Listener>|undefined} Listeners.\n */\n Target.prototype.getListeners = function (type) {\n return (this.listeners_ && this.listeners_[type]) || undefined;\n };\n /**\n * @param {string} [opt_type] Type. If not provided,\n * `true` will be returned if this event target has any listeners.\n * @return {boolean} Has listeners.\n */\n Target.prototype.hasListener = function (opt_type) {\n if (!this.listeners_) {\n return false;\n }\n return opt_type\n ? opt_type in this.listeners_\n : Object.keys(this.listeners_).length > 0;\n };\n /**\n * @param {string} type Type.\n * @param {import(\"../events.js\").Listener} listener Listener.\n */\n Target.prototype.removeEventListener = function (type, listener) {\n var listeners = this.listeners_ && this.listeners_[type];\n if (listeners) {\n var index = listeners.indexOf(listener);\n if (index !== -1) {\n if (this.pendingRemovals_ && type in this.pendingRemovals_) {\n // make listener a no-op, and remove later in #dispatchEvent()\n listeners[index] = VOID;\n ++this.pendingRemovals_[type];\n }\n else {\n listeners.splice(index, 1);\n if (listeners.length === 0) {\n delete this.listeners_[type];\n }\n }\n }\n }\n };\n return Target;\n}(Disposable));\nexport default Target;\n//# sourceMappingURL=Target.js.map","/**\n * @module ol/events/EventType\n */\n/**\n * @enum {string}\n * @const\n */\nexport default {\n /**\n * Generic change event. Triggered when the revision counter is increased.\n * @event module:ol/events/Event~BaseEvent#change\n * @api\n */\n CHANGE: 'change',\n /**\n * Generic error event. Triggered when an error occurs.\n * @event module:ol/events/Event~BaseEvent#error\n * @api\n */\n ERROR: 'error',\n BLUR: 'blur',\n CLEAR: 'clear',\n CONTEXTMENU: 'contextmenu',\n CLICK: 'click',\n DBLCLICK: 'dblclick',\n DRAGENTER: 'dragenter',\n DRAGOVER: 'dragover',\n DROP: 'drop',\n FOCUS: 'focus',\n KEYDOWN: 'keydown',\n KEYPRESS: 'keypress',\n LOAD: 'load',\n RESIZE: 'resize',\n TOUCHMOVE: 'touchmove',\n WHEEL: 'wheel',\n};\n//# sourceMappingURL=EventType.js.map","/**\n * @module ol/events\n */\nimport { clear } from './obj.js';\n/**\n * Key to use with {@link module:ol/Observable~Observable#unByKey}.\n * @typedef {Object} EventsKey\n * @property {ListenerFunction} listener Listener.\n * @property {import(\"./events/Target.js\").EventTargetLike} target Target.\n * @property {string} type Type.\n * @api\n */\n/**\n * Listener function. This function is called with an event object as argument.\n * When the function returns `false`, event propagation will stop.\n *\n * @typedef {function((Event|import(\"./events/Event.js\").default)): (void|boolean)} ListenerFunction\n * @api\n */\n/**\n * @typedef {Object} ListenerObject\n * @property {ListenerFunction} handleEvent HandleEvent listener function.\n */\n/**\n * @typedef {ListenerFunction|ListenerObject} Listener\n */\n/**\n * Registers an event listener on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * This function efficiently binds a `listener` to a `this` object, and returns\n * a key for use with {@link module:ol/events.unlistenByKey}.\n *\n * @param {import(\"./events/Target.js\").EventTargetLike} target Event target.\n * @param {string} type Event type.\n * @param {ListenerFunction} listener Listener.\n * @param {Object} [opt_this] Object referenced by the `this` keyword in the\n * listener. Default is the `target`.\n * @param {boolean} [opt_once] If true, add the listener as one-off listener.\n * @return {EventsKey} Unique key for the listener.\n */\nexport function listen(target, type, listener, opt_this, opt_once) {\n if (opt_this && opt_this !== target) {\n listener = listener.bind(opt_this);\n }\n if (opt_once) {\n var originalListener_1 = listener;\n listener = function () {\n target.removeEventListener(type, listener);\n originalListener_1.apply(this, arguments);\n };\n }\n var eventsKey = {\n target: target,\n type: type,\n listener: listener,\n };\n target.addEventListener(type, listener);\n return eventsKey;\n}\n/**\n * Registers a one-off event listener on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * This function efficiently binds a `listener` as self-unregistering listener\n * to a `this` object, and returns a key for use with\n * {@link module:ol/events.unlistenByKey} in case the listener needs to be\n * unregistered before it is called.\n *\n * When {@link module:ol/events.listen} is called with the same arguments after this\n * function, the self-unregistering listener will be turned into a permanent\n * listener.\n *\n * @param {import(\"./events/Target.js\").EventTargetLike} target Event target.\n * @param {string} type Event type.\n * @param {ListenerFunction} listener Listener.\n * @param {Object} [opt_this] Object referenced by the `this` keyword in the\n * listener. Default is the `target`.\n * @return {EventsKey} Key for unlistenByKey.\n */\nexport function listenOnce(target, type, listener, opt_this) {\n return listen(target, type, listener, opt_this, true);\n}\n/**\n * Unregisters event listeners on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * The argument passed to this function is the key returned from\n * {@link module:ol/events.listen} or {@link module:ol/events.listenOnce}.\n *\n * @param {EventsKey} key The key.\n */\nexport function unlistenByKey(key) {\n if (key && key.target) {\n key.target.removeEventListener(key.type, key.listener);\n clear(key);\n }\n}\n//# sourceMappingURL=events.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Observable\n */\nimport EventTarget from './events/Target.js';\nimport EventType from './events/EventType.js';\nimport { listen, listenOnce, unlistenByKey } from './events.js';\n/***\n * @template {string} Type\n * @template {Event|import(\"./events/Event.js\").default} EventClass\n * @template Return\n * @typedef {(type: Type, listener: (event: EventClass) => ?) => Return} OnSignature\n */\n/***\n * @template {string} Type\n * @template Return\n * @typedef {(type: Type[], listener: (event: Event|import(\"./events/Event\").default) => ?) => Return extends void ? void : Return[]} CombinedOnSignature\n */\n/**\n * @typedef {'change'|'error'} EventTypes\n */\n/***\n * @template Return\n * @typedef {OnSignature<EventTypes, import(\"./events/Event.js\").default, Return> & CombinedOnSignature<EventTypes, Return>} ObservableOnSignature\n */\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * An event target providing convenient methods for listener registration\n * and unregistration. A generic `change` event is always available through\n * {@link module:ol/Observable~Observable#changed}.\n *\n * @fires import(\"./events/Event.js\").default\n * @api\n */\nvar Observable = /** @class */ (function (_super) {\n __extends(Observable, _super);\n function Observable() {\n var _this = _super.call(this) || this;\n _this.on =\n /** @type {ObservableOnSignature<import(\"./events\").EventsKey>} */ (_this.onInternal);\n _this.once =\n /** @type {ObservableOnSignature<import(\"./events\").EventsKey>} */ (_this.onceInternal);\n _this.un = /** @type {ObservableOnSignature<void>} */ (_this.unInternal);\n /**\n * @private\n * @type {number}\n */\n _this.revision_ = 0;\n return _this;\n }\n /**\n * Increases the revision counter and dispatches a 'change' event.\n * @api\n */\n Observable.prototype.changed = function () {\n ++this.revision_;\n this.dispatchEvent(EventType.CHANGE);\n };\n /**\n * Get the version number for this object. Each time the object is modified,\n * its version number will be incremented.\n * @return {number} Revision.\n * @api\n */\n Observable.prototype.getRevision = function () {\n return this.revision_;\n };\n /**\n * @param {string|Array<string>} type Type.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener Listener.\n * @return {import(\"./events.js\").EventsKey|Array<import(\"./events.js\").EventsKey>} Event key.\n * @protected\n */\n Observable.prototype.onInternal = function (type, listener) {\n if (Array.isArray(type)) {\n var len = type.length;\n var keys = new Array(len);\n for (var i = 0; i < len; ++i) {\n keys[i] = listen(this, type[i], listener);\n }\n return keys;\n }\n else {\n return listen(this, /** @type {string} */ (type), listener);\n }\n };\n /**\n * @param {string|Array<string>} type Type.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener Listener.\n * @return {import(\"./events.js\").EventsKey|Array<import(\"./events.js\").EventsKey>} Event key.\n * @protected\n */\n Observable.prototype.onceInternal = function (type, listener) {\n var key;\n if (Array.isArray(type)) {\n var len = type.length;\n key = new Array(len);\n for (var i = 0; i < len; ++i) {\n key[i] = listenOnce(this, type[i], listener);\n }\n }\n else {\n key = listenOnce(this, /** @type {string} */ (type), listener);\n }\n /** @type {Object} */ (listener).ol_key = key;\n return key;\n };\n /**\n * Unlisten for a certain type of event.\n * @param {string|Array<string>} type Type.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener Listener.\n * @protected\n */\n Observable.prototype.unInternal = function (type, listener) {\n var key = /** @type {Object} */ (listener).ol_key;\n if (key) {\n unByKey(key);\n }\n else if (Array.isArray(type)) {\n for (var i = 0, ii = type.length; i < ii; ++i) {\n this.removeEventListener(type[i], listener);\n }\n }\n else {\n this.removeEventListener(type, listener);\n }\n };\n return Observable;\n}(EventTarget));\n/**\n * Listen for a certain type of event.\n * @function\n * @param {string|Array<string>} type The event type or array of event types.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener The listener function.\n * @return {import(\"./events.js\").EventsKey|Array<import(\"./events.js\").EventsKey>} Unique key for the listener. If\n * called with an array of event types as the first argument, the return\n * will be an array of keys.\n * @api\n */\nObservable.prototype.on;\n/**\n * Listen once for a certain type of event.\n * @function\n * @param {string|Array<string>} type The event type or array of event types.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener The listener function.\n * @return {import(\"./events.js\").EventsKey|Array<import(\"./events.js\").EventsKey>} Unique key for the listener. If\n * called with an array of event types as the first argument, the return\n * will be an array of keys.\n * @api\n */\nObservable.prototype.once;\n/**\n * Unlisten for a certain type of event.\n * @function\n * @param {string|Array<string>} type The event type or array of event types.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener The listener function.\n * @api\n */\nObservable.prototype.un;\n/**\n * Removes an event listener using the key returned by `on()` or `once()`.\n * @param {import(\"./events.js\").EventsKey|Array<import(\"./events.js\").EventsKey>} key The key returned by `on()`\n * or `once()` (or an array of keys).\n * @api\n */\nexport function unByKey(key) {\n if (Array.isArray(key)) {\n for (var i = 0, ii = key.length; i < ii; ++i) {\n unlistenByKey(key[i]);\n }\n }\n else {\n unlistenByKey(/** @type {import(\"./events.js\").EventsKey} */ (key));\n }\n}\nexport default Observable;\n//# sourceMappingURL=Observable.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Object\n */\nimport Event from './events/Event.js';\nimport ObjectEventType from './ObjectEventType.js';\nimport Observable from './Observable.js';\nimport { assign, isEmpty } from './obj.js';\nimport { getUid } from './util.js';\n/**\n * @classdesc\n * Events emitted by {@link module:ol/Object~BaseObject} instances are instances of this type.\n */\nvar ObjectEvent = /** @class */ (function (_super) {\n __extends(ObjectEvent, _super);\n /**\n * @param {string} type The event type.\n * @param {string} key The property name.\n * @param {*} oldValue The old value for `key`.\n */\n function ObjectEvent(type, key, oldValue) {\n var _this = _super.call(this, type) || this;\n /**\n * The name of the property whose value is changing.\n * @type {string}\n * @api\n */\n _this.key = key;\n /**\n * The old value. To get the new value use `e.target.get(e.key)` where\n * `e` is the event object.\n * @type {*}\n * @api\n */\n _this.oldValue = oldValue;\n return _this;\n }\n return ObjectEvent;\n}(Event));\nexport { ObjectEvent };\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature<import(\"./Observable\").EventTypes, import(\"./events/Event.js\").default, Return> &\n * import(\"./Observable\").OnSignature<import(\"./ObjectEventType\").Types, ObjectEvent, Return> &\n * import(\"./Observable\").CombinedOnSignature<import(\"./Observable\").EventTypes|import(\"./ObjectEventType\").Types, Return>} ObjectOnSignature\n */\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Most non-trivial classes inherit from this.\n *\n * This extends {@link module:ol/Observable} with observable\n * properties, where each property is observable as well as the object as a\n * whole.\n *\n * Classes that inherit from this have pre-defined properties, to which you can\n * add your owns. The pre-defined properties are listed in this documentation as\n * 'Observable Properties', and have their own accessors; for example,\n * {@link module:ol/Map~Map} has a `target` property, accessed with\n * `getTarget()` and changed with `setTarget()`. Not all properties are however\n * settable. There are also general-purpose accessors `get()` and `set()`. For\n * example, `get('target')` is equivalent to `getTarget()`.\n *\n * The `set` accessors trigger a change event, and you can monitor this by\n * registering a listener. For example, {@link module:ol/View~View} has a\n * `center` property, so `view.on('change:center', function(evt) {...});` would\n * call the function whenever the value of the center property changes. Within\n * the function, `evt.target` would be the view, so `evt.target.getCenter()`\n * would return the new center.\n *\n * You can add your own observable properties with\n * `object.set('prop', 'value')`, and retrieve that with `object.get('prop')`.\n * You can listen for changes on that property value with\n * `object.on('change:prop', listener)`. You can get a list of all\n * properties with {@link module:ol/Object~BaseObject#getProperties}.\n *\n * Note that the observable properties are separate from standard JS properties.\n * You can, for example, give your map object a title with\n * `map.title='New title'` and with `map.set('title', 'Another title')`. The\n * first will be a `hasOwnProperty`; the second will appear in\n * `getProperties()`. Only the second is observable.\n *\n * Properties can be deleted by using the unset method. E.g.\n * object.unset('foo').\n *\n * @fires ObjectEvent\n * @api\n */\nvar BaseObject = /** @class */ (function (_super) {\n __extends(BaseObject, _super);\n /**\n * @param {Object<string, *>} [opt_values] An object with key-value pairs.\n */\n function BaseObject(opt_values) {\n var _this = _super.call(this) || this;\n /***\n * @type {ObjectOnSignature<import(\"./events\").EventsKey>}\n */\n _this.on;\n /***\n * @type {ObjectOnSignature<import(\"./events\").EventsKey>}\n */\n _this.once;\n /***\n * @type {ObjectOnSignature<void>}\n */\n _this.un;\n // Call {@link module:ol/util.getUid} to ensure that the order of objects' ids is\n // the same as the order in which they were created. This also helps to\n // ensure that object properties are always added in the same order, which\n // helps many JavaScript engines generate faster code.\n getUid(_this);\n /**\n * @private\n * @type {Object<string, *>}\n */\n _this.values_ = null;\n if (opt_values !== undefined) {\n _this.setProperties(opt_values);\n }\n return _this;\n }\n /**\n * Gets a value.\n * @param {string} key Key name.\n * @return {*} Value.\n * @api\n */\n BaseObject.prototype.get = function (key) {\n var value;\n if (this.values_ && this.values_.hasOwnProperty(key)) {\n value = this.values_[key];\n }\n return value;\n };\n /**\n * Get a list of object property names.\n * @return {Array<string>} List of property names.\n * @api\n */\n BaseObject.prototype.getKeys = function () {\n return (this.values_ && Object.keys(this.values_)) || [];\n };\n /**\n * Get an object of all property names and values.\n * @return {Object<string, *>} Object.\n * @api\n */\n BaseObject.prototype.getProperties = function () {\n return (this.values_ && assign({}, this.values_)) || {};\n };\n /**\n * @return {boolean} The object has properties.\n */\n BaseObject.prototype.hasProperties = function () {\n return !!this.values_;\n };\n /**\n * @param {string} key Key name.\n * @param {*} oldValue Old value.\n */\n BaseObject.prototype.notify = function (key, oldValue) {\n var eventType;\n eventType = \"change:\" + key;\n this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));\n eventType = ObjectEventType.PROPERTYCHANGE;\n this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));\n };\n /**\n * @param {string} key Key name.\n * @param {import(\"./events.js\").Listener} listener Listener.\n */\n BaseObject.prototype.addChangeListener = function (key, listener) {\n this.addEventListener(\"change:\" + key, listener);\n };\n /**\n * @param {string} key Key name.\n * @param {import(\"./events.js\").Listener} listener Listener.\n */\n BaseObject.prototype.removeChangeListener = function (key, listener) {\n this.removeEventListener(\"change:\" + key, listener);\n };\n /**\n * Sets a value.\n * @param {string} key Key name.\n * @param {*} value Value.\n * @param {boolean} [opt_silent] Update without triggering an event.\n * @api\n */\n BaseObject.prototype.set = function (key, value, opt_silent) {\n var values = this.values_ || (this.values_ = {});\n if (opt_silent) {\n values[key] = value;\n }\n else {\n var oldValue = values[key];\n values[key] = value;\n if (oldValue !== value) {\n this.notify(key, oldValue);\n }\n }\n };\n /**\n * Sets a collection of key-value pairs. Note that this changes any existing\n * properties and adds new ones (it does not remove any existing properties).\n * @param {Object<string, *>} values Values.\n * @param {boolean} [opt_silent] Update without triggering an event.\n * @api\n */\n BaseObject.prototype.setProperties = function (values, opt_silent) {\n for (var key in values) {\n this.set(key, values[key], opt_silent);\n }\n };\n /**\n * Apply any properties from another object without triggering events.\n * @param {BaseObject} source The source object.\n * @protected\n */\n BaseObject.prototype.applyProperties = function (source) {\n if (!source.values_) {\n return;\n }\n assign(this.values_ || (this.values_ = {}), source.values_);\n };\n /**\n * Unsets a property.\n * @param {string} key Key name.\n * @param {boolean} [opt_silent] Unset without triggering an event.\n * @api\n */\n BaseObject.prototype.unset = function (key, opt_silent) {\n if (this.values_ && key in this.values_) {\n var oldValue = this.values_[key];\n delete this.values_[key];\n if (isEmpty(this.values_)) {\n this.values_ = null;\n }\n if (!opt_silent) {\n this.notify(key, oldValue);\n }\n }\n };\n return BaseObject;\n}(Observable));\nexport default BaseObject;\n//# sourceMappingURL=Object.js.map","/**\n * @module ol/CollectionEventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered when an item is added to the collection.\n * @event module:ol/Collection.CollectionEvent#add\n * @api\n */\n ADD: 'add',\n /**\n * Triggered when an item is removed from the collection.\n * @event module:ol/Collection.CollectionEvent#remove\n * @api\n */\n REMOVE: 'remove',\n};\n//# sourceMappingURL=CollectionEventType.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Collection\n */\nimport AssertionError from './AssertionError.js';\nimport BaseObject from './Object.js';\nimport CollectionEventType from './CollectionEventType.js';\nimport Event from './events/Event.js';\n/**\n * @enum {string}\n * @private\n */\nvar Property = {\n LENGTH: 'length',\n};\n/**\n * @classdesc\n * Events emitted by {@link module:ol/Collection~Collection} instances are instances of this\n * type.\n */\nvar CollectionEvent = /** @class */ (function (_super) {\n __extends(CollectionEvent, _super);\n /**\n * @param {import(\"./CollectionEventType.js\").default} type Type.\n * @param {*} [opt_element] Element.\n * @param {number} [opt_index] The index of the added or removed element.\n */\n function CollectionEvent(type, opt_element, opt_index) {\n var _this = _super.call(this, type) || this;\n /**\n * The element that is added to or removed from the collection.\n * @type {*}\n * @api\n */\n _this.element = opt_element;\n /**\n * The index of the added or removed element.\n * @type {number}\n * @api\n */\n _this.index = opt_index;\n return _this;\n }\n return CollectionEvent;\n}(Event));\nexport { CollectionEvent };\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature<import(\"./Observable\").EventTypes, import(\"./events/Event.js\").default, Return> &\n * import(\"./Observable\").OnSignature<import(\"./ObjectEventType\").Types|'change:length', import(\"./Object\").ObjectEvent, Return> &\n * import(\"./Observable\").OnSignature<'add'|'remove', CollectionEvent, Return> &\n * import(\"./Observable\").CombinedOnSignature<import(\"./Observable\").EventTypes|import(\"./ObjectEventType\").Types|\n * 'change:length'|'add'|'remove',Return>} CollectionOnSignature\n */\n/**\n * @typedef {Object} Options\n * @property {boolean} [unique=false] Disallow the same item from being added to\n * the collection twice.\n */\n/**\n * @classdesc\n * An expanded version of standard JS Array, adding convenience methods for\n * manipulation. Add and remove changes to the Collection trigger a Collection\n * event. Note that this does not cover changes to the objects _within_ the\n * Collection; they trigger events on the appropriate object, not on the\n * Collection as a whole.\n *\n * @fires CollectionEvent\n *\n * @template T\n * @api\n */\nvar Collection = /** @class */ (function (_super) {\n __extends(Collection, _super);\n /**\n * @param {Array<T>} [opt_array] Array.\n * @param {Options} [opt_options] Collection options.\n */\n function Collection(opt_array, opt_options) {\n var _this = _super.call(this) || this;\n /***\n * @type {CollectionOnSignature<import(\"./events\").EventsKey>}\n */\n _this.on;\n /***\n * @type {CollectionOnSignature<import(\"./events\").EventsKey>}\n */\n _this.once;\n /***\n * @type {CollectionOnSignature<void>}\n */\n _this.un;\n var options = opt_options || {};\n /**\n * @private\n * @type {boolean}\n */\n _this.unique_ = !!options.unique;\n /**\n * @private\n * @type {!Array<T>}\n */\n _this.array_ = opt_array ? opt_array : [];\n if (_this.unique_) {\n for (var i = 0, ii = _this.array_.length; i < ii; ++i) {\n _this.assertUnique_(_this.array_[i], i);\n }\n }\n _this.updateLength_();\n return _this;\n }\n /**\n * Remove all elements from the collection.\n * @api\n */\n Collection.prototype.clear = function () {\n while (this.getLength() > 0) {\n this.pop();\n }\n };\n /**\n * Add elements to the collection. This pushes each item in the provided array\n * to the end of the collection.\n * @param {!Array<T>} arr Array.\n * @return {Collection<T>} This collection.\n * @api\n */\n Collection.prototype.extend = function (arr) {\n for (var i = 0, ii = arr.length; i < ii; ++i) {\n this.push(arr[i]);\n }\n return this;\n };\n /**\n * Iterate over each element, calling the provided callback.\n * @param {function(T, number, Array<T>): *} f The function to call\n * for every element. This function takes 3 arguments (the element, the\n * index and the array). The return value is ignored.\n * @api\n */\n Collection.prototype.forEach = function (f) {\n var array = this.array_;\n for (var i = 0, ii = array.length; i < ii; ++i) {\n f(array[i], i, array);\n }\n };\n /**\n * Get a reference to the underlying Array object. Warning: if the array\n * is mutated, no events will be dispatched by the collection, and the\n * collection's \"length\" property won't be in sync with the actual length\n * of the array.\n * @return {!Array<T>} Array.\n * @api\n */\n Collection.prototype.getArray = function () {\n return this.array_;\n };\n /**\n * Get the element at the provided index.\n * @param {number} index Index.\n * @return {T} Element.\n * @api\n */\n Collection.prototype.item = function (index) {\n return this.array_[index];\n };\n /**\n * Get the length of this collection.\n * @return {number} The length of the array.\n * @observable\n * @api\n */\n Collection.prototype.getLength = function () {\n return this.get(Property.LENGTH);\n };\n /**\n * Insert an element at the provided index.\n * @param {number} index Index.\n * @param {T} elem Element.\n * @api\n */\n Collection.prototype.insertAt = function (index, elem) {\n if (this.unique_) {\n this.assertUnique_(elem);\n }\n this.array_.splice(index, 0, elem);\n this.updateLength_();\n this.dispatchEvent(new CollectionEvent(CollectionEventType.ADD, elem, index));\n };\n /**\n * Remove the last element of the collection and return it.\n * Return `undefined` if the collection is empty.\n * @return {T|undefined} Element.\n * @api\n */\n Collection.prototype.pop = function () {\n return this.removeAt(this.getLength() - 1);\n };\n /**\n * Insert the provided element at the end of the collection.\n * @param {T} elem Element.\n * @return {number} New length of the collection.\n * @api\n */\n Collection.prototype.push = function (elem) {\n if (this.unique_) {\n this.assertUnique_(elem);\n }\n var n = this.getLength();\n this.insertAt(n, elem);\n return this.getLength();\n };\n /**\n * Remove the first occurrence of an element from the collection.\n * @param {T} elem Element.\n * @return {T|undefined} The removed element or undefined if none found.\n * @api\n */\n Collection.prototype.remove = function (elem) {\n var arr = this.array_;\n for (var i = 0, ii = arr.length; i < ii; ++i) {\n if (arr[i] === elem) {\n return this.removeAt(i);\n }\n }\n return undefined;\n };\n /**\n * Remove the element at the provided index and return it.\n * Return `undefined` if the collection does not contain this index.\n * @param {number} index Index.\n * @return {T|undefined} Value.\n * @api\n */\n Collection.prototype.removeAt = function (index) {\n var prev = this.array_[index];\n this.array_.splice(index, 1);\n this.updateLength_();\n this.dispatchEvent(new CollectionEvent(CollectionEventType.REMOVE, prev, index));\n return prev;\n };\n /**\n * Set the element at the provided index.\n * @param {number} index Index.\n * @param {T} elem Element.\n * @api\n */\n Collection.prototype.setAt = function (index, elem) {\n var n = this.getLength();\n if (index < n) {\n if (this.unique_) {\n this.assertUnique_(elem, index);\n }\n var prev = this.array_[index];\n this.array_[index] = elem;\n this.dispatchEvent(new CollectionEvent(CollectionEventType.REMOVE, prev, index));\n this.dispatchEvent(new CollectionEvent(CollectionEventType.ADD, elem, index));\n }\n else {\n for (var j = n; j < index; ++j) {\n this.insertAt(j, undefined);\n }\n this.insertAt(index, elem);\n }\n };\n /**\n * @private\n */\n Collection.prototype.updateLength_ = function () {\n this.set(Property.LENGTH, this.array_.length);\n };\n /**\n * @private\n * @param {T} elem Element.\n * @param {number} [opt_except] Optional index to ignore.\n */\n Collection.prototype.assertUnique_ = function (elem, opt_except) {\n for (var i = 0, ii = this.array_.length; i < ii; ++i) {\n if (this.array_[i] === elem && i !== opt_except) {\n throw new AssertionError(58);\n }\n }\n };\n return Collection;\n}(BaseObject));\nexport default Collection;\n//# sourceMappingURL=Collection.js.map","/**\n * @module ol/asserts\n */\nimport AssertionError from './AssertionError.js';\n/**\n * @param {*} assertion Assertion we expected to be truthy.\n * @param {number} errorCode Error code.\n */\nexport function assert(assertion, errorCode) {\n if (!assertion) {\n throw new AssertionError(errorCode);\n }\n}\n//# sourceMappingURL=asserts.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Feature\n */\nimport BaseObject from './Object.js';\nimport EventType from './events/EventType.js';\nimport { assert } from './asserts.js';\nimport { listen, unlistenByKey } from './events.js';\n/**\n * @typedef {typeof Feature|typeof import(\"./render/Feature.js\").default} FeatureClass\n */\n/**\n * @typedef {Feature<import(\"./geom/Geometry.js\").default>|import(\"./render/Feature.js\").default} FeatureLike\n */\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature<import(\"./Observable\").EventTypes, import(\"./events/Event.js\").default, Return> &\n * import(\"./Observable\").OnSignature<import(\"./ObjectEventType\").Types|'change:geometry', import(\"./Object\").ObjectEvent, Return> &\n * import(\"./Observable\").CombinedOnSignature<import(\"./Observable\").EventTypes|import(\"./ObjectEventType\").Types\n * |'change:geometry', Return>} FeatureOnSignature\n */\n/***\n * @template Geometry\n * @typedef {Object<string, *> & { geometry?: Geometry }} ObjectWithGeometry\n */\n/**\n * @classdesc\n * A vector object for geographic features with a geometry and other\n * attribute properties, similar to the features in vector file formats like\n * GeoJSON.\n *\n * Features can be styled individually with `setStyle`; otherwise they use the\n * style of their vector layer.\n *\n * Note that attribute properties are set as {@link module:ol/Object} properties on\n * the feature object, so they are observable, and have get/set accessors.\n *\n * Typically, a feature has a single geometry property. You can set the\n * geometry using the `setGeometry` method and get it with `getGeometry`.\n * It is possible to store more than one geometry on a feature using attribute\n * properties. By default, the geometry used for rendering is identified by\n * the property name `geometry`. If you want to use another geometry property\n * for rendering, use the `setGeometryName` method to change the attribute\n * property associated with the geometry for the feature. For example:\n *\n * ```js\n *\n * import Feature from 'ol/Feature';\n * import Polygon from 'ol/geom/Polygon';\n * import Point from 'ol/geom/Point';\n *\n * var feature = new Feature({\n * geometry: new Polygon(polyCoords),\n * labelPoint: new Point(labelCoords),\n * name: 'My Polygon'\n * });\n *\n * // get the polygon geometry\n * var poly = feature.getGeometry();\n *\n * // Render the feature as a point using the coordinates from labelPoint\n * feature.setGeometryName('labelPoint');\n *\n * // get the point geometry\n * var point = feature.getGeometry();\n * ```\n *\n * @api\n * @template {import(\"./geom/Geometry.js\").default} Geometry\n */\nvar Feature = /** @class */ (function (_super) {\n __extends(Feature, _super);\n /**\n * @param {Geometry|ObjectWithGeometry<Geometry>} [opt_geometryOrProperties]\n * You may pass a Geometry object directly, or an object literal containing\n * properties. If you pass an object literal, you may include a Geometry\n * associated with a `geometry` key.\n */\n function Feature(opt_geometryOrProperties) {\n var _this = _super.call(this) || this;\n /***\n * @type {FeatureOnSignature<import(\"./events\").EventsKey>}\n */\n _this.on;\n /***\n * @type {FeatureOnSignature<import(\"./events\").EventsKey>}\n */\n _this.once;\n /***\n * @type {FeatureOnSignature<void>}\n */\n _this.un;\n /**\n * @private\n * @type {number|string|undefined}\n */\n _this.id_ = undefined;\n /**\n * @type {string}\n * @private\n */\n _this.geometryName_ = 'geometry';\n /**\n * User provided style.\n * @private\n * @type {import(\"./style/Style.js\").StyleLike}\n */\n _this.style_ = null;\n /**\n * @private\n * @type {import(\"./style/Style.js\").StyleFunction|undefined}\n */\n _this.styleFunction_ = undefined;\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n _this.geometryChangeKey_ = null;\n _this.addChangeListener(_this.geometryName_, _this.handleGeometryChanged_);\n if (opt_geometryOrProperties) {\n if (typeof (\n /** @type {?} */ (opt_geometryOrProperties).getSimplifiedGeometry) === 'function') {\n var geometry = /** @type {Geometry} */ (opt_geometryOrProperties);\n _this.setGeometry(geometry);\n }\n else {\n /** @type {Object<string, *>} */\n var properties = opt_geometryOrProperties;\n _this.setProperties(properties);\n }\n }\n return _this;\n }\n /**\n * Clone this feature. If the original feature has a geometry it\n * is also cloned. The feature id is not set in the clone.\n * @return {Feature<Geometry>} The clone.\n * @api\n */\n Feature.prototype.clone = function () {\n var clone = /** @type {Feature<Geometry>} */ (new Feature(this.hasProperties() ? this.getProperties() : null));\n clone.setGeometryName(this.getGeometryName());\n var geometry = this.getGeometry();\n if (geometry) {\n clone.setGeometry(/** @type {Geometry} */ (geometry.clone()));\n }\n var style = this.getStyle();\n if (style) {\n clone.setStyle(style);\n }\n return clone;\n };\n /**\n * Get the feature's default geometry. A feature may have any number of named\n * geometries. The \"default\" geometry (the one that is rendered by default) is\n * set when calling {@link module:ol/Feature~Feature#setGeometry}.\n * @return {Geometry|undefined} The default geometry for the feature.\n * @api\n * @observable\n */\n Feature.prototype.getGeometry = function () {\n return /** @type {Geometry|undefined} */ (this.get(this.geometryName_));\n };\n /**\n * Get the feature identifier. This is a stable identifier for the feature and\n * is either set when reading data from a remote source or set explicitly by\n * calling {@link module:ol/Feature~Feature#setId}.\n * @return {number|string|undefined} Id.\n * @api\n */\n Feature.prototype.getId = function () {\n return this.id_;\n };\n /**\n * Get the name of the feature's default geometry. By default, the default\n * geometry is named `geometry`.\n * @return {string} Get the property name associated with the default geometry\n * for this feature.\n * @api\n */\n Feature.prototype.getGeometryName = function () {\n return this.geometryName_;\n };\n /**\n * Get the feature's style. Will return what was provided to the\n * {@link module:ol/Feature~Feature#setStyle} method.\n * @return {import(\"./style/Style.js\").StyleLike|undefined} The feature style.\n * @api\n */\n Feature.prototype.getStyle = function () {\n return this.style_;\n };\n /**\n * Get the feature's style function.\n * @return {import(\"./style/Style.js\").StyleFunction|undefined} Return a function\n * representing the current style of this feature.\n * @api\n */\n Feature.prototype.getStyleFunction = function () {\n return this.styleFunction_;\n };\n /**\n * @private\n */\n Feature.prototype.handleGeometryChange_ = function () {\n this.changed();\n };\n /**\n * @private\n */\n Feature.prototype.handleGeometryChanged_ = function () {\n if (this.geometryChangeKey_) {\n unlistenByKey(this.geometryChangeKey_);\n this.geometryChangeKey_ = null;\n }\n var geometry = this.getGeometry();\n if (geometry) {\n this.geometryChangeKey_ = listen(geometry, EventType.CHANGE, this.handleGeometryChange_, this);\n }\n this.changed();\n };\n /**\n * Set the default geometry for the feature. This will update the property\n * with the name returned by {@link module:ol/Feature~Feature#getGeometryName}.\n * @param {Geometry|undefined} geometry The new geometry.\n * @api\n * @observable\n */\n Feature.prototype.setGeometry = function (geometry) {\n this.set(this.geometryName_, geometry);\n };\n /**\n * Set the style for the feature to override the layer style. This can be a\n * single style object, an array of styles, or a function that takes a\n * resolution and returns an array of styles. To unset the feature style, call\n * `setStyle()` without arguments or a falsey value.\n * @param {import(\"./style/Style.js\").StyleLike} [opt_style] Style for this feature.\n * @api\n * @fires module:ol/events/Event~BaseEvent#event:change\n */\n Feature.prototype.setStyle = function (opt_style) {\n this.style_ = opt_style;\n this.styleFunction_ = !opt_style\n ? undefined\n : createStyleFunction(opt_style);\n this.changed();\n };\n /**\n * Set the feature id. The feature id is considered stable and may be used when\n * requesting features or comparing identifiers returned from a remote source.\n * The feature id can be used with the\n * {@link module:ol/source/Vector~VectorSource#getFeatureById} method.\n * @param {number|string|undefined} id The feature id.\n * @api\n * @fires module:ol/events/Event~BaseEvent#event:change\n */\n Feature.prototype.setId = function (id) {\n this.id_ = id;\n this.changed();\n };\n /**\n * Set the property name to be used when getting the feature's default geometry.\n * When calling {@link module:ol/Feature~Feature#getGeometry}, the value of the property with\n * this name will be returned.\n * @param {string} name The property name of the default geometry.\n * @api\n */\n Feature.prototype.setGeometryName = function (name) {\n this.removeChangeListener(this.geometryName_, this.handleGeometryChanged_);\n this.geometryName_ = name;\n this.addChangeListener(this.geometryName_, this.handleGeometryChanged_);\n this.handleGeometryChanged_();\n };\n return Feature;\n}(BaseObject));\n/**\n * Convert the provided object into a feature style function. Functions passed\n * through unchanged. Arrays of Style or single style objects wrapped\n * in a new feature style function.\n * @param {!import(\"./style/Style.js\").StyleFunction|!Array<import(\"./style/Style.js\").default>|!import(\"./style/Style.js\").default} obj\n * A feature style function, a single style, or an array of styles.\n * @return {import(\"./style/Style.js\").StyleFunction} A style function.\n */\nexport function createStyleFunction(obj) {\n if (typeof obj === 'function') {\n return obj;\n }\n else {\n /**\n * @type {Array<import(\"./style/Style.js\").default>}\n */\n var styles_1;\n if (Array.isArray(obj)) {\n styles_1 = obj;\n }\n else {\n assert(typeof ( /** @type {?} */(obj).getZIndex) === 'function', 41); // Expected an `import(\"./style/Style.js\").Style` or an array of `import(\"./style/Style.js\").Style`\n var style = /** @type {import(\"./style/Style.js\").default} */ (obj);\n styles_1 = [style];\n }\n return function () {\n return styles_1;\n };\n }\n}\nexport default Feature;\n//# sourceMappingURL=Feature.js.map","/**\n * @module ol/extent\n */\nimport Corner from './extent/Corner.js';\nimport Relationship from './extent/Relationship.js';\nimport { assert } from './asserts.js';\n/**\n * An array of numbers representing an extent: `[minx, miny, maxx, maxy]`.\n * @typedef {Array<number>} Extent\n * @api\n */\n/**\n * Build an extent that includes all given coordinates.\n *\n * @param {Array<import(\"./coordinate.js\").Coordinate>} coordinates Coordinates.\n * @return {Extent} Bounding extent.\n * @api\n */\nexport function boundingExtent(coordinates) {\n var extent = createEmpty();\n for (var i = 0, ii = coordinates.length; i < ii; ++i) {\n extendCoordinate(extent, coordinates[i]);\n }\n return extent;\n}\n/**\n * @param {Array<number>} xs Xs.\n * @param {Array<number>} ys Ys.\n * @param {Extent} [opt_extent] Destination extent.\n * @private\n * @return {Extent} Extent.\n */\nfunction _boundingExtentXYs(xs, ys, opt_extent) {\n var minX = Math.min.apply(null, xs);\n var minY = Math.min.apply(null, ys);\n var maxX = Math.max.apply(null, xs);\n var maxY = Math.max.apply(null, ys);\n return createOrUpdate(minX, minY, maxX, maxY, opt_extent);\n}\n/**\n * Return extent increased by the provided value.\n * @param {Extent} extent Extent.\n * @param {number} value The amount by which the extent should be buffered.\n * @param {Extent} [opt_extent] Extent.\n * @return {Extent} Extent.\n * @api\n */\nexport function buffer(extent, value, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = extent[0] - value;\n opt_extent[1] = extent[1] - value;\n opt_extent[2] = extent[2] + value;\n opt_extent[3] = extent[3] + value;\n return opt_extent;\n }\n else {\n return [\n extent[0] - value,\n extent[1] - value,\n extent[2] + value,\n extent[3] + value,\n ];\n }\n}\n/**\n * Creates a clone of an extent.\n *\n * @param {Extent} extent Extent to clone.\n * @param {Extent} [opt_extent] Extent.\n * @return {Extent} The clone.\n */\nexport function clone(extent, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = extent[0];\n opt_extent[1] = extent[1];\n opt_extent[2] = extent[2];\n opt_extent[3] = extent[3];\n return opt_extent;\n }\n else {\n return extent.slice();\n }\n}\n/**\n * @param {Extent} extent Extent.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {number} Closest squared distance.\n */\nexport function closestSquaredDistanceXY(extent, x, y) {\n var dx, dy;\n if (x < extent[0]) {\n dx = extent[0] - x;\n }\n else if (extent[2] < x) {\n dx = x - extent[2];\n }\n else {\n dx = 0;\n }\n if (y < extent[1]) {\n dy = extent[1] - y;\n }\n else if (extent[3] < y) {\n dy = y - extent[3];\n }\n else {\n dy = 0;\n }\n return dx * dx + dy * dy;\n}\n/**\n * Check if the passed coordinate is contained or on the edge of the extent.\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} The coordinate is contained in the extent.\n * @api\n */\nexport function containsCoordinate(extent, coordinate) {\n return containsXY(extent, coordinate[0], coordinate[1]);\n}\n/**\n * Check if one extent contains another.\n *\n * An extent is deemed contained if it lies completely within the other extent,\n * including if they share one or more edges.\n *\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {boolean} The second extent is contained by or on the edge of the\n * first.\n * @api\n */\nexport function containsExtent(extent1, extent2) {\n return (extent1[0] <= extent2[0] &&\n extent2[2] <= extent1[2] &&\n extent1[1] <= extent2[1] &&\n extent2[3] <= extent1[3]);\n}\n/**\n * Check if the passed coordinate is contained or on the edge of the extent.\n *\n * @param {Extent} extent Extent.\n * @param {number} x X coordinate.\n * @param {number} y Y coordinate.\n * @return {boolean} The x, y values are contained in the extent.\n * @api\n */\nexport function containsXY(extent, x, y) {\n return extent[0] <= x && x <= extent[2] && extent[1] <= y && y <= extent[3];\n}\n/**\n * Get the relationship between a coordinate and extent.\n * @param {Extent} extent The extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate The coordinate.\n * @return {import(\"./extent/Relationship.js\").default} The relationship (bitwise compare with\n * import(\"./extent/Relationship.js\").Relationship).\n */\nexport function coordinateRelationship(extent, coordinate) {\n var minX = extent[0];\n var minY = extent[1];\n var maxX = extent[2];\n var maxY = extent[3];\n var x = coordinate[0];\n var y = coordinate[1];\n var relationship = Relationship.UNKNOWN;\n if (x < minX) {\n relationship = relationship | Relationship.LEFT;\n }\n else if (x > maxX) {\n relationship = relationship | Relationship.RIGHT;\n }\n if (y < minY) {\n relationship = relationship | Relationship.BELOW;\n }\n else if (y > maxY) {\n relationship = relationship | Relationship.ABOVE;\n }\n if (relationship === Relationship.UNKNOWN) {\n relationship = Relationship.INTERSECTING;\n }\n return relationship;\n}\n/**\n * Create an empty extent.\n * @return {Extent} Empty extent.\n * @api\n */\nexport function createEmpty() {\n return [Infinity, Infinity, -Infinity, -Infinity];\n}\n/**\n * Create a new extent or update the provided extent.\n * @param {number} minX Minimum X.\n * @param {number} minY Minimum Y.\n * @param {number} maxX Maximum X.\n * @param {number} maxY Maximum Y.\n * @param {Extent} [opt_extent] Destination extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdate(minX, minY, maxX, maxY, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = minX;\n opt_extent[1] = minY;\n opt_extent[2] = maxX;\n opt_extent[3] = maxY;\n return opt_extent;\n }\n else {\n return [minX, minY, maxX, maxY];\n }\n}\n/**\n * Create a new empty extent or make the provided one empty.\n * @param {Extent} [opt_extent] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateEmpty(opt_extent) {\n return createOrUpdate(Infinity, Infinity, -Infinity, -Infinity, opt_extent);\n}\n/**\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {Extent} [opt_extent] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromCoordinate(coordinate, opt_extent) {\n var x = coordinate[0];\n var y = coordinate[1];\n return createOrUpdate(x, y, x, y, opt_extent);\n}\n/**\n * @param {Array<import(\"./coordinate.js\").Coordinate>} coordinates Coordinates.\n * @param {Extent} [opt_extent] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromCoordinates(coordinates, opt_extent) {\n var extent = createOrUpdateEmpty(opt_extent);\n return extendCoordinates(extent, coordinates);\n}\n/**\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {Extent} [opt_extent] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromFlatCoordinates(flatCoordinates, offset, end, stride, opt_extent) {\n var extent = createOrUpdateEmpty(opt_extent);\n return extendFlatCoordinates(extent, flatCoordinates, offset, end, stride);\n}\n/**\n * @param {Array<Array<import(\"./coordinate.js\").Coordinate>>} rings Rings.\n * @param {Extent} [opt_extent] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromRings(rings, opt_extent) {\n var extent = createOrUpdateEmpty(opt_extent);\n return extendRings(extent, rings);\n}\n/**\n * Determine if two extents are equivalent.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {boolean} The two extents are equivalent.\n * @api\n */\nexport function equals(extent1, extent2) {\n return (extent1[0] == extent2[0] &&\n extent1[2] == extent2[2] &&\n extent1[1] == extent2[1] &&\n extent1[3] == extent2[3]);\n}\n/**\n * Determine if two extents are approximately equivalent.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @param {number} tolerance Tolerance in extent coordinate units.\n * @return {boolean} The two extents differ by less than the tolerance.\n */\nexport function approximatelyEquals(extent1, extent2, tolerance) {\n return (Math.abs(extent1[0] - extent2[0]) < tolerance &&\n Math.abs(extent1[2] - extent2[2]) < tolerance &&\n Math.abs(extent1[1] - extent2[1]) < tolerance &&\n Math.abs(extent1[3] - extent2[3]) < tolerance);\n}\n/**\n * Modify an extent to include another extent.\n * @param {Extent} extent1 The extent to be modified.\n * @param {Extent} extent2 The extent that will be included in the first.\n * @return {Extent} A reference to the first (extended) extent.\n * @api\n */\nexport function extend(extent1, extent2) {\n if (extent2[0] < extent1[0]) {\n extent1[0] = extent2[0];\n }\n if (extent2[2] > extent1[2]) {\n extent1[2] = extent2[2];\n }\n if (extent2[1] < extent1[1]) {\n extent1[1] = extent2[1];\n }\n if (extent2[3] > extent1[3]) {\n extent1[3] = extent2[3];\n }\n return extent1;\n}\n/**\n * @param {Extent} extent Extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n */\nexport function extendCoordinate(extent, coordinate) {\n if (coordinate[0] < extent[0]) {\n extent[0] = coordinate[0];\n }\n if (coordinate[0] > extent[2]) {\n extent[2] = coordinate[0];\n }\n if (coordinate[1] < extent[1]) {\n extent[1] = coordinate[1];\n }\n if (coordinate[1] > extent[3]) {\n extent[3] = coordinate[1];\n }\n}\n/**\n * @param {Extent} extent Extent.\n * @param {Array<import(\"./coordinate.js\").Coordinate>} coordinates Coordinates.\n * @return {Extent} Extent.\n */\nexport function extendCoordinates(extent, coordinates) {\n for (var i = 0, ii = coordinates.length; i < ii; ++i) {\n extendCoordinate(extent, coordinates[i]);\n }\n return extent;\n}\n/**\n * @param {Extent} extent Extent.\n * @param {Array<number>} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {Extent} Extent.\n */\nexport function extendFlatCoordinates(extent, flatCoordinates, offset, end, stride) {\n for (; offset < end; offset += stride) {\n extendXY(extent, flatCoordinates[offset], flatCoordinates[offset + 1]);\n }\n return extent;\n}\n/**\n * @param {Extent} extent Extent.\n * @param {Array<Array<import(\"./coordinate.js\").Coordinate>>} rings Rings.\n * @return {Extent} Extent.\n */\nexport function extendRings(extent, rings) {\n for (var i = 0, ii = rings.length; i < ii; ++i) {\n extendCoordinates(extent, rings[i]);\n }\n return extent;\n}\n/**\n * @param {Extent} extent Extent.\n * @param {number} x X.\n * @param {number} y Y.\n */\nexport function extendXY(extent, x, y) {\n extent[0] = Math.min(extent[0], x);\n extent[1] = Math.min(extent[1], y);\n extent[2] = Math.max(extent[2], x);\n extent[3] = Math.max(extent[3], y);\n}\n/**\n * This function calls `callback` for each corner of the extent. If the\n * callback returns a truthy value the function returns that value\n * immediately. Otherwise the function returns `false`.\n * @param {Extent} extent Extent.\n * @param {function(import(\"./coordinate.js\").Coordinate): S} callback Callback.\n * @return {S|boolean} Value.\n * @template S\n */\nexport function forEachCorner(extent, callback) {\n var val;\n val = callback(getBottomLeft(extent));\n if (val) {\n return val;\n }\n val = callback(getBottomRight(extent));\n if (val) {\n return val;\n }\n val = callback(getTopRight(extent));\n if (val) {\n return val;\n }\n val = callback(getTopLeft(extent));\n if (val) {\n return val;\n }\n return false;\n}\n/**\n * Get the size of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Area.\n * @api\n */\nexport function getArea(extent) {\n var area = 0;\n if (!isEmpty(extent)) {\n area = getWidth(extent) * getHeight(extent);\n }\n return area;\n}\n/**\n * Get the bottom left coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Bottom left coordinate.\n * @api\n */\nexport function getBottomLeft(extent) {\n return [extent[0], extent[1]];\n}\n/**\n * Get the bottom right coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Bottom right coordinate.\n * @api\n */\nexport function getBottomRight(extent) {\n return [extent[2], extent[1]];\n}\n/**\n * Get the center coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Center.\n * @api\n */\nexport function getCenter(extent) {\n return [(extent[0] + extent[2]) / 2, (extent[1] + extent[3]) / 2];\n}\n/**\n * Get a corner coordinate of an extent.\n * @param {Extent} extent Extent.\n * @param {import(\"./extent/Corner.js\").default} corner Corner.\n * @return {import(\"./coordinate.js\").Coordinate} Corner coordinate.\n */\nexport function getCorner(extent, corner) {\n var coordinate;\n if (corner === Corner.BOTTOM_LEFT) {\n coordinate = getBottomLeft(extent);\n }\n else if (corner === Corner.BOTTOM_RIGHT) {\n coordinate = getBottomRight(extent);\n }\n else if (corner === Corner.TOP_LEFT) {\n coordinate = getTopLeft(extent);\n }\n else if (corner === Corner.TOP_RIGHT) {\n coordinate = getTopRight(extent);\n }\n else {\n assert(false, 13); // Invalid corner\n }\n return coordinate;\n}\n/**\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {number} Enlarged area.\n */\nexport function getEnlargedArea(extent1, extent2) {\n var minX = Math.min(extent1[0], extent2[0]);\n var minY = Math.min(extent1[1], extent2[1]);\n var maxX = Math.max(extent1[2], extent2[2]);\n var maxY = Math.max(extent1[3], extent2[3]);\n return (maxX - minX) * (maxY - minY);\n}\n/**\n * @param {import(\"./coordinate.js\").Coordinate} center Center.\n * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @param {import(\"./size.js\").Size} size Size.\n * @param {Extent} [opt_extent] Destination extent.\n * @return {Extent} Extent.\n */\nexport function getForViewAndSize(center, resolution, rotation, size, opt_extent) {\n var dx = (resolution * size[0]) / 2;\n var dy = (resolution * size[1]) / 2;\n var cosRotation = Math.cos(rotation);\n var sinRotation = Math.sin(rotation);\n var xCos = dx * cosRotation;\n var xSin = dx * sinRotation;\n var yCos = dy * cosRotation;\n var ySin = dy * sinRotation;\n var x = center[0];\n var y = center[1];\n var x0 = x - xCos + ySin;\n var x1 = x - xCos - ySin;\n var x2 = x + xCos - ySin;\n var x3 = x + xCos + ySin;\n var y0 = y - xSin - yCos;\n var y1 = y - xSin + yCos;\n var y2 = y + xSin + yCos;\n var y3 = y + xSin - yCos;\n return createOrUpdate(Math.min(x0, x1, x2, x3), Math.min(y0, y1, y2, y3), Math.max(x0, x1, x2, x3), Math.max(y0, y1, y2, y3), opt_extent);\n}\n/**\n * Get the height of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Height.\n * @api\n */\nexport function getHeight(extent) {\n return extent[3] - extent[1];\n}\n/**\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {number} Intersection area.\n */\nexport function getIntersectionArea(extent1, extent2) {\n var intersection = getIntersection(extent1, extent2);\n return getArea(intersection);\n}\n/**\n * Get the intersection of two extents.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @param {Extent} [opt_extent] Optional extent to populate with intersection.\n * @return {Extent} Intersecting extent.\n * @api\n */\nexport function getIntersection(extent1, extent2, opt_extent) {\n var intersection = opt_extent ? opt_extent : createEmpty();\n if (intersects(extent1, extent2)) {\n if (extent1[0] > extent2[0]) {\n intersection[0] = extent1[0];\n }\n else {\n intersection[0] = extent2[0];\n }\n if (extent1[1] > extent2[1]) {\n intersection[1] = extent1[1];\n }\n else {\n intersection[1] = extent2[1];\n }\n if (extent1[2] < extent2[2]) {\n intersection[2] = extent1[2];\n }\n else {\n intersection[2] = extent2[2];\n }\n if (extent1[3] < extent2[3]) {\n intersection[3] = extent1[3];\n }\n else {\n intersection[3] = extent2[3];\n }\n }\n else {\n createOrUpdateEmpty(intersection);\n }\n return intersection;\n}\n/**\n * @param {Extent} extent Extent.\n * @return {number} Margin.\n */\nexport function getMargin(extent) {\n return getWidth(extent) + getHeight(extent);\n}\n/**\n * Get the size (width, height) of an extent.\n * @param {Extent} extent The extent.\n * @return {import(\"./size.js\").Size} The extent size.\n * @api\n */\nexport function getSize(extent) {\n return [extent[2] - extent[0], extent[3] - extent[1]];\n}\n/**\n * Get the top left coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Top left coordinate.\n * @api\n */\nexport function getTopLeft(extent) {\n return [extent[0], extent[3]];\n}\n/**\n * Get the top right coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Top right coordinate.\n * @api\n */\nexport function getTopRight(extent) {\n return [extent[2], extent[3]];\n}\n/**\n * Get the width of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Width.\n * @api\n */\nexport function getWidth(extent) {\n return extent[2] - extent[0];\n}\n/**\n * Determine if one extent intersects another.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent.\n * @return {boolean} The two extents intersect.\n * @api\n */\nexport function intersects(extent1, extent2) {\n return (extent1[0] <= extent2[2] &&\n extent1[2] >= extent2[0] &&\n extent1[1] <= extent2[3] &&\n extent1[3] >= extent2[1]);\n}\n/**\n * Determine if an extent is empty.\n * @param {Extent} extent Extent.\n * @return {boolean} Is empty.\n * @api\n */\nexport function isEmpty(extent) {\n return extent[2] < extent[0] || extent[3] < extent[1];\n}\n/**\n * @param {Extent} extent Extent.\n * @param {Extent} [opt_extent] Extent.\n * @return {Extent} Extent.\n */\nexport function returnOrUpdate(extent, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = extent[0];\n opt_extent[1] = extent[1];\n opt_extent[2] = extent[2];\n opt_extent[3] = extent[3];\n return opt_extent;\n }\n else {\n return extent;\n }\n}\n/**\n * @param {Extent} extent Extent.\n * @param {number} value Value.\n */\nexport function scaleFromCenter(extent, value) {\n var deltaX = ((extent[2] - extent[0]) / 2) * (value - 1);\n var deltaY = ((extent[3] - extent[1]) / 2) * (value - 1);\n extent[0] -= deltaX;\n extent[2] += deltaX;\n extent[1] -= deltaY;\n extent[3] += deltaY;\n}\n/**\n * Determine if the segment between two coordinates intersects (crosses,\n * touches, or is contained by) the provided extent.\n * @param {Extent} extent The extent.\n * @param {import(\"./coordinate.js\").Coordinate} start Segment start coordinate.\n * @param {import(\"./coordinate.js\").Coordinate} end Segment end coordinate.\n * @return {boolean} The segment intersects the extent.\n */\nexport function intersectsSegment(extent, start, end) {\n var intersects = false;\n var startRel = coordinateRelationship(extent, start);\n var endRel = coordinateRelationship(extent, end);\n if (startRel === Relationship.INTERSECTING ||\n endRel === Relationship.INTERSECTING) {\n intersects = true;\n }\n else {\n var minX = extent[0];\n var minY = extent[1];\n var maxX = extent[2];\n var maxY = extent[3];\n var startX = start[0];\n var startY = start[1];\n var endX = end[0];\n var endY = end[1];\n var slope = (endY - startY) / (endX - startX);\n var x = void 0, y = void 0;\n if (!!(endRel & Relationship.ABOVE) && !(startRel & Relationship.ABOVE)) {\n // potentially intersects top\n x = endX - (endY - maxY) / slope;\n intersects = x >= minX && x <= maxX;\n }\n if (!intersects &&\n !!(endRel & Relationship.RIGHT) &&\n !(startRel & Relationship.RIGHT)) {\n // potentially intersects right\n y = endY - (endX - maxX) * slope;\n intersects = y >= minY && y <= maxY;\n }\n if (!intersects &&\n !!(endRel & Relationship.BELOW) &&\n !(startRel & Relationship.BELOW)) {\n // potentially intersects bottom\n x = endX - (endY - minY) / slope;\n intersects = x >= minX && x <= maxX;\n }\n if (!intersects &&\n !!(endRel & Relationship.LEFT) &&\n !(startRel & Relationship.LEFT)) {\n // potentially intersects left\n y = endY - (endX - minX) * slope;\n intersects = y >= minY && y <= maxY;\n }\n }\n return intersects;\n}\n/**\n * Apply a transform function to the extent.\n * @param {Extent} extent Extent.\n * @param {import(\"./proj.js\").TransformFunction} transformFn Transform function.\n * Called with `[minX, minY, maxX, maxY]` extent coordinates.\n * @param {Extent} [opt_extent] Destination extent.\n * @param {number} [opt_stops] Number of stops per side used for the transform.\n * By default only the corners are used.\n * @return {Extent} Extent.\n * @api\n */\nexport function applyTransform(extent, transformFn, opt_extent, opt_stops) {\n var coordinates = [];\n if (opt_stops > 1) {\n var width = extent[2] - extent[0];\n var height = extent[3] - extent[1];\n for (var i = 0; i < opt_stops; ++i) {\n coordinates.push(extent[0] + (width * i) / opt_stops, extent[1], extent[2], extent[1] + (height * i) / opt_stops, extent[2] - (width * i) / opt_stops, extent[3], extent[0], extent[3] - (height * i) / opt_stops);\n }\n }\n else {\n coordinates = [\n extent[0],\n extent[1],\n extent[2],\n extent[1],\n extent[2],\n extent[3],\n extent[0],\n extent[3],\n ];\n }\n transformFn(coordinates, coordinates, 2);\n var xs = [];\n var ys = [];\n for (var i = 0, l = coordinates.length; i < l; i += 2) {\n xs.push(coordinates[i]);\n ys.push(coordinates[i + 1]);\n }\n return _boundingExtentXYs(xs, ys, opt_extent);\n}\n/**\n * Modifies the provided extent in-place to be within the real world\n * extent.\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./proj/Projection.js\").default} projection Projection\n * @return {Extent} The extent within the real world extent.\n */\nexport function wrapX(extent, projection) {\n var projectionExtent = projection.getExtent();\n var center = getCenter(extent);\n if (projection.canWrapX() &&\n (center[0] < projectionExtent[0] || center[0] >= projectionExtent[2])) {\n var worldWidth = getWidth(projectionExtent);\n var worldsAway = Math.floor((center[0] - projectionExtent[0]) / worldWidth);\n var offset = worldsAway * worldWidth;\n extent[0] -= offset;\n extent[2] -= offset;\n }\n return extent;\n}\n//# sourceMappingURL=extent.js.map","import { WORKER_OFFSCREEN_CANVAS } from './has.js';\n/**\n * @module ol/dom\n */\n//FIXME Move this function to the canvas module\n/**\n * Create an html canvas element and returns its 2d context.\n * @param {number} [opt_width] Canvas width.\n * @param {number} [opt_height] Canvas height.\n * @param {Array<HTMLCanvasElement>} [opt_canvasPool] Canvas pool to take existing canvas from.\n * @param {CanvasRenderingContext2DSettings} [opt_Context2DSettings] CanvasRenderingContext2DSettings\n * @return {CanvasRenderingContext2D} The context.\n */\nexport function createCanvasContext2D(opt_width, opt_height, opt_canvasPool, opt_Context2DSettings) {\n /** @type {HTMLCanvasElement|OffscreenCanvas} */\n var canvas;\n if (opt_canvasPool && opt_canvasPool.length) {\n canvas = opt_canvasPool.shift();\n }\n else if (WORKER_OFFSCREEN_CANVAS) {\n canvas = new OffscreenCanvas(opt_width || 300, opt_height || 300);\n }\n else {\n canvas = document.createElement('canvas');\n }\n if (opt_width) {\n canvas.width = opt_width;\n }\n if (opt_height) {\n canvas.height = opt_height;\n }\n //FIXME Allow OffscreenCanvasRenderingContext2D as return type\n return /** @type {CanvasRenderingContext2D} */ (canvas.getContext('2d', opt_Context2DSettings));\n}\n/**\n * Get the current computed width for the given element including margin,\n * padding and border.\n * Equivalent to jQuery's `$(el).outerWidth(true)`.\n * @param {!HTMLElement} element Element.\n * @return {number} The width.\n */\nexport function outerWidth(element) {\n var width = element.offsetWidth;\n var style = getComputedStyle(element);\n width += parseInt(style.marginLeft, 10) + parseInt(style.marginRight, 10);\n return width;\n}\n/**\n * Get the current computed height for the given element including margin,\n * padding and border.\n * Equivalent to jQuery's `$(el).outerHeight(true)`.\n * @param {!HTMLElement} element Element.\n * @return {number} The height.\n */\nexport function outerHeight(element) {\n var height = element.offsetHeight;\n var style = getComputedStyle(element);\n height += parseInt(style.marginTop, 10) + parseInt(style.marginBottom, 10);\n return height;\n}\n/**\n * @param {Node} newNode Node to replace old node\n * @param {Node} oldNode The node to be replaced\n */\nexport function replaceNode(newNode, oldNode) {\n var parent = oldNode.parentNode;\n if (parent) {\n parent.replaceChild(newNode, oldNode);\n }\n}\n/**\n * @param {Node} node The node to remove.\n * @return {Node} The node that was removed or null.\n */\nexport function removeNode(node) {\n return node && node.parentNode ? node.parentNode.removeChild(node) : null;\n}\n/**\n * @param {Node} node The node to remove the children from.\n */\nexport function removeChildren(node) {\n while (node.lastChild) {\n node.removeChild(node.lastChild);\n }\n}\n/**\n * Transform the children of a parent node so they match the\n * provided list of children. This function aims to efficiently\n * remove, add, and reorder child nodes while maintaining a simple\n * implementation (it is not guaranteed to minimize DOM operations).\n * @param {Node} node The parent node whose children need reworking.\n * @param {Array<Node>} children The desired children.\n */\nexport function replaceChildren(node, children) {\n var oldChildren = node.childNodes;\n for (var i = 0; true; ++i) {\n var oldChild = oldChildren[i];\n var newChild = children[i];\n // check if our work is done\n if (!oldChild && !newChild) {\n break;\n }\n // check if children match\n if (oldChild === newChild) {\n continue;\n }\n // check if a new child needs to be added\n if (!oldChild) {\n node.appendChild(newChild);\n continue;\n }\n // check if an old child needs to be removed\n if (!newChild) {\n node.removeChild(oldChild);\n --i;\n continue;\n }\n // reorder\n node.insertBefore(newChild, oldChild);\n }\n}\n//# sourceMappingURL=dom.js.map","/**\n * @module ol/css\n */\n/**\n * @typedef {Object} FontParameters\n * @property {string} style Style.\n * @property {string} variant Variant.\n * @property {string} weight Weight.\n * @property {string} size Size.\n * @property {string} lineHeight LineHeight.\n * @property {string} family Family.\n * @property {Array<string>} families Families.\n */\n/**\n * The CSS class for hidden feature.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_HIDDEN = 'ol-hidden';\n/**\n * The CSS class that we'll give the DOM elements to have them selectable.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_SELECTABLE = 'ol-selectable';\n/**\n * The CSS class that we'll give the DOM elements to have them unselectable.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_UNSELECTABLE = 'ol-unselectable';\n/**\n * The CSS class for unsupported feature.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_UNSUPPORTED = 'ol-unsupported';\n/**\n * The CSS class for controls.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_CONTROL = 'ol-control';\n/**\n * The CSS class that we'll give the DOM elements that are collapsed, i.e.\n * to those elements which usually can be expanded.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_COLLAPSED = 'ol-collapsed';\n/**\n * From https://stackoverflow.com/questions/10135697/regex-to-parse-any-css-font\n * @type {RegExp}\n */\nvar fontRegEx = new RegExp([\n '^\\\\s*(?=(?:(?:[-a-z]+\\\\s*){0,2}(italic|oblique))?)',\n '(?=(?:(?:[-a-z]+\\\\s*){0,2}(small-caps))?)',\n '(?=(?:(?:[-a-z]+\\\\s*){0,2}(bold(?:er)?|lighter|[1-9]00 ))?)',\n '(?:(?:normal|\\\\1|\\\\2|\\\\3)\\\\s*){0,3}((?:xx?-)?',\n '(?:small|large)|medium|smaller|larger|[\\\\.\\\\d]+(?:\\\\%|in|[cem]m|ex|p[ctx]))',\n '(?:\\\\s*\\\\/\\\\s*(normal|[\\\\.\\\\d]+(?:\\\\%|in|[cem]m|ex|p[ctx])?))',\n '?\\\\s*([-,\\\\\"\\\\\\'\\\\sa-z]+?)\\\\s*$',\n].join(''), 'i');\nvar fontRegExMatchIndex = [\n 'style',\n 'variant',\n 'weight',\n 'size',\n 'lineHeight',\n 'family',\n];\n/**\n * Get the list of font families from a font spec. Note that this doesn't work\n * for font families that have commas in them.\n * @param {string} fontSpec The CSS font property.\n * @return {FontParameters} The font parameters (or null if the input spec is invalid).\n */\nexport var getFontParameters = function (fontSpec) {\n var match = fontSpec.match(fontRegEx);\n if (!match) {\n return null;\n }\n var style = /** @type {FontParameters} */ ({\n lineHeight: 'normal',\n size: '1.2em',\n style: 'normal',\n weight: 'normal',\n variant: 'normal',\n });\n for (var i = 0, ii = fontRegExMatchIndex.length; i < ii; ++i) {\n var value = match[i + 1];\n if (value !== undefined) {\n style[fontRegExMatchIndex[i]] = value;\n }\n }\n style.families = style.family.split(/,\\s?/);\n return style;\n};\n/**\n * @param {number} opacity Opacity (0..1).\n * @return {string} CSS opacity.\n */\nexport function cssOpacity(opacity) {\n return opacity === 1 ? '' : String(Math.round(opacity * 100) / 100);\n}\n//# sourceMappingURL=css.js.map","/**\n * @module ol/MapEventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered after a map frame is rendered.\n * @event module:ol/MapEvent~MapEvent#postrender\n * @api\n */\n POSTRENDER: 'postrender',\n /**\n * Triggered when the map starts moving.\n * @event module:ol/MapEvent~MapEvent#movestart\n * @api\n */\n MOVESTART: 'movestart',\n /**\n * Triggered after the map is moved.\n * @event module:ol/MapEvent~MapEvent#moveend\n * @api\n */\n MOVEEND: 'moveend',\n};\n/***\n * @typedef {'postrender'|'movestart'|'moveend'} Types\n */\n//# sourceMappingURL=MapEventType.js.map","/**\n * @module ol/OverlayPositioning\n */\n/**\n * Overlay position: `'bottom-left'`, `'bottom-center'`, `'bottom-right'`,\n * `'center-left'`, `'center-center'`, `'center-right'`, `'top-left'`,\n * `'top-center'`, `'top-right'`\n * @enum {string}\n */\nexport default {\n BOTTOM_LEFT: 'bottom-left',\n BOTTOM_CENTER: 'bottom-center',\n BOTTOM_RIGHT: 'bottom-right',\n CENTER_LEFT: 'center-left',\n CENTER_CENTER: 'center-center',\n CENTER_RIGHT: 'center-right',\n TOP_LEFT: 'top-left',\n TOP_CENTER: 'top-center',\n TOP_RIGHT: 'top-right',\n};\n//# sourceMappingURL=OverlayPositioning.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Overlay\n */\nimport BaseObject from './Object.js';\nimport MapEventType from './MapEventType.js';\nimport OverlayPositioning from './OverlayPositioning.js';\nimport { CLASS_SELECTABLE } from './css.js';\nimport { containsExtent } from './extent.js';\nimport { listen, unlistenByKey } from './events.js';\nimport { outerHeight, outerWidth, removeChildren, removeNode } from './dom.js';\n/**\n * @typedef {Object} Options\n * @property {number|string} [id] Set the overlay id. The overlay id can be used\n * with the {@link module:ol/Map~Map#getOverlayById} method.\n * @property {HTMLElement} [element] The overlay element.\n * @property {Array<number>} [offset=[0, 0]] Offsets in pixels used when positioning\n * the overlay. The first element in the\n * array is the horizontal offset. A positive value shifts the overlay right.\n * The second element in the array is the vertical offset. A positive value\n * shifts the overlay down.\n * @property {import(\"./coordinate.js\").Coordinate} [position] The overlay position\n * in map projection.\n * @property {import(\"./OverlayPositioning.js\").default} [positioning='top-left'] Defines how\n * the overlay is actually positioned with respect to its `position` property.\n * Possible values are `'bottom-left'`, `'bottom-center'`, `'bottom-right'`,\n * `'center-left'`, `'center-center'`, `'center-right'`, `'top-left'`,\n * `'top-center'`, and `'top-right'`.\n * @property {boolean} [stopEvent=true] Whether event propagation to the map\n * viewport should be stopped. If `true` the overlay is placed in the same\n * container as that of the controls (CSS class name\n * `ol-overlaycontainer-stopevent`); if `false` it is placed in the container\n * with CSS class name specified by the `className` property.\n * @property {boolean} [insertFirst=true] Whether the overlay is inserted first\n * in the overlay container, or appended. If the overlay is placed in the same\n * container as that of the controls (see the `stopEvent` option) you will\n * probably set `insertFirst` to `true` so the overlay is displayed below the\n * controls.\n * @property {PanIntoViewOptions|boolean} [autoPan=false] Pan the map when calling\n * `setPosition`, so that the overlay is entirely visible in the current viewport?\n * If `true` (deprecated), then `autoPanAnimation` and `autoPanMargin` will be\n * used to determine the panning parameters; if an object is supplied then other\n * parameters are ignored.\n * @property {PanOptions} [autoPanAnimation] The animation options used to pan\n * the overlay into view. This animation is only used when `autoPan` is enabled.\n * A `duration` and `easing` may be provided to customize the animation.\n * Deprecated and ignored if `autoPan` is supplied as an object.\n * @property {number} [autoPanMargin=20] The margin (in pixels) between the\n * overlay and the borders of the map when autopanning. Deprecated and ignored\n * if `autoPan` is supplied as an object.\n * @property {PanIntoViewOptions} [autoPanOptions] The options to use for the\n * autoPan. This is only used when `autoPan` is enabled and has preference over\n * the individual `autoPanMargin` and `autoPanOptions`.\n * @property {string} [className='ol-overlay-container ol-selectable'] CSS class\n * name.\n */\n/**\n * @typedef {Object} PanOptions\n * @property {number} [duration=1000] The duration of the animation in\n * milliseconds.\n * @property {function(number):number} [easing] The easing function to use. Can\n * be one from {@link module:ol/easing} or a custom function.\n * Default is {@link module:ol/easing.inAndOut}.\n */\n/**\n * @typedef {Object} PanIntoViewOptions\n * @property {PanOptions} [animation={}] The animation parameters for the pan\n * @property {number} [margin=20] The margin (in pixels) between the\n * overlay and the borders of the map when panning into view.\n */\n/**\n * @enum {string}\n * @protected\n */\nvar Property = {\n ELEMENT: 'element',\n MAP: 'map',\n OFFSET: 'offset',\n POSITION: 'position',\n POSITIONING: 'positioning',\n};\n/**\n * @typedef {import(\"./ObjectEventType\").Types|'change:element'|'change:map'|'change:offset'|'change:position'|\n * 'change:positioning'} OverlayObjectEventTypes\n */\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature<import(\"./Observable\").EventTypes, import(\"./events/Event.js\").default, Return> &\n * import(\"./Observable\").OnSignature<OverlayObjectEventTypes, import(\"./Object\").ObjectEvent, Return> &\n * import(\"./Observable\").CombinedOnSignature<import(\"./Observable\").EventTypes|OverlayObjectEventTypes, Return>} OverlayOnSignature\n */\n/**\n * @classdesc\n * An element to be displayed over the map and attached to a single map\n * location. Like {@link module:ol/control/Control~Control}, Overlays are\n * visible widgets. Unlike Controls, they are not in a fixed position on the\n * screen, but are tied to a geographical coordinate, so panning the map will\n * move an Overlay but not a Control.\n *\n * Example:\n *\n * import Overlay from 'ol/Overlay';\n *\n * var popup = new Overlay({\n * element: document.getElementById('popup')\n * });\n * popup.setPosition(coordinate);\n * map.addOverlay(popup);\n *\n * @api\n */\nvar Overlay = /** @class */ (function (_super) {\n __extends(Overlay, _super);\n /**\n * @param {Options} options Overlay options.\n */\n function Overlay(options) {\n var _this = _super.call(this) || this;\n /***\n * @type {OverlayOnSignature<import(\"./events\").EventsKey>}\n */\n _this.on;\n /***\n * @type {OverlayOnSignature<import(\"./events\").EventsKey>}\n */\n _this.once;\n /***\n * @type {OverlayOnSignature<void>}\n */\n _this.un;\n /**\n * @protected\n * @type {Options}\n */\n _this.options = options;\n /**\n * @protected\n * @type {number|string|undefined}\n */\n _this.id = options.id;\n /**\n * @protected\n * @type {boolean}\n */\n _this.insertFirst =\n options.insertFirst !== undefined ? options.insertFirst : true;\n /**\n * @protected\n * @type {boolean}\n */\n _this.stopEvent = options.stopEvent !== undefined ? options.stopEvent : true;\n /**\n * @protected\n * @type {HTMLElement}\n */\n _this.element = document.createElement('div');\n _this.element.className =\n options.className !== undefined\n ? options.className\n : 'ol-overlay-container ' + CLASS_SELECTABLE;\n _this.element.style.position = 'absolute';\n _this.element.style.pointerEvents = 'auto';\n var autoPan = options.autoPan;\n if (autoPan && 'object' !== typeof autoPan) {\n autoPan = {\n animation: options.autoPanAnimation,\n margin: options.autoPanMargin,\n };\n }\n /**\n * @protected\n * @type {PanIntoViewOptions|false}\n */\n _this.autoPan = /** @type {PanIntoViewOptions} */ (autoPan) || false;\n /**\n * @protected\n * @type {{transform_: string,\n * visible: boolean}}\n */\n _this.rendered = {\n transform_: '',\n visible: true,\n };\n /**\n * @protected\n * @type {?import(\"./events.js\").EventsKey}\n */\n _this.mapPostrenderListenerKey = null;\n _this.addChangeListener(Property.ELEMENT, _this.handleElementChanged);\n _this.addChangeListener(Property.MAP, _this.handleMapChanged);\n _this.addChangeListener(Property.OFFSET, _this.handleOffsetChanged);\n _this.addChangeListener(Property.POSITION, _this.handlePositionChanged);\n _this.addChangeListener(Property.POSITIONING, _this.handlePositioningChanged);\n if (options.element !== undefined) {\n _this.setElement(options.element);\n }\n _this.setOffset(options.offset !== undefined ? options.offset : [0, 0]);\n _this.setPositioning(options.positioning !== undefined\n ? /** @type {import(\"./OverlayPositioning.js\").default} */ (options.positioning)\n : OverlayPositioning.TOP_LEFT);\n if (options.position !== undefined) {\n _this.setPosition(options.position);\n }\n return _this;\n }\n /**\n * Get the DOM element of this overlay.\n * @return {HTMLElement|undefined} The Element containing the overlay.\n * @observable\n * @api\n */\n Overlay.prototype.getElement = function () {\n return /** @type {HTMLElement|undefined} */ (this.get(Property.ELEMENT));\n };\n /**\n * Get the overlay identifier which is set on constructor.\n * @return {number|string|undefined} Id.\n * @api\n */\n Overlay.prototype.getId = function () {\n return this.id;\n };\n /**\n * Get the map associated with this overlay.\n * @return {import(\"./PluggableMap.js\").default|undefined} The map that the\n * overlay is part of.\n * @observable\n * @api\n */\n Overlay.prototype.getMap = function () {\n return /** @type {import(\"./PluggableMap.js\").default|undefined} */ (this.get(Property.MAP));\n };\n /**\n * Get the offset of this overlay.\n * @return {Array<number>} The offset.\n * @observable\n * @api\n */\n Overlay.prototype.getOffset = function () {\n return /** @type {Array<number>} */ (this.get(Property.OFFSET));\n };\n /**\n * Get the current position of this overlay.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The spatial point that the overlay is\n * anchored at.\n * @observable\n * @api\n */\n Overlay.prototype.getPosition = function () {\n return /** @type {import(\"./coordinate.js\").Coordinate|undefined} */ (this.get(Property.POSITION));\n };\n /**\n * Get the current positioning of this overlay.\n * @return {import(\"./OverlayPositioning.js\").default} How the overlay is positioned\n * relative to its point on the map.\n * @observable\n * @api\n */\n Overlay.prototype.getPositioning = function () {\n return /** @type {import(\"./OverlayPositioning.js\").default} */ (this.get(Property.POSITIONING));\n };\n /**\n * @protected\n */\n Overlay.prototype.handleElementChanged = function () {\n removeChildren(this.element);\n var element = this.getElement();\n if (element) {\n this.element.appendChild(element);\n }\n };\n /**\n * @protected\n */\n Overlay.prototype.handleMapChanged = function () {\n if (this.mapPostrenderListenerKey) {\n removeNode(this.element);\n unlistenByKey(this.mapPostrenderListenerKey);\n this.mapPostrenderListenerKey = null;\n }\n var map = this.getMap();\n if (map) {\n this.mapPostrenderListenerKey = listen(map, MapEventType.POSTRENDER, this.render, this);\n this.updatePixelPosition();\n var container = this.stopEvent\n ? map.getOverlayContainerStopEvent()\n : map.getOverlayContainer();\n if (this.insertFirst) {\n container.insertBefore(this.element, container.childNodes[0] || null);\n }\n else {\n container.appendChild(this.element);\n }\n this.performAutoPan();\n }\n };\n /**\n * @protected\n */\n Overlay.prototype.render = function () {\n this.updatePixelPosition();\n };\n /**\n * @protected\n */\n Overlay.prototype.handleOffsetChanged = function () {\n this.updatePixelPosition();\n };\n /**\n * @protected\n */\n Overlay.prototype.handlePositionChanged = function () {\n this.updatePixelPosition();\n this.performAutoPan();\n };\n /**\n * @protected\n */\n Overlay.prototype.handlePositioningChanged = function () {\n this.updatePixelPosition();\n };\n /**\n * Set the DOM element to be associated with this overlay.\n * @param {HTMLElement|undefined} element The Element containing the overlay.\n * @observable\n * @api\n */\n Overlay.prototype.setElement = function (element) {\n this.set(Property.ELEMENT, element);\n };\n /**\n * Set the map to be associated with this overlay.\n * @param {import(\"./PluggableMap.js\").default|undefined} map The map that the\n * overlay is part of.\n * @observable\n * @api\n */\n Overlay.prototype.setMap = function (map) {\n this.set(Property.MAP, map);\n };\n /**\n * Set the offset for this overlay.\n * @param {Array<number>} offset Offset.\n * @observable\n * @api\n */\n Overlay.prototype.setOffset = function (offset) {\n this.set(Property.OFFSET, offset);\n };\n /**\n * Set the position for this overlay. If the position is `undefined` the\n * overlay is hidden.\n * @param {import(\"./coordinate.js\").Coordinate|undefined} position The spatial point that the overlay\n * is anchored at.\n * @observable\n * @api\n */\n Overlay.prototype.setPosition = function (position) {\n this.set(Property.POSITION, position);\n };\n /**\n * Pan the map so that the overlay is entirely visible in the current viewport\n * (if necessary) using the configured autoPan parameters\n * @protected\n */\n Overlay.prototype.performAutoPan = function () {\n if (this.autoPan) {\n this.panIntoView(this.autoPan);\n }\n };\n /**\n * Pan the map so that the overlay is entirely visible in the current viewport\n * (if necessary).\n * @param {PanIntoViewOptions} [opt_panIntoViewOptions] Options for the pan action\n * @api\n */\n Overlay.prototype.panIntoView = function (opt_panIntoViewOptions) {\n var map = this.getMap();\n if (!map || !map.getTargetElement() || !this.get(Property.POSITION)) {\n return;\n }\n var mapRect = this.getRect(map.getTargetElement(), map.getSize());\n var element = this.getElement();\n var overlayRect = this.getRect(element, [\n outerWidth(element),\n outerHeight(element),\n ]);\n var panIntoViewOptions = opt_panIntoViewOptions || {};\n var myMargin = panIntoViewOptions.margin === undefined ? 20 : panIntoViewOptions.margin;\n if (!containsExtent(mapRect, overlayRect)) {\n // the overlay is not completely inside the viewport, so pan the map\n var offsetLeft = overlayRect[0] - mapRect[0];\n var offsetRight = mapRect[2] - overlayRect[2];\n var offsetTop = overlayRect[1] - mapRect[1];\n var offsetBottom = mapRect[3] - overlayRect[3];\n var delta = [0, 0];\n if (offsetLeft < 0) {\n // move map to the left\n delta[0] = offsetLeft - myMargin;\n }\n else if (offsetRight < 0) {\n // move map to the right\n delta[0] = Math.abs(offsetRight) + myMargin;\n }\n if (offsetTop < 0) {\n // move map up\n delta[1] = offsetTop - myMargin;\n }\n else if (offsetBottom < 0) {\n // move map down\n delta[1] = Math.abs(offsetBottom) + myMargin;\n }\n if (delta[0] !== 0 || delta[1] !== 0) {\n var center = /** @type {import(\"./coordinate.js\").Coordinate} */ (map.getView().getCenterInternal());\n var centerPx = map.getPixelFromCoordinateInternal(center);\n if (!centerPx) {\n return;\n }\n var newCenterPx = [centerPx[0] + delta[0], centerPx[1] + delta[1]];\n var panOptions = panIntoViewOptions.animation || {};\n map.getView().animateInternal({\n center: map.getCoordinateFromPixelInternal(newCenterPx),\n duration: panOptions.duration,\n easing: panOptions.easing,\n });\n }\n }\n };\n /**\n * Get the extent of an element relative to the document\n * @param {HTMLElement} element The element.\n * @param {import(\"./size.js\").Size} size The size of the element.\n * @return {import(\"./extent.js\").Extent} The extent.\n * @protected\n */\n Overlay.prototype.getRect = function (element, size) {\n var box = element.getBoundingClientRect();\n var offsetX = box.left + window.pageXOffset;\n var offsetY = box.top + window.pageYOffset;\n return [offsetX, offsetY, offsetX + size[0], offsetY + size[1]];\n };\n /**\n * Set the positioning for this overlay.\n * @param {import(\"./OverlayPositioning.js\").default} positioning how the overlay is\n * positioned relative to its point on the map.\n * @observable\n * @api\n */\n Overlay.prototype.setPositioning = function (positioning) {\n this.set(Property.POSITIONING, positioning);\n };\n /**\n * Modify the visibility of the element.\n * @param {boolean} visible Element visibility.\n * @protected\n */\n Overlay.prototype.setVisible = function (visible) {\n if (this.rendered.visible !== visible) {\n this.element.style.display = visible ? '' : 'none';\n this.rendered.visible = visible;\n }\n };\n /**\n * Update pixel position.\n * @protected\n */\n Overlay.prototype.updatePixelPosition = function () {\n var map = this.getMap();\n var position = this.getPosition();\n if (!map || !map.isRendered() || !position) {\n this.setVisible(false);\n return;\n }\n var pixel = map.getPixelFromCoordinate(position);\n var mapSize = map.getSize();\n this.updateRenderedPosition(pixel, mapSize);\n };\n /**\n * @param {import(\"./pixel.js\").Pixel} pixel The pixel location.\n * @param {import(\"./size.js\").Size|undefined} mapSize The map size.\n * @protected\n */\n Overlay.prototype.updateRenderedPosition = function (pixel, mapSize) {\n var style = this.element.style;\n var offset = this.getOffset();\n var positioning = this.getPositioning();\n this.setVisible(true);\n var x = Math.round(pixel[0] + offset[0]) + 'px';\n var y = Math.round(pixel[1] + offset[1]) + 'px';\n var posX = '0%';\n var posY = '0%';\n if (positioning == OverlayPositioning.BOTTOM_RIGHT ||\n positioning == OverlayPositioning.CENTER_RIGHT ||\n positioning == OverlayPositioning.TOP_RIGHT) {\n posX = '-100%';\n }\n else if (positioning == OverlayPositioning.BOTTOM_CENTER ||\n positioning == OverlayPositioning.CENTER_CENTER ||\n positioning == OverlayPositioning.TOP_CENTER) {\n posX = '-50%';\n }\n if (positioning == OverlayPositioning.BOTTOM_LEFT ||\n positioning == OverlayPositioning.BOTTOM_CENTER ||\n positioning == OverlayPositioning.BOTTOM_RIGHT) {\n posY = '-100%';\n }\n else if (positioning == OverlayPositioning.CENTER_LEFT ||\n positioning == OverlayPositioning.CENTER_CENTER ||\n positioning == OverlayPositioning.CENTER_RIGHT) {\n posY = '-50%';\n }\n var transform = \"translate(\" + posX + \", \" + posY + \") translate(\" + x + \", \" + y + \")\";\n if (this.rendered.transform_ != transform) {\n this.rendered.transform_ = transform;\n style.transform = transform;\n // @ts-ignore IE9\n style.msTransform = transform;\n }\n };\n /**\n * returns the options this Overlay has been created with\n * @return {Options} overlay options\n */\n Overlay.prototype.getOptions = function () {\n return this.options;\n };\n return Overlay;\n}(BaseObject));\nexport default Overlay;\n//# sourceMappingURL=Overlay.js.map","/**\n * Vanilla JS Modal compatible with Bootstrap\n * modal-vanilla 0.9.0 <https://github.com/KaneCohen/modal-vanilla>\n * Copyright 2020 Kane Cohen <https://github.com/KaneCohen>\n * Available under BSD-3-Clause license\n */\nimport EventEmitter from 'events';\n\nconst _factory = document.createElement('div');\n\nconst _defaults = Object.freeze({\n el: null, // Existing DOM element that will be 'Modal-ized'.\n animate: true, // Show Modal using animation.\n animateClass: 'fade', //\n animateInClass: 'show', //\n appendTo: 'body', // DOM element to which constructed Modal will be appended.\n backdrop: true, // Boolean or 'static', Show Modal backdrop blocking content.\n keyboard: true, // Close modal on esc key.\n title: false, // Content of the title in the constructed dialog.\n header: true, // Show header content.\n content: false, // Either string or an HTML element.\n footer: true, // Footer content. By default will use buttons.\n buttons: null, //\n headerClose: true, // Show close button in the header.\n construct: false, // Creates new HTML with a given content.\n transition: 300, //\n backdropTransition: 150 //\n});\n\nconst _buttons = deepFreeze({\n dialog: [\n {text: 'Cancel',\n value: false,\n attr: {\n 'class': 'btn btn-default',\n 'data-dismiss': 'modal'\n }\n },\n {text: 'OK',\n value: true,\n attr: {\n 'class': 'btn btn-primary',\n 'data-dismiss': 'modal'\n }\n }\n ],\n alert: [\n {text: 'OK',\n attr: {\n 'class': 'btn btn-primary',\n 'data-dismiss': 'modal'\n }\n }\n ],\n confirm: [\n {text: 'Cancel',\n value: false,\n attr: {\n 'class': 'btn btn-default',\n 'data-dismiss': 'modal'\n }\n },\n {text: 'OK',\n value: true,\n attr: {\n 'class': 'btn btn-primary',\n 'data-dismiss': 'modal'\n }\n }\n ]\n});\n\nconst _templates = {\n container: '<div class=\"modal\"></div>',\n dialog: '<div class=\"modal-dialog\"></div>',\n content: '<div class=\"modal-content\"></div>',\n header: '<div class=\"modal-header\"></div>',\n headerClose: '<button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\"><span aria-hidden=\"true\">×</span></button>',\n body: '<div class=\"modal-body\"></div>',\n footer: '<div class=\"modal-footer\"></div>',\n backdrop: '<div class=\"modal-backdrop\"></div>'\n};\n\nfunction deepFreeze(obj) {\n for (let k in obj) {\n if (Array.isArray(obj[k])) {\n obj[k].forEach(v => {\n deepFreeze(v);\n });\n } else if (obj[k] !== null && typeof obj[k] === 'object') {\n Object.freeze(obj[k]);\n }\n }\n return Object.freeze(obj);\n}\n\nfunction guid() {\n return (((1 + Math.random()) * 0x10000) | 0).toString(16) +\n (((1 + Math.random()) * 0x10000) | 0).toString(16);\n}\n\nfunction data(el, prop, value) {\n let prefix = 'data';\n let elData = el[prefix] || {};\n if (typeof value === 'undefined') {\n if (el[prefix] && el[prefix][prop]) {\n return el[prefix][prop];\n } else {\n var dataAttr = el.getAttribute(`${prefix}-${prop}`);\n if (typeof dataAttr !== 'undefined') {\n return dataAttr;\n }\n return null;\n }\n } else {\n elData[prop] = value;\n el[prefix] = elData;\n return el;\n }\n}\n\nfunction build(html, all) {\n if (html.nodeName) return html;\n html = html.replace(/(\\t|\\n$)/g, '');\n\n _factory.innerHTML = '';\n _factory.innerHTML = html;\n if (all === true) {\n return _factory.childNodes;\n } else {\n return _factory.childNodes[0];\n }\n}\n\nfunction calcScrollbarWidth() {\n let inner;\n let width;\n let outerWidth;\n let outer = document.createElement('div');\n Object.assign(outer.style, {\n visibility: 'hidden',\n width: '100px'\n });\n document.body.appendChild(outer);\n\n outerWidth = outer.offsetWidth;\n outer.style.overflow = 'scroll';\n\n inner = document.createElement('div');\n inner.style.width = '100%';\n outer.appendChild(inner);\n\n width = outerWidth - inner.offsetWidth;\n document.body.removeChild(outer);\n\n return width;\n}\n\nfunction getPath(node) {\n let nodes = [node];\n while (node.parentNode) {\n node = node.parentNode;\n nodes.push(node);\n }\n return nodes;\n}\n\nclass Modal extends EventEmitter {\n static set templates(templates) {\n this._baseTemplates = templates;\n }\n\n static get templates() {\n return Object.assign({}, _templates, Modal._baseTemplates || {});\n }\n\n static set buttons(buttons) {\n this._baseButtons = buttons;\n }\n\n static get buttons() {\n return Object.assign({}, _buttons, Modal._baseButtons || {});\n }\n\n static set options(options) {\n this._baseOptions = options;\n }\n\n static get options() {\n return Object.assign({}, _defaults, Modal._baseOptions || {});\n }\n\n static get version() {\n return '0.9.0';\n }\n\n static alert(message, _options = {}) {\n let options = Object.assign({},\n _defaults,\n {\n title: message,\n content: false,\n construct: true,\n headerClose: false,\n buttons: Modal.buttons.alert\n },\n _options\n );\n\n return new Modal(options);\n }\n\n static confirm(question, _options = {}) {\n let options = Object.assign({},\n _defaults,\n {\n title: question,\n content: false,\n construct: true,\n headerClose: false,\n buttons: Modal.buttons.confirm\n },\n _options\n );\n\n return new Modal(options);\n }\n\n constructor(options = {}) {\n super();\n\n this.id = guid();\n this.el = null;\n this._html = {};\n this._events = {};\n this._visible = false;\n this._options = Object.assign({}, Modal.options, options);\n this._templates = Object.assign({}, Modal.templates, options.templates || {});\n this._html.appendTo = document.querySelector(this._options.appendTo);\n this._scrollbarWidth = calcScrollbarWidth();\n\n if (this._options.buttons === null) {\n this._options.buttons = Modal.buttons.dialog;\n }\n\n if (this._options.el) {\n let el = this._options.el;\n if (typeof this._options.el == 'string') {\n el = document.querySelector(this._options.el);\n if (! el) {\n throw new Error(`Selector: DOM Element ${this._options.el} not found.`);\n }\n }\n data(el, 'modal', this);\n this.el = el;\n } else {\n this._options.construct = true;\n }\n\n if (this._options.construct) {\n this._render();\n } else {\n this._mapDom();\n }\n }\n\n _render() {\n let html = this._html;\n let o = this._options;\n let t = this._templates;\n let animate = o.animate ? o.animateClass : false;\n\n html.container = build(t.container);\n html.dialog = build(t.dialog);\n html.content = build(t.content);\n html.header = build(t.header);\n html.headerClose = build(t.headerClose);\n html.body = build(t.body);\n html.footer = build(t.footer);\n if (animate) html.container.classList.add(animate);\n\n this._setHeader();\n this._setContent();\n this._setFooter();\n\n this.el = html.container;\n\n html.dialog.appendChild(html.content);\n html.container.appendChild(html.dialog);\n\n return this;\n }\n\n _mapDom() {\n let html = this._html;\n let o = this._options;\n\n if (this.el.classList.contains(o.animateClass)) {\n o.animate = true;\n }\n\n html.container = this.el;\n html.dialog = this.el.querySelector('.modal-dialog');\n html.content = this.el.querySelector('.modal-content');\n html.header = this.el.querySelector('.modal-header');\n html.headerClose = this.el.querySelector('.modal-header .close');\n html.body = this.el.querySelector('.modal-body');\n html.footer = this.el.querySelector('.modal-footer');\n\n this._setHeader();\n this._setContent();\n this._setFooter();\n\n return this;\n }\n\n _setHeader() {\n let html = this._html;\n let o = this._options;\n\n if (o.header && html.header) {\n if (o.title.nodeName) {\n html.header.innerHTML = o.title.outerHTML;\n } else if (typeof o.title === 'string') {\n html.header.innerHTML = `<h4 class=\"modal-title\">${o.title}</h4>`;\n }\n // Add header close button only to constructed modals.\n if (this.el === null && html.headerClose && o.headerClose) {\n html.header.appendChild(html.headerClose);\n }\n if (o.construct) {\n html.content.appendChild(html.header);\n }\n }\n }\n\n _setContent() {\n let html = this._html;\n let o = this._options;\n\n if (o.content && html.body) {\n if (typeof o.content === 'string') {\n html.body.innerHTML = o.content;\n } else {\n html.body.innerHTML = o.content.outerHTML;\n }\n if (o.construct) {\n html.content.appendChild(html.body);\n }\n }\n }\n\n _setFooter() {\n let html = this._html;\n let o = this._options;\n\n if (o.footer && html.footer) {\n if (o.footer.nodeName) {\n html.footer.ineerHTML = o.footer.outerHTML;\n } else if (typeof o.footer === 'string') {\n html.footer.innerHTML = o.footer;\n } else if (! html.footer.children.length) {\n o.buttons.forEach((button) => {\n let el = document.createElement('button');\n data(el, 'button', button);\n el.innerHTML = button.text;\n el.setAttribute('type', 'button');\n for (let j in button.attr) {\n el.setAttribute(j, button.attr[j]);\n }\n html.footer.appendChild(el);\n });\n }\n if (o.construct) {\n html.content.appendChild(html.footer);\n }\n }\n\n }\n\n _setEvents() {\n let o = this._options;\n let html = this._html;\n\n this._events.keydownHandler = this._handleKeydownEvent.bind(this);\n document.body.addEventListener('keydown',\n this._events.keydownHandler\n );\n\n this._events.clickHandler = this._handleClickEvent.bind(this);\n html.container.addEventListener('click',\n this._events.clickHandler\n );\n\n this._events.resizeHandler = this._handleResizeEvent.bind(this);\n window.addEventListener('resize',\n this._events.resizeHandler\n );\n }\n\n _handleClickEvent(e) {\n let path = getPath(e.target);\n path.every(node => {\n if (node.tagName === 'HTML') {\n return false;\n }\n if (this._options.backdrop !== true && node.classList.contains('modal')) {\n return false;\n }\n if (node.classList.contains('modal-content')) {\n return false;\n }\n if (node.getAttribute('data-dismiss') === 'modal') {\n this.emit('dismiss', this, e, data(e.target, 'button'));\n this.hide();\n return false;\n }\n if (node.classList.contains('modal')) {\n this.emit('dismiss', this, e, null);\n this.hide();\n return false;\n }\n return true;\n });\n }\n\n _handleKeydownEvent(e) {\n if (e.which === 27 && this._options.keyboard) {\n this.emit('dismiss', this, e, null);\n this.hide();\n }\n }\n\n _handleResizeEvent(e) {\n this._resize();\n }\n\n show() {\n let o = this._options;\n let html = this._html;\n this.emit('show', this);\n\n this._checkScrollbar();\n this._setScrollbar();\n document.body.classList.add('modal-open');\n\n if (o.construct) {\n html.appendTo.appendChild(html.container);\n }\n\n html.container.style.display = 'block';\n html.container.scrollTop = 0;\n\n if (o.backdrop !== false) {\n this.once('showBackdrop', () => {\n this._setEvents();\n\n if (o.animate) html.container.offsetWidth; // Force reflow\n\n html.container.classList.add(o.animateInClass);\n\n setTimeout(() => {\n this._visible = true;\n this.emit('shown', this);\n }, o.transition);\n });\n this._backdrop();\n } else {\n this._setEvents();\n\n if (o.animate) html.container.offsetWidth; // Force reflow\n\n html.container.classList.add(o.animateInClass);\n\n setTimeout(() => {\n this._visible = true;\n this.emit('shown', this);\n }, o.transition);\n }\n this._resize();\n\n return this;\n }\n\n toggle() {\n if (this._visible) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n _resize() {\n var modalIsOverflowing =\n this._html.container.scrollHeight > document.documentElement.clientHeight;\n\n this._html.container.style.paddingLeft =\n ! this.bodyIsOverflowing && modalIsOverflowing ? this._scrollbarWidth + 'px' : '';\n\n this._html.container.style.paddingRight =\n this.bodyIsOverflowing && ! modalIsOverflowing ? this._scrollbarWidth + 'px' : '';\n }\n\n _backdrop() {\n let html = this._html;\n let t = this._templates;\n let o = this._options;\n let animate = o.animate ? o.animateClass : false;\n\n html.backdrop = build(t.backdrop);\n if (animate) html.backdrop.classList.add(animate);\n html.appendTo.appendChild(html.backdrop);\n\n if (animate) html.backdrop.offsetWidth;\n\n html.backdrop.classList.add(o.animateInClass);\n\n setTimeout(() => {\n this.emit('showBackdrop', this);\n }, this._options.backdropTransition);\n }\n\n hide() {\n let html = this._html;\n let o = this._options;\n let contCList = html.container.classList;\n this.emit('hide', this);\n\n contCList.remove(o.animateInClass);\n\n if (o.backdrop) {\n let backCList = html.backdrop.classList;\n backCList.remove(o.animateInClass);\n }\n\n this._removeEvents();\n\n setTimeout(() => {\n document.body.classList.remove('modal-open');\n document.body.style.paddingRight = this.originalBodyPad;\n }, o.backdropTransition);\n\n setTimeout(() => {\n if (o.backdrop) {\n html.backdrop.parentNode.removeChild(html.backdrop);\n }\n html.container.style.display = 'none';\n\n if (o.construct) {\n html.container.parentNode.removeChild(html.container);\n }\n\n this._visible = false;\n this.emit('hidden', this);\n }, o.transition);\n\n return this;\n }\n\n _removeEvents() {\n if (this._events.keydownHandler) {\n document.body.removeEventListener('keydown',\n this._events.keydownHandler\n );\n }\n\n this._html.container.removeEventListener('click',\n this._events.clickHandler\n );\n\n window.removeEventListener('resize',\n this._events.resizeHandler\n );\n }\n\n _checkScrollbar() {\n this.bodyIsOverflowing = document.body.clientWidth < window.innerWidth;\n }\n\n _setScrollbar() {\n this.originalBodyPad = document.body.style.paddingRight || '';\n if (this.bodyIsOverflowing) {\n let basePadding = parseInt(this.originalBodyPad || 0, 10);\n document.body.style.paddingRight = basePadding + this._scrollbarWidth + 'px';\n }\n }\n}\n\nexport default Modal;\n","module.exports = require('./lib/modal').default;\n","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='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;","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='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;","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","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 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:\n 'Error al hacer transacción con el GeoServer. HTTP status:',\n getFeatures:\n 'Error al obtener elemento desde el GeoServer. HTTP status:'\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 noValidGeometry: 'No valid geometries found to add to this layer',\n geoserver: 'Could not get data from the GeoServer',\n badFormat: 'Unsupported format',\n badFile: 'Error reading items from file',\n lockFeature:\n 'No se pudieron bloquear elementos en el GeoServer. HTTP status:',\n transaction:\n 'Error when doing Transaction with GeoServer. HTTP status:',\n getFeatures: 'Error getting elements from GeoServer. HTTP status:'\n }\n};\n","// Ol\nimport TileState from 'ol/TileState';\nimport {\n Circle,\n Geometry,\n GeometryCollection,\n LineString,\n MultiLineString,\n MultiPoint,\n MultiPolygon,\n Point,\n Polygon\n} 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 {\n Collection,\n Feature,\n ImageTile,\n Overlay,\n PluggableMap,\n View\n} from 'ol';\nimport { FeatureLike } from 'ol/Feature';\nimport { GeoJSON, KML, WFS } from 'ol/format';\nimport { Tile as TileLayer, Vector as VectorLayer } from 'ol/layer';\nimport { Options as VectorLayerOptions } from 'ol/layer/BaseVector';\nimport { TileWMS, Vector as VectorSource } from 'ol/source';\nimport { all, bbox } from 'ol/loadingstrategy';\nimport { fromCircle } from 'ol/geom/Polygon';\nimport { getCenter } from 'ol/extent';\nimport { never, primaryAction } from 'ol/events/condition';\nimport { ProjectionLike, transformExtent } from 'ol/proj';\nimport { unByKey } from 'ol/Observable';\nimport { Coordinate } from 'ol/coordinate';\n\n// External\nimport Modal from 'modal-vanilla';\n\n// Images\nimport drawSvg from './assets/images/draw.svg';\nimport editFieldsSvg from './assets/images/editFields.svg';\nimport editGeomSvg from './assets/images/editGeom.svg';\nimport uploadSvg from './assets/images/upload.svg';\nimport visibilityOn from './assets/images/visibilityOn.svg';\nimport visibilityOff from './assets/images/visibilityOff.svg';\n\nimport { GeometryType } from './@enums';\nimport * as i18n from './assets/i18n/index';\n\n// Style\nimport './assets/scss/-ol-wfst.bootstrap5.scss';\nimport './assets/scss/ol-wfst.scss';\n\n// https://docs.geoserver.org/latest/en/user/services/wfs/axis_order.html\n\n// Axis ordering: latitude/longitude\nconst DEFAULT_GEOSERVER_SRS = 'EPSG:3857';\nconst DEFAULT_LANGUAGE = 'en';\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 getCapabilities\n * @fires describeFeatureType\n * @fires allDescribeFeatureTypeLoaded\n * @fires getFeature\n * @fires modifystart\n * @fires modifyend\n * @fires drawstart\n * @fires drawend\n * @extends {ol/control/Control~Control}\n * @param opt_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 public _map: PluggableMap;\n public _view: View;\n public overlay: Overlay;\n public _viewport: HTMLElement;\n protected _mapLayers: Array<VectorLayer<any> | TileLayer<any>>;\n\n // Geoserver\n protected _geoServerData: LayerData;\n protected _useLockFeature: boolean;\n protected _hasLockFeature: boolean;\n protected _hasTransaction: boolean;\n protected _geoServerCapabilities: XMLDocument;\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: Control;\n protected _controlWidgetToolsDiv: HTMLElement;\n\n // Formats\n protected _formatWFS: WFS;\n protected _formatGeoJSON: GeoJSON;\n protected _formatKml: KML;\n protected _xs: XMLSerializer;\n\n // State\n protected _countRequests: number;\n protected _isVisible: boolean;\n protected _currentZoom: number;\n protected _lastZoom: number;\n\n // Editing\n protected _editedFeatures: Set<string>;\n protected _editLayer: VectorLayer<any>;\n protected _isEditModeOn: boolean;\n protected _isDrawModeOn: boolean;\n protected _editFeature: Feature<Geometry>;\n protected _editFeatureOriginal: Feature<Geometry>;\n protected _layerToInsertElements: string;\n protected _insertFeatures: Array<Feature<Geometry>>;\n protected _updateFeatures: Array<Feature<Geometry>>;\n protected _deleteFeatures: Array<Feature<Geometry>>;\n protected _modalLoading: HTMLDivElement;\n\n protected _selectDraw: HTMLSelectElement;\n\n constructor(opt_options?: Options) {\n super({\n target: null,\n element: controlElement\n });\n\n // Check if the selected language exists\n this._i18n =\n opt_options.language && opt_options.language in i18n\n ? i18n[opt_options.language]\n : i18n[DEFAULT_LANGUAGE];\n\n if (opt_options.i18n) {\n // Merge custom translations\n this._i18n = {\n ...this._i18n,\n ...opt_options.i18n\n };\n }\n\n // Default options\n const defaultOptions = {\n geoServerUrl: null,\n geoServerAdvanced: {\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 },\n headers: {},\n layers: null,\n evtType: 'singleclick',\n active: true,\n showControl: true,\n useLockFeature: true,\n minZoom: 9,\n language: DEFAULT_LANGUAGE,\n uploadFormats: '.geojson,.json,.kml',\n processUpload: null,\n beforeInsertFeature: null,\n modal: {\n animateClass: 'fade',\n animateInClass: 'show',\n transition: 300,\n backdropTransition: 150,\n templates: {\n dialog:\n '<div class=\"modal-dialog modal-dialog-centered\"></div>',\n headerClose: `<button type=\"button\" class=\"btn-close\" data-dismiss=\"modal\" aria-label=\"${this._i18n.labels.close}\"><span aria-hidden=\"true\">×</span></button>`\n }\n }\n };\n\n this._options = deepObjectAssign(defaultOptions, opt_options);\n\n this._mapLayers = [];\n this._countRequests = 0;\n this._isEditModeOn = false;\n\n // GeoServer\n this._hasLockFeature = false;\n this._hasTransaction = false;\n this._geoServerCapabilities = null;\n this._geoServerData = {};\n\n // Editing\n this._editedFeatures = new Set();\n this._layerToInsertElements = this._options.layers[0].name; // By default, the first layer is ready to accept new draws\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._controlWidgetToolsDiv = controlElement;\n this._controlWidgetToolsDiv.className = 'ol-wfst--tools-control';\n\n this._initAsyncOperations();\n }\n\n /**\n * @private\n */\n _onLoad() {\n this._map = super.getMap();\n this._view = this._map.getView();\n this._viewport = this._map.getViewport();\n\n // State\n this._isVisible = this._view.getZoom() > this._options.minZoom;\n\n this._createLayers(this._options.layers);\n\n this._initMapElements(this._options.showControl, this._options.active);\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 *\n * @param layers\n * @param showControl\n * @param active\n * @private\n */\n async _initAsyncOperations(): Promise<void> {\n try {\n // @ts-expect-error\n this.on('allDescribeFeatureTypeLoaded', this._onLoad);\n\n this._showLoading();\n\n await this._connectToGeoServerAndGetCapabilities();\n\n if (this._options.layers) {\n await this._getGeoserverLayersData(\n this._options.layers,\n this._options.geoServerUrl\n );\n }\n } catch (err) {\n this._hideLoading();\n this._showError(err.message, err);\n }\n }\n\n /**\n * Get the capabilities from the GeoServer and check\n * all the available operations.\n *\n * @fires capabilitiesLoaded\n * @private\n */\n async _connectToGeoServerAndGetCapabilities(): Promise<void> {\n /**\n * @private\n */\n const getCapabilities = async (): Promise<XMLDocument> => {\n const params = new URLSearchParams({\n service: 'wfs',\n version: this._options.geoServerAdvanced.getCapabilitiesVersion,\n request: 'GetCapabilities',\n exceptions: 'application/json'\n });\n\n const url_fetch =\n this._options.geoServerUrl + '?' + params.toString();\n\n try {\n const response = await fetch(url_fetch, {\n headers: this._options.headers\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 return capabilities;\n } catch (err) {\n throw new Error(this._i18n.errors.capabilities);\n }\n };\n\n this._geoServerCapabilities = await getCapabilities();\n\n // Available operations in the geoserver\n const operations: HTMLCollectionOf<Element> = this._geoServerCapabilities.getElementsByTagName(\n 'ows:Operation'\n );\n\n Array.from(operations).forEach((operation) => {\n if (operation.getAttribute('name') === 'Transaction') {\n this._hasTransaction = true;\n } else if (operation.getAttribute('name') === 'LockFeature') {\n this._hasLockFeature = true;\n }\n });\n\n if (!this._hasTransaction) {\n throw new Error(this._i18n.errors.wfst);\n }\n\n super.dispatchEvent({\n type: 'getCapabilities',\n // @ts-expect-error\n data: this._geoServerCapabilities\n });\n }\n\n /**\n * Request and store data layers obtained by DescribeFeatureType\n *\n * @param layers\n * @param geoServerUrl\n * @private\n */\n async _getGeoserverLayersData(\n layers: Array<LayerParams>,\n geoServerUrl: string\n ): Promise<void> {\n /**\n *\n * @param layerName\n * @fires describeFeatureType\n * @fires allDescribeFeatureTypeLoaded\n * @returns\n * @private\n */\n const getLayerData = async (\n layerName: string\n ): Promise<DescribeFeatureType> => {\n const params = new URLSearchParams({\n service: 'wfs',\n version: this._options.geoServerAdvanced\n .describeFeatureTypeVersion,\n request: 'DescribeFeatureType',\n typeName: layerName,\n outputFormat: 'application/json',\n exceptions: 'application/json'\n });\n\n const url_fetch = geoServerUrl + '?' + params.toString();\n\n const response = await fetch(url_fetch, {\n headers: this._options.headers\n });\n\n if (!response.ok) {\n throw new Error('');\n }\n\n return await response.json();\n };\n\n for (const layer of layers) {\n const layerName = layer.name;\n const layerLabel = layer.label || layerName;\n\n try {\n const data = await getLayerData(layerName);\n\n if (!data) {\n throw new Error('');\n }\n\n super.dispatchEvent({\n type: 'describeFeatureType',\n // @ts-expect-error\n layer: layerName,\n data: data\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(\n (el) => el.type.indexOf('gml:') >= 0\n );\n\n this._geoServerData[layerName] = {\n namespace: targetNamespace,\n properties: properties,\n geomType: geom.localType,\n geomField: geom.name\n };\n } catch (err) {\n throw new Error(`${this._i18n.errors.layer} \"${layerLabel}\"`);\n }\n }\n\n super.dispatchEvent({\n type: 'allDescribeFeatureTypeLoaded',\n // @ts-expect-error\n data: this._geoServerData\n });\n }\n\n /**\n * Create map layers in wfs o wms modes.\n *\n * @param layers\n * @private\n */\n _createLayers(layers: Array<LayerParams>): void {\n let layerLoaded = 0;\n let layersNumber = 0; // Only count visibles\n\n /**\n * When all the data is loaded, hide the loading\n * @private\n */\n const addLayerLoaded = () => {\n layerLoaded++;\n if (layerLoaded >= layersNumber) {\n this._hideLoading();\n }\n };\n\n /**\n *\n * @param layerParams\n * @private\n */\n const newWmsLayer = (layerParams: LayerParams): TileLayer<TileWMS> => {\n const layerName = layerParams.name;\n const cqlFilter = layerParams.cqlFilter;\n const buffer = layerParams.tilesBuffer;\n\n const params = {\n SERVICE: 'WMS',\n LAYERS: layerName,\n TILED: true\n };\n\n if (cqlFilter) {\n params['CQL_FILTER'] = cqlFilter;\n }\n\n if (buffer) {\n params['BUFFER'] = buffer;\n }\n\n const source = new TileWMS({\n url: this._options.geoServerUrl,\n params: params,\n serverType: 'geoserver',\n tileLoadFunction: async (tile, src) => {\n try {\n const response = await fetch(src, {\n headers: this._options.headers\n });\n\n if (!response.ok) {\n throw new Error('');\n }\n\n const data = await response.blob();\n\n if (data !== undefined) {\n ((tile as ImageTile).getImage() as HTMLImageElement).src = URL.createObjectURL(\n data\n );\n } else {\n throw new Error('');\n }\n tile.setState(TileState.LOADED);\n } catch (err) {\n tile.setState(TileState.ERROR);\n }\n }\n });\n\n let loading = 0;\n let loaded = 0;\n\n source.on('tileloadstart', () => {\n loading++;\n this._showLoading();\n });\n\n source.on(['tileloadend', 'tileloaderror'], () => {\n loaded++;\n setTimeout(() => {\n if (loading === loaded) addLayerLoaded();\n }, 300);\n });\n\n const layer_options = {\n name: layerName,\n type: '_wms_',\n minZoom: this._options.minZoom,\n source: source,\n visible: true,\n zIndex: 1,\n ...layerParams\n };\n\n const layer = new TileLayer(layer_options);\n\n return layer;\n };\n\n /**\n *\n * @param layerParams\n * @private\n */\n const newWfsLayer = (\n layerParams: LayerParams\n ): VectorLayer<VectorSource<Geometry>> => {\n const layerName = layerParams.name;\n const cqlFilter = layerParams.cqlFilter;\n const strategy = layerParams.wfsStrategy || 'bbox';\n\n const source = new VectorSource({\n format: new GeoJSON(),\n strategy: strategy === 'bbox' ? bbox : all,\n loader: async (extent) => {\n try {\n const params = new URLSearchParams({\n service: 'wfs',\n version: this._options.geoServerAdvanced\n .getFeatureVersion,\n request: 'GetFeature',\n typename: layerName,\n outputFormat: 'application/json',\n exceptions: 'application/json',\n srsName: this._options.geoServerAdvanced.projection.toString()\n });\n\n if (cqlFilter) {\n params.append('cql_filter', cqlFilter);\n }\n\n // If bbox, add extent to the request\n if (strategy === 'bbox') {\n const extentGeoServer = transformExtent(\n extent,\n this._view.getProjection().getCode(),\n this._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 params.append(\n 'bbox',\n extentGeoServer.toString() +\n `,${this._options.geoServerAdvanced.projection}`\n );\n }\n\n const url_fetch =\n this._options.geoServerUrl +\n '?' +\n params.toString();\n\n const response = await fetch(url_fetch, {\n headers: this._options.headers\n });\n\n if (!response.ok) {\n throw new Error('');\n }\n\n const data = await response.json();\n\n this.dispatchEvent({\n type: 'getFeature',\n // @ts-expect-error\n layer: layerName,\n data: data\n });\n\n const features = source.getFormat().readFeatures(data, {\n featureProjection: this._view\n .getProjection()\n .getCode(),\n dataProjection: this._options.geoServerAdvanced\n .projection\n });\n\n features.forEach((feature: Feature<Geometry>) => {\n feature.set(\n '_layerName_',\n layerName,\n /* silent = */ true\n );\n });\n\n source.addFeatures(features as Feature<Geometry>[]);\n\n source.dispatchEvent('featuresloadend');\n } catch (err) {\n source.dispatchEvent('featuresloaderror');\n this._showError(this._i18n.errors.geoserver, err);\n source.removeLoadedExtent(extent);\n }\n }\n });\n\n let loading = 0;\n let loaded = 0;\n\n source.on('featuresloadstart', () => {\n loading++;\n this._showLoading();\n });\n\n source.on(['featuresloadend', 'featuresloaderror'], () => {\n loaded++;\n setTimeout(() => {\n if (loading === loaded) addLayerLoaded();\n }, 300);\n });\n\n const layer_options = {\n name: layerName,\n type: '_wfs_',\n minZoom: this._options.minZoom,\n source: source,\n visible: true,\n zIndex: 2,\n ...layerParams\n };\n\n const layer = new VectorLayer(layer_options);\n\n return layer;\n };\n\n for (const layerParams of layers) {\n const layerName = layerParams.name;\n\n // Only create the layer if we can get the GeoserverData\n if (this._geoServerData[layerName]) {\n let layer:\n | VectorLayer<VectorSource<Geometry>>\n | TileLayer<TileWMS>;\n\n const layerParams = this._options.layers.find(\n (e) => e.name === layerName\n );\n const mode = layerParams.mode;\n\n // If mode is undefined, by default use wfs\n if (!mode) {\n layerParams.mode = 'wfs';\n }\n\n if (layerParams.mode === 'wfs') {\n layer = newWfsLayer(layerParams);\n } else {\n layer = newWmsLayer(layerParams);\n }\n\n if (layer.getVisible()) layersNumber++;\n\n this._map.addLayer(layer);\n this._mapLayers[layerName] = layer;\n }\n }\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 _initMapElements(\n showControl: boolean,\n active: boolean\n ): Promise<void> {\n // VectorLayer to store features on editing and inserting\n this._createEditLayer();\n\n this._addInteractions();\n this._addHandlers();\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>) =>\n this._styleFunction(feature),\n toggleCondition: never, // Prevent add features to the current selection using shift\n filter: (feature, layer) => {\n return (\n !this._isEditModeOn &&\n layer &&\n layer.get('type') === '_wfs_'\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 (\n !this._editedFeatures.has(\n String(feature.getId())\n )\n ) {\n // Remove the feature from the original layer\n const layer = this.interactionWfsSelect.getLayer(\n feature\n );\n layer.getSource().removeFeature(feature);\n this._addFeatureToEdit(feature, coordinate);\n }\n });\n }\n\n if (deselected.length) {\n if (!this._isEditModeOn) {\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>) =>\n this._styleFunction(feature),\n layers: [this._editLayer],\n toggleCondition: never, // Prevent add features to the current selection using shift\n removeCondition: () => (this._isEditModeOn ? true : false) // Prevent deselect on clicking outside the feature\n });\n\n this._map.addInteraction(this.interactionSelectModify);\n\n this._collectionModify = this.interactionSelectModify.getFeatures();\n\n const getFeatures = async (evt) => {\n for (const layerName in this._mapLayers) {\n const layer = this._mapLayers[layerName];\n\n // If layer is hidden or is not a wms, skip\n if (\n !layer.getVisible() ||\n !(layer.get('type') === '_wms_')\n ) {\n continue;\n }\n\n const coordinate = evt.coordinate;\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 = this._view.getZoom() > 10 ? 10 : 5;\n\n const source = layer.getSource() as TileWMS;\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 this._view.getResolution(),\n this._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 try {\n const response = await fetch(url, {\n headers: this._options.headers\n });\n\n if (!response.ok) {\n throw new Error(\n this._i18n.errors.getFeatures +\n ' ' +\n response.status\n );\n }\n\n const data = await response.json();\n const features = this._formatGeoJSON.readFeatures(data);\n\n if (!features.length) {\n continue;\n }\n\n features.forEach((feature) =>\n this._addFeatureToEdit(\n feature,\n coordinate,\n layerName\n )\n );\n } catch (err) {\n this._showError(err.message, err);\n }\n }\n };\n\n this._keyClickWms = this._map.on(\n this._options.evtType,\n async (evt) => {\n if (this._map.hasFeatureAtPixel(evt.pixel)) {\n return;\n }\n if (!this._isVisible) {\n return;\n }\n // Only get other features if editmode is disabled\n if (!this._isEditModeOn) {\n await getFeatures(evt);\n }\n }\n );\n };\n\n if (this._options.layers.find((layer) => layer.mode === 'wfs')) {\n prepareWfsInteraction();\n }\n\n if (this._options.layers.find((layer) => layer.mode === 'wms')) {\n prepareWmsInteraction();\n }\n\n this.interactionModify = new Modify({\n style: () => {\n if (this._isEditModeOn) {\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) && this._isEditModeOn;\n }\n });\n\n this._map.addInteraction(this.interactionModify);\n\n this.interactionSnap = new Snap({\n source: this._editLayer.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 _createEditLayer(): void {\n this._editLayer = new VectorLayer({\n source: new VectorSource(),\n zIndex: 100\n });\n\n this._map.addLayer(this._editLayer);\n }\n\n /**\n * Add map handlers\n * @private\n */\n _addHandlers(): 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 // 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 this._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 * @private\n */\n const handleZoomEnd = (): void => {\n if (this._currentZoom > this._options.minZoom) {\n // Show the layers\n if (!this._isVisible) {\n this._isVisible = true;\n }\n } else {\n // Hide the layer\n if (this._isVisible) {\n this._isVisible = false;\n }\n }\n };\n\n this._map.on('moveend', (): void => {\n this._currentZoom = this._view.getZoom();\n\n if (this._currentZoom !== this._lastZoom) {\n handleZoomEnd();\n }\n\n this._lastZoom = this._currentZoom;\n });\n\n keyboardEvents();\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 /**\n * @private\n * @returns\n */\n const createLayersControl = (): Element => {\n /**\n *\n * @param layerParams\n * @private\n * @returns\n */\n const createLayerElements = (layerParams: LayerParams): string => {\n const layerName = layerParams.name;\n\n const layerLabel = `<span title=\"${\n this._geoServerData[layerName].geomType\n }\">${layerParams.label || layerName}</span>`;\n\n const visible =\n 'visible' in layerParams ? layerParams.visible : true;\n\n return `\n <div class=\"wfst--layer-control \n ${visible ? 'ol-wfst--visible-on' : ''}\n ${\n layerName === this._layerToInsertElements\n ? 'ol-wfst--selected-on'\n : ''\n }\n \" data-layer=\"${layerName}\">\n <div class=\"ol-wfst--tools-control-visible\">\n <span class=\"ol-wfst--tools-control-visible-btn ol-wfst--visible-btn-on\" title=\"${\n this._i18n.labels.toggleVisibility\n }\">\n <img src=\"${visibilityOn}\"/>\n </span>\n <span class=\"ol-wfst--tools-control-visible-btn ol-wfst--visible-btn-off\" title=\"${\n this._i18n.labels.toggleVisibility\n }\">\n <img src=\"${visibilityOff}\"/>\n </span>\n </div>\n <label for=\"wfst--${layerName}\">\n <input value=\"${layerName}\" id=\"wfst--${layerName}\" type=\"radio\" class=\"ol-wfst--tools-control-input\" name=\"wfst--select-layer\" ${\n layerName === this._layerToInsertElements\n ? 'checked=\"checked\"'\n : ''\n }>\n ${layerLabel}\n </label>\n </div>`;\n };\n\n let htmlLayers = '';\n\n Object.keys(this._mapLayers).map(\n (key) =>\n (htmlLayers += createLayerElements(\n this._options.layers.find((el) => el.name === key)\n ))\n );\n const selectLayers = document.createElement('div');\n selectLayers.className = 'wfst--tools-control--select-layers';\n selectLayers.innerHTML = htmlLayers;\n\n // Layer Selector\n const radioInputs = selectLayers.querySelectorAll('input');\n radioInputs.forEach((radioInput) => {\n const parentDiv = radioInput.closest(\n '.wfst--layer-control'\n ) as HTMLElement;\n radioInput.onchange = () => {\n // Deselect DOM previous layer\n const selected = selectLayers.querySelector(\n '.ol-wfst--selected-on'\n );\n if (selected)\n selected.classList.remove('ol-wfst--selected-on');\n\n // Select this layer\n parentDiv.classList.add('ol-wfst--selected-on');\n this._layerToInsertElements = radioInput.value;\n this._changeStateSelect(this._layerToInsertElements);\n };\n });\n\n // Visibility toggler\n const visibilityBtn = selectLayers.querySelectorAll(\n '.ol-wfst--tools-control-visible-btn'\n );\n visibilityBtn.forEach((btn: HTMLElement) => {\n const parentDiv = btn.closest(\n '.wfst--layer-control'\n ) as HTMLElement;\n const layerName = parentDiv.dataset['layer'];\n btn.onclick = () => {\n parentDiv.classList.toggle('ol-wfst--visible-on');\n const layer = this._mapLayers[layerName];\n if (parentDiv.classList.contains('ol-wfst--visible-on')) {\n layer.setVisible(true);\n } else {\n layer.setVisible(false);\n }\n };\n });\n\n return selectLayers;\n };\n\n /**\n * @private\n * @returns\n */\n const createHeadControl = (): Element => {\n /**\n * @private\n */\n const createUploadElements = (): Element => {\n const container = document.createElement('div');\n\n // Upload button Tool\n const uploadButton = document.createElement('label');\n uploadButton.className =\n 'ol-wfst--tools-control-btn ol-wfst--tools-control-btn-upload';\n uploadButton.htmlFor = 'ol-wfst--upload';\n uploadButton.innerHTML = `<img src=\"${uploadSvg}\"/> `;\n uploadButton.title = this._i18n.labels.uploadToLayer;\n\n // Hidden Input form\n const uploadInput = document.createElement('input');\n uploadInput.id = 'ol-wfst--upload';\n uploadInput.type = 'file';\n uploadInput.accept = this._options.uploadFormats;\n uploadInput.onchange = (evt) => this._processUploadFile(evt);\n container.append(uploadInput);\n container.append(uploadButton);\n\n return container;\n };\n\n /**\n * @private\n * @returns\n */\n const createDrawContainer = () => {\n const drawContainer = document.createElement('div');\n drawContainer.className = 'ol-wfst--tools-control-draw-cnt';\n\n // Draw Tool\n const drawButton = document.createElement('button');\n drawButton.className =\n 'ol-wfst--tools-control-btn ol-wfst--tools-control-btn-draw';\n drawButton.type = 'button';\n drawButton.innerHTML = `<img src=\"${drawSvg}\"/>`;\n drawButton.title = this._i18n.labels.addElement;\n drawButton.onclick = () => {\n if (this._isDrawModeOn) {\n this._resetStateButtons();\n this.activateEditMode();\n } else {\n this.activateDrawMode(this._layerToInsertElements);\n }\n };\n\n // Select geom type\n const select = document.createElement('select');\n select.title = this._i18n.labels.selectDrawType;\n select.className = 'wfst--tools-control--select-draw';\n select.onchange = () => {\n const selectedValue = select.value as GeometryType;\n this._changeStateSelect(\n this._layerToInsertElements,\n selectedValue\n );\n\n if (this._isDrawModeOn) {\n this.activateDrawMode(this._layerToInsertElements);\n }\n };\n\n const types = [\n GeometryType.Point,\n GeometryType.MultiPoint,\n GeometryType.LineString,\n GeometryType.MultiLineString,\n GeometryType.Polygon,\n GeometryType.MultiPolygon,\n GeometryType.Circle\n ];\n\n for (const type of types) {\n const option = document.createElement('option');\n option.value = type;\n option.text = type;\n option.selected =\n this._geoServerData[this._layerToInsertElements]\n .geomType === type || false;\n select.appendChild(option);\n }\n\n drawContainer.append(drawButton);\n drawContainer.append(select);\n\n this._selectDraw = select;\n return drawContainer;\n };\n\n const subControl = document.createElement('div');\n subControl.className = 'wfst--tools-control--head';\n\n // Upload section\n if (this._options.showUpload) {\n const uploadSection = createUploadElements();\n subControl.append(uploadSection);\n }\n\n const drawContainer = createDrawContainer();\n subControl.append(drawContainer);\n\n return subControl;\n };\n\n const headControl = createHeadControl();\n this._controlWidgetToolsDiv.append(headControl);\n\n const htmlLayers = createLayersControl();\n this._controlWidgetToolsDiv.append(htmlLayers);\n }\n\n /**\n * Show Loading\n * @private\n */\n _showLoading(): void {\n if (!this._modalLoading) {\n this._modalLoading = document.createElement('div');\n this._modalLoading.className = 'ol-wfst--tools-control--loading';\n this._modalLoading.innerHTML = this._i18n.labels.loading;\n\n this._controlWidgetToolsDiv.append(this._modalLoading);\n }\n\n this._modalLoading.classList.add(\n 'ol-wfst--tools-control--loading-show'\n );\n }\n\n /**\n * Hide loading\n * @private\n */\n _hideLoading(): void {\n this._modalLoading.classList.remove(\n 'ol-wfst--tools-control--loading-show'\n );\n }\n\n /**\n * Lock a feature in the geoserver before edit\n *\n * @param featureId\n * @param layerName\n * @param retry\n * @private\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._options.geoServerAdvanced.lockFeatureVersion,\n request: 'LockFeature',\n expiry: String(5), // minutes\n LockId: 'GeoServer', // Not working?, bug? use GeoServer as it's the default value\n typeName: layerName,\n releaseAction: 'SOME',\n exceptions: 'application/json',\n featureid: `${featureId}`\n });\n\n const url_fetch = this._options.geoServerUrl + '?' + params.toString();\n\n try {\n const response = await fetch(url_fetch, {\n headers: this._options.headers\n });\n\n if (!response.ok) {\n throw new Error(this._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 this._showError(\n this._i18n.errors.lockFeature,\n exceptions\n );\n }\n } else {\n this._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 this._showError(err.message, err);\n }\n }\n\n /**\n * Show modal with errors\n *\n * @param msg\n * @private\n */\n _showError(msg: string, originalError: Error = null): void {\n Modal.alert('Error: ' + msg, {\n ...this._options.modal\n }).show();\n\n if (originalError) console.error(originalError);\n }\n\n /**\n * Make the WFS Transactions\n *\n * @param action\n * @param features\n * @param layerName\n * @private\n */\n async _transactWFS(\n action: string,\n features: Array<Feature<Geometry>> | Feature<Geometry>,\n layerName: string\n ): Promise<void> {\n const transformCircleToPolygon = (\n feature: Feature<Geometry>,\n geom: Circle\n ) => {\n const geomConverted = fromCircle(geom);\n feature.setGeometry(geomConverted);\n };\n\n const 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 features = Array.isArray(features) ? features : [features];\n\n const cloneFeature = (\n feature: Feature<Geometry>\n ): Feature<Geometry> => {\n this._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 const refreshWmsLayer = (layer: TileLayer<TileWMS>): void => {\n const source = layer.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 const refreshWfsLayer = (layer: VectorLayer<any>): void => {\n const source = layer.getSource();\n // Refrescamos el wms\n source.refresh();\n };\n\n const clonedFeatures = [];\n\n for (const feature of features) {\n let clone = 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 transformGeoemtryCollectionToGeometries(\n clone,\n cloneGeom as GeometryCollection\n );\n } else if (cloneGeom instanceof Circle) {\n // Geoserver has no Support to Circles\n transformCircleToPolygon(clone, cloneGeom as Circle);\n }\n\n if (action === 'insert') {\n // Filters\n if (this._options.beforeInsertFeature) {\n clone = this._options.beforeInsertFeature(clone);\n }\n }\n\n if (clone) {\n clonedFeatures.push(clone);\n }\n }\n\n if (!clonedFeatures.length) {\n return this._showError(this._i18n.errors.noValidGeometry);\n }\n\n switch (action) {\n case 'insert':\n this._insertFeatures = [\n ...this._insertFeatures,\n ...clonedFeatures\n ];\n break;\n case 'update':\n this._updateFeatures = [\n ...this._updateFeatures,\n ...clonedFeatures\n ];\n break;\n case '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 setTimeout(async () => {\n try {\n // Prevent fire multiples times\n if (numberRequest !== this._countRequests) {\n return;\n }\n\n let srs = this._view.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 = srs === 'EPSG:4326' ? 'urn:x-ogc:def:crs:EPSG:4326' : srs;\n\n const options = {\n featureNS: this._geoServerData[layerName].namespace,\n featureType: layerName,\n srsName: srs,\n featurePrefix: null,\n nativeElements: null,\n version: this._options.geoServerAdvanced\n .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 = this._geoServerData[layerName].geomType;\n const geomField = this._geoServerData[layerName].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 (action === '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 (action === '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 (action === '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 // Add default LockId value\n if (\n this._hasLockFeature &&\n this._useLockFeature &&\n action !== 'insert'\n ) {\n payload = payload.replace(\n `</Transaction>`,\n `<LockId>GeoServer</LockId></Transaction>`\n );\n }\n\n const headers = {\n 'Content-Type': 'text/xml',\n ...this._options.headers\n };\n\n const response = await fetch(this._options.geoServerUrl, {\n method: 'POST',\n body: payload,\n headers: headers\n });\n\n if (!response.ok) {\n throw new Error(\n this._i18n.errors.transaction + ' ' + response.status\n );\n }\n\n const parseResponse = this._formatWFS.readTransactionResponse(\n response\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 this._showError(findError[1]);\n }\n }\n\n if (action !== 'delete') {\n for (const feature of features as Array<\n Feature<Geometry>\n >) {\n this._editLayer.getSource().removeFeature(feature);\n }\n }\n\n const { mode } = this._options.layers.find(\n (layer) => layer.name === layerName\n );\n\n if (mode === 'wfs') {\n refreshWfsLayer(this._mapLayers[layerName]);\n } else if (mode === 'wms') {\n refreshWmsLayer(this._mapLayers[layerName]);\n }\n\n this._hideLoading();\n } catch (err) {\n this._showError(err.message, err);\n }\n\n this._insertFeatures = [];\n this._updateFeatures = [];\n this._deleteFeatures = [];\n\n this._countRequests = 0;\n }, 0);\n }\n\n /**\n *\n * @param feature\n * @private\n */\n _addFeatureToEditedList(feature: FeatureLike): void {\n this._editedFeatures.add(String(feature.getId()));\n }\n\n /**\n *\n * @param feature\n * @private\n */\n _removeFeatureFromEditList(feature: FeatureLike): void {\n this._editedFeatures.delete(String(feature.getId()));\n }\n\n /**\n *\n * @param feature\n * @private\n */\n _isFeatureEdited(feature: FeatureLike): boolean {\n return this._editedFeatures.has(String(feature.getId()));\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 = this._mapLayers[layerName];\n (layer.getSource() as VectorSource<Geometry>).addFeature(feature);\n }\n\n /**\n * @private\n * @param feature\n */\n _removeFeatureFromTmpLayer(feature: Feature<Geometry>): void {\n // Remove element from the Layer\n this._editLayer.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 { mode } = this._options.layers.find(\n (layer) => layer.name === layerName\n );\n\n if (mode === 'wfs') {\n this.interactionWfsSelect.getFeatures().remove(feature);\n }\n\n if (this._isFeatureEdited(feature)) {\n this._transactWFS('update', feature, layerName);\n } else {\n // Si es wfs y el elemento no tuvo cambios, lo devolvemos a la layer original\n if (mode === 'wfs') {\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 = this._editLayer\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 this._transactWFS('delete', feature, layerName);\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 * 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 */\n _styleFunction(feature: Feature<Geometry>): 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 (this._isEditModeOn) {\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 (this._isEditModeOn || this._isDrawModeOn) {\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\n /**\n *\n * @param feature\n * @private\n */\n _editModeOn(feature: Feature<Geometry>): void {\n this._editFeatureOriginal = feature.clone();\n\n this._isEditModeOn = true;\n\n // To refresh the style\n this._editLayer.getSource().changed();\n\n this._removeOverlayHelper(feature);\n\n const controlDiv = document.createElement('div');\n controlDiv.className = 'ol-wfst--changes-control';\n\n const elements = document.createElement('div');\n elements.className = 'ol-wfst--changes-control-el';\n\n const elementId = document.createElement('div');\n elementId.className = 'ol-wfst--changes-control-id';\n elementId.innerHTML = `<b>${\n this._i18n.labels.editMode\n }</b> - <i>${String(feature.getId())}</i>`;\n\n const acceptButton = document.createElement('button');\n acceptButton.type = 'button';\n acceptButton.textContent = this._i18n.labels.apply;\n acceptButton.className = 'btn btn-sm btn-primary';\n acceptButton.onclick = () => {\n this._showLoading();\n this._collectionModify.remove(feature);\n };\n\n const cancelButton = document.createElement('button');\n cancelButton.type = 'button';\n cancelButton.textContent = this._i18n.labels.cancel;\n cancelButton.className = 'btn btn-sm btn-secondary';\n cancelButton.onclick = () => {\n feature.setGeometry(this._editFeatureOriginal.getGeometry());\n this._removeFeatureFromEditList(feature);\n this._collectionModify.remove(feature);\n };\n\n const deleteButton = document.createElement('button');\n deleteButton.type = 'button';\n deleteButton.textContent = this._i18n.labels.delete;\n deleteButton.className = 'btn btn-sm btn-danger-outline';\n deleteButton.onclick = () => {\n this._deleteFeature(feature, true);\n };\n\n elements.append(elementId);\n elements.append(cancelButton);\n elements.append(acceptButton);\n elements.append(deleteButton);\n\n controlDiv.append(elements);\n\n this._controlApplyDiscardChanges = new Control({\n element: controlDiv\n });\n\n this._map.addControl(this._controlApplyDiscardChanges);\n }\n\n /**\n * @private\n */\n _editModeOff(): void {\n this._isEditModeOn = false;\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 this._editLayer.getSource().removeFeature(feature);\n });\n this._collectionModify.clear();\n\n const layerName = feature.get('_layerName_');\n const { mode } = this._options.layers.find(\n (layer) => layer.name === layerName\n );\n\n if (mode === 'wfs') {\n this.interactionWfsSelect.getFeatures().remove(feature);\n }\n };\n\n if (confirm) {\n const confirmModal = Modal.confirm(\n this._i18n.labels.confirmDelete,\n {\n ...this._options.modal\n }\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 _addFeatureToEdit(\n feature: Feature<Geometry>,\n coordinate = null,\n layerName = null\n ): void {\n const prepareOverlay = () => {\n const svgFields = `<img src=\"${editFieldsSvg}\"/>`;\n const editFieldsEl = document.createElement('div');\n editFieldsEl.className = 'ol-wfst--edit-button-cnt';\n editFieldsEl.innerHTML = `<button class=\"ol-wfst--edit-button\" type=\"button\" title=\"${this._i18n.labels.editFields}\">${svgFields}</button>`;\n editFieldsEl.onclick = () => {\n this._initEditFieldsModal(feature);\n };\n\n const buttons = document.createElement('div');\n buttons.append(editFieldsEl);\n\n const svgGeom = `<img src=\"${editGeomSvg}\"/>`;\n\n const editGeomEl = document.createElement('div');\n editGeomEl.className = 'ol-wfst--edit-button-cnt';\n editGeomEl.innerHTML = `<button class=\"ol-wfst--edit-button\" type=\"button\" title=\"${this._i18n.labels.editGeom}\">${svgGeom}</button>`;\n editGeomEl.onclick = () => {\n this._editModeOn(feature);\n };\n buttons.append(editGeomEl);\n\n const position =\n coordinate || getCenter(feature.getGeometry().getExtent());\n\n const buttonsOverlay = new Overlay({\n id: feature.getId(),\n position: position,\n positioning: 'center-center',\n element: buttons,\n offset: [0, -40],\n stopEvent: true\n });\n\n this._map.addOverlay(buttonsOverlay);\n };\n\n if (layerName) {\n // Guardamos el nombre de la capa de donde sale la feature\n feature.set('_layerName_', layerName);\n }\n\n const props = feature ? feature.getProperties() : '';\n\n if (props) {\n if (feature.getGeometry()) {\n this._editLayer.getSource().addFeature(feature);\n this._collectionModify.push(feature);\n prepareOverlay();\n\n if (this._useLockFeature && this._hasLockFeature) {\n this._lockFeature(\n feature.getId(),\n feature.get('_layerName_')\n );\n }\n }\n }\n }\n\n /**\n * Removes in the DOM the class of the tools\n * @private\n */\n _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\n /**\n * Confirm modal before transact to the GeoServer the features in the file\n *\n * @param content\n * @param featureToInsert\n * @private\n */\n _initUploadFileModal(\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 ${this._i18n.labels.cancel}\n </button>\n <button type=\"button\" class=\"btn btn-sm btn-primary\" data-action=\"save\" data-dismiss=\"modal\">\n ${this._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 this._i18n.labels.uploadFeatures +\n ' ' +\n this._layerToInsertElements,\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._transactWFS(\n 'insert',\n featuresToInsert,\n this._layerToInsertElements\n );\n } else {\n // On cancel button\n this._editLayer.getSource().clear();\n }\n });\n }\n\n /**\n * Parse and check geometry of uploaded files\n *\n * @param evt\n * @private\n */\n async _processUploadFile(evt: Event): Promise<void> {\n /**\n * Read data file\n * @param file\n * @private\n */\n const 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 const fixGeometry = (feature: Feature<Geometry>): Feature<Geometry> => {\n // Geometry of the layer\n const geomTypeLayer = this._geoServerData[\n this._layerToInsertElements\n ].geomType;\n const geomTypeFeature = feature.getGeometry().getType();\n let geom: Geometry;\n\n switch (geomTypeFeature) {\n case 'Point': {\n if (geomTypeLayer === 'MultiPoint') {\n const coords = (feature.getGeometry() as Point).getCoordinates();\n geom = new MultiPoint([coords]);\n }\n break;\n }\n\n case 'LineString':\n if (geomTypeLayer === 'MultiLineString') {\n const coords = (feature.getGeometry() as LineString).getCoordinates();\n geom = new MultiLineString([coords]);\n }\n break;\n\n case 'Polygon':\n if (geomTypeLayer === 'MultiPolygon') {\n const coords = (feature.getGeometry() as Polygon).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 const checkGeometry = (feature: Feature<Geometry>): boolean => {\n // Geometry of the layer\n const geomTypeLayer = this._geoServerData[\n this._layerToInsertElements\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 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._options.processUpload) {\n features = this._options.processUpload(file);\n }\n\n // If the user functions return features, we dont process anything more\n if (!features) {\n const string = await fileReader(file);\n\n if (extension === 'geojson' || extension === 'json') {\n features = this._formatGeoJSON.readFeatures(string, {\n featureProjection: this._view.getProjection().getCode()\n });\n } else if (extension === 'kml') {\n features = this._formatKml.readFeatures(string, {\n featureProjection: this._view.getProjection().getCode()\n });\n } else {\n this._showError(this._i18n.errors.badFormat);\n }\n }\n } catch (err) {\n this._showError(this._i18n.errors.badFile, err);\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 (!checkGeometry(feature)) {\n feature = 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 this._showError(this._i18n.errors.noValidGeometry);\n } else {\n this._resetStateButtons();\n this.activateEditMode();\n\n const content = `\n ${this._i18n.labels.validFeatures}: ${validFeaturesCount}<br>\n ${\n invalidFeaturesCount\n ? `${this._i18n.labels.invalidFeatures}: ${invalidFeaturesCount}`\n : ''\n }\n `;\n\n this._editLayer.getSource().addFeatures(featuresToInsert);\n\n this._initUploadFileModal(content, featuresToInsert);\n\n this._view.fit(this._editLayer.getSource().getExtent(), {\n size: this._map.getSize(),\n maxZoom: 21,\n padding: [100, 100, 100, 100]\n });\n }\n\n // Reset the input to allow another onChange trigger\n (evt.target as HTMLInputElement).value = null;\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 layerName: string,\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(this._selectDraw.options).forEach((option) => {\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 ? this._i18n.labels.geomTypeNotSupported\n : '';\n });\n };\n\n let drawType: GeometryType;\n\n if (this._selectDraw) {\n const geomLayer = this._geoServerData[layerName].geomType;\n\n if (geomDrawTypeSelected) {\n drawType = this._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 this._selectDraw.value = drawType;\n } else {\n drawType = geomLayer;\n setSelectState(drawType, [geomLayer]);\n }\n }\n }\n\n return drawType;\n }\n\n /**\n * Activate/deactivate the draw mode\n *\n * @param layerName\n * @public\n */\n activateDrawMode(layerName: string | boolean): void {\n /**\n *\n * @param layerName\n * @private\n */\n const addDrawInteraction = (layerName: string): 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: this._editLayer.getSource(),\n type: geomDrawType as GeometryType,\n style: (feature: Feature<Geometry>) =>\n this._styleFunction(feature)\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 this._transactWFS('insert', feature, layerName);\n\n super.dispatchEvent(evt);\n });\n };\n\n if (!this.interactionDraw && !layerName) {\n return;\n }\n\n if (layerName) {\n // If layer is set to invisible, show warning\n if (!this._mapLayers[layerName as string].getVisible()) {\n return;\n }\n\n const btn = document.querySelector(\n '.ol-wfst--tools-control-btn-draw'\n );\n if (btn) {\n btn.classList.add('wfst--active');\n }\n\n this._viewport.classList.add('draw-mode');\n\n addDrawInteraction(String(layerName));\n } else {\n this._map.removeInteraction(this.interactionDraw);\n this._viewport.classList.remove('draw-mode');\n }\n\n this._isDrawModeOn = layerName ? true : false;\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 const btn = document.querySelector(\n '.ol-wfst--tools-control-btn-edit'\n );\n if (btn) {\n btn.classList.add('wfst--active');\n }\n\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 * Add features directly to the geoserver, in a custom layer\n * without checking geometry or showing modal to confirm.\n *\n * @param layerName\n * @param features\n * @public\n */\n insertFeaturesTo(\n layerName: string,\n features: Array<Feature<Geometry>>\n ): void {\n this._transactWFS('insert', features, layerName);\n }\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 */\n _initEditFieldsModal(feature: Feature<Geometry>): void {\n this._editFeature = feature;\n\n const properties = feature.getProperties();\n const layer = feature.get('_layerName_');\n\n // Data schema from the geoserver\n const dataSchema = this._geoServerData[layer].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 const footer = `\n <button type=\"button\" class=\"btn btn-sm btn-link btn-third\" data-action=\"delete\" data-dismiss=\"modal\">\n ${this._i18n.labels.delete}\n </button>\n <button type=\"button\" class=\"btn btn-sm btn-secondary\" data-dismiss=\"modal\">\n ${this._i18n.labels.cancel}\n </button>\n <button type=\"button\" class=\"btn btn-sm btn-primary\" data-action=\"save\" data-dismiss=\"modal\">\n ${this._i18n.labels.save}\n </button>\n `;\n\n const modal = new Modal({\n ...this._options.modal,\n header: true,\n headerClose: true,\n title: `${\n this._i18n.labels.editElement\n } ${this._editFeature.getId()} `,\n content: content,\n footer: footer\n }).show();\n\n 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._editFeature.set(field, value, /*isSilent = */ true);\n });\n\n this._editFeature.changed();\n this._addFeatureToEditedList(this._editFeature);\n\n // Force deselect to trigger handler\n this._collectionModify.remove(this._editFeature);\n } else if (event.target.dataset.action === 'delete') {\n this._deleteFeature(this._editFeature, true);\n }\n });\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 *\n * @param target\n * @param sources\n * @returns\n * @private\n */\nconst 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\n/**\n * **_[interface]_** - Wfst Options specified when creating a Wfst instance\n *\n * Default values:\n * ```javascript\n * {\n * geoServerUrl: null,\n * geoServerAdvanced: {\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 * },\n * headers: {},\n * layers: null,\n * evtType: 'singleclick',\n * active: true,\n * showControl: true,\n * useLockFeature: true,\n * minZoom: 9,\n * language: 'en',\n * i18n: {...}, // according to language selection\n * uploadFormats: '.geojson,.json,.kml',\n * processUpload: null,\n * beforeInsertFeature: null,\n * }\n * ```\n */\ninterface Options {\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?: {\n getCapabilitiesVersion?: string;\n getFeatureVersion?: string;\n lockFeatureVersion?: string;\n describeFeatureTypeVersion?: string;\n wfsTransactionVersion?: string;\n projection?: ProjectionLike;\n };\n /**\n * Url headers for GeoServer requests. You can use it to add Authorization credentials\n */\n headers?: HeadersInit;\n /**\n * Layers to be loaded from the geoserver\n */\n layers?: Array<LayerParams>;\n /**\n * Init active\n */\n active?: boolean;\n /**\n * The click event to allow selection of Features to be edited\n */\n evtType?: 'singleclick' | 'dblclick';\n /**\n * Use LockFeatue request on GeoServer when selecting features.\n * 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 * Show/hide the control map\n */\n showControl?: boolean;\n /**\n * Zoom level to hide features to prevent too much features being loaded\n */\n minZoom?: number;\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 * Language to be used\n */\n language?: 'es' | 'en';\n /**\n * Custom translations\n */\n i18n?: I18n;\n /**\n * Show/hide the upload button\n */\n showUpload?: boolean;\n /**\n * Accepted extension formats on upload\n * Example: \".json,.geojson\"\n */\n uploadFormats?: string;\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 * Triggered before inserting new features to the Geoserver.\n * Use this to insert custom properties, modify the feature, etc.\n */\n beforeInsertFeature?(feature: Feature<Geometry>): 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 * label: null, // `name` if not provided\n * mode: 'wfs',\n * wfsStrategy: 'bbox',\n * cqlFilter: null,\n * tilesBuffer: 0,\n * }\n * ```\n *\n */\ninterface LayerParams extends Omit<VectorLayerOptions<any>, 'source'> {\n /**\n * Layer name in the GeoServer\n */\n name: string;\n /**\n * Label to be displayed in the widget control\n */\n label?: string;\n /**\n * Mode to use in the layer\n */\n mode?: 'wfs' | 'wms';\n /**\n * Strategy function for loading features. Only works if mode is \"wfs\"\n */\n wfsStrategy?: string;\n /**\n * The cql_filter GeoServer parameter is similar to the standard filter parameter,\n * but the filter is expressed using ECQL (Extended Common Query Language).\n * ECQL provides a more compact and readable syntax compared to OGC XML filters.\n * For full details see the [ECQL Reference](https://docs.geoserver.org/stable/en/user/filter/ecql_reference.html#filter-ecql-reference) and CQL and ECQL tutorial.\n */\n cqlFilter?: string;\n /**\n * The buffer parameter specifies the number of additional\n * border pixels that are used on requesting rasted tiles\n * Only works if mode is 'wms'\n */\n tilesBuffer?: number;\n}\n\n/**\n * **_[interface]_** - Data obtained from geoserver\n * @protected\n */\ninterface LayerData {\n namespace?: string;\n properties?: Record<string, unknown>;\n geomType?: string;\n geomField?: string;\n}\n\n/**\n * **_[interface]_** - Geoserver response on DescribeFeature request\n * @protected\n */\ninterface DescribeFeatureType {\n elementFormDefault: string;\n targetNamespace: string;\n targetPrefix: string;\n featureTypes: Array<{\n typeName: string;\n properties: Array<{\n name: string;\n nillable: boolean;\n maxOccurs: number;\n minOccurs: number;\n type: string;\n localType: string;\n }>;\n }>;\n}\n\n/**\n * **_[interface]_** - Custom Language specified when creating a WFST instance\n */\ninterface I18n {\n /** Labels section */\n labels?: {\n select?: string;\n addElement?: string;\n editElement?: string;\n save?: string;\n delete?: string;\n cancel?: string;\n apply?: string;\n upload?: string;\n editMode?: string;\n confirmDelete?: string;\n geomTypeNotSupported?: string;\n editFields?: string;\n editGeom?: string;\n selectDrawType?: string;\n uploadToLayer?: string;\n uploadFeatures?: string;\n validFeatures?: string;\n invalidFeatures?: string;\n loading?: string;\n toggleVisibility?: string;\n close?: string;\n };\n /** Errors section */\n errors?: {\n capabilities?: string;\n wfst?: string;\n layer?: string;\n noValidGeometry?: string;\n geoserver?: string;\n badFormat?: string;\n badFile?: string;\n lockFeature?: string;\n transaction?: string;\n getFeatures?: string;\n };\n}\n\nexport { Options, I18n, LayerParams };\n"],"names":["this","__extends","Event","EventTarget","Property","img","Control","WFS","GeoJSON","KML","source","TileWMS","layer","TileLayer","VectorSource","bbox","all","transformExtent","VectorLayer","Select","never","Modify","Style","CircleStyle","Fill","Stroke","primaryAction","Snap","visibilityOn","visibilityOff","uploadSvg","drawSvg","Modal","fromCircle","geom","Circle","GeometryCollection","unByKey","Polygon","MultiLineString","MultiPolygon","MultiPoint","editFieldsSvg","editGeomSvg","getCenter","Draw"],"mappings":"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"}
|