ol-wfst 3.0.2 → 3.0.5
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 +71 -64
- package/README.md +530 -478
- package/dist/assets/i18n/en.d.ts.map +1 -1
- package/dist/assets/i18n/es.d.ts.map +1 -1
- package/dist/assets/i18n/zh.d.ts.map +1 -1
- package/dist/css/ol-wfst.bootstrap5.css +364 -481
- package/dist/css/ol-wfst.bootstrap5.min.css +1 -1
- package/dist/css/ol-wfst.css +3 -0
- package/dist/ol-wfst.d.ts +38 -11
- package/dist/ol-wfst.d.ts.map +1 -1
- package/dist/ol-wfst.js +3673 -3617
- package/dist/ol-wfst.js.map +1 -1
- package/dist/ol-wfst.min.js +16 -16
- package/dist/ol-wfst.min.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/lib/assets/i18n/en.d.ts.map +1 -1
- package/lib/assets/i18n/es.d.ts.map +1 -1
- package/lib/assets/i18n/zh.d.ts.map +1 -1
- package/lib/ol-wfst.d.ts +38 -11
- package/lib/ol-wfst.d.ts.map +1 -1
- package/lib/ol-wfst.js +245 -197
- package/lib/ol-wfst.js.map +1 -1
- package/lib/style/css/ol-gisify.css +3 -0
- package/lib/style/css/ol-wfst.bootstrap5.css +364 -481
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +70 -70
package/lib/ol-wfst.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ol-wfst.js","sources":["../node_modules/tslib/tslib.es6.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/assets/i18n/zh.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","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: 'Could not lock items on the 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","import { I18n } from '../../ol-wfst';\n\nexport const zh: I18n = {\n labels: {\n select: '选择',\n addElement: '切换绘图类型',\n editElement: '编辑元素',\n save: '保存',\n delete: '删除',\n cancel: '取消',\n apply: '确认并应用改变',\n upload: '上传',\n editMode: '编辑模式',\n confirmDelete: '确认删除元素?',\n geomTypeNotSupported: '图层不支持该几何',\n editFields: '编辑区域',\n editGeom: '编辑几何',\n selectDrawType: '几何类型',\n uploadToLayer: '通过文件上传图层',\n uploadFeatures: '上传元素到图层',\n validFeatures: '合法的几何类型',\n invalidFeatures: '不合法',\n loading: '加载中...',\n toggleVisibility: '切换图层透明度',\n close: '关闭'\n },\n errors: {\n capabilities: '无法加载GeoServer服务所支持的能力.',\n wfst: 'GeoServer不支持事务',\n layer: '无法从图层获得数据',\n noValidGeometry: '不支持的几何类型无法加载到图层',\n geoserver: '无法从GeoServer获取数据',\n badFormat: '不支持的格式',\n badFile: '读取文件数据出错',\n lockFeature: '无法锁定GeoServer上的元素. HTTP状态码:',\n transaction: 'GeoServer处理事务出错. HTTP状态码:',\n getFeatures: '从GeoServer获取元素出错. HTTP状态码:'\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' | 'zh';\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":["img","TileLayer","VectorSource","VectorLayer","CircleStyle","visibilityOn","visibilityOff","uploadSvg","drawSvg","Circle","editFieldsSvg","editGeomSvg"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ol-wfst.js","sources":["../node_modules/tslib/tslib.es6.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/assets/i18n/zh.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","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 layerNotFound: 'CApa no encontrada',\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 layerNotFound: 'Layer not found',\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: 'Could not lock items on the 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","import { I18n } from '../../ol-wfst';\n\nexport const zh: I18n = {\n labels: {\n select: '选择',\n addElement: '切换绘图类型',\n editElement: '编辑元素',\n save: '保存',\n delete: '删除',\n cancel: '取消',\n apply: '确认并应用改变',\n upload: '上传',\n editMode: '编辑模式',\n confirmDelete: '确认删除元素?',\n geomTypeNotSupported: '图层不支持该几何',\n editFields: '编辑区域',\n editGeom: '编辑几何',\n selectDrawType: '几何类型',\n uploadToLayer: '通过文件上传图层',\n uploadFeatures: '上传元素到图层',\n validFeatures: '合法的几何类型',\n invalidFeatures: '不合法',\n loading: '加载中...',\n toggleVisibility: '切换图层透明度',\n close: '关闭'\n },\n errors: {\n capabilities: '无法加载GeoServer服务所支持的能力.',\n wfst: 'GeoServer不支持事务',\n layer: '无法从图层获得数据',\n layerNotFound: 'Layer not found',\n noValidGeometry: '不支持的几何类型无法加载到图层',\n geoserver: '无法从GeoServer获取数据',\n badFormat: '不支持的格式',\n badFile: '读取文件数据出错',\n lockFeature: '无法锁定GeoServer上的元素. HTTP状态码:',\n transaction: 'GeoServer处理事务出错. HTTP状态码:',\n getFeatures: '从GeoServer获取元素出错. HTTP状态码:'\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 * @fires load\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 protected _map: PluggableMap;\n protected _view: View;\n protected _viewport: HTMLElement;\n protected _mapLayers: IWfstLayersList;\n protected _initialized = false;\n public overlay: Overlay;\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 credentials: 'same-origin',\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: '<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 * Gat all the layers in the ol-wfst instance\n * If a name is provided, only returns that layer\n * @public\n */\n getLayers(layerName = ''): WfstLayer[] | WfstLayer {\n if (layerName && layerName in this._mapLayers) {\n return this._mapLayers[layerName];\n }\n return Object.values(this._mapLayers);\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 * @private\n */\n async _initAsyncOperations(): Promise<void> {\n try {\n // @ts-expect-error\n this.on('allDescribeFeatureTypeLoaded', this._onLoad);\n\n if (this._isVisible) {\n this._showLoading();\n }\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 credentials: this._options.credentials\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> =\n this._geoServerCapabilities.getElementsByTagName('ows:Operation');\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:\n this._options.geoServerAdvanced.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 credentials: this._options.credentials\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 credentials: this._options.credentials\n });\n\n if (!response.ok) {\n throw new Error('');\n }\n\n const data = await response.blob();\n\n if (data !== undefined) {\n (\n (\n tile as ImageTile\n ).getImage() as HTMLImageElement\n ).src = URL.createObjectURL(data);\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:\n this._options.geoServerAdvanced\n .getFeatureVersion,\n request: 'GetFeature',\n typename: layerName,\n outputFormat: 'application/json',\n exceptions: 'application/json',\n srsName:\n 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 credentials: this._options.credentials\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:\n this._options.geoServerAdvanced.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 =\n this.interactionWfsSelect.getLayer(feature);\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 credentials: this._options.credentials\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 * @fires load\n * @private\n */\n _hideLoading(): void {\n // run only once\n if (!this._initialized) {\n this.dispatchEvent('load');\n this._initialized = true;\n }\n\n if (this._modalLoading) {\n this._modalLoading.classList.remove(\n 'ol-wfst--tools-control--loading-show'\n );\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 credentials: this._options.credentials\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<boolean> {\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 this._showError(this._i18n.errors.noValidGeometry);\n return false;\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 return new Promise((resolve, reject) => {\n setTimeout(async () => {\n try {\n // Prevent fire multiples times\n if (numberRequest !== this._countRequests) {\n return;\n }\n\n let srs = 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 =\n srs === 'EPSG:4326'\n ? 'urn:x-ogc:def:crs:EPSG:4326'\n : srs;\n\n const geoLayer = this._geoServerData[layerName];\n\n if (!geoLayer) {\n throw new Error(this._i18n.errors.layerNotFound);\n }\n\n const options = {\n featureNS: geoLayer.namespace,\n featureType: layerName,\n srsName: srs,\n featurePrefix: null,\n nativeElements: null,\n version:\n 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 = geoLayer.geomType;\n const geomField = geoLayer.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 credentials: this._options.credentials\n });\n\n if (!response.ok) {\n throw new Error(\n this._i18n.errors.transaction +\n ' ' +\n response.status\n );\n }\n\n const parseResponse =\n this._formatWFS.readTransactionResponse(response);\n\n if (!Object.keys(parseResponse).length) {\n const responseStr = await response.text();\n const findError = String(responseStr).match(\n /<ows:ExceptionText>([\\s\\S]*?)<\\/ows:ExceptionText>/\n );\n\n if (findError) {\n throw new Error(findError[1]);\n }\n }\n\n if (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 wlayer = this._mapLayers[layerName];\n\n if (wlayer instanceof VectorLayer) {\n refreshWfsLayer(wlayer);\n } else if (wlayer instanceof TileLayer) {\n refreshWmsLayer(wlayer);\n }\n\n this._hideLoading();\n\n this._insertFeatures = [];\n this._updateFeatures = [];\n this._deleteFeatures = [];\n\n this._countRequests = 0;\n\n resolve(true);\n } catch (err) {\n this._showError(err.message, err);\n this._hideLoading();\n this._countRequests = 0;\n reject();\n }\n }, 0);\n });\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 =\n this._geoServerData[this._layerToInsertElements].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 = (\n feature.getGeometry() as Point\n ).getCoordinates();\n geom = new MultiPoint([coords]);\n }\n break;\n }\n\n case 'LineString':\n if (geomTypeLayer === 'MultiLineString') {\n const coords = (\n feature.getGeometry() as LineString\n ).getCoordinates();\n geom = new MultiLineString([coords]);\n }\n break;\n\n case 'Polygon':\n if (geomTypeLayer === 'MultiPolygon') {\n const coords = (\n feature.getGeometry() as Polygon\n ).getCoordinates();\n geom = new MultiPolygon([coords]);\n }\n break;\n default:\n geom = null;\n }\n\n if (!geom) {\n return null;\n }\n\n feature.setGeometry(geom);\n return feature;\n };\n\n /**\n * Check if the feature has the same geometry as the target layer\n * @param feature\n * @private\n */\n const checkGeometry = (feature: Feature<Geometry>): boolean => {\n // Geometry of the layer\n const geomTypeLayer =\n this._geoServerData[this._layerToInsertElements].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 *\n * Add features directly to the geoserver, in a custom layer\n * without checking geometry or showing modal to confirm.\n * Returns `true` if features are inserted correctly\n *\n * @param layerName\n * @param features\n * @returns\n */\n async insertFeaturesTo(\n layerName: string,\n features: Array<Feature<Geometry>>\n ): Promise<boolean> {\n return await 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 * credentials: 'same-origin',\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 * https://developer.mozilla.org/en-US/docs/Web/API/Request/headers\n */\n headers?: HeadersInit;\n /**\n * Credentials for fetch requests\n * https://developer.mozilla.org/en-US/docs/Web/API/Request/credentials\n */\n credentials?: RequestCredentials;\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' | 'zh';\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 * **_[type]_** - Supported layers\n * @public\n */\ntype WfstLayer = VectorLayer<any> | TileLayer<any>;\n\n/**\n * **_[interface]_** - Custom Language specified when creating a WFST instance\n * @rivate\n */\ninterface IWfstLayersList {\n [key: string]: WfstLayer;\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 layerNotFound?: 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":["img","TileLayer","VectorSource","VectorLayer","CircleStyle","visibilityOn","visibilityOff","uploadSvg","drawSvg","Circle","editFieldsSvg","editGeomSvg"],"mappings":"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"}
|